eZ Community » Forums » Extensions » eZ Flow » Change the priority in the list valid...
expandshrink

Change the priority in the list valid of block manual

Change the priority in the list valid of block manual

Friday 18 April 2008 3:31:56 pm - 1 reply

In the version now, When we published the bloc manual, i can't change the priority of articles in the block list.

So, if you want change the priority, do like this :

a. In the end of extension/ezflow/design/ezflow/templates/content/datatype/edit/ezpage.tpl
add :

<script type="text/javascript"><!--
{literal}
YAHOO.namespace( "liubin" );
(function() {

var Dom = YAHOO.util.Dom;
var Event = YAHOO.util.Event;
var DDM = YAHOO.util.DragDropMgr;

{/literal}
// app

YAHOO.liubin.DDApp = {ldelim}
    init: function() {ldelim}
{foreach $attribute.content.zones as $zone_id => $zone}
    {if and( is_set( $zone.blocks ), $zone.blocks|count() )}
    {foreach $zone.blocks as $block_id => $block}
      
         new YAHOO.util.DDTarget("z:{$zone_id}_b:{$block_id}_o");
        {foreach $block.valid as $item}
            dd{$zone_id}{$block_id}{$item.object_id} = new YAHOO.liubin.DDList("z:{$zone_id}_b:{$block_id}_i:{$item.object_id}");

            dd{$zone_id}{$block_id}{$item.object_id}.setHandleElId("z:{$zone_id}_b:{$block_id}_i:{$item.object_id}_h");
        {/foreach}
        
    {/foreach}
    {/if}
{/foreach}

    {rdelim}

{rdelim};
{literal}
// custom drag and drop implementation

YAHOO.liubin.DDList = function(id, sGroup, config) {

    YAHOO.liubin.DDList.superclass.constructor.call(this, id, sGroup, config);

    this.logger = this.logger || YAHOO;
    var el = this.getDragEl();
    Dom.setStyle(el, "opacity", 0.67); // The proxy is slightly transparent

    this.goingUp = false;
    this.lastY = 0;
};

YAHOO.extend(YAHOO.liubin.DDList, YAHOO.util.DDProxy, {

    startDrag: function(x, y) {
        this.logger.log(this.id + " startDrag");

        // make the proxy look like the source element
        var dragEl = this.getDragEl();
        var clickEl = this.getEl();
        Dom.setStyle(clickEl, "visibility", "hidden");

        dragEl.innerHTML = clickEl.innerHTML;

        Dom.setStyle(dragEl, "color", Dom.getStyle(clickEl, "color"));
        Dom.setStyle(dragEl, "backgroundColor", Dom.getStyle(clickEl, "backgroundColor"));
        Dom.setStyle(dragEl, "border", "2px solid gray");
    },

    endDrag: function(e) {

        var srcEl = this.getEl();
        var proxy = this.getDragEl();

        // Show the proxy element and animate it to the src element's location
        Dom.setStyle(proxy, "visibility", "");
        var a = new YAHOO.util.Motion( 
            proxy, { 
                points: { 
                    to: Dom.getXY(srcEl)
                }
            }, 
            0.2, 
            YAHOO.util.Easing.easeOut 
        )
        var proxyid = proxy.id;
        var thisid = this.id;

        // Hide the proxy and show the source element when finished with the animation
        a.onComplete.subscribe(function() {
                Dom.setStyle(proxyid, "visibility", "hidden");
                Dom.setStyle(thisid, "visibility", "");
            });
        a.animate();

        var url;
        var tableBody = srcEl.parentNode;
        var postData = "";
        var items = tableBody.getElementsByTagName("tr");
        for (i=0;i<items.length;i=i+1) {
            postData += "Items%5B%5D=" + items[i].id + "&";
        }

        var tableID = tableBody.parentNode.id;
{/literal}
alert(tableID);
        postData += 'Block=' + tableID + '&ContentObjectAttributeID=' + {$attribute.id} + '&Version=' + {$attribute.version};
        url = "{'/ezflow/request'|ezurl(no)}";
        YAHOO.util.Connect.asyncRequest( 'POST', url, false, postData );
{literal}

    },

    onDragDrop: function(e, id) {

        // If there is one drop interaction, the li was dropped either on the list,
        // or it was dropped on the current location of the source element.
        if (DDM.interactionInfo.drop.length === 1) {

            // The position of the cursor at the time of the drop (YAHOO.util.Point)
            var pt = DDM.interactionInfo.point; 

            // The region occupied by the source element at the time of the drop
            var region = DDM.interactionInfo.sourceRegion; 

            // Check to see if we are over the source element's location.  We will
            // append to the bottom of the list once we are sure it was a drop in
            // the negative space (the area of the list without any list items)
            if (!region.intersect(pt)) {
                var destEl = Dom.get(id);
                var destDD = DDM.getDDById(id);
                destEl.appendChild(this.getEl());
                destDD.isEmpty = false;
                DDM.refreshCache();
            }

        }
    },

    onDrag: function(e) {

        // Keep track of the direction of the drag for use during onDragOver
        var y = Event.getPageY(e);

        if (y < this.lastY) {
            this.goingUp = true;
        } else if (y > this.lastY) {
            this.goingUp = false;
        }

        this.lastY = y;
    },

    onDragOver: function(e, id) {
    
        var srcEl = this.getEl();
        var destEl = Dom.get(id);

        // We are only concerned with list items, we ignore the dragover
        // notifications for the list.
        if (destEl.nodeName.toLowerCase() == "tr") {
            var orig_p = srcEl.parentNode;
            var p = destEl.parentNode;

            if (this.goingUp) {
                p.insertBefore(srcEl, destEl); // insert above
            } else {
                p.insertBefore(srcEl, destEl.nextSibling); // insert below
            }

            DDM.refreshCache();
        }
    }
});

Event.onDOMReady(YAHOO.liubin.DDApp.init, YAHOO.liubin.DDApp, true);

})();



{/literal}
--></script>

b. in the extension/ezflow/modules/ezflow/request.php line 49

change

	    foreach( $block->getWaitingItems() as $blockItem )
	    {
	        if( $blockItem->attribute( 'object_id' ) == $itemParams['i'] )
	        {
	                if( $blockItem->toBeAdded() )
		            {
		                $blockItem->setAttribute( 'priority', $key + 1 );
		                $items[] = $blockItem;
		            }
		            else
		            {
		                $tmpItem =& $block->addItem( new eZPageBlockItem() );
		                $tmpItem->setAttribute( 'priority', $key + 1 );
		                $tmpItem->setAttribute( 'object_id', $blockItem->attribute( 'object_id' ) );
		                $tmpItem->setAttribute( 'ts_publication', $blockItem->attribute( 'ts_publication' ) );
		                $tmpItem->setAttribute( 'action', 'modify' );
		                $items[] = $tmpItem;
		            }
	        }
	    }

by

    /************added by LIU Bin for move the bloc valid begin****/
    if(array_key_exists("o",$blockParams))
    {
        foreach( $block->getValidItems() as $blockItem )
    	{
	        if( $blockItem->attribute( 'object_id' ) == $itemParams['i'] )
	        {
	
	                $tmpItem =& $block->addItem( new eZPageBlockItem() );
	                $tmpItem->setAttribute( 'priority', $key + 1 );
	                $tmpItem->setAttribute( 'object_id', $blockItem->attribute( 'object_id' ) );
	                $tmpItem->setAttribute( 'action', 'modify' );
	                $items[] = $tmpItem;
	
	        }
    	}
    }
    else
    {
    	 /************added by LIU Bin for move the bloc valid end****/
	    foreach( $block->getWaitingItems() as $blockItem )
	    {
	        if( $blockItem->attribute( 'object_id' ) == $itemParams['i'] )
	        {
	                if( $blockItem->toBeAdded() )
		            {
		                $blockItem->setAttribute( 'priority', $key + 1 );
		                $items[] = $blockItem;
		            }
		            else
		            {
		                $tmpItem =& $block->addItem( new eZPageBlockItem() );
		                $tmpItem->setAttribute( 'priority', $key + 1 );
		                $tmpItem->setAttribute( 'object_id', $blockItem->attribute( 'object_id' ) );
		                $tmpItem->setAttribute( 'ts_publication', $blockItem->attribute( 'ts_publication' ) );
		                $tmpItem->setAttribute( 'action', 'modify' );
		                $items[] = $tmpItem;
		            }
	        }
	    }
 /************added by LIU Bin for move the bloc valid begin****/
    }
 /************added by LIU Bin for move the bloc valid end****/

c. the line 777 in extension/ezflow/datatypes/ezpage/ezpagetype.php

after :

 $db->query( "UPDATE ezm_pool SET ts_publication='" . $item->attribute( 'ts_publication' ) . "'
                                                               WHERE object_id='" . $item->attribute( 'object_id' ) . "'" );

add code :

 /************added by LIU Bin for move the bloc valid****/
                                        	$sql =  "UPDATE ezm_pool SET priority='" . $item->attribute( 'priority' ) . "'
                                                WHERE object_id='" . $item->attribute( 'object_id' ) . "' and  block_id='$blockID'" ;
                                        	$db->query($sql);

Then, we can drag and drop in the block valid list.

And By a way, for the block manual. the order of the list in ezflow edition is contrary order in the front. it's a bug. i reverse the array $block.valid in the template front

I think it will be fixed in the futur version

Thursday 10 July 2008 8:32:14 am

Implemented in ezflow 1.0-1 and ezflow 1.1-0 (next version).

expandshrink

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

36 542 Users on board!

Forums menu

Proudly Developed with from