Blueprints is designed to bring a visual representation of Structure templates to the Publish Page, and easily show the user what fields are available in each template
The idea came from my experiences in having to add a descriptions such as "This field is only available in pages/one-column" to a custom field. It is clunky and confusing to many clients. Blueprints also lets you modify which templates are even available in the Structure publish tab. For each Channel on your site you can select the templates that are available to the user. I hated telling clients "ignore these other 20 templates, just use these 4". Inevitably, someone would screw it up, and use a template they were not supposed to, then call me wondering why their content wasn't showing up. With Blueprints, this shouldn't happen anymore.
Blueprints uses the built in Publish Layout functionality in EE 2.0. It requires that you create a new Member Group for each template/Publish Layout. You need to create a Member Group, and assign the 4 permissions listed below. Once you have done this, customize your Publish Layout and save it, then in the Blueprints settings you can assign that Publish Layout to 1 or more templates. I would recommend naming your Member Groups something along the lines of "Layout: One Column", or anything else to easily distinguish it from real Member Groups.
If you have a small project, or don't want to go through the hassle to create multiple Publish Layouts, don't worry, you can still use Blueprints. The first option in the settings screen lets you turn off the Publish Layout "Hi-jacking" that happens. With this turned off, you will still be able assign preview thumbnail images to a template, and restrict which templates are available in the Structure template list.
Create "template_thumbnails" directory in the root "images" folder. E.g. /images/template_thumbnails/
Setup
Entry Versioning must be enabled for the Channel you are effecting.
Each Member Group needs the following permissions. You will need to create a new Member Group for each Publish Layout you create. These groups should remain empty and not have any users assigned to it.
Control Panel access
Can access CONTENT: Publish
Can access CONTENT: Edit
Channel Assignment (all channels selected)
Current URL
This was a combination of Tom Kiss' last_segment extension, and Mark Bowen's fetch_current_uri plugin. I needed {current_url} available as early as possible in the parse order.
Now includes {all_segments}, which returns /segment-1/segment-2/segment-3/.../ and {parent_segment}, which will return the current page's parent segment/url_title
This extension lets you define any 2 templates within your template
groups to be used as the error page. You have access to all the usual
variables from the Specialty Templates, plus a new one, referrer. So
on top of any EE template tag you want to use in the error page, you
have title, meta_refresh, heading, content, link, and referrer. link can also be changed to render without the JavaScript
history.go() method if you desire. There are 3 options which I called
Accessibility in the extension settings.
There is a known conflict with the Flash Messenger extension, which also extends the core Output class, and overrides Custom System Messages. To fix this, you can change Flash Messenger to extend this extension, instead of the core. In Flash Messenger change MyOutput extends Output to MyOutput extends System_Messages_Output.
If you are looking for THE WYMEditor, please visit wymeditor.org. This is just an implementation of WYMEditor for ExpressionEngine.
WYMEditor 2.0 for ExpressionEngine is aimed at bringing a simple, and intuitive editor to the control panel, and offer seamless integration with the default File Browser, and native Pages module, and 3rd party Structure module to provide a better content entry work flow. You can see these two features in action in the video below.
New in version 2.1:
No longer need the Allow EE Code plugin, and my Page URL plugin to create links to pages based on ID. A new extension is now included, and if enabled, all links to pages in the Pages or Structure modules will be created as global variables, for example: {page_url:23}. 23 is the ID of the page you are linking too. Since these are global variables, you can use these variables anywhere in your site.
Revised UI. I moved the Containers and Classes drop downs into the main toolbar to provide a wider editing area on narrow screens, or when used in a Matrix cell.
Matrix support! When it appears within a Matrix cell, the UI is even more minimal.
No more per field settings. All settings are now global. (The only setting is the path to the custom CSS file)
A lot of functions have been added to utilize the session cache, so less queries are performed when multiple WYMEditor fields are on the same Publish page.
Images are inserted into the editor area with the full absolute path to the image so it is visible while editing your content, however, on save, the path is replaced with the correct {filedir_N} value, so it is completely portable.
Redeemer is an ExpressionEngine module for managing coupon codes. You can create them from the control panel, and even let users create their own codes based on an action they perform. On Twitter I mentioned I was building this and I got a couple of responses along the lines of "why don't you just use EE's built in Weblog to create coupons?" I could have done this, and thought about it, but you can only create a basic coupon code system with EE's built in features. You won't be able to easily, if at all, manage the number of times a coupon can be redeemed before it is invalid, limit by the user's IP address, or member ID. You also won't be able to generate new codes in the templates, and creating randomized codes would still require an extension or plug-in.
You can use the template tags with Ajax calls to validate a code without a page refresh, but if you use the URL Redirect feature will not work if you're calling the exp:redeemer:validate method in an Ajax call for obvious reasons.
This is my first full featured module for EE. It is LG Addon Updater and should be MSM compatible as well. The exp:redeemer:generate method has not been used in a production environment. I added this after the original module was complete for a client project, so don't hold it against me if it isn't fully fleshed out.
Here is a demo with an Ajax request to validate a code, and another using the URL redirections.
For further information please go to the forum post over at ExpressionEngine.com
Requirements
ExpressionEngine 1.6.8 (this module uses the new view files)
jQuery for the Control Panel Extension (comes with EE, just enable it)
Compatibility
LG Add-on Updater, Multi-Site Manager
Tags
{exp:redeemer:validate} {/exp:redeemer:validate}
Parameters
name="offer_code" (required)
This is the POST or GET name used in submitting a code
redeem="n"
If "y" or "yes", then the submitted code will be instantly redeemed and tallied. If you wish do to any further template or page rendering after submitting the code, do not define this parameter and use the {exp:redeemer:redeem} method elsewhere.
limit_by="ip" or "member"
You can limit the number of code redemptions based on the member's ID, if they're logged in, or by their IP address.
limit_ip="1"
If limit_by="ip", set the number of times a code can be redeemed under the same IP address.
limit_member="1"
If limit_by="member", set the number of times a code can be redeemed under the same member ID.
save_in_session="y" or "n"
By default, all submitted codes are saved in the session. If you are not using {exp:redeemer:redeem} method, or are using the redeem="y" parameter in the {exp:redeemer:validate} method, then you can set this to "n".
Variables
{valid}
Boolean value to be used in a conditional. If the submitted code is considered valid, then this will return true.
{invalid}
Boolean value to be used in a conditional. If the submitted code is considered invalid, then this will return false.
{invalid_message}
If a default invalid message is defined in the settings, this variable will print out the message.
{valid_message}
If a default valid message is defined in the settings, this variable will print out the message.
{detailed_message}
This will print a detailed message explaining why a code was not considered valid. These messages are defined in the language file.
{entered_code}
This will print the code the user entered, regardless if it is valid or invalid.
Usage
{exp:redeemer:validate name="offer_code"}
You entered: {entered_code}
{if valid}
Do whatever you want!
{/if}
{if invalid}
Show the default {invalid_message}, and do something else
{/if}
{/exp:redeemer:validate}
{exp:redeemer:redeem}
This tag will take the code saved in the session and redeem it. Once this is done, the code limit is adjusted. If you used the limit_by, limit_ip, or limit_member parameters in {exp:redeemer:validate} you will need to enter the same parameters for the redeem method as well.
{exp:redeemer:generate}{/exp:redeemer:generate}
Parameters
start_date="yyyy-mm-dd"
If no start date is defined, the code will be instantly redeemable.
end_date="yyyy-mm-dd"
If no end date is defined, the code will be redeemable until it reaches a limit, if defined, or until it is closed.
pattern="[AN*4]-[AN*4]"
The pattern can be changed in the settings, or by defining a new pattern in the parameter. The default pattern will create two 4 digit alpha-neumeric strings separated by a dash. An example custom pattern can be [A*3]-[N*5]-[AN*8].
title="Auto Generated: [code value]"
If title is not defined, the title created is "Auto Generated: [code value]"
description=""
Lets you provide a longer description for the code. This description is not available on the front-end, it is only available in the control panel for your reference.
valid_url=""
Define a URL to redirect to when this code is validated.
valid_url_default="n" or "y"
If you want this code to use the default valid URL defined in the settings when validated.
invalid_url_default="n" or "y"
If you want this code to use the default invalid URL defined in the settings when validated.
redemption_limit="1"
The number of times this code is allowed to be redeemed.
status="open"
The default status of the code when it is created. If you set it to "closed", then the only way to set it as "open" is in the control panel.
Variables
{code}
This prints out the generated code for the user to see.
Usage
{exp:redeemer:generate start_date="2009-12-09" end_date="2009-12-10"}
Your code is: {code}
{/exp:redeemer:generate}
Restricted Content
This is a simple plugin to hide content from users unless they belong to a defined user group.
Page URL
This is a ridiculously simple plugin to return the full path to a page created in Structure, or the native Pages module.
{exp:page_url entry_id='29'}
Week Range
Print out a single week of a calendar, or get Month, Day, or Year values from a week range with a given date.
Anonymous Member
Create a completely anonymous member to take advantage of some modules or features that require a user to login. This was originally written to allow users to create favorites with Solspace's Favorites module, which requires a user to be logged in.
Get/Post Parameters
Print GET and POST parameters in your templates.
In Segments
See if a word exists in any segment, or is an exact segment match.
Documentation
This is a simple module that will let you add documentation specific to your site into the Control Panel. The accompanying extension will let you define the server path to your documentation folder, and will always expect an index.php file within that directory. Use this module and add it as a tab to your Control Panel so other users can easily refer to the documentation you write.
You must enable the accompanying Extension first, set the path to your documentation, then enable the Module.
Entry Permissions
Entry Permissions allows Administrative users to assign editing privileges on a per entry basis to other member groups. Other member groups can optionally be allowed to add new entries to to assigned weblogs as well. Entry Permissions will also hide any entry in the Edit tab that is not editable by the current user, so there is no confusion with your content editors as to what entries they can or can't edit.