diff options
author | Thomas Tanghus <thomas@tanghus.net> | 2013-05-17 07:14:43 +0200 |
---|---|---|
committer | Thomas Tanghus <thomas@tanghus.net> | 2013-05-17 07:14:43 +0200 |
commit | 2f91606e35fb8c64e7b4c6b9eadd97813818195f (patch) | |
tree | 73ee4ca5b59a926106b881a0e1edbccb83b0082b /core | |
parent | a0b79f564944479beb497a75bb45cf02fcaf38ca (diff) | |
download | nextcloud-server-2f91606e35fb8c64e7b4c6b9eadd97813818195f.tar.gz nextcloud-server-2f91606e35fb8c64e7b4c6b9eadd97813818195f.zip |
Dialogs: Cleanup.
Diffstat (limited to 'core')
-rw-r--r-- | core/js/oc-dialogs.js | 127 |
1 files changed, 26 insertions, 101 deletions
diff --git a/core/js/oc-dialogs.js b/core/js/oc-dialogs.js index 43b698df68f..074d3656f98 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 = '<input type="text" id="oc-dialog-prompt-input" value="' + escapeHTML(default_value) + '" style="width:90%">'; - var content = '<p><span class="ui-icon ui-icon-pencil"></span>' + escapeHTML(text) + ':<br/>' + input + '</p>'; - 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 = '<table>'; - $.each(fields, function(index, field){ - content += '<tr><td>' + escapeHTML(field.text) + '</td><td>'; - var type = field.type; - - if (type === 'text' || type === 'checkbox' || type === 'password') { - content += '<input type="' + type + '" name="' + field.name + '"'; - if (type === 'checkbox' && field.value === true) { - content += ' checked="checked"'; - } else if (type === 'text' || type === 'password' && val.value) { - content += ' value="' + escapeHTML(field.value) + '"'; - } - content += '>'; - } else if (type === 'select') { - content += '<select name="' + escapeHTML(field.name) + '"'; - if (field.value !== undefined) { - content += ' value="' + escapeHTML(field.value) + '"'; - } - content += '>'; - $.each(field.options, function(index, field_option){ - content += '<option value="' + escapeHTML(field_option.value) + '">' + escapeHTML(field_option.text) + '</option>'; - }); - content += '</select>'; - } - content += '</td></tr>'; - - }); - content += '</table>'; - - var dialog_name = 'oc-dialog-' + OCdialogs.dialogs_counter + '-content'; - var dialog_id = '#' + dialog_name; - var dialog_div = '<div id="' + dialog_name + '" title="' + escapeHTML(title) + '">' + content + '</div>'; - 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 = $('<span data-dir="{dir}">{name}</span>'); - 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: '/' })); |