[dev] [commit] r986 - phplib templates/admin wwwbase/js wwwbase/styles

automailer at dexonline.ro automailer at dexonline.ro
Mon Sep 16 20:32:25 EEST 2013


Author: cata
Date: Mon Sep 16 20:32:25 2013
New Revision: 986

Log:
Finish work on the window manager for lexemEdit.php. Finish TODO from r978.

* Load saved window positions if a cookie exists
* Remember which window has focus
* Add a link that resets the interface

Modified:
   phplib/SmartyWrap.php
   templates/admin/lexemEditActions.ihtml
   wwwbase/js/lexemEdit.js
   wwwbase/styles/lexemEdit.css

Modified: phplib/SmartyWrap.php
==============================================================================
--- phplib/SmartyWrap.php	Sun Sep 15 20:21:16 2013	(r985)
+++ phplib/SmartyWrap.php	Mon Sep 16 20:32:25 2013	(r986)
@@ -160,7 +160,7 @@
       case 'paradigm':           self::$cssFiles[10] = 'paradigm.css?v=1'; break;
       case 'hangman':            self::$cssFiles[11] = 'hangman.css?v=3'; break;
       case 'mill':               self::$cssFiles[12] = 'mill.css?v=2'; break;
-      case 'lexemEdit':          self::$cssFiles[13] = 'lexemEdit.css?v=4'; break;
+      case 'lexemEdit':          self::$cssFiles[13] = 'lexemEdit.css?v=5'; break;
       case 'jcrop':              self::$cssFiles[14] = 'jquery.Jcrop.min.css?v=2'; break;
       case 'easyui':
         self::$cssFiles[15] = 'easyui/default/easyui.css?v=1';
@@ -198,7 +198,7 @@
       case 'hangman':          self::$jsFiles[15] = 'hangman.js?v=5'; break;
       case 'mill':             self::$jsFiles[16] = 'mill.js?v=3'; break;
       case 'wotd':             self::$jsFiles[17] = 'wotd.js?v=1';
-      case 'lexemEdit':        self::$jsFiles[18] = 'lexemEdit.js?v=5'; break;
+      case 'lexemEdit':        self::$jsFiles[18] = 'lexemEdit.js?v=6'; break;
       case 'jcrop':            self::$jsFiles[19] = 'jquery.Jcrop.min.js?v=2'; break;
       case 'easyui':           self::$jsFiles[20] = 'jquery.easyui.min.js?v=1'; break;
       case 'select2':          self::$jsFiles[21] = 'select2.min.js?v=3'; break;

Modified: templates/admin/lexemEditActions.ihtml
==============================================================================
--- templates/admin/lexemEditActions.ihtml	Sun Sep 15 20:21:16 2013	(r985)
+++ templates/admin/lexemEditActions.ihtml	Mon Sep 16 20:32:25 2013	(r986)
@@ -34,4 +34,8 @@
   
     
   <a href="?lexemId={$lexem->id}">renunță</a>
+
+  <div class="interfaceReset">
+    <a id="interfaceResetLink" href="#" title="resetează poziția ferestrelor">resetează interfața</a>
+  </div>
 </div>

Modified: wwwbase/js/lexemEdit.js
==============================================================================
--- wwwbase/js/lexemEdit.js	Sun Sep 15 20:21:16 2013	(r985)
+++ wwwbase/js/lexemEdit.js	Mon Sep 16 20:32:25 2013	(r986)
@@ -1,4 +1,5 @@
-struct_anyChanges = false;
+var struct_anyChanges = false;
+var COOKIE_NAME = 'lexemEdit';
 $.cookie.json = true;
 
 function lexemEditInit() {
@@ -99,31 +100,7 @@
   $('.mergeLexem').click(mergeLexemButtonClick);
   $('.similarLink').click(similarLinkClick);
 
-  var props = ['left', 'top', 'width', 'height'];
-
-  $('.box').each(function() {
-    var $w = $().WM('open');
-    $w.find('.titlebartext').text($(this).attr('data-title'));
-    $w.attr('data-id', $(this).attr('data-id'));
-    for (var i = 0; i < props.length; i++) {
-      if (typeof($(this).attr('data-' + props[i])) != 'undefined') {
-        var value = parseInt($(this).attr('data-' + props[i]));
-        if (props[i] == 'left') {
-          value += parseInt($('#wmCanvas').offset().left);
-        } else if (props[i] == 'top') {
-          value += parseInt($('#wmCanvas').offset().top);
-        }
-        $w.css(props[i], value + 'px');
-      }
-    }
-    if ($(this).attr('data-minimized')) {
-      $w.WM('minimize');
-    }
-    $w.find('.windowcontent').append($(this).children());
-    $('#wmCanvas').append($w);
-  });
-  $('.window.minimized').each(function() { $(this).WM('raise'); });
-  $('#resizerproxy').mouseup(resizerSetCookie);
+  wmInit();
 }
 
 function sourceMatcher(term, text) {
@@ -395,9 +372,67 @@
   });
 }
 
-function resizerSetCookie() {
+// Initializes the window manager
+function wmInit() {
+  $('.box').each(function() {
+    // Convert each box to a window
+    var $w = $().WM('open');
+    $w.find('.titlebartext').text($(this).attr('data-title'));
+    $w.attr('data-id', $(this).attr('data-id'));
+    $w.find('.windowcontent').append($(this).children());
+    $('#wmCanvas').append($w);
+  });
+  wmSetCoordinates();
+
+  // Set some handlers for moving, resizing, and resetting the interface
+  $('#resizerproxy').mouseup(wmSetCookie);
+  $('#moverproxy').mouseup(wmSetCookie);
+  $('#interfaceResetLink').click(wmInterfaceReset);
+}
+
+// Sets the coordinates for each window based on the cookie (if available) or on HTML5 attributes of the original box
+function wmSetCoordinates() {
+  var props = ['left', 'top', 'width', 'height'];
+  var cookie = $.cookie(COOKIE_NAME);
+
+  $('.window').each(function() {
+    var id = $(this).attr('data-id');
+    if (cookie) {
+      for (var i = 0; i < props.length; i++) {
+        $(this).css(props[i], cookie[id][props[i]] + 'px');
+      }
+      if (cookie[id].minimized) {
+        $(this).WM('minimize');
+      }
+    } else {
+      // No cookie - load the corresponding box
+      var box = $('.box[data-id="' + id + '"]'); 
+      for (var i = 0; i < props.length; i++) {
+        if (typeof(box.attr('data-' + props[i])) != 'undefined') {
+          var value = parseInt(box.attr('data-' + props[i]));
+          if (props[i] == 'left') {
+            value += parseInt($('#wmCanvas').offset().left);
+          } else if (props[i] == 'top') {
+            value += parseInt($('#wmCanvas').offset().top);
+          }
+          $(this).css(props[i], value + 'px');
+        }
+      }
+      if (box.attr('data-minimized')) {
+        $(this).WM('minimize');
+      }
+    }
+  });
+  if (cookie) {
+    $('.window[data-id="' + cookie.focused + '"]').WM('raise');
+  } else {
+    // Raise minimized windows for clean interfaces, so that the users know they're there
+    $('.window.minimized').each(function() { $(this).WM('raise'); });
+  }
+}
+
+function wmSetCookie() {
   var data = {};
-  alert(data);
   $('.window').each(function() {
     var params = { minimized: $(this).hasClass('minimized') };
     if (params.minimized) {
@@ -414,5 +449,12 @@
     }
     data[$(this).attr('data-id')] = params;
   });
-  $.cookie('lexemEdit', data, { expires: 365 });
+  data['focused'] = $('.window.focused').attr('data-id');
+  $.cookie(COOKIE_NAME, data, { expires: 365 });
+}
+
+function wmInterfaceReset() {
+  $.removeCookie(COOKIE_NAME);
+  wmSetCoordinates();
+  return false;
 }

Modified: wwwbase/styles/lexemEdit.css
==============================================================================
--- wwwbase/styles/lexemEdit.css	Sun Sep 15 20:21:16 2013	(r985)
+++ wwwbase/styles/lexemEdit.css	Mon Sep 16 20:32:25 2013	(r986)
@@ -188,6 +188,11 @@
   margin: 0px 0px;
 }
 
+.interfaceReset {
+  float: right;
+  padding: 3px 10px;
+}
+
 /* Window manager settings */
 .titlebaricon {
   display: none;


More information about the Dev mailing list