Index: qPloneTabs/trunk/HISTORY.txt
===================================================================
--- qPloneTabs/trunk/HISTORY.txt	(revision 3713)
+++ qPloneTabs/trunk/HISTORY.txt	(revision 1)
@@ -1,17 +1,2 @@
-0.4.0
-
-  * now global_sections tabs updated asynchronous during changes on qPloneTabs ajax configlet
-
-  * fixed templates used as response to ajax requests: added omitted http header 'content-type'
-
-  * added compatibility with IE7
-
-0.3.1
-
-  * fixed js bug: after cancel of sort action innerHTML return not actual data for updating action to previous state,
-                  now instead of innerHTML property used DOM creation of actions list
-
-  * fixed css bug: when action's url is too long it overlap drag handle on sorting thus disabling drug&drop of this action
-
 0.3.0
 
Index: qPloneTabs/trunk/README.txt
===================================================================
--- qPloneTabs/trunk/README.txt	(revision 3713)
+++ qPloneTabs/trunk/README.txt	(revision 1)
@@ -1,16 +1,16 @@
 Quintagroup Plone Tabs
 
-  The product allows Plone websites to modify portal_actions tool
-  from portal_control_panel form.
+  The product allows Plone websites to modify portal_tabs
+  actions from portal_control_panel form.
 
-  (c) "Quintagroup":http://quintagroup.com/ , 2006 - 2008.
+  (c) "Quintagroup":http://quintagroup.com/ , 2006. 
 
   support@quintagroup.com * quintessence of modern business
 
-Tested on:
+Compatible with
 
   * Firefox
 
-  * IE 5.5 - 7
+  * IE 5.5 - 6.0
 
 Authors
@@ -19,4 +19,2 @@
 
   * Vitaliy Podoba
-
-  * Volodymyr Rudnytskyy
Index: qPloneTabs/trunk/TODO.txt
===================================================================
--- qPloneTabs/trunk/TODO.txt	(revision 3713)
+++ qPloneTabs/trunk/TODO.txt	(revision 1)
@@ -1,7 +1,3 @@
   * Opera compatibility
-
-DONE  * 'portal-globalnav' visualization without page reloading
-
+  * 'portal-globalnav' visualization without page reloading
   * using kukit framework
-
-  * plone 3 compatibility
Index: qPloneTabs/trunk/skins/qPloneTabs/javascripts/qplonetabs.js
===================================================================
--- qPloneTabs/trunk/skins/qPloneTabs/javascripts/qplonetabs.js	(revision 3713)
+++ qPloneTabs/trunk/skins/qPloneTabs/javascripts/qplonetabs.js	(revision 1)
@@ -1,7 +1,6 @@
 /* Global variables */
 
-var gBeforeReorderData = [];        // storage for actions before sorting
 var gBeforeReorderFragment = null;  // document fragment for insertion in UL after clicking cancel button after reorder
-var gBeforeEditData = {};           // hash for storage tabs fields before editing
+var gBeforeEditData = {};  // hash for storage tabs fields before editing
 var category = 'portal_tabs';
 
@@ -11,13 +10,6 @@
   '#app #reorder' : function(el){
     el.onclick = function(ev){
-      var ev = ev ? ev : window.event;
-      // remember current actions state for 'cancel sorting' case
-//       gBeforeReorderFragment = document.getElementById('tabslist').innerHTML;
-      var lis = $A($('tabslist').getElementsByTagName('LI'));
-      gBeforeReorderData = [];
-      lis.each(function(el, idx) {
-          gBeforeReorderData.push(grepInfo(el));
-      });
-
+      var ev = ev?ev:window.event;
+      gBeforeReorderFragment = document.getElementById('tabslist').innerHTML;
       shiftClassNames('app', 'viewing', 'sorting');
       Sortable.create('tabslist', {handle: 'drag-handle'});
@@ -39,5 +31,5 @@
            lis.each(function(el,idx){
              inputs(el).each(function(inpt){
-               inpt.type == 'hidden' ? inpt.value = idx : inpt.name = inpt.name.replace(/i\d+_/, 'i'+idx+'_');
+               inpt.type=='hidden'?inpt.value=idx:inpt.name=inpt.name.replace(/i\d+_/, 'i'+idx+'_');
              });
            });
@@ -45,5 +37,4 @@
            Sortable.destroy('tabslist');
            new Effect.Highlight('tabslist',{});
-           updateGlobalSections();
          },
          onComplete: function(request){Behaviour.apply();}
@@ -56,17 +47,9 @@
   '#app #cancel' : function(el){
     el.onclick = function(ev){
-      var ev = ev ? ev : window.event;
+      var ev = ev?ev:window.event;
       Sortable.destroy('tabslist');
       shiftClassNames('app', 'sorting', 'viewing');
-
-      // update action to before sorting state
-//      Element.update('tabslist', gBeforeReorderFragment);
-      var tabslist = $('tabslist');
-      tabslist.innerHTML = "";
-      for (var i = 0, li; li = gBeforeReorderData[i]; i++) {
-          tabslist.appendChild(recoverAction(li));
-      }
-
-      el.attachEvent ? ieHover() : '';
+      Element.update('tabslist', gBeforeReorderFragment);
+      el.attachEvent ? ieHover():'';
       Behaviour.apply();
       Event.stop(ev);
@@ -89,5 +72,4 @@
                 Element.addClassName(li, 'invisible');
               };
-              updateGlobalSections();
             },
             onFailure: function(request){
@@ -130,5 +112,4 @@
              };
            }});
-           updateGlobalSections();
          }
         }
@@ -188,6 +169,5 @@
                   Behaviour.apply();
                 }
-              });
-              updateGlobalSections();
+              })
             },
             onFailure: function(request){
@@ -269,5 +249,4 @@
                }
              });
-             updateGlobalSections();
            },
            onFailure: function(request){
@@ -307,5 +286,4 @@
               el.attachEvent?ieHover():'';
               Behaviour.apply();
-              updateGlobalSections();
             }
           });
@@ -338,10 +316,5 @@
     };
 });
-Event.observe(window, 'unload', function() {
-    // cleanup memory to prevent memory lack
-    delete gBeforeReorderFragment;
-    delete gBeforeEditData;
-    delete gBeforeReorderData
-});
+Event.observe(window, 'unload', function(){gBeforeReorderFragment = null; gBeforeEditData = null;});
 
 if (window.attachEvent) {Event.observe(window, 'load', ieHover, false);}
@@ -401,306 +374,5 @@
 
 function removeEdition(el) {
-  var el = el ? el : 'tabslist';
-  $A($(el).getElementsByTagName('LI')).each(function(li,idx){if(li != el) li.onclick=function(event){return false;};});
-};
-
-
-// API for updating global_sections tabs
-
-function updateGlobalSections() {
-    new Ajax.Updater({success : 'portal-globalnav'}, 'qpt_globalsections', {
-            method : 'post',
-            insertion : Insertion.Instead
-    });
-}
-
-// Insertion object defined in prototype javascript library
-Insertion.Instead = Class.create();
-Insertion.Instead.prototype = Object.extend(new Abstract.Insertion('beforeEnd'), {
-  initialize: function(element, content) {
-    this.element = $(element);
-    this.content = content.stripScripts();
-
-    var ul = document.createElement("UL");
-    ul.id = "portal-globalnav";
-    ul.innerHTML = this.content;
-
-    var parent = this.element.parentNode;
-    parent.removeChild(this.element);
-    parent.appendChild(ul);
-
-    setTimeout(function() {content.evalScripts()}, 10);
-  }
-
-});
-
-//**********************************************
-
-//    Fixed bug: innerHTML return not actual data, now used DOM
-
-
-function grepInfo(li) {
-    
-    // grep li state
-    var info = {"li.id" : li.id, "li.title": li.title, "li.className" : li.className};
-    
-    // grep visibility checkbox state
-    var vis_box = li.getElementsByTagName("INPUT")[0];
-    info["vis_box.checked"] = vis_box.checked;
-    info["vis_box.name"] = vis_box.name;
-    
-    var spans = li.getElementsByTagName("SPAN");
-    
-    // grep url helper state
-    info["url_helper.text"] = spans[0].innerHTML;
-    
-    // grep tab title state
-    info["tab_title.text"] = spans[1].innerHTML;
-    
-    // grep edit form state
-    var edit_form = li.getElementsByTagName("FORM")[0];
-    info["edit_form.name"] = edit_form.name;
-    info["edit_form.action"] = edit_form.action;
-    
-    var inputs = edit_form.getElementsByTagName("INPUT");
-    
-    // grep hidden input index value
-    info["input_idx.value"] = inputs[0].value;
-    
-    // grep action name input state
-    info["input_name.name"] = inputs[1].name;
-    info["input_name.value"] = inputs[1].value;
-    
-    // grep dl advanced section class name
-    info["dl_advanced.className"] = edit_form.getElementsByTagName("DL")[1].className;
-    info["dd_advanced.style.display"] = edit_form.getElementsByTagName("DD")[1].style.display;
-    
-    // grep url input state
-    info["input_url.name"] = inputs[2].name;
-    info["input_url.value"] = inputs[2].value;
-    
-    // grep id input state
-    info["input_id.name"] = inputs[3].name;
-    info["input_id.value"] = inputs[3].value;
-    
-    // grep condition input state
-    info["input_condition.name"] = inputs[4].name;
-    info["input_condition.value"] = inputs[4].value;
-    
-    // grep buttons state
-    info["save_button.value"] = inputs[5].value;
-    info["cancel_button.value"] = inputs[6].value;
-    
-    return info;
-}
-
-function recoverAction(info) {
-    
-    // create list item and assign corresponding attributes
-    var li = document.createElement("LI");
-    li.id = info["li.id"];
-    li.title = info["li.title"];
-    li.className = info["li.className"];
-    
-    // create drag handle image and assign corresponding attributes
-    var drag_handle = document.createElement("IMG");
-    drag_handle.className = "drag-handle";
-    drag_handle.src = "drag.gif";
-    drag_handle.alt = "";
-    drag_handle.height = "11";
-    drag_handle.width = "25";
-    
-    li.appendChild(drag_handle);
-    
-    // create bridge div element for visibility checkbox
-    var bridge = document.createElement("DIV");
-    bridge.className = "bridge";
-    
-    // create checkbox for visibility control
-    var vis_box = document.createElement("INPUT");
-    vis_box.type = "checkbox";
-    vis_box.className = "visibility";
-    vis_box.value = "1";
-    vis_box.title = "visibility";
-    vis_box.name = info["vis_box.name"];
-    
-    bridge.appendChild(vis_box);
-
-    // buggy IE
-    if (info["vis_box.checked"]) {
-        vis_box.setAttribute("checked", "checked");
-        vis_box.defaultChecked = true;
-    }
-
-    li.appendChild(bridge);
-    
-    // create Delete link
-    var del_link = document.createElement("A");
-    del_link.className = "delete";
-    del_link.href = "#";
-    del_link.appendChild(document.createTextNode("Delete"));
-    
-    li.appendChild(del_link);
-    
-    // create url-helper element
-    var url_helper = document.createElement("SPAN");
-    url_helper.className = "url-helper";
-    url_helper.appendChild(document.createTextNode(info["url_helper.text"]));
-    
-    li.appendChild(url_helper);
-    
-    // create tab title element
-    var tab_title = document.createElement("SPAN");
-    tab_title.className = "tab-title";
-    tab_title.appendChild(document.createTextNode(info["tab_title.text"]));
-    
-    li.appendChild(tab_title);
-    
-    // create edit form
-    var edit_form = document.createElement("FORM");
-    edit_form.className = "editform";
-    edit_form.method = "post";
-    edit_form.name = info["edit_form.name"];
-    edit_form.action = info["edit_form.action"];
-    
-    // create hidden input with index value
-    var input_idx = document.createElement("INPUT");
-    input_idx.type = "hidden";
-    input_idx.name = "idx";
-    input_idx.value = info["input_idx.value"];
-    
-    edit_form.appendChild(input_idx);
-    
-    // create dl element for name input section
-    var dl_name = document.createElement("DL");
-    var dt_name = document.createElement("DT");
-    var name_label = document.createElement("LABEL");
-    name_label.appendChild(document.createTextNode("Name"));
-    
-    dt_name.appendChild(name_label);
-    dl_name.appendChild(dt_name);
-    
-    // crete input for action name
-    var dd_name = document.createElement("DD");
-    var input_name = document.createElement("INPUT");
-    input_name.type = "text";
-    input_name.size = "30";
-    input_name.name = info["input_name.name"];
-    input_name.value = info["input_name.value"];
-    
-    dd_name.appendChild(input_name);
-    dl_name.appendChild(dd_name);
-    edit_form.appendChild(dl_name);
-    
-    // create dl element for advanced inputs
-    var dl_advanced = document.createElement("DL");
-    dl_advanced.className = info["dl_advanced.className"];
-    
-    // create collapsible header
-    var dt_advanced = document.createElement("DT");
-    dt_advanced.className = "headerAdvanced";
-    dt_advanced.appendChild(document.createTextNode("Advanced"));
-    
-    dl_advanced.appendChild(dt_advanced);
-    
-    // create collapsible content
-    var dd_advanced = document.createElement("DD");
-    dd_advanced.className = "contentAdvanced";
-    dd_advanced.style.display = info["dd_advanced.style.display"];
-    
-    // add URL section
-    // add url header
-    var dl_url = document.createElement("DL");
-    var dt_url = document.createElement("DT");
-    var label_url = document.createElement("LABEL");
-    label_url.appendChild(document.createTextNode("URL (Expression)"));
-    
-    dt_url.appendChild(label_url);
-    dl_url.appendChild(dt_url);
-    
-    //add url value
-    var dd_url = document.createElement("DD");
-    var input_url = document.createElement("INPUT");
-    input_url.type = "text";
-    input_url.size = "30";
-    input_url.name = info["input_url.name"];
-    input_url.value = info["input_url.value"];
-    
-    dd_url.appendChild(input_url);
-    dl_url.appendChild(dd_url);
-    dd_advanced.appendChild(dl_url);
-    
-    // add ID section
-    // add id header
-    var dl_id = document.createElement("DL");
-    var dt_id = document.createElement("DT");
-    var label_id = document.createElement("LABEL");
-    label_id.appendChild(document.createTextNode("Id"));
-    
-    dt_id.appendChild(label_id);
-    dl_id.appendChild(dt_id);
-    
-    //add id value
-    var dd_id = document.createElement("DD");
-    var input_id = document.createElement("INPUT");
-    input_id.type = "text";
-    input_id.name = info["input_id.name"];
-    input_id.value = info["input_id.value"];
-    
-    dd_id.appendChild(input_id);
-    dl_id.appendChild(dd_id);
-    dd_advanced.appendChild(dl_id);
-    
-    // add Condition section
-    // add condition header
-    var dl_condition = document.createElement("DL");
-    var dt_condition = document.createElement("DT");
-    var label_condition = document.createElement("LABEL");
-    label_condition.appendChild(document.createTextNode("Condition (Expression)"));
-    
-    dt_condition.appendChild(label_condition);
-    dl_condition.appendChild(dt_condition);
-    
-    //add condition value
-    var dd_condition = document.createElement("DD");
-    var input_condition = document.createElement("INPUT");
-    input_condition.type = "text";
-    input_condition.size = "30";
-    input_condition.name = info["input_condition.name"];
-    input_condition.value = info["input_condition.value"];
-    
-    dd_condition.appendChild(input_condition);
-    dl_condition.appendChild(dd_condition);
-    dd_advanced.appendChild(dl_condition);
-    
-    // add visual clear div to advanced dd element
-    var visual_clear = document.createElement("DIV");
-    visual_clear.className = "visualClear";
-    visual_clear.appendChild = document.createTextNode("<!-- -->");
-    
-    dd_advanced.appendChild(visual_clear);
-    dl_advanced.appendChild(dd_advanced);
-    edit_form.appendChild(dl_advanced);
-    
-    // create div element for form controls
-    var form_controls = document.createElement("DIV");
-    
-    // add save button
-    var save_button = document.createElement("INPUT");
-    save_button.type = "submit";
-    save_button.className = "editsave";
-    save_button.value = info["save_button.value"];
-    form_controls.appendChild(save_button);
-    
-    // add cancel button
-    var cancel_button = document.createElement("INPUT");
-    cancel_button.type = "submit";
-    cancel_button.className = "editcancel";
-    cancel_button.value = info["cancel_button.value"];
-    form_controls.appendChild(cancel_button);
-    
-    edit_form.appendChild(form_controls);
-    li.appendChild(edit_form);
-
-    return li;
-}
+  var el = el?el:'tabslist';
+  $A($(el).getElementsByTagName('LI')).each(function(li,idx){if(li != el) li.onclick='';});
+};
Index: qPloneTabs/trunk/skins/qPloneTabs/prefs_tabs_form.cpt
===================================================================
--- qPloneTabs/trunk/skins/qPloneTabs/prefs_tabs_form.cpt	(revision 3713)
+++ qPloneTabs/trunk/skins/qPloneTabs/prefs_tabs_form.cpt	(revision 1)
@@ -10,12 +10,8 @@
 <head>
   <metal:javascript_head_slot fill-slot="javascript_head_slot">
-        <script type="text/javascript" src="javascripts/prototype.js"
-                tal:attributes="src string:${portal_url}/${attrs/src}"></script>
-        <script type="text/javascript" src="javascripts/scriptaculous.js"
-                tal:attributes="src string:${portal_url}/${attrs/src}"></script>
-        <script type="text/javascript" src="javascripts/behaviour.js"
-                tal:attributes="src string:${portal_url}/${attrs/src}"></script>
-        <script type="text/javascript" src="javascripts/qplonetabs.js"
-                tal:attributes="src string:${portal_url}/${attrs/src}"></script>
+        <script type="text/javascript" src="javascripts/prototype.js"></script>
+        <script type="text/javascript" src="javascripts/scriptaculous.js"></script>
+        <script type="text/javascript" src="javascripts/behaviour.js"></script>
+        <script type="text/javascript" src="javascripts/qplonetabs.js"></script>
   </metal:javascript_head_slot>
   <metal:cssslot fill-slot="css_slot">
Index: qPloneTabs/trunk/skins/qPloneTabs/qplonetabs.css.dtml
===================================================================
--- qPloneTabs/trunk/skins/qPloneTabs/qplonetabs.css.dtml	(revision 3713)
+++ qPloneTabs/trunk/skins/qPloneTabs/qplonetabs.css.dtml	(revision 1)
@@ -36,7 +36,5 @@
 #app #addaction.adding              .field-id,
 #app #addaction.adding              .field-condition,
-#app #addaction.adding              .add-controls {
-    display: block;
-}
+#app #addaction.adding              .add-controls    {display: block;}
 
 #app                                #busy,
@@ -57,7 +55,5 @@
 #app                                .field-id,
 #app                                .field-condition,
-#app                                .add-controls {
-    display: none;
-}
+#app                                .add-controls    {display: none;}
 
 #app.working #busy,
@@ -68,17 +64,11 @@
 #app ul#roottabs.csshover li:hover   .visibility,
 #app ul#roottabs.csshover li.onHover .visibility,
-#app.sorting                         .drag-handle {
-    display: inline;
-}
+#app.sorting                         .drag-handle     {display: inline;}
 
 /**********************************************************/
 
-#app.sorting #tabslist img.drag-handle {
-    cursor: move;
-}
-
-#app .invisible span.tab-title {
-    color:#aaa;
-}
+#app.sorting #tabslist img.drag-handle {cursor: move;}
+
+#app .invisible span.tab-title {color:#aaa;}
 
 /*common***************************************************/
@@ -139,12 +129,7 @@
     position:absolute;
     right:0;
-    margin-left:20%;
     padding-right:0.5em;
-    overflow:hidden;
     font-size:80%;
     color:#aaa;
-    text-align: right;
-    width: 80%;
-
 }
 
Index: qPloneTabs/trunk/skins/qPloneTabs/qpt_getroottabs.pt
===================================================================
--- qPloneTabs/trunk/skins/qPloneTabs/qpt_getroottabs.pt	(revision 3713)
+++ qPloneTabs/trunk/skins/qPloneTabs/qpt_getroottabs.pt	(revision 1)
@@ -1,11 +1,2 @@
-<metal:block use-macro="here/global_defines/macros/defines" />
-
-<tal:cache tal:define="lang language;
-                       charset site_properties/default_charset|string:utf-8">
-  <metal:cache use-macro="here/global_cache_settings/macros/cacheheaders">
-    Get the global cache headers located in global_cache_settings.
-  </metal:cache>
-</tal:cache>
-
 <tal:tabs tal:define="dummy python:request.RESPONSE.setHeader('Expires', 'Mon, 26 Jul 1996 05:00:00 GMT')"
           tal:repeat="tab python:modules['Products.qPloneTabs'].getRootTabs(here)">
Index: qPloneTabs/trunk/skins/qPloneTabs/qpt_gettabslist.pt
===================================================================
--- qPloneTabs/trunk/skins/qPloneTabs/qpt_gettabslist.pt	(revision 3713)
+++ qPloneTabs/trunk/skins/qPloneTabs/qpt_gettabslist.pt	(revision 1)
@@ -20,5 +20,5 @@
         tal:attributes="action string:${here/portal_url}/prefs_tabs_form;
                         name string:f$index">
-      <input type="hidden" name="idx" tal:attributes="value index" />
+    <input type="hidden" name="idx" tal:attributes="value index" />
       <dl>
         <dt><label>Name</label></dt>
@@ -51,8 +51,8 @@
         </dd>
       </dl>
-      <div>
-        <input type="submit" class="editsave"   i18n:attributes="value" value="Save"   />
-        <input type="submit" class="editcancel" i18n:attributes="value" value="Cancel" />
-      </div>
+    <div>
+      <input type="submit" class="editsave"   i18n:attributes="value" value="Save"   />
+      <input type="submit" class="editcancel" i18n:attributes="value" value="Cancel" />
+    </div>
   </form>
 </li>
Index: qPloneTabs/trunk/skins/qPloneTabs/qpt_globalsections.pt
===================================================================
--- qPloneTabs/trunk/skins/qPloneTabs/qpt_globalsections.pt	(revision 3713)
+++ 	(revision )
@@ -1,30 +1,0 @@
-<tal:defs define="dummy python:request.RESPONSE.setHeader('Expires', 'Mon, 26 Jul 1996 05:00:00 GMT');" />
-
-<metal:block use-macro="here/global_defines/macros/defines" />
-
-<tal:cache tal:define="lang language;
-                       charset site_properties/default_charset|string:utf-8">
-  <metal:cache use-macro="here/global_cache_settings/macros/cacheheaders">
-    Get the global cache headers located in global_cache_settings.
-  </metal:cache>
-</tal:cache>
-
-<div metal:define-macro="portal_tabs"
-     tal:omit-tag=""
-     tal:define="selected_tabs python:here.selectedTabs('index_html', here, portal_tabs);
-                 selected_portal_tab selected_tabs/portal;"
-     tal:condition="portal_tabs">
-
-        <tal:tabs tal:repeat="tab portal_tabs">
-            <li tal:attributes="id string:portaltab-${tab/id};
-                                class python:test(selected_portal_tab==tab['id'], 'selected', 'plain');">
-                <a href=""
-                   tal:content="tab/name"
-                   tal:attributes="href tab/url;
-                                   title tab/description|nothing">
-                    Tab Name
-                </a>
-            </li>
-        </tal:tabs>
-
-</div>
Index: qPloneTabs/trunk/version.txt
===================================================================
--- qPloneTabs/trunk/version.txt	(revision 3713)
+++ qPloneTabs/trunk/version.txt	(revision 1)
@@ -1,1 +1,1 @@
-0.4.0
+0.3.0
