From 8313191f54485192c74ffb6383647d987273d56d Mon Sep 17 00:00:00 2001 From: Benjamin Renard Date: Wed, 21 Jan 2015 16:35:23 +0100 Subject: [PATCH] LSformElement :: select_object : Add ordered feature --- .../LSattr_html_select_object.docbook | 13 ++++++ public_html/images/default/down.png | Bin 0 -> 426 bytes public_html/images/default/up.png | Bin 0 -> 408 bytes .../class.LSformElement_select_object.php | 5 ++- .../js/LSformElement_select_object_field.js | 41 ++++++++++++++++++ 5 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 public_html/images/default/down.png create mode 100644 public_html/images/default/up.png diff --git a/doc/conf/LSattribute/LSattr_html/LSattr_html_select_object.docbook b/doc/conf/LSattribute/LSattr_html/LSattr_html_select_object.docbook index b0cd3c12..0fb33f1b 100644 --- a/doc/conf/LSattribute/LSattr_html/LSattr_html_select_object.docbook +++ b/doc/conf/LSattribute/LSattr_html/LSattr_html_select_object.docbook @@ -13,6 +13,7 @@ 'display_name_format' => '[LSformat du nom d'affichage des LSobjects]', 'value_attribute' => '[Nom de l'attribut clé des LSobjects]' ), + 'ordered' => [Booléen], 'sort' => [Booléen], 'sortDirection' => '[ASC|DESC]' ),]]> @@ -66,6 +67,18 @@ + + ordered + + Booléen définissant si la liste des objets choisis doit être + ordonnable ou non (Faux par défaut). Cela aura pour effet d'activer une + fonctionnalité dynamique de l'interface permettant de remonter ou descendre + dans la liste les objets choisis. + Cette fonctionnalité désactive automatiquement le trie des + objets à l'affichage. + + + sort diff --git a/public_html/images/default/down.png b/public_html/images/default/down.png new file mode 100644 index 0000000000000000000000000000000000000000..7f5acc2740a33c0532affbf1c4a5a11ebcacad83 GIT binary patch literal 426 zcmeAS@N?(olHy`uVBq!ia0vp^AhrMp8<5nmf9C+C*pj^6T^Rm@;DWu&Cj&(|3p^r= z85p>QL70(Y)*K0-AbW|YuPgg~Mo~Tmwc6x=<11Hv2m#2FYEg*;sxLp09!PO{Z^2^46%UwrP&oW+42dR|^<)vS)L>O6l) z|H6XF59&2kg(j{LQIeYKrQ~w_TUYG1`&@RtB!-R-kyCZ|t2DG_?qU|~_< z?YS3~`ZYc=ZS1J9%$+rFLB+9Gzqo{i^vZqzKT}!D z6do0itrK+>rI_Vc^(ga{@vJV}Fj42=s>by!dmChxzZ%^7U!L;ZVcLY=)EgF&vtFO; zS(WrY@3orP#(6(G4NR?imvFxIlkQD>Z2bRJzP{Odaa{(BqSHsdxP3`hcK*@veu9E7 z=caGjZ_@tP{jQv&o^9y5r!30fojZMVec1Hk4;wy9bWf2#Cx88Pt?`@Lwalj$$9}ZG S5w;u{gbbdpelF{r5}E+Lb*rfW literal 0 HcmV?d00001 diff --git a/public_html/images/default/up.png b/public_html/images/default/up.png new file mode 100644 index 0000000000000000000000000000000000000000..276836e1ff2e40471b8cb1d6c0a0ec8b4eb79521 GIT binary patch literal 408 zcmeAS@N?(olHy`uVBq!ia0vp^AhrMp8<5nmf9C+C*pj^6T^Rm@;DWu&Cj&(|3p^r= z85p>QL70(Y)*K0-AbW|YuPgg~Mo~Tm)rG9#D}X|hC9V-A&iT2ysd*&~&PAz-C8;S2 z<(VZJ3hti10pX2&;tULo44y8IAsXjSB(n*rJZ!ZIMUMRi9rUs?xdP-IR2@HcOwgcLQC&zC8T!Zr#1z@9s=# zV&7iPpP8Jf>pSc1yQ|;+?g%d~m*L&jxzcu-XK`v~on%_u^GBTdM}Kn*ub0bD3t?vv zean4%QHPU{g5Hd|GnrYl0vCL~e`KQ7U)}o|TNkFCh%c_G5q-VfTAZ07qv!jA6A7U+ zwA $this -> selectableObject, 'addBtn' => _('Modify'), 'deleteBtns' => _('Delete'), + 'up_label' => _('Move up'), + 'down_label' => _('Move down'), + 'ordered' => (($this -> params['html_options']['ordered'])?1:0), 'multiple' => (($this -> params['multiple'])?1:0), 'filter64' => (($this -> params['html_options']['selectable_object']['filter'])?base64_encode($this -> params['html_options']['selectable_object']['filter']):''), 'noValueLabel' => _('No set value'), @@ -90,7 +93,7 @@ class LSformElement_select_object extends LSformElement { } } - if (!isset($this -> params['html_options']['sort']) || $this -> params['html_options']['sort']) { + if ((!isset($this -> params['html_options']['sort']) || $this -> params['html_options']['sort']) && !$this -> params['html_options']['ordered']) { uasort($this -> values,array($this,'_sortTwoValues')); } diff --git a/public_html/includes/js/LSformElement_select_object_field.js b/public_html/includes/js/LSformElement_select_object_field.js index 911e98f9..7c98f63c 100644 --- a/public_html/includes/js/LSformElement_select_object_field.js +++ b/public_html/includes/js/LSformElement_select_object_field.js @@ -17,6 +17,7 @@ var LSformElement_select_object_field = new Class({ // Delete btns this.ul.getElements('a.LSformElement_select_object').each(function(a){ + this.addOrderedBtns(a); this.addDeleteBtn(a); },this); @@ -62,6 +63,45 @@ var LSformElement_select_object_field = new Class({ varLSdefault.addHelpInfo(btn,'LSformElement_select_object','delete'); }, + addOrderedBtns: function(a) { + if (!this.params.ordered) { + return true; + } + var btn_down = new Element('img'); + btn_down.addClass('btn'); + btn_down.setProperties({ + src: varLSdefault.imagePath('down'), + alt: this.params.down_label + }); + btn_down.addEvent('click',this.onDownBtnClick.bind(this,btn_down)); + btn_down.injectAfter(a); + + var btn_up = new Element('img'); + btn_up.addClass('btn'); + btn_up.setProperties({ + src: varLSdefault.imagePath('up'), + alt: this.params.up_label + }); + btn_up.addEvent('click',this.onUpBtnClick.bind(this,btn_up)); + btn_up.injectAfter(a); + }, + + onUpBtnClick: function(btn) { + var li = btn.getParent(); + var prev = li.getPrevious('li'); + if ($type(prev) && !prev.hasClass('LSformElement_select_object_addBtn')) { + li.inject(prev,'before'); + } + }, + + onDownBtnClick: function(btn) { + var li = btn.getParent(); + var next = li.getNext('li'); + if ($type(next)) { + li.inject(next,'after'); + } + }, + addSingleAddBtn: function(insideEl) { this.addBtn = new Element('img'); this.addBtn.setProperty('src',varLSdefault.imagePath('modify')); @@ -190,6 +230,7 @@ var LSformElement_select_object_field = new Class({ input.addClass('LSformElement_select_object'); input.injectAfter(a); + this.addOrderedBtns(a); this.addDeleteBtn(a); li.injectInside(this.ul);