diff options
Diffstat (limited to 'platform/www/lib/plugins/farmer/script/plugins.js')
-rw-r--r-- | platform/www/lib/plugins/farmer/script/plugins.js | 149 |
1 files changed, 149 insertions, 0 deletions
diff --git a/platform/www/lib/plugins/farmer/script/plugins.js b/platform/www/lib/plugins/farmer/script/plugins.js new file mode 100644 index 0000000..f092b39 --- /dev/null +++ b/platform/www/lib/plugins/farmer/script/plugins.js @@ -0,0 +1,149 @@ +/** + * DokuWiki Plugin farmer (JS for plugin management) + * + * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html + * @author Michael Große <grosse@cosmocode.de> + * @author Andreas Gohr <gohr@cosmocode.de> + */ +(function () { + 'use strict'; + + jQuery(function () { + // general animal select + var $animalSelect = jQuery('select.farmer_chosen_animals'); + $animalSelect.chosen({ + width: '100%', + search_contains: true, + allow_single_deselect: true, + "placeholder_text_single": LANG.plugins.farmer.animalSelect + }); + + jQuery('select.acl_chosen').chosen({ + disable_search: true, + width: '100%' + }); + + + // Plugin Management for all Animals + var $formAllAnimals = jQuery('#farmer__pluginsforall'); + $formAllAnimals.find('select') + .change(function () { + $formAllAnimals.find('button').prop('disabled', false); + }) + .chosen({ + width: '100%', + search_contains: true, + "placeholder_text_single": LANG.plugins.farmer.pluginSelect + }) + ; + + // Plugin Management for single Animals + var $formSingleAnimal = jQuery('#farmer__pluginsforone'); + $formSingleAnimal.find('select') + .change(function () { + var animal = jQuery(this).val(); + $formSingleAnimal.find('button').prop('disabled', true); + jQuery.post( + DOKU_BASE + 'lib/exe/ajax.php', + { + call: 'plugin_farmer_getPlugins_' + animal + }, + function (data) { + $formSingleAnimal.find('div.output').html(data); + $formSingleAnimal.find('button').prop('disabled', false); + }, + 'html' + )} + ) + .chosen({ + width: '100%', + search_contains: true, + "placeholder_text_single": LANG.plugins.farmer.animalSelect + }) + ; + + /** + * Handle clicks on the matrix + */ + var $formPluginMatrix = jQuery('#farmer__pluginmatrix').hide(); + $formPluginMatrix.on('click', 'td', function () { + var $td = jQuery(this); + $td.html('⌛').css('background-color','transparent'); + jQuery.post( + DOKU_BASE + 'lib/exe/ajax.php', + { + call: 'plugin_farmer_modPlugin', + plugin: $td.data('plugin'), + ani: $td.data('animal') + }, + function (data) { + $td.replaceWith(data); + }, + 'html' + ); + }); + + /** + * show the matrix interface + */ + function showMatrix() { + jQuery.post( + DOKU_BASE + 'lib/exe/ajax.php', + { + call: 'plugin_farmer_getPluginMatrix' + }, + function (data) { + $formPluginMatrix.html(data); + $formPluginMatrix.show(); + }, + 'html' + ) + } + + // make sure there's enough space for the dropdown + $animalSelect.on('chosen:showing_dropdown', function (evt, params) { + jQuery(evt.target).parent('fieldset').animate({ + "padding-bottom": '20em' + }, 400); + }).on('chosen:hiding_dropdown', function (evt, params) { + jQuery(evt.target).parent('fieldset').animate({ + "padding-bottom": '7px' + }, 400); + }); + + var $aclPolicyFieldset = jQuery('#aclPolicyFieldset'); + if ($aclPolicyFieldset.length) { + $animalSelect.on('change', function (evt, params) { + var $this = jQuery(this); + if ($this.val() === '') { + $aclPolicyFieldset.slideDown(); + } else { + $aclPolicyFieldset.slideUp(); + } + }); + } + + + + + jQuery("input[name=bulkSingleSwitch]:radio").change(function () { + if (jQuery('#farmer__bulk').prop("checked")) { + $formAllAnimals.show(); + $formSingleAnimal.hide(); + $formPluginMatrix.hide(); + } else if (jQuery('#farmer__single').prop("checked")) { + $formAllAnimals.hide(); + $formSingleAnimal.show(); + $formPluginMatrix.hide(); + } else { + $formAllAnimals.hide(); + $formSingleAnimal.hide(); + showMatrix(); + } + }); + jQuery('#farmer__bulk').click(); + + + }); + +})(); |