$(document).ready( function() {
/* close popovers when clicking somewhere except in the popover or the
* remove icon
*/
$('html').on('click', function(e) {
if (typeof $(e.target).data('original-title') == 'undefined' && !$(e.target).parents().is('.popover.in') && !$(e.target).is('.icon-remove')) {
$('[data-original-title]').popover('hide');
}
});
$('body').on('hidden', '.modal', function () {
$(this).removeData('modal');
});
$('body').on('touchstart.dropdown', '.dropdown-menu', function (e) { e.stopPropagation(); });
$('.datepicker, #expirationdate, #fromdate, #todate, #createstartdate, #createenddate, #expirationstartdate, #expirationenddate, #revisionstartdate')
.datepicker()
.on('changeDate', function(ev){
if(ev.date && $(ev.target).data('checkbox'))
$($(ev.target).data('checkbox')).prop('checked', false);
$(ev.currentTarget).datepicker('hide');
});
// $(".chzn-select").chosen({width: "95%"});
// $(".chzn-select-deselect").chosen({allow_single_deselect:true});
$(".chzn-select").select2({
width: '100%',
templateResult: function (state) {
var subtitle = $(state.element).data('subtitle');
var html = ''+state.text+'';
if(subtitle)
html += '
'+subtitle+'';
html += '';
var $newstate = $(html);
return $newstate;
}
});
$(".chzn-select-deselect").select2({
allowClear:true,
width: '100%',
templateResult: function (state) {
var subtitle = $(state.element).data('subtitle');
var html = ''+state.text+'';
if(subtitle)
html += '
'+subtitle+'';
html += '';
var $newstate = $(html);
return $newstate;
}
});
/* change the color and length of the bar graph showing the password
* strength on each change to the passwod field.
*/
$(".pwd").passStrength({ /* {{{ */
url: "../op/op.Ajax.php",
onChange: function(data, target) {
pwsp = 100*data.score;
$('#'+target+' div.bar').width(pwsp+'%');
if(data.ok) {
$('#'+target+' div.bar').removeClass('bar-danger');
$('#'+target+' div.bar').addClass('bar-success');
} else {
$('#'+target+' div.bar').removeClass('bar-success');
$('#'+target+' div.bar').addClass('bar-danger');
}
}
}); /* }}} */
/* The typeahead functionality useѕ the rest api */
$("#searchfield").typeahead({ /* {{{ */
minLength: 3,
source: function(query, process) {
$.get('../restapi/index.php/search', { query: query, limit: 8, mode: 'typeahead' }, function(data) {
process(data);
});
},
/* updater is called when the item in the list is clicked. It is
* actually provided to update the input field, but here we use
* it to set the document location. */
updater: function (item) {
document.location = "../out/out.Search.php?query=" + encodeURIComponent(item.substring(1));
return item;
},
/* Set a matcher that allows any returned value */
matcher : function (item) {
return true;
},
highlighter : function (item) {
if(item.charAt(0) == 'D')
return ' ' + item.substring(1);
else if(item.charAt(0) == 'F')
return ' ' + item.substring(1);
else
return ' ' + item.substring(1);
}
}); /* }}} */
/* Document chooser */
$("[id^=choosedocsearch]").typeahead({ /* {{{ */
minLength: 3,
source: function(query, process) {
// console.log(this.options);
$.get('../op/op.Ajax.php', { command: 'searchdocument', query: query, limit: 8 }, function(data) {
process(data);
});
},
/* updater is called when the item in the list is clicked. It is
* actually provided to update the input field where you type, but here
* we use it to update a second input field with the doc id. */
updater: function (item) {
strarr = item.split("#");
target = this.$element.data('target');
$('#'+target).attr('value', strarr[0]);
return strarr[1];
},
/* Set a matcher that allows any returned value */
matcher : function (item) {
return true;
},
highlighter : function (item) {
strarr = item.split("#");
return ' ' + strarr[1];
}
}); /* }}} */
/* Folder chooser */
$("[id^=choosefoldersearch]").typeahead({ /* {{{ */
minLength: 3,
source: function(query, process) {
// console.log(this.options);
$.get('../op/op.Ajax.php', { command: 'searchfolder', query: query, limit: 8 }, function(data) {
process(data);
});
},
/* updater is called when the item in the list is clicked. It is
* actually provided to update the input field, but here we use
* it to set the document location. */
updater: function (item) {
strarr = item.split("#");
//console.log(this.$element.data('target'));
target = this.$element.data('target');
$('#'+target).attr('value', strarr[0]);
return strarr[1];
},
/* Set a matcher that allows any returned value */
matcher : function (item) {
return true;
},
highlighter : function (item) {
strarr = item.split("#");
return ' ' + strarr[1];
}
}); /* }}} */
$('body').on('click', 'a.addtoclipboard', function(ev) { /* {{{ */
ev.preventDefault();
attr_rel = $(ev.currentTarget).attr('rel');
attr_msg = $(ev.currentTarget).attr('msg');
type = attr_rel.substring(0, 1) == 'F' ? 'folder' : 'document';
id = attr_rel.substring(1);
$.get('../op/op.Ajax.php',
{ command: 'addtoclipboard', type: type, id: id },
function(data) {
if(data.success) {
// $("#main-clipboard").html('Loading').load('../op/op.Ajax.php?command=view&view=mainclipboard')
$("#main-clipboard").html('Loading').load('../out/out.Clipboard.php?action=mainclipboard')
//$("#menu-clipboard").html('Loading').load('../op/op.Ajax.php?command=view&view=menuclipboard')
$("#menu-clipboard").html('Loading').load('../out/out.Clipboard.php?action=menuclipboard')
noty({
text: attr_msg,
type: 'success',
dismissQueue: true,
layout: 'topRight',
theme: 'defaultTheme',
timeout: 1500,
});
} else {
noty({
text: data.message,
type: 'error',
dismissQueue: true,
layout: 'topRight',
theme: 'defaultTheme',
timeout: 3500,
});
}
},
'json'
);
}); /* }}} */
$('body').on('click', 'a.removefromclipboard', function(ev){ /* {{{ */
ev.preventDefault();
attr_rel = $(ev.currentTarget).attr('rel');
attr_msg = $(ev.currentTarget).attr('msg');
type = attr_rel.substring(0, 1) == 'F' ? 'folder' : 'document';
id = attr_rel.substring(1);
$.get('../op/op.Ajax.php',
{ command: 'removefromclipboard', type: type, id: id },
function(data) {
if(data.success) {
// $("#main-clipboard").html('Loading').load('../op/op.Ajax.php?command=view&view=mainclipboard')
$("#main-clipboard").html('Loading').load('../out/out.Clipboard.php?action=mainclipboard')
//$("#menu-clipboard").html('Loading').load('../op/op.Ajax.php?command=view&view=menuclipboard')
$("#menu-clipboard").html('Loading').load('../out/out.Clipboard.php?action=menuclipboard')
noty({
text: attr_msg,
type: 'success',
dismissQueue: true,
layout: 'topRight',
theme: 'defaultTheme',
timeout: 1500,
});
} else {
noty({
text: data.message,
type: 'error',
dismissQueue: true,
layout: 'topRight',
theme: 'defaultTheme',
timeout: 3500,
});
}
},
'json'
);
}); /* }}} */
$('body').on('click', 'a.lock-document-btn', function(ev){ /* {{{ */
ev.preventDefault();
attr_rel = $(ev.currentTarget).attr('rel');
attr_msg = $(ev.currentTarget).attr('msg');
id = attr_rel;
$.get('../op/op.Ajax.php',
{ command: 'tooglelockdocument', id: id },
function(data) {
if(data.success) {
//$("#table-row-document-"+id).html('Loading').load('../op/op.Ajax.php?command=view&view=documentlistrow&id='+id)
$("#table-row-document-"+id).html('Loading').load('../out/out.ViewDocument.php?action=documentlistitem&documentid='+id)
noty({
text: attr_msg,
type: 'success',
dismissQueue: true,
layout: 'topRight',
theme: 'defaultTheme',
timeout: 1500,
});
} else {
noty({
text: data.message,
type: 'error',
dismissQueue: true,
layout: 'topRight',
theme: 'defaultTheme',
timeout: 3500,
});
}
},
'json'
);
}); /* }}} */
$('a.movefolder').click(function(ev){ /* {{{ */
ev.preventDefault();
attr_source = $(ev.currentTarget).attr('source');
attr_dest = $(ev.currentTarget).attr('dest');
attr_msg = $(ev.currentTarget).attr('msg');
attr_formtoken = $(ev.currentTarget).attr('formtoken');
$.get('../op/op.Ajax.php',
{ command: 'movefolder', folderid: attr_source, targetfolderid: attr_dest, formtoken: attr_formtoken },
function(data) {
if(data.success) {
$('#table-row-folder-'+attr_source).hide('slow');
noty({
text: data.msg,
type: data.success ? 'success' : 'error',
dismissQueue: true,
layout: 'topRight',
theme: 'defaultTheme',
timeout: 1500,
});
}
},
'json'
);
}); /* }}} */
$('a.movedocument').click(function(ev){ /* {{{ */
ev.preventDefault();
attr_source = $(ev.currentTarget).attr('source');
attr_dest = $(ev.currentTarget).attr('dest');
attr_msg = $(ev.currentTarget).attr('msg');
attr_formtoken = $(ev.currentTarget).attr('formtoken');
$.get('../op/op.Ajax.php',
{ command: 'movedocument', docid: attr_source, targetfolderid: attr_dest, formtoken: attr_formtoken },
function(data) {
if(data.success) {
$('#table-row-document-'+attr_source).hide('slow');
noty({
text: data.msg,
type: data.success ? 'success' : 'error',
dismissQueue: true,
layout: 'topRight',
theme: 'defaultTheme',
timeout: 1500,
});
}
},
'json'
);
}); /* }}} */
$('.send-missing-translation a').click(function(ev){ /* {{{ */
// console.log($(ev.target).parent().children('[name=missing-lang-key]').val());
// console.log($(ev.target).parent().children('[name=missing-lang-lang]').val());
// console.log($(ev.target).parent().children('[name=missing-lang-translation]').val());
$.ajax('../op/op.Ajax.php', {
type:"POST",
async:true,
dataType:"json",
data: {
command: 'submittranslation',
key: $(ev.target).parent().children('[name=missing-lang-key]').val(),
lang: $(ev.target).parent().children('[name=missing-lang-lang]').val(),
phrase: $(ev.target).parent().children('[name=missing-lang-translation]').val()
},
success: function(data, textStatus) {
noty({
text: data.message,
type: data.success ? 'success' : 'error',
dismissQueue: true,
layout: 'topRight',
theme: 'defaultTheme',
timeout: 1500,
});
}
});
}); /* }}} */
$(document).on('change', '.btn-file :file', function() {
var input = $(this),
numFiles = input.get(0).files ? input.get(0).files.length : 1,
label = input.val().replace(/\\/g, '/').replace(/.*\//, '');
input.trigger('fileselect', [numFiles, label]);
});
$(document).on('fileselect', '#upload-file .btn-file :file', function(event, numFiles, label) {
var input = $(this).parents('.input-append').find(':text'),
log = numFiles > 1 ? numFiles + ' files selected' : label;
if( input.length ) {
input.val(log);
} else {
if( log ) alert(log);
}
});
$('div.ajax').each(function(index) { /* {{{ */
var element = $(this);
var url = '';
var href = element.data('href');
var view = element.data('view');
var action = element.data('action');
var query = element.data('query');
if(view && action) {
url = "out."+view+".php?action="+action;
if(query) {
url += "&"+query;
}
} else
url = href;
element.prepend('