/*
The following errors were found when attempting to minify this file:
- Line 682: Parse error. Unsupported syntax: CONST
- Line 830: Parse error. IE8 (and below) will parse trailing commas in array and object literals incorrectly. If you are targeting newer versions of JS, set the appropriate language_in option.
*/
///
///
///
///
try {
Sys.Application.add_load(loadOrAjaxUpdate);
}
catch (ex) { }
function changePage(num, id) {
var frm = document.aspnetForm;
frm.lngNewPage.value = num;
frm.action = "/gallery.aspx?AID=" + id;
frm.submit();
}
function viewSlideShow(albumID, title) {
document.aspnetForm.action = "/gallery.aspx?AID=" + albumID + '&showSlideShow=1' + '&AN=' + title;
document.aspnetForm.submit();
}
function searchTextHookFE(ev) {
ev = (window.event ? window.event : ev);
if (ev.keyCode == 10 || ev.keyCode == 13)
photoGallerySearchFE();
}
function photoGallerySearchFE() {
var frm = document.aspnetForm;
frm.action = "/gallery.aspx?searchText=" + encodeURIComponent(frm.moduleSearch.value) + "&AID=" + frm.categoryFilter.value;
frm.submit();
}
function changeSearchPage(num, searchText, id) {
var frm = document.aspnetForm;
frm.lngNewPage.value = num;
frm.action = "/gallery.aspx?searchText= " + searchText + "&AID=" + id;
frm.submit();
}
function changeAlbumPage(num) {
var frm = document.aspnetForm;
frm.lngNewPage.value = num;
frm.action = "/gallery.aspx";
frm.submit();
}
function arrayContains(a, obj){
for(var i = 0; i < a.length; i++) {
if(a[i] == obj){
return true;
}
}
return false;
}
function vote(photoID) {
var ids = getCookieValue('PGVote');
if (ids != null) {
var photoIDs = ids.split(',');
if (arrayContains(photoIDs, photoID)) {
alert("You’ve already voted.");
return false;
}
else
document.cookie = "PGVote=" + ids + "," + photoID + "; expires=12/31/2999 23:59:59";
document.getElementById("thumbs" + photoID).src = '/Common/images/PhotoGallery2/ThumbsUpChecked.png';
}
else {
document.cookie = "PGVote=" + photoID + "; expires=12/31/2999 23:59:59";
}
var frm = document.aspnetForm;
frm.PGActionFE.value = 'vote';
frm.lngPhotoID.value = photoID;
redrawContent();
}
function PGPhotoModifyDelete(albumID, action, updatePanelID, photoID) {
var ysnArchShowForce = -1, doSubmit = true;
var frmPG = document.aspnetForm;
switch (action) {
case "Link":
{
doSubmit = false;
showCopyLinkWindowUsingRelatedLink('/gallery.aspx?PID=' + photoID);
break;
}
case "Publish":
case "Unpublish":
case "Reject":
case "Submit":
frmPG.strActionFE.value = "PGItem" + action;
break;
case "Delete":
{
if (confirm("Are you sure you want to delete this item?")) {
frmPG.strActionFE.value = "PGItemDelete";
}
else
doSubmit = false;
break;
}
case 'archivePublic':
ysnArchShowForce = 1;
case 'archiveHidden':
if (ysnArchShowForce < 0) ysnArchShowForce = 0;
if (!(confirm('Are you sure you want to archive this item?'))) {
ysnArchShowForce = -1;
return;
}
frmPG.strActionFE.value = 'PGItemArchive';
frmPG.ysnArchShowForceFE.value = ysnArchShowForce;
break;
default:
{
doSubmit = false;
break;
}
}
if (doSubmit) {
frmPG.ysnSaveFE.value = 1;
frmPG.lngPGPhotoID.value = photoID;
raiseAsyncPostbackPG(updatePanelID, 0);
}
}
function PGChangeOrder(albumID, direction, updatePanelID, photoID) {
var frmPGL = document.aspnetForm;
frmPGL.strActionFE.value = "PGItemChangeOrder";
frmPGL.ysnSaveFE.value = 1;
frmPGL.lngPGPhotoID.value = photoID;
frmPGL.PGDirection.value = direction;
raiseAsyncPostbackPG(updatePanelID, 0);
}
function openEditWindowPG(albumID, photoID, isCopy, order, updatePanelID, isSubmit) {
behavior = $find('editItemBehavior');
if (behavior) {
var ifr = document.getElementById('liveEditDialog');
ifr.style.height = '530px';
var url = '/common/modules/PhotoGallery2/PhotoGallery2LiveEdit.aspx?albumID=' + albumID + '&photoID=' + photoID + '&order=' + order + '&updatePanelID=' + updatePanelID;
if (isSubmit)
url = url + '&submit=1';
if (isCopy)
ifr.src = url + '&strPage=itemCopy';
else
ifr.src = url + '&strPage=itemForm';
ifr.style.display = 'block';
behavior.show();
}
}
// Live edit related:
if (!window.PGKAMMenu) {
PGKAMMenu = function() { };
window.PGKAMMenu = PGKAMMenu;
}
function raiseAsyncPostbackPG(updatePanelID, closePopUp, type) {
if (closePopUp)
closeModalDialog('editItemBehavior');
if (type != undefined)
blockMenuSpawn = true;
PGItemHideMenu();
PGCategoryHideMenu();
if(type)
__doPostBack(updatePanelID, "");
else
__doPostBack(updatePanelID, "photo");
if(closePopUp)
location.reload(true);
}
function PGItemMouseOver(sender, event, itemID) {
if (blockMenuSpawn)
return;
var controlID;
PGKAMMenu.photoID = itemID;
controlID = 'LiveEditControl' + itemID;
var liveEditControl = $get(controlID);
var showLiveEditControls = getCookieValue('showLiveEditControls') == "true";
// Make sure previous KAMs are hidden if they need to be.
if (!showLiveEditControls) {
if (previousKAMControl)
previousKAMControl.style.display = 'none';
previousKAMControl = liveEditControl;
}
// Change z-index, for proper display.
var parentContainer = resolveLiveEditContainer(liveEditControl);
parentContainer.style.zIndex = 2;
// Move action category menu to container for category.
liveEditControl.appendChild(PGKAMMenu.elemItemMenu);
// Show tool-tip (if they are not disabled).
PGShowTooltip(controlID);
// Show KAM.
liveEditControl.style.display = 'block';
}
function PGShowTooltip(controlID) {
var liveEditControl = $get(controlID);
liveEditControl.appendChild(PGKAMMenu.elemTooltip);
if (PGKAMMenu.elemTooltip) {
if (showToolTip)
PGKAMMenu.elemTooltip.style.display = 'block';
else
PGKAMMenu.elemTooltip.style.display = 'none';
}
}
function PGItemMouseOut(sender, event) {
// Ignore when mouse leaves child controls within the live edit control.
event = (window.event ? window.event : event);
var toElement = (event.toElement ? event.toElement : event.relatedTarget);
if (!elemInsideOrEq(sender, toElement)) {
PGItemHideMenu();
}
}
function PGCategoryMouseOver(sender, event, categoryID, fromAlbumScreen) {
if (blockMenuSpawn)
return;
PGKAMMenu.albumID = categoryID;
var controlID;
if (!fromAlbumScreen)
controlID = 'LiveEditControl_' + categoryID;
else
controlID = 'LiveEditControlAlbum_' + categoryID;
var liveEditControl = $get(controlID);
var showLiveEditControls = getCookieValue('showLiveEditControls') == "true";
// Make sure previous KAMs are hidden if they need to be.
if (!showLiveEditControls) {
if (previousKAMControl)
previousKAMControl.style.display = 'none';
previousKAMControl = liveEditControl;
}
// Move action category menu to container for category.
liveEditControl.appendChild(PGKAMMenu.elemCatMenu);
// Change z-index, for proper display.
var parentContainer = resolveLiveEditContainer(liveEditControl);
parentContainer.style.zIndex = 2;
// Show tool-tip (if they are not disabled).
PGShowTooltip(controlID);
// Show KAM.
liveEditControl.style.display = 'block';
}
// Summons action menu for a category.
function PGActionsCategory(albumID, catElemID, updatePanelID, status, rights, fromAlbumScreen) {
PGKAMMenu.updatePanelID = updatePanelID;
PGKAMMenu.photoID = 0;
PGKAMMenu.albumID = albumID;
PGKAMMenu.counter = 0;
PGKAMMenu.status = status;
PGKAMMenu.rights = rights;
if (!fromAlbumScreen)
liveEditCommonCategory(
$get(catElemID),
PGKAMMenu.elemTooltip,
PGKAMMenu.elemCatMenu,
$get('LiveEditControl_' + albumID), 'PGCategoryLiveEditMoreActions');
else
liveEditCommonCategory(
$get(catElemID),
PGKAMMenu.elemTooltip,
PGKAMMenu.elemCatMenu,
$get('LiveEditControlAlbum_' + albumID), 'PGCategoryLiveEditMoreActions');
}
function PGCategoryMouseOut(sender, event) {
// Ignore when mouse leaves child controls within the live edit control.
event = (window.event ? window.event : event);
var toElement = (event.toElement ? event.toElement : event.relatedTarget);
if (!elemInsideOrEq(sender, toElement))
PGCategoryHideMenu();
}
function PGCategoryHideMenu() {
var categoryID = PGKAMMenu.albumID;
var controlID = 'LiveEditControl_' + categoryID;
var controlIDAlbum = 'LiveEditControlAlbum_' + categoryID;
var liveEditControl = $get(controlID);
var liveEditControlAlbum = $get(controlIDAlbum);
var showLiveEditControls = getCookieValue('showLiveEditControls') == "true";
if (!liveEditControl && !liveEditControlAlbum)
return;
// Change z-index, for proper display.
var parentContainer;
if (liveEditControl)
parentContainer = resolveLiveEditContainer(liveEditControl);
else
parentContainer = resolveLiveEditContainer(liveEditControlAlbum);
parentContainer.style.zIndex = 0;
// Hide action menu for category.
PGKAMMenu.elemCatMenu.style.display = 'none';
if (PGKAMMenu.elemCatMenu.parentNode) {
PGKAMMenu.elemCatMenu.parentNode.removeChild(PGKAMMenu.elemCatMenu);
PGKAMMenu.elemLiveEditBullpen.appendChild(PGKAMMenu.elemCatMenu);
}
// Hide any possibly visible tool-tip.
PGHideTooltip();
// Hide KAM unless KAMs are set to always show.
if (!showLiveEditControls) {
if (liveEditControlAlbum)
liveEditControlAlbum.style.display = 'none';
if (liveEditControl)
liveEditControl.style.display = 'none';
}
}
function PGItemHideMenu() {
var itemID = PGKAMMenu.photoID;
var controlID = 'LiveEditControl' + itemID;
var liveEditControl = $get(controlID);
var showLiveEditControls = getCookieValue('showLiveEditControls') == "true";
if (!liveEditControl)
return;
// Change z-index, for proper display.
var parentContainer = resolveLiveEditContainer(liveEditControl);
parentContainer.style.zIndex = 0;
// Hide action menu for item.
PGKAMMenu.elemItemMenu.style.display = 'none';
if (PGKAMMenu.elemItemMenu.parentNode) {
PGKAMMenu.elemItemMenu.parentNode.removeChild(PGKAMMenu.elemItemMenu);
PGKAMMenu.elemLiveEditBullpen.appendChild(PGKAMMenu.elemItemMenu);
}
// Hide any possibly visible tool-tip.
PGHideTooltip();
// Hide KAM unless KAMs are set to always show.
if (!showLiveEditControls) {
liveEditControl.style.display = 'none';
}
}
// Hides tool-tip text for a category.
function PGHideTooltip() {
if (PGKAMMenu.elemTooltip.parentNode)
PGKAMMenu.elemTooltip.parentNode.removeChild(PGKAMMenu.elemTooltip);
PGKAMMenu.elemTooltip.style.display = 'none';
}
function PGActionsInit() {
// Set up state variables (they change per item).
PGKAMMenu.updatePanelID = '';
PGKAMMenu.photoID = 0;
PGKAMMenu.albumID = 0;
PGKAMMenu.counter = 0;
PGKAMMenu.order = 0;
PGKAMMenu.status = 0;
PGKAMMenu.rights = 0;
// Get invisible bullpen (where hidden stuff is stored).
PGKAMMenu.elemLiveEditBullpen = $get('PGLiveEditBullpen');
// Set up KAM tooltip.
PGKAMMenu.elemTooltip = $get('PGLiveEditToolTip');
if (!showToolTip)
PGKAMMenu.elemTooltip.style.display = 'none';
// Set up category action menu.
PGKAMMenu.elemCatMenu = $get('PGCategoryLiveEditMoreActions');
PGKAMMenu.elemCatActionNew = $get('PGCategoryNewItem');
hookAnchorClick(PGKAMMenu.elemCatActionNew,
function(sender, eventArgs) {
PGCategoryHideMenu();
var updatePanel = (PGKAMMenu.updatePanelID + '').trim();
if (updatePanel == 'search' || updatePanel == '')
openEditWindowPG(0, 0, 1, 0, 'search');
else
openEditWindowPG(PGKAMMenu.albumID, 0, 0, 0, PGKAMMenu.updatePanelID);
});
// Set up item action menu.
PGKAMMenu.elemItemMenu = $get('PGItemLiveEditMoreActions');
PGKAMMenu.elemItemMoveHeading = $get('PGItemMoveHeading');
PGKAMMenu.elemItemActionMoveUpIcon = $get('PGItemMoveUpIcon');
PGKAMMenu.elemItemActionMoveDownIcon = $get('PGItemMoveDownIcon');
PGKAMMenu.elemItemActionModify = $get('PGItemModify');
PGKAMMenu.elemItemActionCommands = $get('PGItemCommands');
hookAnchorClick(PGKAMMenu.elemItemActionModify,
function(sender, eventArgs) {
if (!PGKAMMenu.elemItemActionModify.inactive) {
PGItemHideMenu();
openEditWindowPG(PGKAMMenu.albumID, PGKAMMenu.photoID, 0, -1, PGKAMMenu.updatePanelID);
}
});
PGKAMMenu.elemItemActionMoveUp = $get('PGItemMoveUp');
hookAnchorClick(PGKAMMenu.elemItemActionMoveUp,
function(sender, eventArgs) {
if (!PGKAMMenu.elemItemActionMoveUp.inactive) {
PGItemHideMenu();
PGChangeOrder(PGKAMMenu.albumID, 'up', PGKAMMenu.updatePanelID, PGKAMMenu.photoID);
}
});
PGKAMMenu.elemItemActionMoveDown = $get('PGItemMoveDown');
hookAnchorClick(PGKAMMenu.elemItemActionMoveDown,
function(sender, eventArgs) {
if (!PGKAMMenu.elemItemActionMoveDown.inactive) {
PGItemHideMenu();
PGChangeOrder(PGKAMMenu.albumID, 'down', PGKAMMenu.updatePanelID, PGKAMMenu.photoID);
}
});
PGKAMMenu.elemItemActionCopyLink = $get('PGItemCopyLink');
hookAnchorClick(PGKAMMenu.elemItemActionCopyLink,
function(sender, eventArgs) {
PGPhotoModifyDelete(PGKAMMenu.albumID, 'Link', PGKAMMenu.updatePanelID, PGKAMMenu.photoID);
});
PGKAMMenu.elemItemActionUnpublish = $get('PGItemUnpublish');
hookAnchorClick(PGKAMMenu.elemItemActionUnpublish,
function(sender, eventArgs) {
PGItemHideMenu();
PGPhotoModifyDelete(PGKAMMenu.albumID, 'Unpublish', PGKAMMenu.updatePanelID, PGKAMMenu.photoID);
});
PGKAMMenu.elemItemActionPublish = $get('PGItemPublish');
hookAnchorClick(PGKAMMenu.elemItemActionPublish,
function(sender, eventArgs) {
PGItemHideMenu();
PGPhotoModifyDelete(PGKAMMenu.albumID, 'Publish', PGKAMMenu.updatePanelID, PGKAMMenu.photoID);
});
PGKAMMenu.elemItemActionSubmit = $get('PGItemSubmit');
hookAnchorClick(PGKAMMenu.elemItemActionSubmit,
function(sender, eventArgs) {
PGItemHideMenu();
PGPhotoModifyDelete(PGKAMMenu.albumID, 'Submit', PGKAMMenu.updatePanelID, PGKAMMenu.photoID);
});
PGKAMMenu.elemItemActionCopy = $get('PGItemCopy');
hookAnchorClick(PGKAMMenu.elemItemActionCopy,
function(sender, eventArgs) {
PGItemHideMenu();
if (PGKAMMenu.counter > 0)
openEditWindowPG(PGKAMMenu.albumID, PGKAMMenu.photoID, 1, -1, PGKAMMenu.updatePanelID);
else
openEditWindowPG(PGKAMMenu.albumID, PGKAMMenu.photoID, 1, -1, 'search');
});
// PGKAMMenu.elemItemActionArchive = $get('PGItemArchive');
// hookAnchorClick(PGKAMMenu.elemItemActionArchive,
// function(sender, eventArgs) {
// PGItemHideMenu();
// PGPhotoModifyDelete(PGKAMMenu.albumID, 'archiveHidden', PGKAMMenu.updatePanelID, PGKAMMenu.photoID);
// });
PGKAMMenu.elemItemActionDelete = $get('PGItemDelete');
hookAnchorClick(PGKAMMenu.elemItemActionDelete,
function(sender, eventArgs) {
PGItemHideMenu();
PGPhotoModifyDelete(PGKAMMenu.albumID, 'Delete', PGKAMMenu.updatePanelID, PGKAMMenu.photoID);
});
PGKAMMenu.elemItemActionNewAnchor = $get('PGItemNewItemAnchor');
PGKAMMenu.elemItemActionNew = $get('PGItemNewItem');
hookAnchorClick(PGKAMMenu.elemItemActionNew,
function(sender, eventArgs) {
if (!PGKAMMenu.elemItemActionNew.inactive) {
PGItemHideMenu();
openEditWindowPG(PGKAMMenu.albumID, 0, 0, PGKAMMenu.order, PGKAMMenu.updatePanelID);
}
});
PGKAMMenu.elemItemActionReject = $get('PGItemReject');
hookAnchorClick(PGKAMMenu.elemItemActionReject,
function(sender, eventArgs) {
PGItemHideMenu();
PGPhotoModifyDelete(PGKAMMenu.albumID, 'Reject', PGKAMMenu.updatePanelID, PGKAMMenu.photoID);
});
}
// Summons action menu for an item.
function PGActionItems(photoID, updatePanelID, albumID, order, counter, status, rights, lastItem) {
PGKAMMenu.updatePanelID = updatePanelID;
PGKAMMenu.albumID = albumID;
PGKAMMenu.photoID = photoID;
PGKAMMenu.counter = counter;
PGKAMMenu.order = order;
PGKAMMenu.status = status;
PGKAMMenu.rights = rights;
PGKAMMenu.lastItem = lastItem;
// Determine if modify is available.
if (rights >= PUBLISHER || rights == AUTHOR && status < MIN_PUBLISHED) {
PGKAMMenu.elemItemActionModify.className = 'big modify';
PGKAMMenu.elemItemActionModify.title = '';
PGKAMMenu.elemItemActionModify.inactive = false;
}
else {
PGKAMMenu.elemItemActionModify.className = 'big modify inactive';
PGKAMMenu.elemItemActionModify.title = 'You do not have rights to modify this item.'
PGKAMMenu.elemItemActionModify.inactive = true;
}
// Determine if move is available and how it should display.
var MOVE_ACTIVE_UP = '/App_Themes/CP/Images/IconMoveUp.png';
var MOVE_ACTIVE_DOWN = '/App_Themes/CP/Images/IconMoveDown.png';
var MOVE_INACTIVE_UP = '/App_Themes/CP/Images/IconMoveUpInactive.png';
var MOVE_INACTIVE_DOWN = '/App_Themes/CP/Images/IconMoveDownInactive.png';
var moveDisplay = (rights > AUTHOR ? 'inline' : 'none')
PGKAMMenu.elemItemMoveHeading.style.display = moveDisplay;
PGKAMMenu.elemItemActionMoveUp.style.display = moveDisplay;
PGKAMMenu.elemItemActionMoveDown.style.display = moveDisplay;
var moveText;
if (rights > AUTHOR) {
if (counter < 0) {
PGKAMMenu.elemItemActionMoveUp.className = 'moveUp inactive';
PGKAMMenu.elemItemActionMoveUp.inactive = true;
PGKAMMenu.elemItemActionMoveDown.className = 'moveDown inactive';
PGKAMMenu.elemItemActionMoveDown.inactive = true;
switch (counter) {
case -2:
moveText = 'Can only move items from module page.'
break;
default: // Search Screen
moveText = 'Can\'t move items on the search page.';
break;
}
PGKAMMenu.elemItemActionMoveUpIcon.src = MOVE_INACTIVE_UP;
PGKAMMenu.elemItemActionMoveDownIcon.src = MOVE_INACTIVE_DOWN;
PGKAMMenu.elemItemActionMoveUpIcon.title = moveText;
PGKAMMenu.elemItemActionMoveUpIcon.alt = moveText;
PGKAMMenu.elemItemActionMoveDownIcon.title = moveText;
PGKAMMenu.elemItemActionMoveDownIcon.alt = moveText;
}
else {
if (counter == 1) {
moveText = 'This item is first in the list and can\'t be moved any higher.';
PGKAMMenu.elemItemActionMoveUpIcon.src = MOVE_INACTIVE_UP;
PGKAMMenu.elemItemActionMoveUp.className = 'moveUp inactive';
PGKAMMenu.elemItemActionMoveUp.alt = 'This item is first in the list and can\'t be moved any higher.';
PGKAMMenu.elemItemActionMoveUp.inactive = true;
}
else {
moveText = 'Move Up';
PGKAMMenu.elemItemActionMoveUpIcon.src = MOVE_ACTIVE_UP;
PGKAMMenu.elemItemActionMoveUp.className = 'moveUp';
PGKAMMenu.elemItemActionMoveUp.inactive = false;
}
PGKAMMenu.elemItemActionMoveUpIcon.title = moveText;
PGKAMMenu.elemItemActionMoveUpIcon.alt = moveText;
if (lastItem) {
moveText = 'This item is last in the list and can\'t be moved any lower.';
PGKAMMenu.elemItemActionMoveDownIcon.src = MOVE_INACTIVE_DOWN;
PGKAMMenu.elemItemActionMoveDown.className = 'moveDown inactive';
PGKAMMenu.elemItemActionMoveDown.inactive = true;
}
else {
moveText = 'Move Down';
PGKAMMenu.elemItemActionMoveDownIcon.src = MOVE_ACTIVE_DOWN;
PGKAMMenu.elemItemActionMoveDown.className = 'moveDown';
PGKAMMenu.elemItemActionMoveDown.inactive = false;
}
PGKAMMenu.elemItemActionMoveDownIcon.title = moveText;
PGKAMMenu.elemItemActionMoveDownIcon.alt = moveText;
}
}
// Determine visiblity of submit/reject/publish/unpublish.
PGKAMMenu.elemItemActionSubmit.style.display = 'none';
PGKAMMenu.elemItemActionReject.style.display = 'none';
PGKAMMenu.elemItemActionPublish.style.display = 'none';
PGKAMMenu.elemItemActionUnpublish.style.display = 'none';
if (rights > AUTHOR) {
if (status > MAX_DRAFT)
PGKAMMenu.elemItemActionUnpublish.style.display = '';
else
PGKAMMenu.elemItemActionPublish.style.display = '';
if (status == SUBMITTED)
PGKAMMenu.elemItemActionReject.style.display = '';
}
else if (status != SUBMITTED && status <= MAX_DRAFT)
PGKAMMenu.elemItemActionSubmit.style.display = '';
// Determine visiblity of delete/archive.
//PGKAMMenu.elemItemActionArchive.style.display = 'none';
PGKAMMenu.elemItemActionDelete.style.display = 'none';
if (rights > AUTHOR) {
// Only publisher or higher can delete.
//if (status > MAX_DRAFT)
//PGKAMMenu.elemItemActionArchive.style.display = '';
//else
PGKAMMenu.elemItemActionDelete.style.display = '';
}
else if (status <= MAX_DRAFT)
PGKAMMenu.elemItemActionDelete.style.display = '';
// Determine visiblity/behavior of new.
if (counter > 0) {
if (rights >= AUTHOR) {
PGKAMMenu.elemItemActionNew.style.display = '';
PGKAMMenu.elemItemActionNewAnchor.title = '';
PGKAMMenu.elemItemActionNewAnchor.className = 'addItem';
PGKAMMenu.elemItemActionNew.inactive = false;
}
else
PGKAMMenu.elemItemActionNew.style.display = 'none';
}
else if (counter > -2) {
PGKAMMenu.elemItemActionNew.style.display = '';
PGKAMMenu.elemItemActionNewAnchor.title = 'You cannot add item on search screen.';
PGKAMMenu.elemItemActionNewAnchor.className = 'addItem inactive';
PGKAMMenu.elemItemActionNew.inactive = true;
}
else
PGKAMMenu.elemItemActionNew.style.display = 'none';
// Apply even/odd classes.
var listItems = PGKAMMenu.elemItemActionCommands.firstChild;
var lc = 0;
while (listItems != null) {
if (listItems.nodeType == 1 && listItems.style.display != 'none')
listItems.className = (((++lc) % 2) == 0 ? 'even' : '');
listItems = listItems.nextSibling;
}
// Show menu.
liveEditCommonItem(
PGKAMMenu.elemTooltip,
PGKAMMenu.elemItemMenu,
$get('LiveEditControl' + photoID), 'PGItemLiveEditMoreActions', false);
};
function ImageRepositoryClass() {
this.loadSource = { Self: 0, Slideshow: 1, RelatedDocuments: 2, Design: 3, Content: 4, Banner: 5 };
this.$imageUploadModal = null;
this.imageID = 0;
this.options = { modalTitle: 'Images', targetID: 0, $target: null, callback: null, loadSource: this.loadSource.Content };
}
const moduleIds = Object.freeze({
PhotoGallery: 53,
NewsFlash: 1
});
function getIframeHeightInPixels(moduleId) {
if ((moduleId === moduleIds.NewsFlash && window.self !== window.top)
|| moduleId === moduleIds.PhotoGallery) {
return '475px';
} else {
return '600px';
}
}
ImageRepositoryClass.prototype.openImageUploadModal = function (options) {
var imageRepositoryInstance = window.imageRepository;
imageRepositoryInstance.options = options;
callbackfnDocumentCenter = options.callback;
var className = 'slideShowImages';
if (window.FeatureToggles.isActive("CMS.DocumentCenter.ReplaceTelerikTreeAndGridWithReact")) {
className += ' reactModal';
}
imageRepositoryInstance.$imageUploadModal = openCpModal({
title: options.modalTitle,
className: className,
isFrontEnd: false,
useIframe: true,
draggable: true,
iframeHeight: getIframeHeightInPixels(options.moduleID),
elementID: 'mvcModal2',
url: '/Admin/DocumentCenter/FolderForModal/Index?renderMode=1&loadSource=' + options.loadSource + '&requestingModuleID=' + options.moduleID
});
imageRepositoryInstance.$imageUploadModal.removeClass('newCP adminWrap cpPopOver admin');
};
ImageRepositoryClass.prototype.closeImageWidgetUploadModal = function (documentID) {
var imageRepositoryInstance = window.imageRepository;
imageRepositoryInstance.$imageUploadModal.hide();
if (documentID > 0) {
$.ajax({
url: '/ContentWidgets/ImageSave/Save?widgetID=' + imageRepositoryInstance.options.targetID + '&contentCollectionID=' + imageRepositoryInstance.options.contentCollection.ContentCollectionID,
type: 'POST',
data: { imageID: documentID },
success: function (response) {
if (response.ErrorMessage) {
alert(response.ErrorMessage);
} else {
if (imageRepositoryInstance.options.contentCollection.IsWorkingCopy || isWidgetUnderMegaMenu($('#divImage' + imageRepositoryInstance.options.targetID))) {
$('#divImage' + imageRepositoryInstance.options.targetID).html(response);
contentUpdated();
} else {
var contentContainerID = $('#divImage' + imageRepositoryInstance.options.targetID).parents('.pageContent').filter(':first').data('containerid');
ContentCollectionInstance.CurrentContentContainerIDs.push(contentContainerID);
imageRepositoryInstance.options.contentCollection.reloadContent();
}
if (!window.isRemoveSetHeights)
SetHeights();
}
}
});
}
};
ImageRepositoryClass.prototype.closeCustomWidgetImageUploadModal = function (documentID) {
var imageRepositoryInstance = window.imageRepository;
imageRepositoryInstance.$imageUploadModal.hide();
if (documentID > 0) {
var imagePath = '/ImageRepository/Document?documentID=' + documentID;
var $input = imageRepositoryInstance.options.$target.parent().find(".input1");
var $divInputImage = imageRepositoryInstance.options.$target.parent().find(".divInputImage");
var $deleteInputImage = imageRepositoryInstance.options.$target.parent().find(".deleteInputImage");
$input.val(imagePath + '|');
$divInputImage.html("
");
imageRepositoryInstance.options.$target.hide();
imageRepositoryInstance.options.$target = null;
$deleteInputImage.show();
}
};
;
/*
* jQuery plugin to change any button into a image repository file selector.
* ---
* Usage:
*
* $('input.imageInput').imageInput({
* onChange: function(){ ... },
* onRemove: function(){ ... },
* onInit: function() { ... },
* showPreview: false,
* moduleID: 123 // Required,
* maximumImagePreviewWidth: 200 // in px
* });
*
* Notes:
* URL is pulled from value attribute. Use your input just
* as would use any other text based field. (JE)
*
* Alternative Usage: Attributes will override property defaults. imageInput function still needs to be called on the controls.
*
*
* Terminology:
* I use "Control Wrapper" to refer to the element containing the buttons, image preview, and image path display that are the UI of this plugin.
*/
$(function () { // I wish this weren't needed, but we are somehow pulling two jQuery initializations in some places so we have to wait and bind the plugin until all of that is done :(
$.fn.imageInput = function ($) {
// Shared Stuff
'use strict';
var config = {
localization: {
expectedNextElementToBeButtonWrapperError: 'Expected next element to be button controls (.imageSelect), and it was not. Either function was called prior to initialization or button controls were moved/malformed.',
noModuleIdProvidedError: 'No module ID provided for image repository control and it is required.',
defaultModalTitle: 'Content Images',
chooseImageButton: 'Choose Image...',
modifyButton: 'Modify',
removeButton: 'Remove'
},
selector: {
imagePathDisplay: '.imagePathDisplay',
imageDocumentId: '.imageDocumentId',
imagePreview: '.imagePreview',
chooseImageButton: '.button.chooseImage',
modifyButton: '.button.modifyImage',
removeButton: '.button.removeImage',
controlWrapper: '.imageSelect'
},
markup: {
imagePathDisplay: '',
imageDocumentId: '',
imagePreview: '
',
button: '',
controlWrapper: ''
}
};
// Stuff that relates to a particular instance of this plugin.
return function (opts) {
if (!opts.moduleID) {
throw config.localization.noModuleIdProvidedError;
}
var noop = function () {
};
var optionDefaults = {
onChange: noop,
onRemove: noop,
onInit: noop,
modalTitle: config.localization.defaultModalTitle,
showPreview: false,
maximumImagePreviewWidth: 200,
showImagePathDisplay: !opts.showPreview, // If showPreview is on then by default lets hide the path. Otherwise it should probably be on.
chooseFileText: opts.chooseFileText ? opts.chooseFileText : config.localization.chooseImageButton,
useStandardButtonStyle: false,
showRemoveButton: true,
showInput: false,
};
var $inputThisPluginIsAppliedTo = $(this);
if ($inputThisPluginIsAppliedTo.length === 0) {
return $inputThisPluginIsAppliedTo; // No elements to match.
} else if ($inputThisPluginIsAppliedTo.length > 1) { // More than one element matches - we need to recall the plugin on each element and then return.
var $setOfMatchedElements = $([]);
$inputThisPluginIsAppliedTo.each(function () {
$setOfMatchedElements.add($(this).imageInput(opts));
});
return $setOfMatchedElements;
}
var isInitialized = false;
var currentImagePath = $inputThisPluginIsAppliedTo.val();
var currentDocumentId = $inputThisPluginIsAppliedTo.data('documentid');
var options = $.extend({}, optionDefaults, opts);
var init = function () {
if ($inputThisPluginIsAppliedTo.data('caption') && !opts.chooseFileText) { // if we have an attribute setting the caption lets use it.
options.chooseFileText = $inputThisPluginIsAppliedTo.data('caption');
}
if (typeof $inputThisPluginIsAppliedTo.data('showpreview') === 'boolean' && !opts.showPreview) {
options.showPreview = $inputThisPluginIsAppliedTo.data('showpreview');
}
if (typeof $inputThisPluginIsAppliedTo.data('showimagepath') === 'boolean' && !opts.showImagePathDisplay) {
options.showImagePathDisplay = $inputThisPluginIsAppliedTo.data('showimagepath');
}
if (!options.showInput) {
$inputThisPluginIsAppliedTo.hide();
}
createButtonsAndPreviewIfTheyDoNotExist();
updateUx();
setImage(currentImagePath, currentDocumentId);
if (options.maximumImagePreviewWidth) {
getControlWrapper().find(config.selector.imagePreview).css('max-width', options.maximumImagePreviewWidth + 'px');
}
isInitialized = true;
triggerOnInit();
};
var setImage = function (path, documentId) {
var $controlWrapper = getControlWrapper();
var $imagePreview = $controlWrapper.find(config.selector.imagePreview);
if (path === '') {
removeImage();
return;
}
path = path.replace(/\\/g, "/"); // Clean up pathing - CSS doesn't like backslashes
currentDocumentId = documentId;
currentImagePath = path;
$inputThisPluginIsAppliedTo.val(currentImagePath);
$controlWrapper.find(config.selector.imagePathDisplay).text(currentImagePath);
$controlWrapper.find(config.selector.imageDocumentId).val(currentDocumentId);
$imagePreview.attr('src', currentImagePath);
if (isInitialized) { // Since this is called on initialization we probably don't want to fire an initial on change event.
triggerOnChange();
}
updateUx();
};
var removeImage = function () {
var $controlWrapper = getControlWrapper();
currentImagePath = '';
currentDocumentId = null;
$inputThisPluginIsAppliedTo.val(currentImagePath);
$controlWrapper.find(config.selector.imagePathDisplay).text(currentImagePath);
$controlWrapper.find(config.selector.imageDocumentId).val('');
$controlWrapper.find(config.selector.imagePreview).attr('src', currentImagePath);
if (isInitialized) { // Since this is called on initialization we probably don't want to fire an initial on change event.
triggerOnChange();
triggerOnRemove();
}
updateUx();
};
var createButtonsAndPreviewIfTheyDoNotExist = function () {
var nextElementIsImageSelectUx = $inputThisPluginIsAppliedTo.next().is(config.selector.controlWrapper);
if (nextElementIsImageSelectUx) {
return; // nothing to do here. We already have the image controls.
}
var $controlWrapper = $inputThisPluginIsAppliedTo.after(config.markup.controlWrapper).next();
$controlWrapper
.append($(config.markup.imagePreview))
.append($(config.markup.imagePathDisplay))
.append($(config.markup.imageDocumentId))
.append($(config.markup.button).addClass('chooseImage'))
.append($(config.markup.button).addClass('modifyImage'))
.append($(config.markup.button).addClass('removeImage'));
$controlWrapper.find('.chooseImage span').text(options.chooseFileText);
$controlWrapper.find('.modifyImage span').text(config.localization.modifyButton);
$controlWrapper.find('.removeImage span').text(config.localization.removeButton);
if (options.useStandardButtonStyle) {
$controlWrapper.find(config.selector.modifyButton)
.add($controlWrapper.find(config.selector.removeButton))
.add($controlWrapper.find(config.selector.chooseImageButton))
.each(function () {
$(this).replaceWith($(''));
});
}
if (!options.showRemoveButton) {
$controlWrapper.find(config.selector.removeButton).hide();
}
bindUx(); // Don't forget to bind the newly created elements!
};
var getControlWrapper = function () {
var $elementThatShouldBeButtonWrapper = $inputThisPluginIsAppliedTo.next();
if ($elementThatShouldBeButtonWrapper.is(config.selector.controlWrapper)) {
return $elementThatShouldBeButtonWrapper;
} else {
throw config.localization.expectedNextElementToBeButtonWrapperError;
}
};
var bindUx = function () {
$inputThisPluginIsAppliedTo.bind('change', inputChange);
var $buttonWrapper = getControlWrapper();
$buttonWrapper.find(config.selector.imagePathDisplay).click(chooseImageClick);
$buttonWrapper.find(config.selector.imagePreview).click(chooseImageClick);
$buttonWrapper.find(config.selector.chooseImageButton).click(chooseImageClick);
$buttonWrapper.find(config.selector.modifyButton).click(modifyImageClick);
$buttonWrapper.find(config.selector.removeButton).click(removeImageClick);
};
var inputChange = function (e, data) {
if (data && data.source !== 'imageInput' || !data) {
setImage($inputThisPluginIsAppliedTo.val());
}
};
var chooseImageClick = function (e) {
showImageRepositoryModal();
e.preventDefault();
e.stopPropagation();
return false;
};
var modifyImageClick = function (e) {
showImageRepositoryModal();
e.preventDefault();
e.stopPropagation();
return false;
};
var removeImageClick = function (e) {
removeImage();
e.preventDefault();
e.stopPropagation();
return false;
};
var showModifyAndRemoveButtons = function () {
var $controlWrapper = getControlWrapper();
if (options.showRemoveButton === true) {
$controlWrapper.find(config.selector.modifyButton)
.add($controlWrapper.find(config.selector.removeButton)).show();
} else {
$controlWrapper.find(config.selector.modifyButton).show();
}
};
var hideModifyAndRemoveButtons = function () {
var $controlWrapper = getControlWrapper();
$controlWrapper.find(config.selector.modifyButton)
.add($controlWrapper.find(config.selector.removeButton))
.hide();
};
var showChooseImageButton = function () {
getControlWrapper()
.find(config.selector.chooseImageButton)
.show();
};
var hideChooseImageButton = function () {
getControlWrapper()
.find(config.selector.chooseImageButton)
.hide();
};
var showImagePathDisplay = function () {
getControlWrapper()
.find(config.selector.imagePathDisplay)
.show();
};
var hideImagePathDisplay = function () {
getControlWrapper()
.find(config.selector.imagePathDisplay)
.hide();
};
var showImagePreview = function () {
var $controlWrapper = getControlWrapper();
var $imagePreview = $controlWrapper.find(config.selector.imagePreview);
$imagePreview.show();
};
var hideImagePreview = function () {
getControlWrapper()
.find(config.selector.imagePreview)
.hide();
};
var updateUx = function () {
var weHaveAnImage = currentImagePath !== '';
if (weHaveAnImage) {
showModifyAndRemoveButtons();
hideChooseImageButton();
if (options.showPreview) {
showImagePreview();
} else {
hideImagePreview();
}
if (options.showImagePathDisplay) {
showImagePathDisplay();
} else {
hideImagePathDisplay();
}
} else {
hideModifyAndRemoveButtons();
hideImagePreview();
hideImagePathDisplay();
showChooseImageButton();
}
$inputThisPluginIsAppliedTo.val(currentImagePath);
$inputThisPluginIsAppliedTo.data('documentid', currentDocumentId);
};
var triggerOnInit = function () {
options.onInit();
};
var triggerOnChange = function () {
$inputThisPluginIsAppliedTo.trigger('change', [{source: 'imageInput'}]);
options.onChange(currentImagePath, currentDocumentId);
};
var triggerOnRemove = function () {
$inputThisPluginIsAppliedTo.trigger('change', [{source: 'imageInput'}]);
options.onChange();
options.onRemove();
};
var showImageRepositoryModal = function () {
var imageRepositoryOptions = {
loadSource: window.imageRepository.loadSource.Content,
callback: function (documentId) {
$.ajax({
url: '/ImageRepository/Source',
type: 'POST',
data: {imageID: documentId},
success: function (response) {
if (response.ErrorMessage) {
alert(response.ErrorMessage);
} else { // Response contains the selected path.
setImage(response, documentId);
}
}
});
window.imageRepository.$imageUploadModal.hide();
},
modalTitle: options.modalTitle,
moduleID: options.moduleID
};
window.imageRepository.openImageUploadModal(imageRepositoryOptions);
};
init();
$inputThisPluginIsAppliedTo.setImage = setImage;
$inputThisPluginIsAppliedTo.removeImage = removeImage;
return $inputThisPluginIsAppliedTo;
};
}($);
});