From 2f91606e35fb8c64e7b4c6b9eadd97813818195f Mon Sep 17 00:00:00 2001 From: Thomas Tanghus Date: Fri, 17 May 2013 07:14:43 +0200 Subject: [PATCH] Dialogs: Cleanup. --- core/js/oc-dialogs.js | 127 +++++++++--------------------------------- 1 file changed, 26 insertions(+), 101 deletions(-) diff --git a/core/js/oc-dialogs.js b/core/js/oc-dialogs.js index 43b698df68..074d3656f9 100644 --- a/core/js/oc-dialogs.js +++ b/core/js/oc-dialogs.js @@ -23,6 +23,11 @@ * this class to ease the usage of jquery dialogs */ var OCdialogs = { + // dialog button types + YES_NO_BUTTONS: 70, + OK_BUTTONS: 71, + // used to name each dialog + dialogs_counter: 0, /** * displays alert dialog * @param text content of dialog @@ -31,7 +36,7 @@ var OCdialogs = { * @param modal make the dialog modal */ alert:function(text, title, callback, modal) { - OCdialogs.message(text, title, 'alert', OCdialogs.OK_BUTTON, callback, modal); + this.message(text, title, 'alert', OCdialogs.OK_BUTTON, callback, modal); }, /** * displays info dialog @@ -41,7 +46,7 @@ var OCdialogs = { * @param modal make the dialog modal */ info:function(text, title, callback, modal) { - OCdialogs.message(text, title, 'info', OCdialogs.OK_BUTTON, callback, modal); + this.message(text, title, 'info', OCdialogs.OK_BUTTON, callback, modal); }, /** * displays confirmation dialog @@ -51,81 +56,7 @@ var OCdialogs = { * @param modal make the dialog modal */ confirm:function(text, title, callback, modal) { - OCdialogs.message(text, title, 'notice', OCdialogs.YES_NO_BUTTONS, callback, modal); - }, - /** - * prompt for user input - * @param text content of dialog - * @param title dialog title - * @param callback which will be triggered when user presses OK (input text will be passed to callback) - * @param modal make the dialog modal - */ - prompt:function(text, title, default_value, callback, modal) { - var input = ''; - var content = '

' + escapeHTML(text) + ':
' + input + '

'; - OCdialogs.message(content, title, 'prompt', OCdialogs.OK_BUTTON, callback, modal); - }, - /** - * prompt user for input with custom form - * fields should be passed in following format: [{text:'prompt text', name:'return name', type:'input type', value: 'default value'},...] - * example: - * var fields=[{text:'Test', name:'test', type:'select', options:[{text:'hello1',value:1},{text:'hello2',value:2}] }]; - * @param fields to display - * @param title dialog title - * @param callback which will be triggered when user presses OK (user answers will be passed to callback in following format: [{name:'return name', value: 'user value'},...]) - * @param modal make the dialog modal - */ - form:function(fields, title, callback, modal) { - var content = ''; - $.each(fields, function(index, field){ - content += ''; - - }); - content += '
' + escapeHTML(field.text) + ''; - var type = field.type; - - if (type === 'text' || type === 'checkbox' || type === 'password') { - content += '' + escapeHTML(field_option.text) + ''; - }); - content += ''; - } - content += '
'; - - var dialog_name = 'oc-dialog-' + OCdialogs.dialogs_counter + '-content'; - var dialog_id = '#' + dialog_name; - var dialog_div = '
' + content + '
'; - if (modal === undefined) { modal = false }; - $('body').append(dialog_div); - var buttonlist = [{ - text: t('core', 'Ok'), - click: function(){ OCdialogs.form_ok_handler(callback, dialog_id); } - }, - { - text: t('core', 'Cancel'), - click: function(){ $(dialog_id).dialog('close'); } - }]; - var dialog_height = ( $('tr', dialog_div).length + 1 ) * 30 + 120; - $(dialog_id).dialog({ - width: (4/9) * $(document).width(), - height: dialog_height, - modal: modal, - buttons: buttonlist - }); - OCdialogs.dialogs_counter++; + this.message(text, title, 'notice', OCdialogs.YES_NO_BUTTONS, callback, modal); }, _getFilePickerTemplate: function() { var defer = $.Deferred(); @@ -231,6 +162,7 @@ var OCdialogs = { }]; self.$filePicker.dialog({ + closeOnEscape: true, width: (4/9)*$(document).width(), height: 420, modal: modal, @@ -304,6 +236,7 @@ var OCdialogs = { }; $(dialog_id).dialog({ + closeOnEscape: true, modal: modal, buttons: buttonlist }); @@ -313,12 +246,6 @@ var OCdialogs = { alert(t('core', 'Error loading file picker template')); }); }, - // dialog button types - YES_NO_BUTTONS: 70, - OK_BUTTONS: 71, - // used to name each dialog - dialogs_counter: 0, - determineValue: function(element) { if ( $(element).attr('type') === 'checkbox' ) { return element.checked; @@ -362,7 +289,7 @@ var OCdialogs = { } }); - self.fillTreeList(); + self.fillSlug(); var sorted = dirs.concat(others); $.each(sorted, function(idx, entry) { @@ -382,27 +309,25 @@ var OCdialogs = { /** * fills the tree list with directories */ - fillTreeList: function() { + fillSlug: function() { this.$dirTree.empty(); var self = this var path = this.$filePicker.data('path'); - if(!path) { - return; - } var $template = $('{name}'); - var paths = path.split('/'); - //paths.pop(); - $.each(paths, function(index, dir) { - var dir = paths.pop(); - if(dir === '') { - return false; - } - self.$dirTree.prepend($template.octemplate({ - dir: paths.join('/') + '/' + dir, - name: dir - })); - }); - self.$dirTree.prepend($template.octemplate({ + if(path) { + var paths = path.split('/'); + $.each(paths, function(index, dir) { + var dir = paths.pop(); + if(dir === '') { + return false; + } + self.$dirTree.prepend($template.octemplate({ + dir: paths.join('/') + '/' + dir, + name: dir + })); + }); + } + this.$dirTree.prepend($template.octemplate({ dir: '', name: '/' }));