Initial commit

This commit is contained in:
Almira Krdzic
2018-08-06 15:41:19 +02:00
commit 60fe7f93e5
217 changed files with 84900 additions and 0 deletions

58
js/entry-detail.js Normal file
View File

@@ -0,0 +1,58 @@
(function (GravityFlowEntryDetail, $) {
GravityFlowEntryDetail.printPage = function( sURL ) {
printPage( sURL );
};
GravityFlowEntryDetail.displayDiscussionItemToggle = function (formId, fieldId, displayLimit) {
$toggle = $(':focus').parent();
$toggle.find( '.gravityflow-dicussion-item-hidden' ).slideToggle( 'fast' );
var $viewMore = $toggle.children( '.gravityflow-dicussion-item-toggle-display' );
var oldText = $viewMore.attr( 'title' );
var newText = $viewMore.data( 'title' );
$viewMore.attr( 'title', newText ).text( newText );
$viewMore.data( 'title', oldText );
}
}(window.GravityFlowEntryDetail = window.GravityFlowEntryDetail || {}, jQuery));
function closePrint () {
document.body.removeChild( this.__container__ );
}
function setPrint () {
this.contentWindow.__container__ = this;
this.contentWindow.onbeforeunload = closePrint;
this.contentWindow.onafterprint = closePrint;
this.contentWindow.focus();
var ms_ie = false;
var ua = window.navigator.userAgent;
var old_ie = ua.indexOf( 'MSIE ' );
var new_ie = ua.indexOf( 'Trident/' );
if ((old_ie > -1) || (new_ie > -1)) {
ms_ie = true;
}
if ( ms_ie ) {
this.contentWindow.document.execCommand( 'print', false, null );
} else {
this.contentWindow.print();
}
}
function printPage (sURL) {
var oHiddFrame = document.createElement( "iframe" );
oHiddFrame.onload = setPrint;
oHiddFrame.style.visibility = "hidden";
oHiddFrame.style.position = "fixed";
oHiddFrame.style.right = "0";
oHiddFrame.style.bottom = "0";
oHiddFrame.src = sURL;
document.body.appendChild( oHiddFrame );
}

1
js/entry-detail.min.js vendored Normal file
View File

@@ -0,0 +1 @@
function closePrint(){document.body.removeChild(this.__container__)}function setPrint(){(this.contentWindow.__container__=this).contentWindow.onbeforeunload=closePrint,this.contentWindow.onafterprint=closePrint,this.contentWindow.focus();var t=!1,n=window.navigator.userAgent,i=n.indexOf("MSIE "),e=n.indexOf("Trident/");(-1<i||-1<e)&&(t=!0),t?this.contentWindow.document.execCommand("print",!1,null):this.contentWindow.print()}function printPage(t){var n=document.createElement("iframe");n.onload=setPrint,n.style.visibility="hidden",n.style.position="fixed",n.style.right="0",n.style.bottom="0",n.src=t,document.body.appendChild(n)}!function(t,r){t.printPage=function(t){printPage(t)},t.displayDiscussionItemToggle=function(t,n,i){$toggle=r(":focus").parent(),$toggle.find(".gravityflow-dicussion-item-hidden").slideToggle("fast");var e=$toggle.children(".gravityflow-dicussion-item-toggle-display"),o=e.attr("title"),d=e.data("title");e.attr("title",d).text(d),e.data("title",o)}}(window.GravityFlowEntryDetail=window.GravityFlowEntryDetail||{},jQuery);

64
js/feed-list.js Normal file
View File

@@ -0,0 +1,64 @@
(function (GravityFlow, $) {
$(document).ready(function () {
if ( $('table.wp-list-table tbody tr').length == 1 ) {
return;
}
$.each( $('.wp-list-table tbody tr'), function() {
$( this ).css( 'border-left', '5px solid ' + $(this).find('.step_highlight_color').css( 'background-color' ) );
});
$('.wp-list-table .step_highlight').remove();
var sortHandleMarkup = '<td class="sort-column"><i class="fa fa-bars feed-sort-handle"></i></td>';
$('.wp-list-table thead tr, .wp-list-table tfoot tr').append('<th class="sort-column"></th>');
$('.wp-list-table tbody tr').append(sortHandleMarkup);
$('.wp-list-table tbody').addClass('gravityflow-reorder-mode')
.sortable({
tolerance: "pointer",
placeholder: "step-drop-zone",
helper: fixHelperModified,
handle: '.feed-sort-handle',
update: function(event, ui){
var $feedIds = $(".wp-list-table tbody .check-column input[type=checkbox]");
var feedIds = $feedIds.map(function(){return $(this).val();}).get();
var data = {
action: 'gravityflow_save_feed_order',
feed_ids: feedIds,
form_id: form.id
};
$.post( ajaxurl, data)
.done( function( response ) {
if ( response ) {
// OK
} else {
console.log( 'Error re-ordering feeds');
console.log( response);
}
} )
.fail( function( response ) {
console.log( 'Error re-ordering feeds');
console.log( response);
} );
}
});
});
}(window.GravityFlow = window.GravityFlow || {}, jQuery));
var fixHelperModified = function(e, tr) {
var $originals = tr.children();
console.log('originals: ' + $originals.length);
var $helper = tr.clone();
$helper.children().each(function(index) {
jQuery(this).width($originals.eq(index).width());
});
return $helper;
};

1
js/feed-list.min.js vendored Normal file
View File

@@ -0,0 +1 @@
!function(e,l){l(document).ready(function(){if(1!=l("table.wp-list-table tbody tr").length){l.each(l(".wp-list-table tbody tr"),function(){l(this).css("border-left","5px solid "+l(this).find(".step_highlight_color").css("background-color"))}),l(".wp-list-table .step_highlight").remove();l(".wp-list-table thead tr, .wp-list-table tfoot tr").append('<th class="sort-column"></th>'),l(".wp-list-table tbody tr").append('<td class="sort-column"><i class="fa fa-bars feed-sort-handle"></i></td>'),l(".wp-list-table tbody").addClass("gravityflow-reorder-mode").sortable({tolerance:"pointer",placeholder:"step-drop-zone",helper:fixHelperModified,handle:".feed-sort-handle",update:function(e,t){var o={action:"gravityflow_save_feed_order",feed_ids:l(".wp-list-table tbody .check-column input[type=checkbox]").map(function(){return l(this).val()}).get(),form_id:form.id};l.post(ajaxurl,o).done(function(e){e||(console.log("Error re-ordering feeds"),console.log(e))}).fail(function(e){console.log("Error re-ordering feeds"),console.log(e)})}})}})}(window.GravityFlow=window.GravityFlow||{},jQuery);var fixHelperModified=function(e,t){var o=t.children();console.log("originals: "+o.length);var l=t.clone();return l.children().each(function(e){jQuery(this).width(o.eq(e).width())}),l};

100
js/form-editor.js Normal file
View File

@@ -0,0 +1,100 @@
function SetDefaultValues_workflow_assignee_select(field) {
field.gravityflowAssigneeFieldShowUsers = true;
field.gravityflowAssigneeFieldShowRoles = true;
field.gravityflowAssigneeFieldShowFields = true;
field.choices = '';
return field;
}
function SetDefaultValues_workflow_user(field) {
field.label = gravityflow_form_editor_js_strings.user.defaults.label;
field.choices = '';
return field;
}
function SetDefaultValues_workflow_role(field) {
field.label = gravityflow_form_editor_js_strings.role.defaults.label;
field.choices = '';
return field;
}
function SetDefaultValues_workflow_discussion(field) {
field.label = gravityflow_form_editor_js_strings.discussion.defaults.label;
}
function SetDiscussionTimestampFormat(format) {
SetFieldProperty('gravityflowDiscussionTimestampFormat', format);
RefreshSelectedFieldPreview();
}
function SetAssigneeFieldShowUsers() {
var value = jQuery('#gravityflow-assignee-field-show-users').is(':checked');
SetFieldProperty('gravityflowAssigneeFieldShowUsers', value);
var roleFilter = jQuery('li.gravityflow_setting_users_role_filter');
if (!value) {
roleFilter.hide('slow', function () {
jQuery('#gravityflow_users_role_filter').val('');
SetFieldProperty('gravityflowUsersRoleFilter', '');
});
} else {
roleFilter.show('slow');
}
}
jQuery(document).bind('gform_load_field_settings', function (event, field, form) {
var isAssigneeField = field.type == 'workflow_assignee_select';
var isWorkflowUserField = field.type == 'workflow_user';
var isWorkflowRoleField = field.type == 'workflow_role';
var isWorkflowDiscussionField = field.type == 'workflow_discussion';
if ( isAssigneeField || isWorkflowUserField || isWorkflowRoleField ) {
field.choices = '';
}
if (isAssigneeField) {
var showUsers = field.gravityflowAssigneeFieldShowUsers;
jQuery('#gravityflow-assignee-field-show-users').prop('checked', !!showUsers);
jQuery('#gravityflow-assignee-field-show-roles').prop('checked', !!field.gravityflowAssigneeFieldShowRoles);
jQuery('#gravityflow-assignee-field-show-fields').prop('checked', !!field.gravityflowAssigneeFieldShowFields);
if (showUsers) {
jQuery('li.gravityflow_setting_users_role_filter').toggle();
}
}
if (isAssigneeField || isWorkflowUserField) {
jQuery('#gravityflow_users_role_filter').val(field.gravityflowUsersRoleFilter);
}
if ( isWorkflowDiscussionField ) {
var timestamp_format = field.gravityflowDiscussionTimestampFormat == undefined ? '' : field.gravityflowDiscussionTimestampFormat;
jQuery('#gravityflow_discussion_timestamp_format').val(timestamp_format);
}
});
jQuery(document).ready(function () {
// Allow admin-only field to be used in conditional logic.
gform.addFilter('gform_is_conditional_logic_field', function (isConditionalLogicField, field) {
if (field.adminOnly || field.visibility == 'administrative') {
var inputType = field.inputType ? field.inputType : field.type,
supported_fields = GetConditionalLogicFields(),
index = jQuery.inArray(inputType, supported_fields);
isConditionalLogicField = index >= 0 ? true : false;
}
return isConditionalLogicField;
}, 20 );
});

1
js/form-editor.min.js vendored Normal file
View File

@@ -0,0 +1 @@
function SetDefaultValues_workflow_assignee_select(e){return e.gravityflowAssigneeFieldShowUsers=!0,e.gravityflowAssigneeFieldShowRoles=!0,e.gravityflowAssigneeFieldShowFields=!0,e.choices="",e}function SetDefaultValues_workflow_user(e){return e.label=gravityflow_form_editor_js_strings.user.defaults.label,e.choices="",e}function SetDefaultValues_workflow_role(e){return e.label=gravityflow_form_editor_js_strings.role.defaults.label,e.choices="",e}function SetDefaultValues_workflow_discussion(e){e.label=gravityflow_form_editor_js_strings.discussion.defaults.label}function SetDiscussionTimestampFormat(e){SetFieldProperty("gravityflowDiscussionTimestampFormat",e),RefreshSelectedFieldPreview()}function SetAssigneeFieldShowUsers(){var e=jQuery("#gravityflow-assignee-field-show-users").is(":checked");SetFieldProperty("gravityflowAssigneeFieldShowUsers",e);var i=jQuery("li.gravityflow_setting_users_role_filter");e?i.show("slow"):i.hide("slow",function(){jQuery("#gravityflow_users_role_filter").val(""),SetFieldProperty("gravityflowUsersRoleFilter","")})}jQuery(document).bind("gform_load_field_settings",function(e,i,s){var r="workflow_assignee_select"==i.type,o="workflow_user"==i.type,l="workflow_role"==i.type,t="workflow_discussion"==i.type;if((r||o||l)&&(i.choices=""),r){var a=i.gravityflowAssigneeFieldShowUsers;jQuery("#gravityflow-assignee-field-show-users").prop("checked",!!a),jQuery("#gravityflow-assignee-field-show-roles").prop("checked",!!i.gravityflowAssigneeFieldShowRoles),jQuery("#gravityflow-assignee-field-show-fields").prop("checked",!!i.gravityflowAssigneeFieldShowFields),a&&jQuery("li.gravityflow_setting_users_role_filter").toggle()}if((r||o)&&jQuery("#gravityflow_users_role_filter").val(i.gravityflowUsersRoleFilter),t){var f=null==i.gravityflowDiscussionTimestampFormat?"":i.gravityflowDiscussionTimestampFormat;jQuery("#gravityflow_discussion_timestamp_format").val(f)}}),jQuery(document).ready(function(){gform.addFilter("gform_is_conditional_logic_field",function(e,i){if(i.adminOnly||"administrative"==i.visibility){var s=i.inputType?i.inputType:i.type,r=GetConditionalLogicFields();e=0<=jQuery.inArray(s,r)}return e},20)});

560
js/form-settings.js Normal file
View File

@@ -0,0 +1,560 @@
;(function (GravityFlowFeedSettings, $) {
"use strict";
$(document).ready(function () {
$('#editable_fields, .gravityflow-multiselect-ui').multiSelect();
var multiSelectWithSearch = {
selectableHeader: "<input type='text' class='search-input' autocomplete='off' placeholder='"+gravityflow_form_settings_js_strings.assigneeSearchPlaceholder+"'>",
selectionHeader: "<input type='text' class='search-input' autocomplete='off' placeholder='"+gravityflow_form_settings_js_strings.assigneeSearchPlaceholder+"'>",
afterInit: function(ms){
var that = this,
$selectableSearch = that.$selectableUl.prev(),
$selectionSearch = that.$selectionUl.prev(),
selectableSearchString = '#'+ms.attr('id')+' .ms-elem-selectable:not(.ms-selected)',
selectionSearchString = '#'+ms.attr('id')+' .ms-elem-selection.ms-selected';
if ( $('#'+ms.attr('id')+' .ms-elem-selectable').length > 10 ) {
$('.ms-container .search-input').show();
}
that.qs1 = $selectableSearch.quicksearch(selectableSearchString)
.on('keydown', function(e){
if (e.which === 40){
that.$selectableUl.focus();
return false;
}
});
that.qs2 = $selectionSearch.quicksearch(selectionSearchString)
.on('keydown', function(e){
if (e.which == 40){
that.$selectionUl.focus();
return false;
}
});
},
afterSelect: function(){
this.qs1.cache();
this.qs2.cache();
},
afterDeselect: function(){
this.qs1.cache();
this.qs2.cache();
}
};
$('#assignees, #workflow_notification_users').multiSelect(multiSelectWithSearch);
var gravityFlowIsDirty = false, gravityFlowSubmitted = false;
$('form#gform-settings').submit(function () {
gravityFlowSubmitted = true;
$('form#gform-settings').find(':input').removeAttr('disabled');
});
$(':input').change(function () {
gravityFlowIsDirty = true;
});
window.onbeforeunload = function () {
if (gravityFlowIsDirty && !gravityFlowSubmitted) {
return "You have unsaved changes.";
}
};
var $stepType = $('input[name=_gaddon_setting_step_type]:checked');
var selectedStepType = $stepType.val();
var $statusExpiration = $('#status_expiration');
var expiredSelected = $statusExpiration.val() == 'expired';
$('#expiration_sub_setting_destination_expired').toggle(expiredSelected);
$statusExpiration.change(function () {
var show = $(this).val() == 'expired';
$('#expiration_sub_setting_destination_expired').fadeToggle(show);
});
setSubSettings();
var selectedType = $("input[name=_gaddon_setting_type]:checked");
toggleType(selectedType.val());
$('#gaddon-setting-row-type input[type=radio]').change(function () {
toggleType(this.value);
});
GravityFlowFeedSettings.getUsersMarkup = function (propertyName) {
var i, n, account,
accounts = gf_routing_setting_strings['accounts'],
str = '<select class="gform-routing-users ' + propertyName + '_{i}">';
for (i = 0; i < accounts.length; i++) {
account = accounts[i];
if (typeof account.choices != 'undefined') {
var optgroup = '', choice;
for (n = 0; n < account.choices.length; n++) {
choice = account.choices[n];
optgroup += '<option value="{0}">{1}</option>'.format(choice.value, choice.label);
}
str += '<optgroup label="{0}">{1}</option>'.format(account.label, optgroup);
} else {
str += '<option value="{0}">{1}</option>'.format(account.value, account.label);
}
}
str += "</select>";
return str;
};
var $routingSetting = $('#gform_routing_setting');
var json = $('#routing').val();
var routing_items = json ? $.parseJSON(json) : null;
var options;
if ($('#editable_fields').length > 0) {
if (!routing_items) {
routing_items = [{
assignee: gf_routing_setting_strings['accounts'][0]['choices'][0]['value'],
editable_fields: [gf_routing_setting_strings['input_fields'][0]['key']],
fieldId: '0',
operator: 'is',
value: '',
type: ''
}];
$('#user_input_routing').val($.toJSON(routing_items));
}
options = {
fieldName: $routingSetting.data('field_name'),
fieldId: $routingSetting.data('field_id'),
settings: gf_routing_setting_strings['fields'],
accounts: gf_routing_setting_strings['accounts'],
imagesURL: gf_vars.baseUrl + "/images",
items: routing_items,
callbacks: {
addNewTarget: function (obj, target) {
var str = GravityFlowFeedSettings.getUsersMarkup('assignee');
var $fields = $('#editable_fields').clone();
$fields.attr('name', 'editable_fields');
var id = $('#gform-routings tbody tr').length;
$fields.attr('id', 'editable_fields_routing_{i}');
$fields.attr('style', '');
$fields.addClass('gform-routing-input-field editable_fields_{i}');
str += '</td><td>' + $fields[0].outerHTML;
return str;
},
header: function (obj, header) {
return '<thead><tr><th>Assign To</th><th>Editable Fields</th><th colspan="3">Condition</th></tr></thead>';
}
}
};
} else {
if (!routing_items) {
routing_items = [{
assignee: gf_routing_setting_strings['accounts'][0]['choices'][0]['value'],
fieldId: '0',
operator: 'is',
value: '',
type: ''
}];
$('#routing').val($.toJSON(routing_items));
}
options = {
fieldName: $routingSetting.data('field_name'),
fieldId: $routingSetting.data('field_id'),
settings: gf_routing_setting_strings['fields'],
accounts: gf_routing_setting_strings['accounts'],
imagesURL: gf_vars.baseUrl + "/images",
items: routing_items,
callbacks: {
addNewTarget: function (obj, target) {
var str = GravityFlowFeedSettings.getUsersMarkup('assignee');
return str;
}
}
};
}
$routingSetting.gfRoutingSetting(options);
// Workflow Notification
$('#gaddon-setting-row-workflow_notification_type input[type=radio]').click(function () {
toggleWorkflowNotificationType(this.value);
});
var workflowNotificationEnabled = $('#workflow_notification_enabled').prop('checked');
toggleWorkflowNotificationSettings(workflowNotificationEnabled);
$('#workflow_notification_enabled').click(function () {
toggleWorkflowNotificationSettings(this.checked);
});
var $workflowNotificationRoutingSetting = $('#gform_user_routing_setting_workflow_notification_routing');
var workflowNotificationRoutingJSON = $('#workflow_notification_routing').val();
var workflow_notification_routing_items = workflowNotificationRoutingJSON ? $.parseJSON(workflowNotificationRoutingJSON) : null;
if (!workflow_notification_routing_items) {
workflow_notification_routing_items = [{
assignee: gf_routing_setting_strings['accounts'][0]['choices'][0]['value'],
fieldId: '0',
operator: 'is',
value: '',
type: '',
}];
$('#workflow_notification_routing').val($.toJSON(workflow_notification_routing_items));
}
var workflowNotificationOptions = {
fieldName: $workflowNotificationRoutingSetting.data('field_name'),
fieldId: $workflowNotificationRoutingSetting.data('field_id'),
settings: gf_routing_setting_strings['fields'],
accounts: gf_routing_setting_strings['accounts'],
imagesURL: gf_vars.baseUrl + "/images",
items: workflow_notification_routing_items,
callbacks: {
addNewTarget: function (obj, target) {
var str = GravityFlowFeedSettings.getUsersMarkup('assignee');
return str;
}
}
};
$workflowNotificationRoutingSetting.gfRoutingSetting(workflowNotificationOptions);
// Notification Tabs
GravityFlowFeedSettings.initNotificationTab = function (type) {
$('#' + type + '_notification_users').multiSelect(multiSelectWithSearch);
var $enabledSetting = $('#' + type + '_notification_enabled');
toggleNotificationTabSettings($enabledSetting.prop('checked'), type);
$enabledSetting.click(function () {
toggleNotificationTabSettings(this.checked, type);
});
$('#gaddon-setting-tab-field-' + type + '_notification_type input[type=radio]').click(function () {
toggleNotificationTabSettings(true, type);
});
var $routingSetting = $('#gform_user_routing_setting_' + type + '_notification_routing');
if ($routingSetting.length) {
var $routingJSONInput = $('#' + type + '_notification_routing'),
routingJSON = $routingJSONInput.val(),
routingItems = routingJSON ? $.parseJSON(routingJSON) : null;
if (!routingItems) {
routingItems = [{
assignee: gf_routing_setting_strings['accounts'][0]['choices'][0]['value'],
fieldId: '0',
operator: 'is',
value: '',
type: ''
}];
$routingJSONInput.val($.toJSON(routingItems));
}
var routingOptions = {
fieldName: $routingSetting.data('field_name'),
fieldId: $routingSetting.data('field_id'),
settings: gf_routing_setting_strings['fields'],
accounts: gf_routing_setting_strings['accounts'],
imagesURL: gf_vars.baseUrl + "/images",
items: routingItems,
callbacks: {
addNewTarget: function (obj, target) {
return GravityFlowFeedSettings.getUsersMarkup('assignee');
}
}
};
$routingSetting.gfRoutingSetting(routingOptions);
}
};
var notificationTabs = ['assignee', 'rejection', 'approval', 'in_progress', 'complete'];
for (var i = 0; i < notificationTabs.length; i++) {
GravityFlowFeedSettings.initNotificationTab(notificationTabs[i]);
}
// User Input - Save Progress Option/In Progress Email Tab
var $saveProgressSetting = $('#default_status');
if ($saveProgressSetting.val() === 'hidden') {
$('#tabs-notification_tabs').tabs('disable', 1);
}
$saveProgressSetting.change(function () {
var disabled = $(this).val() === 'hidden',
$notificationTabs = $('#tabs-notification_tabs');
if (disabled) {
var $enabledSetting = $('#in_progress_notification_enabled');
// Disable the In Progress notification if enabled.
if ($enabledSetting.prop('checked')) {
$enabledSetting.click();
}
// If the In Progress Email tab is active switch to the Assignee Email tab.
if ($notificationTabs.tabs('option', 'active') === 1) {
$notificationTabs.tabs('option', 'active', 0);
}
$notificationTabs.tabs('disable', 1);
} else {
$notificationTabs.tabs('enable', 1);
}
});
//-----
if (window.gform) {
gform.addFilter('gform_merge_tags', GravityFlowFeedSettings.gravityflow_add_merge_tags);
}
if (window['gformInitDatepicker']) {
gformInitDatepicker();
}
loadMessages();
});
function toggleNotificationTabSettings(enabled, notificationType) {
var $NotificationTypeSetting = $('#gaddon-setting-tab-field-' + notificationType + '_notification_type');
$NotificationTypeSetting.toggle(enabled);
if (enabled) {
var selected = $NotificationTypeSetting.find('input[type=radio]:checked').val();
toggleNotificationTabFields(selected, notificationType);
$('#gaddon-setting-tab-tab_' + notificationType + '_notification i.gravityflow-tab-checked').show();
$('#gaddon-setting-tab-tab_' + notificationType + '_notification i.gravityflow-tab-unchecked').hide();
} else {
toggleNotificationTabFields('off', notificationType);
$('#gaddon-setting-tab-tab_' + notificationType + '_notification i.gravityflow-tab-checked').hide();
$('#gaddon-setting-tab-tab_' + notificationType + '_notification i.gravityflow-tab-unchecked').show();
}
}
function toggleNotificationTabFields(showType, notificationType) {
var fields = ['users', 'routing', 'from_name', 'from_email', 'reply_to', 'bcc', 'subject', 'message', 'autoformat', 'resend', 'gpdf'],
prefix = '#gaddon-setting-tab-field-' + notificationType + '_notification_';
$.each(fields, function (i, field) {
$(prefix + field).hide();
});
if (showType == 'off') {
return;
}
$.each(fields, function (i, field) {
if (field == 'users' && showType == 'routing' || field == 'routing' && showType == 'select') {
return true;
}
$(prefix + field).fadeToggle('normal');
});
}
function toggleWorkflowNotificationType(showType) {
var fields = {
select: ['workflow_notification_users\\[\\]', 'workflow_notification_from_name', 'workflow_notification_from_email', 'workflow_notification_reply_to', 'workflow_notification_bcc', 'workflow_notification_subject', 'workflow_notification_message', 'workflow_notification_autoformat'],
routing: ['workflow_notification_routing', 'workflow_notification_from_name', 'workflow_notification_from_email', 'workflow_notification_reply_to', 'workflow_notification_bcc', 'workflow_notification_subject', 'workflow_notification_message', 'workflow_notification_autoformat']
};
toggleFields(fields, showType, false);
}
function toggleType(showType) {
var fields = {
select: ['assignees\\[\\]', 'editable_fields\\[\\]', 'conditional_logic_editable_fields_enabled'],
routing: ['routing', 'conditional_logic_editable_fields_enabled']
};
toggleFields(fields, showType);
}
function toggleFields(fields, showType, isTab) {
var prefix = isTab ? '#gaddon-setting-tab-field-' : '#gaddon-setting-row-';
$.each(fields, function (type, activeFields) {
$.each(activeFields, function (i, activeField) {
$(prefix + activeField).hide();
});
});
$.each(fields, function (type, activeFields) {
if (showType == type) {
$.each(activeFields, function (i, activeField) {
$(prefix + activeField).fadeToggle('normal');
});
}
});
}
function toggleWorkflowNotificationSettings(enabled) {
var $workflowNotificationType = $('#gaddon-setting-row-workflow_notification_type');
$workflowNotificationType.toggle(enabled);
if (enabled) {
var selected = $workflowNotificationType.find('input[type=radio]:checked').val();
toggleWorkflowNotificationType(selected);
} else {
toggleWorkflowNotificationType('off');
}
}
function setSubSettings() {
var subSettings = [
'routing',
'assignees\\[\\]',
'assignee_notification_from_name',
'assignee_notification_from_email',
'assignee_notification_reply_to',
'assignee_notification_bcc',
'assignee_notification_subject',
'assignee_notification_message',
'assignee_notification_autoformat',
'resend_assignee_email',
'assignee_notification_gpdf',
'rejection_notification_type',
'rejection_notification_users\\[\\]',
'rejection_notification_user_field',
'rejection_notification_routing',
'rejection_notification_message',
'rejection_notification_autoformat',
'approval_notification_type',
'approval_notification_users\\[\\]',
'approval_notification_user_field',
'approval_notification_routing',
'approval_notification_message',
'approval_notification_autoformat',
'workflow_notification_type',
'workflow_notification_users\\[\\]',
'workflow_notification_user_field',
'workflow_notification_routing',
'workflow_notification_from_name',
'workflow_notification_from_email',
'workflow_notification_reply_to',
'workflow_notification_bcc',
'workflow_notification_subject',
'workflow_notification_message',
'workflow_notification_autoformat',
'assignees\\[\\]',
'editable_fields\\[\\]',
'routing',
'assignee_notification_message',
];
for (var i = 0; i < subSettings.length; i++) {
$('#gaddon-setting-row-' + subSettings[i]).addClass('gravityflow_sub_setting');
}
}
GravityFlowFeedSettings.gravityflow_add_merge_tags = function (mergeTags, elementId, hideAllFields, excludeFieldTypes, isPrepop, option) {
if (isPrepop) {
return mergeTags;
}
addCommonMergeTags(mergeTags, elementId, hideAllFields, excludeFieldTypes, isPrepop, option);
addAprovalMergeTags(mergeTags, elementId, hideAllFields, excludeFieldTypes, isPrepop, option);
return mergeTags;
};
function addCommonMergeTags(mergeTags, elementId, hideAllFields, excludeFieldTypes, isPrepop, option) {
var supportedElementIds = [
'_gaddon_setting_workflow_notification_message',
'_gaddon_setting_assignee_notification_message',
'_gaddon_setting_approval_notification_message',
'_gaddon_setting_rejection_notification_message',
];
if (supportedElementIds.indexOf(elementId) < 0) {
return mergeTags;
}
var labels = gravityflow_form_settings_js_strings.mergeTagLabels,
tags = [];
tags.push({tag: '{workflow_entry_link}', label: labels.workflow_entry_link});
tags.push({tag: '{workflow_entry_url}', label: labels.workflow_entry_url});
tags.push({tag: '{workflow_inbox_link}', label: labels.workflow_inbox_link});
tags.push({tag: '{workflow_inbox_url}', label: labels.workflow_inbox_url});
tags.push({tag: '{workflow_cancel_link}', label: labels.workflow_cancel_link});
tags.push({tag: '{workflow_cancel_url}', label: labels.workflow_cancel_url});
tags.push({tag: '{workflow_note}', label: labels.workflow_note});
tags.push({tag: '{workflow_timeline}', label: labels.workflow_timeline});
tags.push({tag: '{assignees}', label: labels.assignees});
mergeTags['gravityflow'] = {
label: labels.group,
tags: tags
};
return mergeTags;
}
function addAprovalMergeTags(mergeTags, elementId, hideAllFields, excludeFieldTypes, isPrepop, option) {
var supportedElementIds = [
'_gaddon_setting_assignee_notification_message',
];
if (supportedElementIds.indexOf(elementId) < 0) {
return mergeTags;
}
var labels = gravityflow_form_settings_js_strings.mergeTagLabels,
tags = [];
tags.push({tag: '{workflow_approve_link}', label: labels.workflow_approve_link});
tags.push({tag: '{workflow_approve_url}', label: labels.workflow_approve_url});
tags.push({tag: '{workflow_approve_token}', label: labels.workflow_approve_token});
tags.push({tag: '{workflow_reject_link}', label: labels.workflow_reject_link});
tags.push({tag: '{workflow_reject_url}', label: labels.workflow_reject_url});
tags.push({tag: '{workflow_reject_token}', label: labels.workflow_reject_token});
if (typeof mergeTags['gravityflow'] != 'undefined') {
mergeTags['gravityflow']['tags'] = $.merge(mergeTags['gravityflow']['tags'], tags);
} else {
mergeTags['gravityflow'] = {
label: labels.group,
tags: tags
};
}
return mergeTags;
}
function loadMessages() {
var feedId = gravityflow_form_settings_js_strings['feedId'];
if (feedId > 0) {
var url = ajaxurl + '?action=gravityflow_feed_message&fid=' + feedId + '&id=' + gravityflow_form_settings_js_strings['formId'];
$.get(url, function (response) {
var $heading = $('#save_button');
$heading.before(response);
});
}
}
}(window.GravityFlowFeedSettings = window.GravityFlowFeedSettings || {}, jQuery));

1
js/form-settings.min.js vendored Normal file

File diff suppressed because one or more lines are too long

79
js/frontend.js Normal file
View File

@@ -0,0 +1,79 @@
(function (GravityFlowFrontEnd, $) {
$(document).ready(function () {
var checks, first, last, checked, sliced, mobileEvent, transitionTimeout, focusedRowActions, $firstHeading,
lastClicked = false;
// check all checkboxes
$('tbody').children().children('.check-column').find(':checkbox').click(function (e) {
if ('undefined' == e.shiftKey) {
return true;
}
if (e.shiftKey) {
if (!lastClicked) {
return true;
}
checks = $(lastClicked).closest('form').find(':checkbox');
first = checks.index(lastClicked);
last = checks.index(this);
checked = $(this).prop('checked');
if (0 < first && 0 < last && first != last) {
sliced = ( last > first ) ? checks.slice(first, last) : checks.slice(last, first);
sliced.prop('checked', function () {
if ($(this).closest('tr').is(':visible'))
return checked;
return false;
});
}
}
lastClicked = this;
// toggle "check all" checkboxes
var unchecked = $(this).closest('tbody').find(':checkbox').filter(':visible').not(':checked');
$(this).closest('table').children('thead, tfoot').find(':checkbox').prop('checked', function () {
return ( 0 === unchecked.length );
});
return true;
});
$('thead, tfoot').find('.check-column :checkbox').on('click.wp-toggle-checkboxes', function (event) {
var $this = $(this),
$table = $this.closest('table'),
controlChecked = $this.prop('checked'),
toggle = event.shiftKey || $this.data('wp-toggle');
$table.children('tbody').filter(':visible')
.children().children('.check-column').find(':checkbox')
.prop('checked', function () {
if ($(this).is(':hidden')) {
return false;
}
if (toggle) {
return !$(this).prop('checked');
} else if (controlChecked) {
return true;
}
return false;
});
$table.children('thead, tfoot').filter(':visible')
.children().children('.check-column').find(':checkbox')
.prop('checked', function () {
if (toggle) {
return false;
} else if (controlChecked) {
return true;
}
return false;
});
});
});
}(window.GravityFlowFrontEnd = window.GravityFlowFrontEnd || {}, jQuery));

1
js/frontend.min.js vendored Normal file
View File

@@ -0,0 +1 @@
!function(e,r){r(document).ready(function(){var i,t,n,o,h=!1;r("tbody").children().children(".check-column").find(":checkbox").click(function(e){if("undefined"==e.shiftKey)return!0;if(e.shiftKey){if(!h)return!0;i=r(h).closest("form").find(":checkbox"),t=i.index(h),n=i.index(this),o=r(this).prop("checked"),0<t&&0<n&&t!=n&&(t<n?i.slice(t,n):i.slice(n,t)).prop("checked",function(){return!!r(this).closest("tr").is(":visible")&&o})}var c=r(h=this).closest("tbody").find(":checkbox").filter(":visible").not(":checked");return r(this).closest("table").children("thead, tfoot").find(":checkbox").prop("checked",function(){return 0===c.length}),!0}),r("thead, tfoot").find(".check-column :checkbox").on("click.wp-toggle-checkboxes",function(e){var c=r(this),i=c.closest("table"),t=c.prop("checked"),n=e.shiftKey||c.data("wp-toggle");i.children("tbody").filter(":visible").children().children(".check-column").find(":checkbox").prop("checked",function(){return!r(this).is(":hidden")&&(n?!r(this).prop("checked"):!!t)}),i.children("thead, tfoot").filter(":visible").children().children(".check-column").find(":checkbox").prop("checked",function(){return!n&&!!t})})})}(window.GravityFlowFrontEnd=window.GravityFlowFrontEnd||{},jQuery);

156
js/generic-map.js Normal file
View File

@@ -0,0 +1,156 @@
var GravityFlowGenericMap = function( options ) {
var self = this;
self.options = options;
self.UI = jQuery( '#gaddon-setting-row-'+ self.options.fieldName );
self.init = function() {
self.bindEvents();
self.setupData();
self.setupRepeater();
};
self.bindEvents = function() {
self.UI.on( 'change', 'select[name="_gaddon_setting_'+ self.options.keyFieldName +'"]', function() {
var $select = jQuery( this ),
$input = $select.next( '.custom-key-container' );
if( $select.val() != 'gf_custom' ) {
return;
}
$select.fadeOut( function() {
$input.fadeIn().focus();
} );
} );
self.UI.on( 'change', 'select[name="_gaddon_setting_'+ self.options.valueFieldName +'"]', function() {
var $select = jQuery( this ),
$input = $select.next( '.custom-value-container' );
if( $select.val() != 'gf_custom' ) {
return;
}
$select.fadeOut( function() {
$input.fadeIn().focus();
} );
} );
self.UI.on( 'click', 'a.custom-key-reset', function( event ) {
event.preventDefault();
var $reset = jQuery( this ),
$input = $reset.parents( '.custom-key-container' ),
$select = $input.prev( 'select.key' );
$input.fadeOut( function() {
$input.find( 'input' ).val( '' ).change();
$select.fadeIn().focus().val( '' );
} );
} );
self.UI.on( 'click', 'a.custom-value-reset', function( event ) {
event.preventDefault();
var $reset = jQuery( this ),
$input = $reset.parents( '.custom-value-container' ),
$select = $input.prev( 'select.value' );
$input.fadeOut( function() {
$input.find( 'input' ).val( '' ).change();
$select.fadeIn().focus().val( '' );
} );
} );
self.UI.closest( 'form' ).on( 'submit', function( event ) {
jQuery( '[name^="_gaddon_setting_'+ self.options.fieldName +'_"]' ).each( function( i ) {
jQuery( this ).removeAttr( 'name' );
} );
} );
};
self.setupData = function() {
self.data = jQuery.parseJSON( jQuery( '#' + self.options.fieldId ).val() );
if ( ! self.data ) {
self.data = [ {
key: '',
value: '',
custom_key: '',
custom_value: ''
} ];
}
}
self.setupRepeater = function() {
var limit;
if (self.options.limit > 0){
limit = self.options.limit;
}
else{
limit = 0;
}
self.UI.find( 'tbody.repeater' ).repeater( {
limit: limit,
items: self.data,
addButtonMarkup: '<img src="'+ self.options.baseURL +'/images/add.png" style="cursor:pointer;" />',
removeButtonMarkup: '<img src="'+ self.options.baseURL +'/images/remove.png" style="cursor:pointer;" />',
callbacks: {
add: function( obj, $elem, item ) {
var key_select = $elem.find( 'select[name="_gaddon_setting_'+ self.options.keyFieldName +'"]' );
if ( ! item.custom_key && key_select.length > 0 ) {
$elem.find( '.custom-key-container' ).hide();
} else {
$elem.find( '.key' ).hide();
}
var value_select = $elem.find( 'select[name="_gaddon_setting_'+ self.options.valueFieldName +'"]' );
if ( ! item.custom_value && value_select.length > 0 ) {
$elem.find( '.custom-value-container' ).hide();
} else {
$elem.find( '.value' ).hide();
}
},
save: function( obj, data ) {
jQuery( '#'+ self.options.fieldId ).val( jQuery.toJSON( data ) );
}
}
} );
}
return self.init();
};

1
js/generic-map.min.js vendored Normal file
View File

@@ -0,0 +1 @@
var GravityFlowGenericMap=function(e){var o=this;return o.options=e,o.UI=jQuery("#gaddon-setting-row-"+o.options.fieldName),o.init=function(){o.bindEvents(),o.setupData(),o.setupRepeater()},o.bindEvents=function(){o.UI.on("change",'select[name="_gaddon_setting_'+o.options.keyFieldName+'"]',function(){var e=jQuery(this),t=e.next(".custom-key-container");"gf_custom"==e.val()&&e.fadeOut(function(){t.fadeIn().focus()})}),o.UI.on("change",'select[name="_gaddon_setting_'+o.options.valueFieldName+'"]',function(){var e=jQuery(this),t=e.next(".custom-value-container");"gf_custom"==e.val()&&e.fadeOut(function(){t.fadeIn().focus()})}),o.UI.on("click","a.custom-key-reset",function(e){e.preventDefault();var t=jQuery(this).parents(".custom-key-container"),n=t.prev("select.key");t.fadeOut(function(){t.find("input").val("").change(),n.fadeIn().focus().val("")})}),o.UI.on("click","a.custom-value-reset",function(e){e.preventDefault();var t=jQuery(this).parents(".custom-value-container"),n=t.prev("select.value");t.fadeOut(function(){t.find("input").val("").change(),n.fadeIn().focus().val("")})}),o.UI.closest("form").on("submit",function(e){jQuery('[name^="_gaddon_setting_'+o.options.fieldName+'_"]').each(function(e){jQuery(this).removeAttr("name")})})},o.setupData=function(){o.data=jQuery.parseJSON(jQuery("#"+o.options.fieldId).val()),o.data||(o.data=[{key:"",value:"",custom_key:"",custom_value:""}])},o.setupRepeater=function(){var e;e=0<o.options.limit?o.options.limit:0,o.UI.find("tbody.repeater").repeater({limit:e,items:o.data,addButtonMarkup:'<img src="'+o.options.baseURL+'/images/add.png" style="cursor:pointer;" />',removeButtonMarkup:'<img src="'+o.options.baseURL+'/images/remove.png" style="cursor:pointer;" />',callbacks:{add:function(e,t,n){var a=t.find('select[name="_gaddon_setting_'+o.options.keyFieldName+'"]');!n.custom_key&&0<a.length?t.find(".custom-key-container").hide():t.find(".key").hide();var i=t.find('select[name="_gaddon_setting_'+o.options.valueFieldName+'"]');!n.custom_value&&0<i.length?t.find(".custom-value-container").hide():t.find(".value").hide()},save:function(e,t){jQuery("#"+o.options.fieldId).val(jQuery.toJSON(t))}}})},o.init()};

101
js/inbox.js Normal file
View File

@@ -0,0 +1,101 @@
(function (GravityFlowInbox, $) {
$(document).ready(function () {
$('.gravityflow-actions-unlock').click( function() {
var $this = $(this),
$lock = $this.siblings('.gravityflow-actions-lock'),
$noteContainer = $this.siblings('.gravityflow-actions-note-field-container'),
$actionButtons = $this.siblings('.gravityflow-actions');
$this.hide();
$lock.show();
$noteContainer.hide();
$actionButtons.hide();
$this.parent('.gravityflow-actions').addClass( 'gravityflow-actions-locked' );
});
$('.gravityflow-action').click( function() {
var $this = $(this),
$unlock = $this.siblings('.gravityflow-actions-unlock'),
$lock = $this.siblings('.gravityflow-actions-lock'),
$noteContainer = $this.siblings('.gravityflow-actions-note-field-container'),
$noteField = $noteContainer.find('textarea'),
showNoteField = $this.data('note_field');
if ( $this.hasClass( 'gravityflow-action-processed' ) ) {
return;
}
if ( $this.parent('.gravityflow-actions').hasClass( 'gravityflow-actions-locked' ) ) {
$this.parent('.gravityflow-actions').removeClass( 'gravityflow-actions-locked' );
$lock.hide();
$unlock.show();
if ( showNoteField ) {
$noteContainer.show();
$noteField.focus();
$(document).keyup(function(e) {
var KEYCODE_ESC = 27;
if (e.keyCode == KEYCODE_ESC) {
$unlock.click();
}
});
} else {
setTimeout(function () {
if ( ! $this.hasClass( 'gravityflow-action-processing' ) && ! $this.hasClass( 'gravityflow-action-processed' ) ) {
$this.parent('.gravityflow-actions').addClass( 'gravityflow-actions-locked' );
$lock.show();
$unlock.hide();
}
}, 2000);
}
return;
}
var entryId = parseInt($this.data('entry_id')),
restBase = $this.data('rest_base'),
action = $this.data('action'),
url = gravityflow_inbox_strings.restUrl,
nonce = gravityflow_inbox_strings.nonce,
$spinner = $this.siblings('.gravityflow-actions-spinner');
$.ajax({
method: "POST",
url: url + 'gf/v2/entries/' + entryId + '/workflow/' + restBase,
data: { 'action' : action, 'gravityflow_note' : $noteField.val() },
beforeSend: function ( xhr ) {
xhr.setRequestHeader( 'X-WP-Nonce', nonce );
$this.siblings().andSelf().hide();
$this.addClass('gravityflow-action-processing');
$spinner.show();
},
success : function( response ) {
$spinner.hide();
$this.removeClass('gravityflow-action-processing');
if ( response.status == 'success' ) {
$this.addClass('gravityflow-action-processed');
$this.prop('title', response.feedback);
$this.show();
$this.parent('.gravityflow-actions').removeClass( 'gravityflow-actions-locked' );
} else {
$this.parent('.gravityflow-actions').addClass( 'gravityflow-actions-locked' );
$this.siblings('.gravityflow-action').andSelf().show();
$lock.show();
alert( response.feedback );
}
},
fail : function( response ) {
$spinner.hide();
$unlock.hide();
$lock.show();
$this.removeClass('gravityflow-action-processing');
$this.siblings('.gravityflow-actions').andSelf().show();
alert( response );
}
});
});
});
}(window.GravityFlowInbox = window.GravityFlowInbox || {}, jQuery));

1
js/inbox.min.js vendored Normal file
View File

@@ -0,0 +1 @@
!function(i,w){w(document).ready(function(){w(".gravityflow-actions-unlock").click(function(){var i=w(this),o=i.siblings(".gravityflow-actions-lock"),a=i.siblings(".gravityflow-actions-note-field-container"),s=i.siblings(".gravityflow-actions");i.hide(),o.show(),a.hide(),s.hide(),i.parent(".gravityflow-actions").addClass("gravityflow-actions-locked")}),w(".gravityflow-action").click(function(){var o=w(this),a=o.siblings(".gravityflow-actions-unlock"),s=o.siblings(".gravityflow-actions-lock"),i=o.siblings(".gravityflow-actions-note-field-container"),t=i.find("textarea"),n=o.data("note_field");if(!o.hasClass("gravityflow-action-processed")){if(o.parent(".gravityflow-actions").hasClass("gravityflow-actions-locked"))return o.parent(".gravityflow-actions").removeClass("gravityflow-actions-locked"),s.hide(),a.show(),void(n?(i.show(),t.focus(),w(document).keyup(function(i){27==i.keyCode&&a.click()})):setTimeout(function(){o.hasClass("gravityflow-action-processing")||o.hasClass("gravityflow-action-processed")||(o.parent(".gravityflow-actions").addClass("gravityflow-actions-locked"),s.show(),a.hide())},2e3));var e=parseInt(o.data("entry_id")),l=o.data("rest_base"),r=o.data("action"),c=gravityflow_inbox_strings.restUrl,f=gravityflow_inbox_strings.nonce,d=o.siblings(".gravityflow-actions-spinner");w.ajax({method:"POST",url:c+"gf/v2/entries/"+e+"/workflow/"+l,data:{action:r,gravityflow_note:t.val()},beforeSend:function(i){i.setRequestHeader("X-WP-Nonce",f),o.siblings().andSelf().hide(),o.addClass("gravityflow-action-processing"),d.show()},success:function(i){d.hide(),o.removeClass("gravityflow-action-processing"),"success"==i.status?(o.addClass("gravityflow-action-processed"),o.prop("title",i.feedback),o.show(),o.parent(".gravityflow-actions").removeClass("gravityflow-actions-locked")):(o.parent(".gravityflow-actions").addClass("gravityflow-actions-locked"),o.siblings(".gravityflow-action").andSelf().show(),s.show(),alert(i.feedback))},fail:function(i){d.hide(),a.hide(),s.show(),o.removeClass("gravityflow-action-processing"),o.siblings(".gravityflow-actions").andSelf().show(),alert(i)}})}})})}(window.GravityFlowInbox=window.GravityFlowInbox||{},jQuery);

2
js/index.php Normal file
View File

@@ -0,0 +1,2 @@
<?php
//Nothing to see here

535
js/multi-select.js Normal file
View File

@@ -0,0 +1,535 @@
/*
* MultiSelect v0.9.11
* Copyright (c) 2012 Louis Cuny
*
* This program is free software. It comes without any warranty, to
* the extent permitted by applicable law. You can redistribute it
* and/or modify it under the terms of the Do What The Fuck You Want
* To Public License, Version 2, as published by Sam Hocevar. See
* http://sam.zoy.org/wtfpl/COPYING for more details.
*/
!function ($) {
"use strict";
/* MULTISELECT CLASS DEFINITION
* ====================== */
var MultiSelect = function (element, options) {
this.options = options;
this.$element = $(element);
this.$container = $('<div/>', { 'class': "ms-container" });
this.$selectableContainer = $('<div/>', { 'class': 'ms-selectable' });
this.$selectionContainer = $('<div/>', { 'class': 'ms-selection' });
this.$selectableUl = $('<ul/>', { 'class': "ms-list", 'tabindex' : '-1' });
this.$selectionUl = $('<ul/>', { 'class': "ms-list", 'tabindex' : '-1' });
this.scrollTo = 0;
this.elemsSelector = 'li:visible:not(.ms-optgroup-label,.ms-optgroup-container,.'+options.disabledClass+')';
};
MultiSelect.prototype = {
constructor: MultiSelect,
init: function(){
var that = this,
ms = this.$element;
if (ms.next('.ms-container').length === 0){
ms.css({ position: 'absolute', left: '-9999px' });
ms.attr('id', ms.attr('id') ? ms.attr('id') : Math.ceil(Math.random()*1000)+'multiselect');
this.$container.attr('id', 'ms-'+ms.attr('id'));
this.$container.addClass(that.options.cssClass);
ms.find('option').each(function(){
that.generateLisFromOption(this);
});
this.$selectionUl.find('.ms-optgroup-label').hide();
if (that.options.selectableHeader){
that.$selectableContainer.append(that.options.selectableHeader);
}
that.$selectableContainer.append(that.$selectableUl);
if (that.options.selectableFooter){
that.$selectableContainer.append(that.options.selectableFooter);
}
if (that.options.selectionHeader){
that.$selectionContainer.append(that.options.selectionHeader);
}
that.$selectionContainer.append(that.$selectionUl);
if (that.options.selectionFooter){
that.$selectionContainer.append(that.options.selectionFooter);
}
that.$container.append(that.$selectableContainer);
that.$container.append(that.$selectionContainer);
ms.after(that.$container);
that.activeMouse(that.$selectableUl);
that.activeKeyboard(that.$selectableUl);
var action = that.options.dblClick ? 'dblclick' : 'click';
that.$selectableUl.on(action, '.ms-elem-selectable', function(){
that.select($(this).data('ms-value'));
});
that.$selectionUl.on(action, '.ms-elem-selection', function(){
that.deselect($(this).data('ms-value'));
});
that.activeMouse(that.$selectionUl);
that.activeKeyboard(that.$selectionUl);
ms.on('focus', function(){
that.$selectableUl.focus();
})
}
var selectedValues = ms.find('option:selected').map(function(){ return $(this).val(); }).get();
that.select(selectedValues, 'init');
if (typeof that.options.afterInit === 'function') {
that.options.afterInit.call(this, this.$container);
}
},
'generateLisFromOption' : function(option, index, $container){
var that = this,
ms = that.$element,
attributes = "",
$option = $(option);
for (var cpt = 0; cpt < option.attributes.length; cpt++){
var attr = option.attributes[cpt];
if(attr.name !== 'value' && attr.name !== 'disabled'){
attributes += attr.name+'="'+attr.value+'" ';
}
}
var selectableLi = $('<li '+attributes+'><span>'+that.escapeHTML($option.text())+'</span></li>'),
selectedLi = selectableLi.clone(),
value = $option.val(),
elementId = that.sanitize(value);
selectableLi
.data('ms-value', value)
.addClass('ms-elem-selectable')
.attr('id', elementId+'-selectable');
selectedLi
.data('ms-value', value)
.addClass('ms-elem-selection')
.attr('id', elementId+'-selection')
.hide();
if ($option.prop('disabled') || ms.prop('disabled')){
selectedLi.addClass(that.options.disabledClass);
selectableLi.addClass(that.options.disabledClass);
}
var $optgroup = $option.parent('optgroup');
if ($optgroup.length > 0){
var optgroupLabel = $optgroup.attr('label'),
optgroupId = that.sanitize(optgroupLabel),
$selectableOptgroup = that.$selectableUl.find('#optgroup-selectable-'+optgroupId),
$selectionOptgroup = that.$selectionUl.find('#optgroup-selection-'+optgroupId);
if ($selectableOptgroup.length === 0){
var optgroupContainerTpl = '<li class="ms-optgroup-container"></li>',
optgroupTpl = '<ul class="ms-optgroup"><li class="ms-optgroup-label"><span>'+optgroupLabel+'</span></li></ul>';
$selectableOptgroup = $(optgroupContainerTpl);
$selectionOptgroup = $(optgroupContainerTpl);
$selectableOptgroup.attr('id', 'optgroup-selectable-'+optgroupId);
$selectionOptgroup.attr('id', 'optgroup-selection-'+optgroupId);
$selectableOptgroup.append($(optgroupTpl));
$selectionOptgroup.append($(optgroupTpl));
if (that.options.selectableOptgroup){
$selectableOptgroup.find('.ms-optgroup-label').on('click', function(){
var values = $optgroup.children(':not(:selected, :disabled)').map(function(){ return $(this).val() }).get();
that.select(values);
});
$selectionOptgroup.find('.ms-optgroup-label').on('click', function(){
var values = $optgroup.children(':selected:not(:disabled)').map(function(){ return $(this).val() }).get();
that.deselect(values);
});
}
that.$selectableUl.append($selectableOptgroup);
that.$selectionUl.append($selectionOptgroup);
}
index = index == undefined ? $selectableOptgroup.find('ul').children().length : index + 1;
selectableLi.insertAt(index, $selectableOptgroup.children());
selectedLi.insertAt(index, $selectionOptgroup.children());
} else {
index = index == undefined ? that.$selectableUl.children().length : index;
selectableLi.insertAt(index, that.$selectableUl);
selectedLi.insertAt(index, that.$selectionUl);
}
},
'addOption' : function(options){
var that = this;
if (options.value !== undefined && options.value !== null){
options = [options];
}
$.each(options, function(index, option){
if (option.value !== undefined && option.value !== null &&
that.$element.find("option[value='"+option.value+"']").length === 0){
var $option = $('<option value="'+option.value+'">'+option.text+'</option>'),
index = parseInt((typeof option.index === 'undefined' ? that.$element.children().length : option.index)),
$container = option.nested == undefined ? that.$element : $("optgroup[label='"+option.nested+"']")
$option.insertAt(index, $container);
that.generateLisFromOption($option.get(0), index, option.nested);
}
})
},
'escapeHTML' : function(text){
return $("<div>").text(text).html();
},
'activeKeyboard' : function($list){
var that = this;
$list.on('focus', function(){
$(this).addClass('ms-focus');
})
.on('blur', function(){
$(this).removeClass('ms-focus');
})
.on('keydown', function(e){
switch (e.which) {
case 40:
case 38:
e.preventDefault();
e.stopPropagation();
that.moveHighlight($(this), (e.which === 38) ? -1 : 1);
return;
case 37:
case 39:
e.preventDefault();
e.stopPropagation();
that.switchList($list);
return;
case 9:
if(that.$element.is('[tabindex]')){
e.preventDefault();
var tabindex = parseInt(that.$element.attr('tabindex'), 10);
tabindex = (e.shiftKey) ? tabindex-1 : tabindex+1;
$('[tabindex="'+(tabindex)+'"]').focus();
return;
}else{
if(e.shiftKey){
that.$element.trigger('focus');
}
}
}
if($.inArray(e.which, that.options.keySelect) > -1){
e.preventDefault();
e.stopPropagation();
that.selectHighlighted($list);
return;
}
});
},
'moveHighlight': function($list, direction){
var $elems = $list.find(this.elemsSelector),
$currElem = $elems.filter('.ms-hover'),
$nextElem = null,
elemHeight = $elems.first().outerHeight(),
containerHeight = $list.height(),
containerSelector = '#'+this.$container.prop('id');
$elems.removeClass('ms-hover');
if (direction === 1){ // DOWN
$nextElem = $currElem.nextAll(this.elemsSelector).first();
if ($nextElem.length === 0){
var $optgroupUl = $currElem.parent();
if ($optgroupUl.hasClass('ms-optgroup')){
var $optgroupLi = $optgroupUl.parent(),
$nextOptgroupLi = $optgroupLi.next(':visible');
if ($nextOptgroupLi.length > 0){
$nextElem = $nextOptgroupLi.find(this.elemsSelector).first();
} else {
$nextElem = $elems.first();
}
} else {
$nextElem = $elems.first();
}
}
} else if (direction === -1){ // UP
$nextElem = $currElem.prevAll(this.elemsSelector).first();
if ($nextElem.length === 0){
var $optgroupUl = $currElem.parent();
if ($optgroupUl.hasClass('ms-optgroup')){
var $optgroupLi = $optgroupUl.parent(),
$prevOptgroupLi = $optgroupLi.prev(':visible');
if ($prevOptgroupLi.length > 0){
$nextElem = $prevOptgroupLi.find(this.elemsSelector).last();
} else {
$nextElem = $elems.last();
}
} else {
$nextElem = $elems.last();
}
}
}
if ($nextElem.length > 0){
$nextElem.addClass('ms-hover');
var scrollTo = $list.scrollTop() + $nextElem.position().top -
containerHeight / 2 + elemHeight / 2;
$list.scrollTop(scrollTo);
}
},
'selectHighlighted' : function($list){
var $elems = $list.find(this.elemsSelector),
$highlightedElem = $elems.filter('.ms-hover').first();
if ($highlightedElem.length > 0){
if ($list.parent().hasClass('ms-selectable')){
this.select($highlightedElem.data('ms-value'));
} else {
this.deselect($highlightedElem.data('ms-value'));
}
$elems.removeClass('ms-hover');
}
},
'switchList' : function($list){
$list.blur();
this.$container.find(this.elemsSelector).removeClass('ms-hover');
if ($list.parent().hasClass('ms-selectable')){
this.$selectionUl.focus();
} else {
this.$selectableUl.focus();
}
},
'activeMouse' : function($list){
var that = this;
$('body').on('mouseenter', that.elemsSelector, function(){
$(this).parents('.ms-container').find(that.elemsSelector).removeClass('ms-hover');
$(this).addClass('ms-hover');
});
$('body').on('mouseleave', that.elemsSelector, function () {
$(this).parents('.ms-container').find(that.elemsSelector).removeClass('ms-hover');;
});
},
'refresh' : function() {
this.destroy();
this.$element.multiSelect(this.options);
},
'destroy' : function(){
$("#ms-"+this.$element.attr("id")).remove();
this.$element.css('position', '').css('left', '')
this.$element.removeData('multiselect');
},
'select' : function(value, method){
if (typeof value === 'string'){ value = [value]; }
var that = this,
ms = this.$element,
msIds = $.map(value, function(val){ return(that.sanitize(val)); }),
selectables = this.$selectableUl.find('#' + msIds.join('-selectable, #')+'-selectable').filter(':not(.'+that.options.disabledClass+')'),
selections = this.$selectionUl.find('#' + msIds.join('-selection, #') + '-selection').filter(':not(.'+that.options.disabledClass+')'),
options = ms.find('option:not(:disabled)').filter(function(){ return($.inArray(this.value, value) > -1); });
if (method === 'init'){
selectables = this.$selectableUl.find('#' + msIds.join('-selectable, #')+'-selectable'),
selections = this.$selectionUl.find('#' + msIds.join('-selection, #') + '-selection');
}
if (selectables.length > 0){
selectables.addClass('ms-selected').hide();
selections.addClass('ms-selected').show();
options.prop('selected', true);
that.$container.find(that.elemsSelector).removeClass('ms-hover');
var selectableOptgroups = that.$selectableUl.children('.ms-optgroup-container');
if (selectableOptgroups.length > 0){
selectableOptgroups.each(function(){
var selectablesLi = $(this).find('.ms-elem-selectable');
if (selectablesLi.length === selectablesLi.filter('.ms-selected').length){
$(this).find('.ms-optgroup-label').hide();
}
});
var selectionOptgroups = that.$selectionUl.children('.ms-optgroup-container');
selectionOptgroups.each(function(){
var selectionsLi = $(this).find('.ms-elem-selection');
if (selectionsLi.filter('.ms-selected').length > 0){
$(this).find('.ms-optgroup-label').show();
}
});
} else {
if (that.options.keepOrder && method !== 'init'){
var selectionLiLast = that.$selectionUl.find('.ms-selected');
if((selectionLiLast.length > 1) && (selectionLiLast.last().get(0) != selections.get(0))) {
selections.insertAfter(selectionLiLast.last());
}
}
}
if (method !== 'init'){
ms.trigger('change');
if (typeof that.options.afterSelect === 'function') {
that.options.afterSelect.call(this, value);
}
}
}
},
'deselect' : function(value){
if (typeof value === 'string'){ value = [value]; }
var that = this,
ms = this.$element,
msIds = $.map(value, function(val){ return(that.sanitize(val)); }),
selectables = this.$selectableUl.find('#' + msIds.join('-selectable, #')+'-selectable'),
selections = this.$selectionUl.find('#' + msIds.join('-selection, #')+'-selection').filter('.ms-selected').filter(':not(.'+that.options.disabledClass+')'),
options = ms.find('option').filter(function(){ return($.inArray(this.value, value) > -1); });
if (selections.length > 0){
selectables.removeClass('ms-selected').show();
selections.removeClass('ms-selected').hide();
options.prop('selected', false);
that.$container.find(that.elemsSelector).removeClass('ms-hover');
var selectableOptgroups = that.$selectableUl.children('.ms-optgroup-container');
if (selectableOptgroups.length > 0){
selectableOptgroups.each(function(){
var selectablesLi = $(this).find('.ms-elem-selectable');
if (selectablesLi.filter(':not(.ms-selected)').length > 0){
$(this).find('.ms-optgroup-label').show();
}
});
var selectionOptgroups = that.$selectionUl.children('.ms-optgroup-container');
selectionOptgroups.each(function(){
var selectionsLi = $(this).find('.ms-elem-selection');
if (selectionsLi.filter('.ms-selected').length === 0){
$(this).find('.ms-optgroup-label').hide();
}
});
}
ms.trigger('change');
if (typeof that.options.afterDeselect === 'function') {
that.options.afterDeselect.call(this, value);
}
}
},
'select_all' : function(){
var ms = this.$element,
values = ms.val();
ms.find('option:not(":disabled")').prop('selected', true);
this.$selectableUl.find('.ms-elem-selectable').filter(':not(.'+this.options.disabledClass+')').addClass('ms-selected').hide();
this.$selectionUl.find('.ms-optgroup-label').show();
this.$selectableUl.find('.ms-optgroup-label').hide();
this.$selectionUl.find('.ms-elem-selection').filter(':not(.'+this.options.disabledClass+')').addClass('ms-selected').show();
this.$selectionUl.focus();
ms.trigger('change');
if (typeof this.options.afterSelect === 'function') {
var selectedValues = $.grep(ms.val(), function(item){
return $.inArray(item, values) < 0;
});
this.options.afterSelect.call(this, selectedValues);
}
},
'deselect_all' : function(){
var ms = this.$element,
values = ms.val();
ms.find('option').prop('selected', false);
this.$selectableUl.find('.ms-elem-selectable').removeClass('ms-selected').show();
this.$selectionUl.find('.ms-optgroup-label').hide();
this.$selectableUl.find('.ms-optgroup-label').show();
this.$selectionUl.find('.ms-elem-selection').removeClass('ms-selected').hide();
this.$selectableUl.focus();
ms.trigger('change');
if (typeof this.options.afterDeselect === 'function') {
this.options.afterDeselect.call(this, values);
}
},
sanitize: function(value){
var hash = 0, i, character;
if (value.length == 0) return hash;
var ls = 0;
for (i = 0, ls = value.length; i < ls; i++) {
character = value.charCodeAt(i);
hash = ((hash<<5)-hash)+character;
hash |= 0; // Convert to 32bit integer
}
return hash;
}
};
/* MULTISELECT PLUGIN DEFINITION
* ======================= */
$.fn.multiSelect = function () {
var option = arguments[0],
args = arguments;
return this.each(function () {
var $this = $(this),
data = $this.data('multiselect'),
options = $.extend({}, $.fn.multiSelect.defaults, $this.data(), typeof option === 'object' && option);
if (!data){ $this.data('multiselect', (data = new MultiSelect(this, options))); }
if (typeof option === 'string'){
data[option](args[1]);
} else {
data.init();
}
});
};
$.fn.multiSelect.defaults = {
keySelect: [32],
selectableOptgroup: false,
disabledClass : 'disabled',
dblClick : false,
keepOrder: false,
cssClass: ''
};
$.fn.multiSelect.Constructor = MultiSelect;
$.fn.insertAt = function(index, $parent) {
return this.each(function() {
if (index === 0) {
$parent.prepend(this);
} else {
$parent.children().eq(index - 1).after(this);
}
});
}
}(window.jQuery);

1
js/multi-select.min.js vendored Normal file

File diff suppressed because one or more lines are too long

181
js/quicksearch.js Normal file
View File

@@ -0,0 +1,181 @@
(function($, window, document, undefined) {
$.fn.quicksearch = function (target, opt) {
var timeout, cache, rowcache, jq_results, val = '', e = this, options = $.extend({
delay: 100,
selector: null,
stripeRows: null,
loader: null,
noResults: '',
matchedResultsCount: 0,
bind: 'keyup',
onBefore: function () {
return;
},
onAfter: function () {
return;
},
show: function () {
this.style.display = "";
},
hide: function () {
this.style.display = "none";
},
prepareQuery: function (val) {
return val.toLowerCase().split(' ');
},
testQuery: function (query, txt, _row) {
for (var i = 0; i < query.length; i += 1) {
if (txt.indexOf(query[i]) === -1) {
return false;
}
}
return true;
}
}, opt);
this.go = function () {
var i = 0,
numMatchedRows = 0,
noresults = true,
query = options.prepareQuery(val),
val_empty = (val.replace(' ', '').length === 0);
for (var i = 0, len = rowcache.length; i < len; i++) {
if (val_empty || options.testQuery(query, cache[i], rowcache[i])) {
options.show.apply(rowcache[i]);
noresults = false;
numMatchedRows++;
} else {
options.hide.apply(rowcache[i]);
}
}
if (noresults) {
this.results(false);
} else {
this.results(true);
this.stripe();
}
this.matchedResultsCount = numMatchedRows;
this.loader(false);
options.onAfter();
return this;
};
/*
* External API so that users can perform search programatically.
* */
this.search = function (submittedVal) {
val = submittedVal;
e.trigger();
};
/*
* External API to get the number of matched results as seen in
* https://github.com/ruiz107/quicksearch/commit/f78dc440b42d95ce9caed1d087174dd4359982d6
* */
this.currentMatchedResults = function() {
return this.matchedResultsCount;
};
this.stripe = function () {
if (typeof options.stripeRows === "object" && options.stripeRows !== null)
{
var joined = options.stripeRows.join(' ');
var stripeRows_length = options.stripeRows.length;
jq_results.not(':hidden').each(function (i) {
$(this).removeClass(joined).addClass(options.stripeRows[i % stripeRows_length]);
});
}
return this;
};
this.strip_html = function (input) {
var output = input.replace(new RegExp('<[^<]+\>', 'g'), "");
output = $.trim(output.toLowerCase());
return output;
};
this.results = function (bool) {
if (typeof options.noResults === "string" && options.noResults !== "") {
if (bool) {
$(options.noResults).hide();
} else {
$(options.noResults).show();
}
}
return this;
};
this.loader = function (bool) {
if (typeof options.loader === "string" && options.loader !== "") {
(bool) ? $(options.loader).show() : $(options.loader).hide();
}
return this;
};
this.cache = function () {
jq_results = $(target);
if (typeof options.noResults === "string" && options.noResults !== "") {
jq_results = jq_results.not(options.noResults);
}
var t = (typeof options.selector === "string") ? jq_results.find(options.selector) : $(target).not(options.noResults);
cache = t.map(function () {
return e.strip_html(this.innerHTML);
});
rowcache = jq_results.map(function () {
return this;
});
/*
* Modified fix for sync-ing "val".
* Original fix https://github.com/michaellwest/quicksearch/commit/4ace4008d079298a01f97f885ba8fa956a9703d1
* */
val = val || this.val() || "";
return this.go();
};
this.trigger = function () {
this.loader(true);
options.onBefore();
window.clearTimeout(timeout);
timeout = window.setTimeout(function () {
e.go();
}, options.delay);
return this;
};
this.cache();
this.results(true);
this.stripe();
this.loader(false);
return this.each(function () {
/*
* Changed from .bind to .on.
* */
$(this).on(options.bind, function () {
val = $(this).val();
e.trigger();
});
});
};
}(jQuery, this, document));

1
js/quicksearch.min.js vendored Normal file
View File

@@ -0,0 +1 @@
!function(r,a,t,e){r.fn.quicksearch=function(e,t){var s,o,u,n,h="",i=this,l=r.extend({delay:100,selector:null,stripeRows:null,loader:null,noResults:"",matchedResultsCount:0,bind:"keyup",onBefore:function(){},onAfter:function(){},show:function(){this.style.display=""},hide:function(){this.style.display="none"},prepareQuery:function(t){return t.toLowerCase().split(" ")},testQuery:function(t,e,s){for(var n=0;n<t.length;n+=1)if(-1===e.indexOf(t[n]))return!1;return!0}},t);return this.go=function(){for(var t=0,e=0,s=!0,n=l.prepareQuery(h),i=0===h.replace(" ","").length,r=(t=0,u.length);t<r;t++)i||l.testQuery(n,o[t],u[t])?(l.show.apply(u[t]),s=!1,e++):l.hide.apply(u[t]);return s?this.results(!1):(this.results(!0),this.stripe()),this.matchedResultsCount=e,this.loader(!1),l.onAfter(),this},this.search=function(t){h=t,i.trigger()},this.currentMatchedResults=function(){return this.matchedResultsCount},this.stripe=function(){if("object"==typeof l.stripeRows&&null!==l.stripeRows){var e=l.stripeRows.join(" "),s=l.stripeRows.length;n.not(":hidden").each(function(t){r(this).removeClass(e).addClass(l.stripeRows[t%s])})}return this},this.strip_html=function(t){var e=t.replace(new RegExp("<[^<]+>","g"),"");return e=r.trim(e.toLowerCase())},this.results=function(t){return"string"==typeof l.noResults&&""!==l.noResults&&(t?r(l.noResults).hide():r(l.noResults).show()),this},this.loader=function(t){return"string"==typeof l.loader&&""!==l.loader&&(t?r(l.loader).show():r(l.loader).hide()),this},this.cache=function(){n=r(e),"string"==typeof l.noResults&&""!==l.noResults&&(n=n.not(l.noResults));var t="string"==typeof l.selector?n.find(l.selector):r(e).not(l.noResults);return o=t.map(function(){return i.strip_html(this.innerHTML)}),u=n.map(function(){return this}),h=h||this.val()||"",this.go()},this.trigger=function(){return this.loader(!0),l.onBefore(),a.clearTimeout(s),s=a.setTimeout(function(){i.go()},l.delay),this},this.cache(),this.results(!0),this.stripe(),this.loader(!1),this.each(function(){r(this).on(l.bind,function(){h=r(this).val(),i.trigger()})})}}(jQuery,this,document);

112
js/reports.js Normal file
View File

@@ -0,0 +1,112 @@
(function (Gravity_Flow_Reports, $) {
"use strict";
var stepVars;
$(document).ready(function () {
stepVars = gravityflowFilterVars.config;
var selectedVars = gravityflowFilterVars.selected;
var formId = selectedVars.formId;
$('#gravityflow-reports-category').toggle(formId ? true : false);
if ( formId ) {
var category = selectedVars.category;
if ( category == 'step' ) {
$('#gravityflow-reports-steps').html(getStepOptions(formId));
var stepId = selectedVars.stepId;
$('#gravityflow-reports-steps').val(stepId);
$('#gravityflow-reports-steps').show();
if ( stepId ) {
var assigneeVars = stepVars[formId][stepId].assignees;
$('#gravityflow-reports-assignees').html(getAssigneeOptions( assigneeVars ) );
$('#gravityflow-reports-assignees').val(selectedVars.assignee);
$('#gravityflow-reports-assignees').show();
}
}
}
$('#gravityflow-form-drop-down').change(function(){
$('#gravityflow-reports-category').toggle( this.value ? true : false);
});
$('#gravityflow-reports-category').change(function(){
var formId = $('#gravityflow-form-drop-down').val();
if ( this.value == 'step' ) {
$('#gravityflow-reports-steps').html(getStepOptions(formId));
$('#gravityflow-reports-steps').show();
} else {
$('#gravityflow-reports-assignees').hide();
$('#gravityflow-reports-steps').hide();
}
});
$('#gravityflow-reports-steps').change( function(){
if ( this.value ) {
var formId = $('#gravityflow-form-drop-down').val();
var assigneeVars = stepVars[formId][this.value].assignees;
$('#gravityflow-reports-assignees').html(getAssigneeOptions( assigneeVars ) );
$('#gravityflow-reports-assignees').show();
} else {
$('#gravityflow-reports-assignees').hide();
}
});
});
function getStepOptions( formId ){
var m = [];
m.push( '<option value="">{0}</option>'.format( 'All Steps' ) );
var steps = stepVars[formId];
$.each( steps, function ( i, step ){
m.push( '<option value="{0}">{1}</option>'.format(step.id, step.name ) );
});
return m.join('');
}
function getAssigneeOptions( assigneeVars ){
var m = [];
m.push( '<option value="">{0}</option>'.format( 'All Assignees' ) );
for(var i=0; i < assigneeVars.length; i++) {
m.push( '<option value="{0}">{1}</option>'.format(assigneeVars[i].key, assigneeVars[i].name ) );
}
return m.join('');
}
Gravity_Flow_Reports.drawCharts = function() {
$('.gravityflow_chart').each(function () {
var $this = $(this);
var dataTable = $this.data('table');
var data = google.visualization.arrayToDataTable(dataTable);
var options = $this.data('options');
var chartType = $this.data('type');
var chart = new google.charts[chartType]( this );
chart.draw(data, options);
})
}
String.prototype.format = function () {
var args = arguments;
return this.replace(/{(\d+)}/g, function (match, number) {
return typeof args[number] != 'undefined'
? args[number]
: match
;
});
};
}(window.Gravity_Flow_Reports = window.Gravity_Flow_Reports || {}, jQuery));
google.load("visualization", "1.1", {packages:["bar"]});
google.setOnLoadCallback(Gravity_Flow_Reports.drawCharts);

1
js/reports.min.js vendored Normal file
View File

@@ -0,0 +1 @@
!function(t,s){"use strict";var e;function i(t){var r=[];r.push('<option value="">{0}</option>'.format("All Steps"));var o=e[t];return s.each(o,function(t,o){r.push('<option value="{0}">{1}</option>'.format(o.id,o.name))}),r.join("")}function n(t){var o=[];o.push('<option value="">{0}</option>'.format("All Assignees"));for(var r=0;r<t.length;r++)o.push('<option value="{0}">{1}</option>'.format(t[r].key,t[r].name));return o.join("")}s(document).ready(function(){e=gravityflowFilterVars.config;var t=gravityflowFilterVars.selected,o=t.formId;if((s("#gravityflow-reports-category").toggle(!!o),o)&&"step"==t.category){s("#gravityflow-reports-steps").html(i(o));var r=t.stepId;if(s("#gravityflow-reports-steps").val(r),s("#gravityflow-reports-steps").show(),r){var a=e[o][r].assignees;s("#gravityflow-reports-assignees").html(n(a)),s("#gravityflow-reports-assignees").val(t.assignee),s("#gravityflow-reports-assignees").show()}}s("#gravityflow-form-drop-down").change(function(){s("#gravityflow-reports-category").toggle(!!this.value)}),s("#gravityflow-reports-category").change(function(){var t=s("#gravityflow-form-drop-down").val();"step"==this.value?(s("#gravityflow-reports-steps").html(i(t)),s("#gravityflow-reports-steps").show()):(s("#gravityflow-reports-assignees").hide(),s("#gravityflow-reports-steps").hide())}),s("#gravityflow-reports-steps").change(function(){if(this.value){var t=s("#gravityflow-form-drop-down").val(),o=e[t][this.value].assignees;s("#gravityflow-reports-assignees").html(n(o)),s("#gravityflow-reports-assignees").show()}else s("#gravityflow-reports-assignees").hide()})}),t.drawCharts=function(){s(".gravityflow_chart").each(function(){var t=s(this),o=t.data("table"),r=google.visualization.arrayToDataTable(o),a=t.data("options"),e=t.data("type");new google.charts[e](this).draw(r,a)})},String.prototype.format=function(){var r=arguments;return this.replace(/{(\d+)}/g,function(t,o){return void 0!==r[o]?r[o]:t})}}(window.Gravity_Flow_Reports=window.Gravity_Flow_Reports||{},jQuery),google.load("visualization","1.1",{packages:["bar"]}),google.setOnLoadCallback(Gravity_Flow_Reports.drawCharts);

290
js/routing-setting.js Normal file
View File

@@ -0,0 +1,290 @@
;(function ( GFRoutingSetting, $, undefined ) {
"use strict";
// Create the defaults once
var pluginName = "gfRoutingSetting",
defaults = {
prefix: "",
allowMultiple: true,
imagesURL: "",
operatorStrings: {"is":"is","isnot":"isNot", ">":"greaterThan", "<":"lessThan", "contains":"contains", "starts_with":"startsWith", "ends_with":"endsWith"},
items: [ {
target: '',
fieldId: '0',
operator: 'is',
value: '',
type: '',
} ],
callbacks: {
addNewTarget: function() { },
header: function() { return '<thead><tr><th>Assign To</th><th colspan="3">Condition</th></tr></thead>';}
}
};
// The plugin constructor
function Plugin( element, options ) {
this.element = element;
this.$element = $(element);
this.options = $.extend( true, {}, defaults, options) ;
this.prefix = options.prefix;
this.settings = options.settings;
this.accounts = options.accounts;
this._defaults = defaults;
this._name = pluginName;
this.init();
}
Plugin.prototype = {
init: function() {
var t = this;
var routingsMarkup, headerMarkup;
headerMarkup = this.getHeaderMarkup();
routingsMarkup = '<table class="gform-routings">{0}<tbody class="repeater">{1}</tbody></table>'.format(headerMarkup, this.getNewRoutingRow());
var $routings = $(routingsMarkup);
$routings.find('.repeater').repeater({
limit: 0,
items: this.options.items,
addButtonMarkup: '<img class="gform-add" src="{0}/images/add.png" />'.format(gf_vars.baseUrl),
removeButtonMarkup: '<img class="gform-remove" src="{0}/images/remove.png" />'.format(gf_vars.baseUrl),
callbacks: {
save: function( obj, data ) {
$('#' + t.options.fieldId).val( $.toJSON( data ) );
},
beforeAdd: function( obj, $elem, item){
var $target = $elem.find('.gform-routing-target');
$target.val(item.target);
var $field = $elem.find('.gform-routing-field').first();
$field.value = item.fieldId;
t.changeField($field);
var $operator = $elem.find('.gform-routing-operator').first();
$operator.value = item.operator;
t.changeOperator($operator);
var $value = $elem.find('.gform-routing-value');
$value.val(item.value);
},
}
})
.on('change', '.gform-routing-field', function(e){
t.changeField(this);
})
.on('click', '.gform-no-filters', function(e){
var $this = $(this);
var $row = $this.find('.gform-routing');
if($row.length == 0){
t.addNewRouting(this);
}
$this.remove();
e.preventDefault();
})
.on('change', '.gform-routing-operator', function(){
t.changeOperator(this);
});
this.$element.append($routings);
/*
if (typeof filters == 'undefined' || filters.length == 0){
t.displayNoRoutingsMessage();
return;
}
t.$element.find(".gform-routing-field").each(function (i) {
var fieldId = filters[i].field;
$(this).val(fieldId);
t.changeField(this);
});
t.$element.find(".gform-routing-operator").each(function (i) {
var operator = filters[i].operator;
$(this).val(operator);
t.changeOperator(this, this.value);
});
t.$element.find(".gform-routing-value").each(function (i) {
var value = filters[i].value;
$(this).val(value);
$(this).change();
});
var i;
for (i = 0; i < filters.length; i++) {
t.$element.find(".gform-routings").append(this.getNewRoutingRow(filters[i].routeId));
}
*/
},
getHeaderMarkup: function() {
var header = this.options.callbacks.header( this, '' );
return header;
},
getNewRoutingRow: function () {
var r = [];
r.push( '<td>{0}</td>'.format( this.getRoutingTarget() ) );
r.push( '<td>{0}</td>'.format( this.getRoutingFields() ) );
r.push( '<td>{0}</td>'.format( this.getRoutingOperators( this.options.settings[0] ) ) );
r.push( '<td>{0}</td>'.format( this.getRoutingValues() ) );
r.push( '<td>{buttons}</td>' );
return '<tr class="gform-routing-row">{0}</tr>'.format( r.join('') );
},
getRoutingTarget: function () {
var target = '<input type="text" class="gform-routing-target target_{i}">';
target = this.options.callbacks.addNewTarget( this, target );
return target;
},
getRoutingFields: function () {
var i, j, key, val, label, groupLabel, options, numRows,
select = [],
settings = this.settings;
select.push('<select class="gform-routing-field fieldId_{i}" >');
for (i = 0; i < settings.length; i++) {
key = settings[i].key;
if (settings[i].group) {
groupLabel = settings[i].text;
numRows = settings[i].filters.length;
options = [];
for (j = 0; j < numRows; j++) {
label = settings[i].filters[j].text;
val = settings[i].filters[j].key;
options.push('<option value="{0}">{1}</option>'.format(val, label));
}
select.push('<optgroup label="{0}">{1}</optgroup>'.format(groupLabel, options.join('')));
} else {
label = settings[i].text;
select.push('<option value="{0}">{1}</option>'.format(key, label));
}
}
select.push("</select>");
select.push('<input type="hidden" class="gform-filter-type" name="type_{i}" value="" >');
return select.join('');
},
changeOperator: function (operatorSelect) {
var $select = $(operatorSelect),
$buttons = $select.closest('tr').find('.repeater-buttons');
var index = $buttons.find('.add-item ').data('index');
var $fieldSelect = $select.closest('tr').find('.gform-routing-field');
var filter = this.getFilter($fieldSelect.value);
if (filter) {
$select.closest('tr').find(".gform-routing-value").replaceWith(this.getRoutingValues(filter, operatorSelect.value, index));
}
},
changeField: function (fieldSelect) {
var filter = this.getFilter(fieldSelect.value);
if (filter) {
var $select = $(fieldSelect),
$buttons = $select.closest('tr').find('.repeater-buttons');
var index = $buttons.find('.add-item ').data('index');
$select.closest('tr').find(".gform-routing-value").replaceWith(this.getRoutingValues(filter, null, index));
$select.closest('tr').find(".gform-filter-type").val(filter.type).change();
var $newOperators = $(this.getRoutingOperators(filter, index));
$select.closest('tr').find(".gform-routing-operator").replaceWith($newOperators);
$select.closest('tr').find(".gform-routing-operator").change();
}
},
getRoutingOperators: function (filter, index) {
if ( typeof index == 'undefined' || index === null ){
index = '{i}';
}
var i, operator,
operatorStrings = this.options.operatorStrings,
str = '<select class="gform-routing-operator operator_{0}">'.format(index);
if (filter) {
for (i = 0; i < filter.operators.length; i++) {
operator = filter.operators[i];
str += '<option value="{0}">{1}</option>'.format(operator, gf_vars[operatorStrings[operator]] );
}
}
str += "</select>";
return str;
},
getRoutingValues: function (filter, selectedOperator, index) {
var i, val, text, str, options = "";
if ( typeof index == 'undefined' || index === null ){
index = '{i}';
}
if ( filter && filter.values && selectedOperator != 'contains' ) {
for (i = 0; i < filter.values.length; i++) {
val = filter.values[i].value;
text = filter.values[i].text;
options += '<option value="{0}">{1}</option>'.format(val, text);
}
str = '<select class="gform-routing-value value_{0}">{1}</select>'.format(index, options);
} else {
str = '<input type="text" value="" class="gform-routing-value value_{0}" />'.format(index);
}
return str;
},
getFilter: function (key) {
var settings = this.settings;
if (!key)
return;
for (var i = 0; i < settings.length; i++) {
if (key == settings[i].key)
return settings[i];
if (settings[i].group) {
for (var j = 0; j < settings[i].filters.length; j++) {
if (key == settings[i].filters[j].key)
return settings[i].filters[j];
}
}
}
},
selected: function (selected, current){
return selected == current ? 'selected="selected"' : "";
},
};
// A really lightweight plugin wrapper around the constructor,
// preventing against multiple instantiations
$.fn[pluginName] = function ( options ) {
return this.each(function () {
if (!$.data(this, "plugin_" + pluginName)) {
$.data(this, "plugin_" + pluginName,
new Plugin( this, options ));
}
});
};
String.prototype.format = function () {
var args = arguments;
return this.replace(/{(\d+)}/g, function (match, number) {
return typeof args[number] != 'undefined' ? args[number] : match;
});
};
})( window.GFRoutingSetting = window.GFRoutingSetting || {}, jQuery );

1
js/routing-setting.min.js vendored Normal file
View File

@@ -0,0 +1 @@
!function(t,a,e){"use strict";var i="gfRoutingSetting",r={prefix:"",allowMultiple:!0,imagesURL:"",operatorStrings:{is:"is",isnot:"isNot",">":"greaterThan","<":"lessThan",contains:"contains",starts_with:"startsWith",ends_with:"endsWith"},items:[{target:"",fieldId:"0",operator:"is",value:"",type:""}],callbacks:{addNewTarget:function(){},header:function(){return'<thead><tr><th>Assign To</th><th colspan="3">Condition</th></tr></thead>'}}};function o(t,e){this.element=t,this.$element=a(t),this.options=a.extend(!0,{},r,e),this.prefix=e.prefix,this.settings=e.settings,this.accounts=e.accounts,this._defaults=r,this._name=i,this.init()}o.prototype={init:function(){var t,e,n=this;e=this.getHeaderMarkup(),t='<table class="gform-routings">{0}<tbody class="repeater">{1}</tbody></table>'.format(e,this.getNewRoutingRow());var i=a(t);i.find(".repeater").repeater({limit:0,items:this.options.items,addButtonMarkup:'<img class="gform-add" src="{0}/images/add.png" />'.format(gf_vars.baseUrl),removeButtonMarkup:'<img class="gform-remove" src="{0}/images/remove.png" />'.format(gf_vars.baseUrl),callbacks:{save:function(t,e){a("#"+n.options.fieldId).val(a.toJSON(e))},beforeAdd:function(t,e,i){e.find(".gform-routing-target").val(i.target);var r=e.find(".gform-routing-field").first();r.value=i.fieldId,n.changeField(r);var o=e.find(".gform-routing-operator").first();o.value=i.operator,n.changeOperator(o),e.find(".gform-routing-value").val(i.value)}}}).on("change",".gform-routing-field",function(t){n.changeField(this)}).on("click",".gform-no-filters",function(t){var e=a(this);0==e.find(".gform-routing").length&&n.addNewRouting(this),e.remove(),t.preventDefault()}).on("change",".gform-routing-operator",function(){n.changeOperator(this)}),this.$element.append(i)},getHeaderMarkup:function(){return this.options.callbacks.header(this,"")},getNewRoutingRow:function(){var t=[];return t.push("<td>{0}</td>".format(this.getRoutingTarget())),t.push("<td>{0}</td>".format(this.getRoutingFields())),t.push("<td>{0}</td>".format(this.getRoutingOperators(this.options.settings[0]))),t.push("<td>{0}</td>".format(this.getRoutingValues())),t.push("<td>{buttons}</td>"),'<tr class="gform-routing-row">{0}</tr>'.format(t.join(""))},getRoutingTarget:function(){var t='<input type="text" class="gform-routing-target target_{i}">';return t=this.options.callbacks.addNewTarget(this,t)},getRoutingFields:function(){var t,e,i,r,o,n,a,s,u=[],g=this.settings;for(u.push('<select class="gform-routing-field fieldId_{i}" >'),t=0;t<g.length;t++)if(i=g[t].key,g[t].group){for(n=g[t].text,s=g[t].filters.length,a=[],e=0;e<s;e++)o=g[t].filters[e].text,r=g[t].filters[e].key,a.push('<option value="{0}">{1}</option>'.format(r,o));u.push('<optgroup label="{0}">{1}</optgroup>'.format(n,a.join("")))}else o=g[t].text,u.push('<option value="{0}">{1}</option>'.format(i,o));return u.push("</select>"),u.push('<input type="hidden" class="gform-filter-type" name="type_{i}" value="" >'),u.join("")},changeOperator:function(t){var e=a(t),i=e.closest("tr").find(".repeater-buttons").find(".add-item ").data("index"),r=e.closest("tr").find(".gform-routing-field"),o=this.getFilter(r.value);o&&e.closest("tr").find(".gform-routing-value").replaceWith(this.getRoutingValues(o,t.value,i))},changeField:function(t){var e=this.getFilter(t.value);if(e){var i=a(t),r=i.closest("tr").find(".repeater-buttons").find(".add-item ").data("index");i.closest("tr").find(".gform-routing-value").replaceWith(this.getRoutingValues(e,null,r)),i.closest("tr").find(".gform-filter-type").val(e.type).change();var o=a(this.getRoutingOperators(e,r));i.closest("tr").find(".gform-routing-operator").replaceWith(o),i.closest("tr").find(".gform-routing-operator").change()}},getRoutingOperators:function(t,e){null==e&&(e="{i}");var i,r,o=this.options.operatorStrings,n='<select class="gform-routing-operator operator_{0}">'.format(e);if(t)for(i=0;i<t.operators.length;i++)r=t.operators[i],n+='<option value="{0}">{1}</option>'.format(r,gf_vars[o[r]]);return n+="</select>"},getRoutingValues:function(t,e,i){var r,o,n,a,s="";if(null==i&&(i="{i}"),t&&t.values&&"contains"!=e){for(r=0;r<t.values.length;r++)o=t.values[r].value,n=t.values[r].text,s+='<option value="{0}">{1}</option>'.format(o,n);a='<select class="gform-routing-value value_{0}">{1}</select>'.format(i,s)}else a='<input type="text" value="" class="gform-routing-value value_{0}" />'.format(i);return a},getFilter:function(t){var e=this.settings;if(t)for(var i=0;i<e.length;i++){if(t==e[i].key)return e[i];if(e[i].group)for(var r=0;r<e[i].filters.length;r++)if(t==e[i].filters[r].key)return e[i].filters[r]}},selected:function(t,e){return t==e?'selected="selected"':""}},a.fn[i]=function(t){return this.each(function(){a.data(this,"plugin_"+i)||a.data(this,"plugin_"+i,new o(this,t))})},String.prototype.format=function(){var i=arguments;return this.replace(/{(\d+)}/g,function(t,e){return void 0!==i[e]?i[e]:t})}}(window.GFRoutingSetting=window.GFRoutingSetting||{},jQuery);

53
js/settings.js Normal file
View File

@@ -0,0 +1,53 @@
;(function (GravityFlowSettings, $) {
"use strict";
$(document).ready(function () {
$("form.oauth").submit(function() {
var inputs = $(this).find("input.required");
var error = false;
$.each(inputs, function() {
if ($(this).val() == "") {
error = true;
if ($(this).closest('p').find('p.error').length < 1) {
$(this).before('<p class="error">' + gravityflow_settings_js_strings.required_fields + '</p>');
}
}
else {
$(this).closest('p').find('p.error').hide().remove();
}
});
if (error) {
return false;
}
});
$('#gflow_reauthorize_app').click(function(e) {
e.preventDefault();
var secure = gravityflow_settings_js_strings.nonce;
var app = $(this).data('app');
$.post(gravityflow_settings_js_strings.ajaxurl, {security: secure, action: 'gravity_flow_reauth_app', app: app}, function(response) {
if (response.success) {
window.location.reload();
}
})
});
$('#new-app').click(function(){
$(this).hide();
$('#connected_apps_table_container').hide();
$('#connected_app_form_container').fadeIn();
});
$('#gflow_add_app_cancel').click(function () {
$('#connected_app_form_container').hide();
$('#new-app').show();
$('#connected_apps_table_container').fadeIn();
});
});
}(window.GravityFlowSettings = window.GravityFlowSettings || {}, jQuery));

1
js/settings.min.js vendored Normal file
View File

@@ -0,0 +1 @@
!function(t,i){"use strict";i(document).ready(function(){i("form.oauth").submit(function(){var t=i(this).find("input.required"),n=!1;if(i.each(t,function(){""==i(this).val()?(n=!0,i(this).closest("p").find("p.error").length<1&&i(this).before('<p class="error">'+gravityflow_settings_js_strings.required_fields+"</p>")):i(this).closest("p").find("p.error").hide().remove()}),n)return!1}),i("#gflow_reauthorize_app").click(function(t){t.preventDefault();var n=gravityflow_settings_js_strings.nonce,e=i(this).data("app");i.post(gravityflow_settings_js_strings.ajaxurl,{security:n,action:"gravity_flow_reauth_app",app:e},function(t){t.success&&window.location.reload()})}),i("#new-app").click(function(){i(this).hide(),i("#connected_apps_table_container").hide(),i("#connected_app_form_container").fadeIn()}),i("#gflow_add_app_cancel").click(function(){i("#connected_app_form_container").hide(),i("#new-app").show(),i("#connected_apps_table_container").fadeIn()})})}(window.GravityFlowSettings=window.GravityFlowSettings||{},jQuery);

91
js/status-list.js Normal file
View File

@@ -0,0 +1,91 @@
(function (GravityFlowStatusList, $) {
var page = 1, filters;
$(document).ready(function () {
$('#doaction, #doaction2').click(function(){
var action = $(this).prev('select').val();
if ( action == 'print' ) {
tb_show('Print Entries', '#TB_inline?width=350&amp;height=250&amp;inlineId=print_modal_container', '');
return false;
}
});
$('#gravityflow-bulk-print-button').click(function(){
var checkedValues = $('.gravityflow-cb-entry-id:checked').map(function() {
return this.value;
}).get();
var timelinesQS = $('#gravityflow-print-timelines').is(':checked') ? '&timelines=1' : '';
var pageBreakQS = jQuery('#gravityflow-print-page-break').is(':checked') ? '&page_break=1' : '';
printPage( gravityflow_status_list_strings.ajaxurl + '?action=gravityflow_print_entries&lid=' + checkedValues.join(',') + timelinesQS + pageBreakQS );
return false;
});
$('.gravityflow-export-status-button').click(function(){
var $this = $(this);
$this.addClass('button-disabled');
filters = $this.data('filter_args');
var s = $this.next('.spinner');
$this.next('.gravityflow-spinner').show();
processExport();
});
function processExport(){
var url;
url = ajaxurl + '?action=gravityflow_export_status&order=asc&paged=' + page;
url += filters;
$.getJSON(url, function(data){
if ( data.status =='complete' ) {
window.location = data.url;
} else if( data.status =='incomplete' ) {
processExport( page++ );
} else {
alert(data.message);
}
$('.gravityflow-export-status-button.button-disabled').next('.gravityflow-spinner').hide();
$('.gravityflow-export-status-button.button-disabled').removeClass('button-disabled');
});
}
});
}(window.GravityFlowStatusList = window.GravityFlowStatusList || {}, jQuery));
function closePrint () {
document.body.removeChild(this.__container__);
}
function setPrint () {
this.contentWindow.__container__ = this;
this.contentWindow.onbeforeunload = closePrint;
this.contentWindow.onafterprint = closePrint;
this.contentWindow.focus();
var ms_ie = false;
var ua = window.navigator.userAgent;
var old_ie = ua.indexOf('MSIE ');
var new_ie = ua.indexOf('Trident/');
if ((old_ie > -1) || (new_ie > -1)) {
ms_ie = true;
}
if ( ms_ie ) {
this.contentWindow.document.execCommand('print', false, null);
} else {
this.contentWindow.print();
}
}
function printPage (sURL) {
var oHiddFrame = document.createElement("iframe");
oHiddFrame.onload = setPrint;
oHiddFrame.style.visibility = "hidden";
oHiddFrame.style.position = "fixed";
oHiddFrame.style.right = "0";
oHiddFrame.style.bottom = "0";
oHiddFrame.src = sURL;
document.body.appendChild(oHiddFrame);
}

1
js/status-list.min.js vendored Normal file
View File

@@ -0,0 +1 @@
function closePrint(){document.body.removeChild(this.__container__)}function setPrint(){(this.contentWindow.__container__=this).contentWindow.onbeforeunload=closePrint,this.contentWindow.onafterprint=closePrint,this.contentWindow.focus();var t=!1,n=window.navigator.userAgent,i=n.indexOf("MSIE "),e=n.indexOf("Trident/");(-1<i||-1<e)&&(t=!0),t?this.contentWindow.document.execCommand("print",!1,null):this.contentWindow.print()}function printPage(t){var n=document.createElement("iframe");n.onload=setPrint,n.style.visibility="hidden",n.style.position="fixed",n.style.right="0",n.style.bottom="0",n.src=t,document.body.appendChild(n)}!function(t,e){var i,o=1;e(document).ready(function(){e("#doaction, #doaction2").click(function(){if("print"==e(this).prev("select").val())return tb_show("Print Entries","#TB_inline?width=350&amp;height=250&amp;inlineId=print_modal_container",""),!1}),e("#gravityflow-bulk-print-button").click(function(){var t=e(".gravityflow-cb-entry-id:checked").map(function(){return this.value}).get(),n=e("#gravityflow-print-timelines").is(":checked")?"&timelines=1":"",i=jQuery("#gravityflow-print-page-break").is(":checked")?"&page_break=1":"";return printPage(gravityflow_status_list_strings.ajaxurl+"?action=gravityflow_print_entries&lid="+t.join(",")+n+i),!1}),e(".gravityflow-export-status-button").click(function(){var t=e(this);t.addClass("button-disabled"),i=t.data("filter_args");t.next(".spinner");t.next(".gravityflow-spinner").show(),function n(){var t;t=ajaxurl+"?action=gravityflow_export_status&order=asc&paged="+o;t+=i;e.getJSON(t,function(t){"complete"==t.status?window.location=t.url:"incomplete"==t.status?n(o++):alert(t.message),e(".gravityflow-export-status-button.button-disabled").next(".gravityflow-spinner").hide(),e(".gravityflow-export-status-button.button-disabled").removeClass("button-disabled")})}()})})}(window.GravityFlowStatusList=window.GravityFlowStatusList||{},jQuery);