Standard "Create here" selection

Standard "Create here" selection

Monday 19 June 2006 2:34:33 pm - 8 replies

Modified on Monday 19 June 2006 4:49:16 pm by Muu Sle

Author Message

Kristof Coomans

Monday 19 June 2006 11:25:43 pm

Hi

I suggested almost the same for eZ 3.9 :-) It could be done on class level too (for example images under each image gallery).

I'll definitely try your code. Thanks for sharing it with us!

independent eZ Publish developer and service provider | http://blog.coomanskristof.be | http://ezpedia.org

Kristof Coomans

Tuesday 20 June 2006 12:01:36 am

A slightly modified version for eZ publish 3.7 of Muu Sle's code with support for defaults specified by the content class identifier:

    <select name="ClassID" title="{'Use this menu to select the type of item you wish to create and click the "Create here" button. The item will be created within the current location.'|i18n( 'design/admin/node/view/full' )|wash()}">
    {def $DefaultClassMapByNode=ezini('DefaultCreateHere','DefaultClassMapByNode','content.ini')
         $DefaultClassMapByClass=ezini('DefaultCreateHere','DefaultClassMapByClass','content.ini')
         $prefered_class=null}
        {if is_set($DefaultClassMapByClass[$node.class_identifier])}
            {set $prefered_class = $DefaultClassMapByClass[$node.class_identifier]}
        {/if}

        {if is_set($DefaultClassMapByNode[$node.node_id])}
            {set $prefered_class = $DefaultClassMapByNode[$node.node_id]}
        {elseif is_set($prefered_class)|not}
            {if is_set($DefaultClassMapByNode[$node.parent_node_id])}
                {set $prefered_class = $DefaultClassMapByNode[$node.parent_node_id]}
            {elseif is_set($DefaultClassMapByNode[$node.parent.parent_node_id])}
                {set $prefered_class = $DefaultClassMapByNode[$node.parent.parent_node_id]}
            {/if}
        {/if}
        {section var=CanCreateClasses loop=$can_create_classes}
              <option{eq($prefered_class, $CanCreateClasses.item.identifier)|choose( '', ' selected' )} value="{$CanCreateClasses.item.id}">{$CanCreateClasses.item.name|wash()}</option>
        {/section}
    {undef $DefaultClassMapByNode $prefered_class}
    </select>

Example INI settings:

[DefaultCreateHere]
DefaultClassMapByClass[gallery]=image
DefaultClassMapByClass[forum]=forum_topic
DefaultClassMapByClass[forum_topic]=forum_reply
DefaultClassMapByNode[]
DefaultClassMapByNode[2]=folder

First it looks for a default for the class of the current node, then this choice can be overriden for specific nodes. If then still no default is found, it will look for a node default of either the parent node, or the grandparent node.

independent eZ Publish developer and service provider | http://blog.coomanskristof.be | http://ezpedia.org

Muu Sle

Tuesday 20 June 2006 4:33:51 am

Nice!
Agreed, it would be complete when adding support for doing this at class level, very handy!

. muusle

Guillaume Contival

Friday 27 October 2006 9:04:18 am

Hi,

Cool ! This is exactly what I was looking for. Do you know if this code exists as an extension ? Or if I have to create mine ?

Cheers.

SQLi
http://www.sqli.com

Kristof Coomans

Friday 27 October 2006 10:05:15 am

It's not in an extension yet, but feel free to create one and to post it as a contribution, as long as you give us some credits :-)

independent eZ Publish developer and service provider | http://blog.coomanskristof.be | http://ezpedia.org

Guillaume Contival

Monday 30 October 2006 3:16:23 am

In fact, I was searching a way to limit available "create here" choices, not only suggest one.

I thought it was in eZ settings, but can't find where, then I found this post. I'll try to change this code a little to add a way to limit available classes as well in the "create here" function.

I know we can do this with roles & policies, but I want to do this in a more efficient and global manner. I think this is the way. But correct me if I'm wrong or if it already exists.

Cheers.

Guillaume Contival

Tuesday 31 October 2006 2:28:50 am

Apparently, I have 2 profiles with the same email ;)

By the way, I made the extension, with the possibility to define available classes by node or class.

SQLi
http://www.sqli.com

Kristof Coomans

Saturday 27 January 2007 6:48:38 am

I've packed the modified template for eZ 3.9.0 in an extension and it's in svn now:
http://pubsvn.ez.no/community/trunk/extension/defaultcreatehere

independent eZ Publish developer and service provider | http://blog.coomanskristof.be | http://ezpedia.org

You must be logged in to post messages in this topic!

Powered by eZ Publish™ CMS Open Source Web Content Management. Copyright © 1999-2014 eZ Systems AS (except where otherwise noted). All rights reserved.