Browse Source

Dialogs: Cleanup.

tags/v6.0.0alpha2
Thomas Tanghus 11 years ago
parent
commit
2f91606e35
1 changed files with 26 additions and 101 deletions
  1. 26
    101
      core/js/oc-dialogs.js

+ 26
- 101
core/js/oc-dialogs.js View File

@@ -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: '/'
}));

Loading…
Cancel
Save