JAVASCRIPT   62

lock.js

Guest on 12th October 2021 03:15:53 PM

  1. /**
  2.  *      modules/lock/lock.js
  3.  *      Frontend code for general object properties
  4.  *
  5.  *      Copyright Gottfried Haider, Danja Vasiliev 2010.
  6.  *      This source code is licensed under the GNU General Public License.
  7.  *      See the file COPYING for more details.
  8.  *
  9.  */
  10.  
  11. /**
  12.  *      NOTE: this module introduces a new object class .locked
  13.  *      Any other modules which define keybinding onto the objects
  14.  *      must include .not('.locked') to their selectors.
  15.  *
  16.  *      i.e. $('.glue-selected').not('.locked')
  17.  */
  18.  
  19. $('.object').live('glue-object-lock', function(e) {
  20.         // if object is in locked state
  21.         // disable dragging and resize
  22.  
  23.         if ($(this).hasClass('locked')) {
  24.                 $(this).draggable('disable');
  25.                 $(this).resizable('disable');
  26.                 // small workaround for textarea resize handle
  27.                 if ($(this).hasClass('text')) {
  28.                         $(this).children('textarea').css('resize', 'none');
  29.                 }
  30.         }
  31. });
  32.  
  33.  
  34. $(document).ready(function() {
  35.         //
  36.         // trigger object lock check
  37.         //
  38.         $('.object').trigger('glue-object-lock');
  39.        
  40.         //
  41.         // register menu items
  42.         //
  43.         var elem;
  44.         $.glue.contextmenu.hide();
  45.  
  46.         elem = $('<img src="'+$.glue.base_url+'modules/lock/lock.png" alt="btn" title="lock object" width="32" height="32">');
  47.  
  48.         $(elem).bind('glue-menu-activate', function(e) {
  49.                 var obj = $(this).data('owner');
  50.                 var tip
  51.                 if ($(obj).hasClass('locked')) {
  52.                         tip = 'object is locked, click to unlock it';
  53.                 } else { tip = 'lock object';
  54.                 }
  55.                 $(this).attr('title', tip);
  56.         });
  57.  
  58.         $(elem).bind('click', function(e) {
  59.                 var that = this;
  60.                 var obj = $(this).data('owner');
  61.  
  62.                 if ($(obj).hasClass('locked')) {
  63.                         $(obj).removeClass('locked');
  64.                         $(obj).draggable('enable');
  65.                         $(obj).resizable('enable');
  66.                         $.glue.contextmenu.hide();
  67.                         $.glue.contextmenu.show(obj);
  68.                 } else {
  69.                         $(obj).addClass('locked');
  70.                         $(obj).draggable('disable');
  71.                         $(obj).resizable('disable');
  72.                         if ($(obj).hasClass('text')) {
  73.                                 $(obj).children('textarea').css('resize', 'none');
  74.                         }
  75.                         $.glue.contextmenu.hide();
  76.                         $.glue.contextmenu.show(obj);
  77.                 }
  78.                 $(that).trigger('glue-menu-activate');
  79.                 $.glue.object.save(obj);
  80.         });
  81.        
  82.         $.glue.contextmenu.register('object', 'object-lock', elem, 19);
  83. });

Raw Paste


Login or Register to edit or fork this paste. It's free.