/* * Journalist - Articles page scripts. */ (function (win, doc, undef) { "use strict"; sax.itemIdPrefix = 'Itm_'; sax.segIdPrefix = 'Seg_'; sax.classFileDrag = 'sax-file-drag'; let ac = sax.articleContent = sax.articleContent || {}; //-------------------------------------------------------------- sax.refreshResults = function (delay) { var $results = $('.sax-panel-results'); if (!sax.awaitingRefreshResponse) { var $items = $('.sax-panel-item-list', $results).fadeOut(200).empty(); var $msgs = $('.sax-panel-messages', $results).hide().empty().append($('
')).fadeIn(200); } sax.ajaxRefreshResults = sax.ajaxRefreshResults || { url: sax.url.base + 'Journalist/Ajax/GetArticleList', formId: 'frmArticleFilter', callbackFn: sax.doRefreshResults }; sax.doAjaxRequest(sax.ajaxRefreshResults, delay || 50); sax.awaitingRefreshResponse = true; } sax.doRefreshResults = function (response) { //sax.debug('doRefreshResults', response); delete sax.awaitingRefreshResponse; sax.refreshControlValues(response.controlValues); var $results = $('.sax-panel-results'); var $msgs = $('.sax-panel-messages', $results).hide().empty(); var $items = $('.sax-panel-item-list', $results).hide().empty(); var $tmpl = $('.sax-panel-item-template .sax-panel-item', $results); if (!response.success) return; var items = response.articles; if (!items.length) return $msgs.append($('')).fadeIn(500); for (let itemIdx = 0; itemIdx < items.length; itemIdx++) { let item = items[itemIdx]; let $item = $tmpl.clone(); sax.populateItem($item, item); $items.append($item); } $items.fadeIn(50); } sax.populateItem = function ($item, item) { if (!item) return; $item.prop('id', sax.itemIdPrefix + item.id); $('.ArticleHeadline', $item).text(item.headline); $('.ArticleSummary', $item).text(item.summary); $('.ArticleRegionCaption', $item).text(item.regionCaptionPrimary); $('.ArticleSportCaption', $item).text(item.sportCaptionPrimary); $('.ArticleCreatedOn', $item).text(item.createdOnFmt); $('.ArticlePublishedOn', $item).text(item.publishedOnFmt); $('.ArticlePublished', $item).toggle(!!item.publishedOnFmt); $('.ArticleStatusDesc', $item).text(item.statusDesc); $('.sax-caption .sax-action, .sax-actions .sax-action.sax-item-update', $item).off('click').on('click', function () { sax.updateItem(item.id) }) $item.off('dblclick').on('dblclick', function () { sax.updateItem(item.id) }) $('.sax-panel-results .sax-panel-messages').hide().empty(); } //-------------------------------------------------------------- sax.segmentId = function (idx) { return sax.segIdPrefix + idx; } sax.populateArticleContent = function (content) { //sax.debug('populateArticleContent', content); ac.$segList.empty(); ac.segIdx = 0; let segments = content.segments || []; if (!segments.length) segments.push({ body: {}}); for (let segIdx = 0; segIdx < segments.length; segIdx++) sax.addContentSegment(segments[segIdx]); } sax.addContentSegment = function (seg, idxAfter, idxBefore) { let idx = ++ac.segIdx; let segId = sax.segmentId(idx); if ($('.sax-panel-item.ArticleSegment', ac.$segList).length >= 6) { return; } let $seg = $('.sax-panel-item-template .sax-panel-item.ArticleSegment', ac.$content).clone().prop('id', segId) if (seg.body) { $('.sax-article-segment-body', $seg).html(seg.body.html); $('input.ArticleContentSegmentBody', $seg).val(seg.body.html); } else if (seg.image) { $seg.addClass("ArticleImage"); $('input.ArticleContentSegmentItemImageId', $seg).val(seg.image.itemImageId); $('input.ArticleContentSegmentImageIdx', $seg).val(seg.image.imageIdx); $('.sax-article-segment-image', $seg).show().find('img').prop('src', seg.image.imageLink); $('.sax-action.sax-add-image', $seg).hide(); } $('.sax-action.sax-add', $seg).on('click', function () { sax.addContentSegment({ body: {} }, idx); }); $('.sax-action.sax-add-image', $seg).on('click', function () { sax.selectArticleImage(idx); }); $('.sax-action.sax-up', $seg).on('click', function () { sax.moveUpContentSegment(idx); }); $('.sax-action.sax-down', $seg).on('click', function () { sax.moveDownContentSegment(idx); }); $('.sax-action.sax-delete', $seg).on('click', function () { sax.deleteContentSegment(idx); }); let $segAfter = $('#' + sax.segmentId(idxAfter)); let $segBefore = $('#' + sax.segmentId(idxBefore)); if ($segAfter.length) $seg.insertAfter($segAfter); else if ($segBefore.length) $seg.insertBefore($segBefore); else ac.$segList.append($seg); if (seg.body) { tinymce.init({ branding: false, elementpath: true, menubar: false, inline: true, //skin: 'small', //icons: 'small', selector: '#' + segId + ' .sax-article-segment-body', setup: function (ed) { ed.on('focus', function (e) { ed.notificationManager.close(); }); ed.on('blur', function (e) { let ed = tinymce.get(e.target.id); let $ed = $('#' + ed.id); let $seg = $ed.closest('.sax-panel-item.ArticleSegment'); $(".sax-article-segment-body p", $seg).each(function (i, el) { if ($.trim($(el).text()) == "") { $(el).remove(); } }); let $inp = $seg.find('input.ArticleContentSegmentBody').val(ed.getContent()); //sax.debug('blur Id: ' + e.target.id + '. Val: ' + $inp.val()); }); }, plugins: [ //'paste image' //'link', //'lists', //'powerpaste', //'autolink', //'tinymcespellchecker' ], //paste_block_drop: true, //powerpaste_block_drop: true, /* //powerpaste_word_import: 'clean', //powerpaste_html_import: 'clean', */ toolbar: [ 'undo redo | bold italic underline | fontselect fontsizeselect', 'forecolor backcolor | alignleft aligncenter alignright alignfull | numlist bullist outdent indent' ], valid_elements: 'p[style],strong,em,span[style],a[href],ul,ol,li', valid_styles: { '*': 'font-size,font-family,color,background-color,text-decoration,text-align' }, }); $seg.dragCount = 0; $seg .on("dragenter", function (evt) { $seg.dragCount++; sax.haltEvent(evt); }) .on("dragover", function (evt) { sax.haltEvent(evt); if (!$seg.hasClass(sax.classFileDrag)) $seg.addClass(sax.classFileDrag); }) .on("dragleave", function (evt) { $seg.dragCount--; sax.haltEvent(evt); if (!$seg.dragCount) $seg.removeClass(sax.classFileDrag); }) .on("drop", function (evt) { sax.haltEvent(evt); $seg.removeClass(sax.classFileDrag); sax.onDropArticleImage(evt, idx, $seg); }); } } sax.moveUpContentSegment = function (idx) { //sax.debug('moveUpContentSegment(' + idx + ')'); let segId = sax.segmentId(idx); let $segPrev; $('.sax-panel-item.ArticleSegment', ac.$segList).detach().each( function (i, el) { let $seg = $(el); if ($segPrev && $seg.prop('id') == segId) { $seg.insertBefore($segPrev); return; } ac.$segList.append($seg); $segPrev = $seg; }); } sax.moveDownContentSegment = function (idx) { //sax.debug('moveDownContentSegment(' + idx + ')'); let segId = sax.segmentId(idx); let $segMove; let $segs = $('.sax-panel-item.ArticleSegment', ac.$segList).detach(); $segs.each( function (i, el) { let $seg = $(el); if ($seg.prop('id') == segId && i < $segs.length - 1) { $segMove = $seg; return; } ac.$segList.append($seg); if ($segMove) $segMove.insertAfter($seg); $segMove = null; }); } sax.deleteContentSegment = function (idx) { //sax.debug('deleteContentSegment(' + idx + ')'); if ($('.sax-panel-item.ArticleSegment', ac.$segList).length < 2) return; sax.confirmItemRemove(function () { $('#' + sax.segmentId(idx)).remove(); }); } sax.selectArticleImage = function (idx) { let $dlg = sax.$dlg.selectArticleImage.dialog('option', { title: sax.dlg.title.imageUpload }); $('input.SegmentIdx', $dlg).val(idx); $('#ifArticleImage', $dlg).val(''); sax.openDialog($dlg, 560, 240); } sax.uploadArticleImage = function () { let $dlg = sax.$dlg.selectArticleImage; let $fileCtrl = $('#ifArticleImage', $dlg); if (!$fileCtrl.length || !$fileCtrl[0].files.length) return sax.doAlert(sax.dlg.title.imageUpload, sax.msg.uploadFileSelect); let file = $fileCtrl[0].files[0]; sax.onDropArticleImageFile(file, $('input.SegmentIdx', $dlg).val(), $dlg); } sax.onDropArticleImage = function (evt, idx, $seg) { //sax.debug('onDropArticleImage'); let files = evt.originalEvent.dataTransfer.files; if (files.length < 1) return; if (files.length > 1) return sax.doAlert(sax.dlg.title.imageUpload, sax.msg.uploadImageSingle); sax.onDropArticleImageFile(files[0], idx, $('#frmArticle')); } sax.onDropArticleImageFile = function (file, idx, context) { //sax.debug('onDropArticleImageFile', file, context); ac.segIdxAddImage = idx; if (file.size > sax.maxProfileImageSize) return sax.doAlert(sax.dlg.title.imageUpload, sax.msg.uploadFileSizeMax.format(sax.formatFileSize(sax.maxProfileImageSize))); if (file.type != 'image/jpg' && file.type != 'image/jpeg' && file.type != 'image/png') return sax.doAlert(sax.dlg.title.imageUpload, sax.msg.uploadFileTypeInvalid.format(sax.getFileType(file))); $(".UploadMessage", context).text(sax.msg.uploadingFile.format(file.name)); $('img.ArticleImageUploadProgress', context).fadeIn(200); sax.clearControlError(sax.$pnl.contactImageDrag); sax.data.contactImageUploadContext = context; sax.ajax.uploadArticleImage = sax.ajax.uploadArticleImage || { url: sax.url.base + 'Journalist/Ajax/UploadArticleImage', callbackFn: sax.handleArticleImageUploadResponse, noWaitIcon: true }; sax.ajax.uploadArticleImage.formData = new FormData(); sax.ajax.uploadArticleImage.formData.append("__RequestVerificationToken", $('#frmNavigate input[name="__RequestVerificationToken"]').val()); sax.ajax.uploadArticleImage.formData.append("ArticleId", $('#ifArticleId', sax.$frm.article).val()); sax.ajax.uploadArticleImage.formData.append("ArticleImage", file); sax.doAjaxRequest(sax.ajax.uploadArticleImage, 50); } sax.handleArticleImageUploadResponse = function (response) { let context = sax.data.contactImageUploadContext; //sax.debug('handleArticleImageUploadResponse', response, context); if (!response) return; sax.refreshControlValues(response.controlValues, context); $(".UploadMessage", context).empty(); $('img.ArticleImageUploadProgress', context).hide(); if (response.success && response.segment) { sax.addContentSegment(response.segment, 0, ac.segIdxAddImage); delete ac.segIdxAddImage; sax.$dlg.selectArticleImage.dialog('close'); } } //-------------------------------------------------------------- sax.createItem = function () { sax.clearItem(); sax.populateArticleContent({}); sax.openArticleDialog(sax.dlg.title.createArticle); } sax.openArticleDialog = function (title) { sax.clearControlErrors(); sax.switchArticleHeader(); sax.$dlg.article.dialog('option', 'title', title); sax.openDialog(sax.$dlg.article, 600, 800); } sax.clearItem = function () { $('#ifArticleId,#ifArticleExists,#ifArticleRegionId,#ifArticleSportId,input[type="text"],textarea,select', sax.$frm.article).val(''); sax.clearControlErrors(); } sax.doCreateItem = function () { sax.storeItem(); } //-------------------------------------------------------------- sax.updateItem = function (id) { $('.ArticleId', sax.$frm.articleId).val(id); sax.ajaxUpdateItem = sax.ajaxUpdateItem || { url: sax.url.base + 'Journalist/Ajax/GetArticle', formId: 'frmArticleId', callbackFn: sax.onUpdateItem }; sax.doAjaxRequest(sax.ajaxUpdateItem, 50); } sax.onUpdateItem = function (response) { //sax.debug('onUpdateItem', response); sax.clearItem(); if (!response.success) return; let $frm = sax.$frm.article; let item = response.article; $('#ifArticleId', $frm).val(item.id); $('#ifArticleExists', $frm).val(1); $('#ifArticleHeadline', $frm).val(item.headline); $('#ifArticleSummary', $frm).val(item.summary); $('#ifArticleRegionId', $frm).val(item.regionIdPrimary); $('#ifArticleRegionCaption', $frm).val(item.regionCaptionPrimary); $('#ifArticleSportId', $frm).val(item.sportIdPrimary); $('#ifArticleSportCaption', $frm).val(item.sportCaptionPrimary); $('#cbArticleStatusCode', $frm).val(item.statusCode); sax.populateArticleContent(item.content); sax.openArticleDialog(sax.dlg.title.updateArticle); } sax.doUpdateItem = function () { sax.storeItem(); } //-------------------------------------------------------------- sax.switchArticleHeader = function () { $('.sax-article').removeClass('ArticleContent').addClass('ArticleHeader'); } sax.switchArticleContent = function () { $('.sax-article').removeClass('ArticleHeader').addClass('ArticleContent'); } //-------------------------------------------------------------- sax.selectRegion = function () { sax.data.selectRegion.fn.selectRegion({ caption: sax.dlg.title.selectRegion, regionId: $('#ifArticleRegionId').val(), fnCallback: sax.onSelectRegion }) } sax.onSelectRegion = function (region) { sax.clearControlError($('#ifArticleRegionId').val(region.id)); $('#ifArticleRegionCaption').val(region ? region.name : ''); } //-------------------------------------------------------------- sax.selectSport = function () { sax.data.selectSport.fn.selectSport({ caption: sax.dlg.title.selectSport, sportId: $('#ifArticleSportId').val(), fnCallback: sax.onSelectSport }) } sax.onSelectSport = function (sport) { sax.clearControlError($('#ifArticleSportId').val(sport.id)); $('#ifArticleSportCaption').val(sport ? sport.name : ''); } //-------------------------------------------------------------- sax.storeItem = function () { sax.ajaxStoreItem = sax.ajaxStoreItem || { url: sax.url.base + 'Journalist/Ajax/StoreArticle', formId: 'frmArticle', callbackFn: sax.onStoreItem }; sax.doAjaxRequest(sax.ajaxStoreItem, 50); } sax.onStoreItem = function (response) { //sax.debug('onStoreItem', response); sax.refreshControlValues(response.controlValues); if (!response.success) return; sax.$dlg.article.dialog('close'); var item = response.article; var $item = $('#' + sax.itemIdPrefix + item.id); if (!$item.length) { var $results = $('.sax-panel-results'); $item = $('.sax-panel-item-template .sax-panel-item', $results).clone(); $('.sax-panel-item-list', $results).prepend($item).show(); } sax.populateItem($item, item) } //-------------------------------------------------------------- $(function () { sax.$frm.filter = $('#frmArticleFilter'); $('.sax-panel-filter .sax-action.sax-item-create').on('click', function () { sax.createItem(); }); $('.sax-panel-filter .sax-action.sax-results-refresh').on('click', function () { sax.refreshResults(); }); $('.ArticleFilter', sax.$frm.filter).on('input', function () { sax.refreshResults(250); }).on('keypress', function (event) { if (event.keyCode == 13) setTimeout(sax.refreshResults, 50); }); sax.$frm.articleId = $('#frmArticleId'); sax.$frm.article = $('#frmArticle'); $('.sax-input', sax.$frm.article).on('input', function () { sax.clearControlError(this); }); var opt = sax.dlgOpts(); opt.buttons[sax.dlg.btn.cancel] = { text: sax.dlg.btn.cancel, class: "floatr", click: function () { $(this).dialog('close'); } }; opt.buttons[sax.dlg.btn.ok] = { text: sax.dlg.btn.ok, class: "floatr", click: function () { sax.doCreateItem(); } }; opt.buttons['Header'] = { text: 'Header', class: "floatl", click: function () { sax.switchArticleHeader(); } }; opt.buttons['Content'] = { text: 'Content', class: "floatl", click: function () { sax.switchArticleContent(); } }; sax.$dlg.article = $('#dlgArticle').dialog(opt); ac.$content = $('.sax-article-panel.sax-article-content'); ac.$segList = $('.sax-article-segment-list', ac.$content); var opt = sax.dlgOpts(); opt.buttons[sax.dlg.btn.ok] = function () { sax.uploadArticleImage(); }; opt.buttons[sax.dlg.btn.cancel] = function () { $(this).dialog('close'); }; sax.$dlg.selectArticleImage = $('#dlgSelectArticleImage').dialog(opt); setTimeout(sax.refreshResults, 250); }); }(window, window.document)); /* The End */