(function() {
var TINYMCE_PLUGIN_NAME = Amilia.PLUGIN_NAME + '_standings',
SHORTCODE = 'amilia_store_standings';
var modalTemplate = [
'
',
'
{instructions}
',
'
{standings-instructions-p1}
',
'
{instructions-p1}
',
'
{standings-instructions-p2}
',
'
{standings-instructions-p3}
',
'
{standings-instructions-p4}
',
'
'
].join('\n');
tinymce.PluginManager.add(TINYMCE_PLUGIN_NAME, function(editor, url) {
modalTemplate = Amilia.localize(modalTemplate);
// The modal
var mask = document.createElement('div');
mask.className = 'amilia-mask';
document.body.appendChild(mask);
mask.style.display = 'none';
var modal = document.createElement('div');
modal.className = 'amilia-modal';
document.body.appendChild(modal);
modal.innerHTML = modalTemplate;
modal.style.display = 'none';
var storeUrl = modal.querySelector('input[name=store-url]'),
storeUrlError = modal.querySelector('div.store-url'),
sportSelect = modal.querySelector('select[name="sport"]'),
programSelect = modal.querySelector('select[name="program"]'),
programSelectError = modal.querySelector('div.input-helper.program'),
subCategorySelect = modal.querySelector('select[name="sub-category"]'),
subCategorySelectError = modal.querySelector('div.input-helper.sub-category'),
tagsSelect = modal.querySelector('select[name="tags[]"]'),
tagsSelectError = modal.querySelector('div.input-helper.tags'),
showHidden = modal.querySelector('input[name=show-hidden]'),
showStaff = modal.querySelector('input[name=show-staff]'),
showSelect = modal.querySelector('select[name="show"]'),
insertButton = modal.querySelector('button[name=insert]'),
updateButton = modal.querySelector('button[name=update]'),
deleteButton = modal.querySelector('button[name=delete]'),
cancelButton = modal.querySelector('button[name=cancel]'),
helps = modal.querySelectorAll('a.amilia-help'),
instructions = modal.querySelector('.amilia-instructions'),
activeNode = null,
activeShortcode = null,
imagesUrl = url.replace('/shortcodes', '/images/');
function getSelectedProgram() {
var programId = parseInt(programSelect.value, 10);
return isNaN(programId) ? null : programId;
}
function fetchProgramsAndConstructSelect(selectedProgram) {
selectedProgram || (selectedProgram = getSelectedProgram());
programSelectError.innerHTML == '';
var urlComponents = Amilia.getUrlComponents(storeUrl.value);
if (urlComponents == null) return;
programSelectError.innerHTML == Amilia.lang('pleaseWait');
Amilia.ajaxGetJson(urlComponents.apiUrl + 'Programs?offline=true',
function(xhr) {
var response = JSON.parse(xhr.response) || {};
var orgPrograms = response.Items;
programSelect.innerHTML = '';
programSelectError.innerHTML = '';
if (orgPrograms.length > 0) {
for (var i = 0; i < orgPrograms.length; i++) {
var program = orgPrograms[i],
option = document.createElement('option');
option.value = program.Id;
option.innerText = program.Name;
if (selectedProgram == program.Id) option.selected = true;
programSelect.appendChild(option);
}
} else {
programSelectError.innerHTML = Amilia.lang('error-no-programs');
}
},
function(xhr) {
programSelectError.innerHTML = Amilia.lang('error-unexpected');
}
);
}
function getSelectedSubCategory() {
var subCategoryId = parseInt(subCategorySelect.value, 10);
return isNaN(subCategoryId) ? null : subCategoryId;
}
function fetchSubCategoriesAndConstructSelect(selectedProgram, selectedSubCategory) {
selectedProgram || (selectedProgram = getSelectedProgram());
if (!selectedProgram) return;
selectedSubCategory || (selectedSubCategory = getSelectedSubCategory());
subCategorySelectError.innerHTML = '';
var urlComponents = Amilia.getUrlComponents(storeUrl.value);
if (urlComponents == null) return;
subCategorySelectError.innerHTML = Amilia.lang('pleaseWait');
Amilia.ajaxGetJson(urlComponents.apiUrl + 'Programs/' + selectedProgram + '/Activities?showHidden=true',
function(xhr) {
var response = JSON.parse(xhr.response) || {};
var activities = response.Items;
subCategorySelect.innerHTML = '