/** * Исполняемый код приложения "Сервис загрузки изображений". Состоит из двух частей * 1. "Стэк" - содержит код необходимый для работы стэков * 2. "Итем" - содержит код для обработки страницы изображения */ function picStandAloneAgileWrapper() { "use strict"; var DI = new DependencyInjector(), DIContextMenu = DI.get("ContextMenu"), DIPaste = DI.get("Paste"), DIHistoryApi = DI.get("HistoryApi"), DISite = DI.get("Site"), DIUser = DI.get("User"), DIAppReg = DI.get("AppRegister"), DICookies = Cookies, bBone = Backbone, svgHandler = PicSVGHandler.getInstance(), hostName = window.location.hostname, $ = jQuery, app = { id: 'ElizaAppPic', name: 'pic', state: 'default', standAlone: 0, layout: {}, systems: {} // Список всех систем из левого меню, для коллбеков из роутера }, UserHandler = DIUser, hApi = DIHistoryApi, picStatus = { stackId: 0, // айди стека ownerId: 0, // айди хозяина name: '', format: '', state: '', parent: 0, parent_id: 0, items: 0, // количество итемов url: '', title: '', editable: 0, pages: { max: 1, start: 1, end: 1 }, imageData: {}, scroll: '' }, scroller_enabled = false, scroller_obj, scroller_axis_y = 0, PAGES_PER_PAGE = 30, rightMenuActive = false, imageEditActive = false, imageCropActive = false, fromClipBoard = false, picGLBContentOnly = "false", picGLBAlbumsOnly = "false", selectedCount = 0, selectedList = [], picIds = { scrollRight: "elizaPicRightScroll" }, uriPic = "/api/pic/", uriPicImage = uriPic+"image/", uriPicStack = uriPic+"stack/", uriPicUtils = uriPic+"utils/", tmpG = templateGet, tmpR = templateRender, pic = "app/pic/", picI = pic+"image_", picE = pic+"explorer_", picT = pic+"items_", picP = pic+"popup_", cmn = "common/", elz = "eliza/", tb = elz+"toolbar_", cntx = "feature/contextmenu_", tmplElzScroll = elz+"scroll_content", tmplElzForbidden = elz+"forbidden", tmplElzFooter = elz+"footer_1", tmplCmnIcon = cmn+"elz_icon", tmplCmnLoadingCircle = cmn+"elz_loading_circle", tmplCmnUploadZone = cmn+"upload_zone", tmplCmnBookmarks = cmn+"bookmarks", tmplCmnBookmarksItem = cmn+"bookmarks_item", tmplCmnAvatar = cmn+"scl_avatar", tmplTbPanel = tb+"panel", tmplTbButton = tb+"button", tmplTbGroup = tb+"group", tmplTbTitle = tb+"title", tmplTbNum = tb+"num_of_num", tmplCntxItem = cntx+"item", tmplCntxList = cntx+"list", tmplPicExplorerLi = picE+"li", tmplPicExplorerUl = picE+"ul", tmplPicExplorerWp = picE+"wp", tmplPicImage = pic+"image", tmplPicImageCropper = picI+"cropper", tmplPicImageEditor = picI+"editor", tmplPicImageEditorFooter = tmplPicImageEditor+"_footer", tmplPicImageRightContent = picI+"right_content", tmplPicImageRightHead = picI+"right_head", tmplPicImageSlider = picI+"slider", tmplPicImageSliderItem = tmplPicImageSlider+"_item", tmplPicImageSliderItems = tmplPicImageSlider+"_items", tmplPicImageSvg = picI+"svg", tmplPicItemsGroup = picT+"group", tmplPicItemsItem = picT+"item", tmplPicItemsList = picT+"list", tmplPicItemsLoading = picT+"loading", tmplPopupContent = picP+"content", tmplPopupSettings = picP+"settings", tmpAppPicExplorerLi, tmpAppPicExplorerUl, tmpAppPicExplorerWp, tmpAppPicImage, tmpAppPicImageCropper, tmpAppPicImageEditor, tmpAppPicImageEditorFooter, tmpAppPicImageRightContent, tmpAppPicImageRightHead, tmpAppPicImageSlider, tmpAppPicImageSliderItem, tmpAppPicImageSliderItems, tmpAppPicImageSvg, tmpAppPicItemsGroup, tmpAppPicItemsItem, tmpAppPicItemsList, tmpAppPicItemsLoading, tmpAppPicPopupContent, tmpAppPicPopupSettings, tmpAppToolbarPanel, tmpAppToolbarButton, tmpAppToolbarGroup, tmpAppToolbarTitle, tmpAppToolbarNum, tmpAppCommonIcon, tmpAppCommonLoadingCircle, tmpAppCommonUploadZone, tmpAppCommonBookmarks, tmpAppCommonBookmarksItem, tmpAppCommonAvatar, tmpAppScrollContent, tmpAppFooter, tmpAppForbidden, tmpAppFeatureContextMenuItem, tmpAppFeatureContextMenuList, tmpObjElzIcon, tmpObjItemsItem, tmpObjImgSliderItem, idElizaApp = "ElizaAppPic", idElizaPic = "elizaPic", idElizaPicUploadToNewStack = idElizaPic+"UploadToNewStack", idElizaPicRight = idElizaPic+"Right", idElizaPicRightScroll = idElizaPic+"Scroll", idElizaPicRightBack = idElizaPicRight+"Back", idElizaPicRightPanel = idElizaPicRight+"Panel", idElizaPicRightPanelClose = idElizaPicRightPanel+"Close", idElizaPicPlupload = idElizaPic+"Plupload", idElizaPicPluploadBtn = idElizaPicPlupload+"Btn", idElizaPicPluploadZone = idElizaPicPlupload+"Zone", idElizaPicPluploadCircle = idElizaPicPlupload+"Circle", idElizaPicImage = idElizaPic+"Image", idElizaPicImageCont = idElizaPicImage+"Cont", idElizaPicImageDescr = idElizaPicImage+"Descr", idElizaPicImagePage = idElizaPicImage+"Page", idElizaPicImageFooter = idElizaPicImage+"Footer", idElizaPicImagePageDownload = idElizaPicImagePage+"Download", idElizaPicImagePageEdit = idElizaPicImagePage+"Edit", idElizaPicImagePageMeta = idElizaPicImagePage+"Meta", idElizaPicImagePageDelete = idElizaPicImagePage+"Delete", idElizaPicImagePageTree = idElizaPicImagePage+"Tree", idElizaPicImagePageTrash = idElizaPicImagePage+"Trash", idElizaPicImagePageCrop = idElizaPicImagePage+"Crop", idElizaPicImageFooterVariations = idElizaPicImageFooter+"Variations", idElizaPicImageFooterContent = idElizaPicImageFooter+"Content", idElizaPicImageFooterThumbs = idElizaPicImageFooter+"Thumbs", idElizaPicImageFooterSiblings = idElizaPicImageFooter+"Siblings", idElizaPicImageViewer = idElizaPicImage+"Viewer", idElizaPicImageTool = idElizaPicImage+"Tool", idElizaPicImageToolGroup = idElizaPicImageTool+"Group", idElizaPicImageToolGroupMain = idElizaPicImageToolGroup+"Main", idElizaPicImageToolGroupExpand = idElizaPicImageToolGroup+"Expand", idElizaPicImageToolGroupTransform = idElizaPicImageToolGroup+"Transform", idElizaPicImageToolGroupTransformExpand = idElizaPicImageToolGroupTransform+"Expand", idElizaPicImageToolGroupTransformMirror = idElizaPicImageToolGroupTransform+"Mirror", idElizaPicImageToolGroupTransformRotate = idElizaPicImageToolGroupTransform+"Rotate", idElizaPicImageToolGroupTransformMirrorHorizontal = idElizaPicImageToolGroupTransformMirror+"Horizontal", idElizaPicImageToolGroupTransformMirrorVertical = idElizaPicImageToolGroupTransformMirror+"Vertical", idElizaPicImageToolGroupTransformRotateLeft = idElizaPicImageToolGroupTransformRotate+"Left", idElizaPicImageToolGroupTransformRotateRight = idElizaPicImageToolGroupTransformRotate+"Right", idElizaPicImageSlider = idElizaPicImage+"Slider", idElizaPicImageSliderList = idElizaPicImageSlider+"List", idElizaPicImageSliderCrop = idElizaPicImageSlider+"Crop", idElizaPicImageSliderTitle = idElizaPicImageSlider+"Title", idElizaPicImageCropper = idElizaPicImage+"Cropper", idElizaPicImageCropperOrigin = idElizaPicImageCropper+"Origin", idElizaPicImageCropperPoint = idElizaPicImageCropper+"Point", idElizaPicImageCropperSave = idElizaPicImageCropper+"Save", idElizaPicImageCropperCancel = idElizaPicImageCropper+"Cancel", idElizaPicImageCropperWidth = idElizaPicImageCropper+"Width", idElizaPicImageCropperHeight = idElizaPicImageCropper+"Height", idElizaPicImageCropperRightPanelClose = idElizaPicImageCropper+"RightPanelClose", idElizaPicImageCropperOriginWidth = idElizaPicImageCropperOrigin+"Width", idElizaPicImageCropperOriginHeight = idElizaPicImageCropperOrigin+"Height", idElizaPicImageCropperPointX = idElizaPicImageCropperPoint+"X", idElizaPicImageCropperPointY = idElizaPicImageCropperPoint+"Y", idElizaPicImageEditor = idElizaPicImage+"Editor", idElizaPicImageEditorSwitch = idElizaPicImageEditor+"Switch", idElizaPicImageEditorFilter = idElizaPicImageEditor+"Filter", idElizaPicImageEditorCorrections = idElizaPicImageEditor+"Corrections", idElizaPicImageEditorCropper = idElizaPicImageEditor+"Cropper", idElizaPicImageEditorAspects = idElizaPicImageEditor+"Aspects", idElizaPicImageEditorSave = idElizaPicImageEditor+"Save", idElizaPicImageEditorCancel = idElizaPicImageEditor+"Cancel", idElizaPicImageCopyInput = idElizaPicImage+"CopyInput", idElizaPicImageCopyInputClean = idElizaPicImageCopyInput+"Clean", idElizaPicImageCopyInputHtml = idElizaPicImageCopyInput+"Html", idElizaPicImageCopyInputBBCode = idElizaPicImageCopyInput+"BBCode", idElizaPicExplorer = idElizaPic+"Explorer", idElizaPicExplorerWP = idElizaPicExplorer+"WP", idElizaPicExplorerClose = idElizaPicExplorer+"Close", idElizaPicExplorerUl = idElizaPicExplorer+"Ul_", idElizaPicExplorerLi = idElizaPicExplorer+"Li_", idElizaPicContent = "elizaPicContent", idElizaPicContentBookmarks = idElizaPicContent+"Bookmarks", idElizaPicContentScroll = idElizaPicContent+"Scroll", idElizaPicContentStackList = idElizaPicContent+"StackList", idElizaPicFooter = idElizaPic+"Footer", idElizaPicFooterTitle = idElizaPicFooter+"Title", idElizaPicFooterNext = idElizaPicFooter+"Next", idElizaPicFooterPrev = idElizaPicFooter+"Prev", idElizaPicFooterRoot = idElizaPicFooter+"Root", idElizaPicFooterNumbers = idElizaPicFooter+"Numbers", idElizaPicFooterAlbums = idElizaPicFooter+"Albums", idElizaPicFooterContent = idElizaPicFooter+"Content", idElizaPicTool = idElizaPic+"Tool", idElizaPicToolStackExp = idElizaPicTool+"Expand", idElizaPicToolAddImage = idElizaApp+"_addImage", // К этому айдишнику привязан ЦСС, без надобности не менять. idElizaPicToolAddStack = idElizaPicTool+"AddAlbum", idElizaPicToolTree = idElizaPicTool+"MoveToAlbum", idElizaPicToolTrash = idElizaPicTool+"DeleteItems", idElizaPicToolUnsel = idElizaPicTool+"RemoveSelect", idElizaPicPopup = idElizaPic+"Popup", idElizaPicPopupScroll = idElizaPicPopup+"Scroll", idElizaPicPopupSettings = idElizaPicPopup+"Settings", idElizaPicPopupSettingsClose = idElizaPicPopupSettings+"Close", idElizaPicPopupSettingsCancel = idElizaPicPopupSettings+"Cancel", idElizaPicPopupContent = idElizaPicPopup+"Content", idElizaPicPopupContentScroll = idElizaPicPopupContent+"Scroll", idElizaPicPopupContentBooks = idElizaPicPopupContent+"Books", idElizaPicPopupContentClose = idElizaPicPopupContent+"Close", idElizaPicPopupExplorer = idElizaPicPopup+"Explorer", idElizaPicPopupExplorerScroll = idElizaPicPopupExplorer+"Scroll", idElizaPicCorrPreset = idElizaPic+"elizaPicCorrPreset", idElizaPicCorrPresetAdd = idElizaPicCorrPreset+"Add", idElizaPicCorrPresetText = idElizaPicCorrPreset+"Text", idElizaPicCorrPresetSave = idElizaPicCorrPreset+"Save", idElizaPicCorrPresetList = idElizaPicCorrPreset+"List", idElizaPicCorrPresetDelete = idElizaPicCorrPreset+"Delete", idElizaPicCorrPresetClose = idElizaPicCorrPreset+"Close", idElizaPicCorrPresetDivList = idElizaPicCorrPreset+"DivList", idElizaPicCorrPresetDivForm = idElizaPicCorrPreset+"DivForm", idElizaPicContextMenu = idElizaPic+"ContextMenu", idElizaPicContextMenuMoveUp = idElizaPicContextMenu+"MoveUp", idElizaPicContextMenuDelete = idElizaPicContextMenu+"Delete", idElizaPicContextMenuEditMeta = idElizaPicContextMenu+"EditMeta", idElizaPicContextMenuImageContent = idElizaPicContextMenu+"ImageContent", idElizaPicContextMenuStack = idElizaPicContextMenu+"Stack", idElizaPicContextMenuStackUpload = idElizaPicContextMenuStack+"Upload", idElizaPicContextMenuStackInsert = idElizaPicContextMenuStack+"Insert", idElizaPicContextMenuCopy = idElizaPicContextMenu+"Copy", idElizaPicContextMenuCopyBBCode = idElizaPicContextMenuCopy+"BBCode", idElizaPicContextMenuCopyHtml = idElizaPicContextMenuCopy+"Html", idElizaPicContextMenuCopySlider = idElizaPicContextMenuCopy+"Slider", idElizaPicContextMenuCopySliderLink = idElizaPicContextMenuCopySlider+"Link", idElizaPicContextMenuCopySliderBBCode = idElizaPicContextMenuCopySlider+"BBCode", idElizaPicContextMenuCopySliderHTML = idElizaPicContextMenuCopySlider+"HTML", idElizaPicSVG = idElizaPic+"SVG", idElizaPicSVGFilters = idElizaPicSVG+"Filters", idElizaPicSVGCanvas = idElizaPicSVG+"Canvas", idElizaPicSVGRightPanelClose = idElizaPicSVG+"RightPanelClose", idElizaPicThumb = idElizaPic+"Thumb", idElizaPicThumbCreate = idElizaPicThumb+"Create", idElizaPicThumbForm = idElizaPicThumb+"Form", idElizaPicThumbZoomSwitch = idElizaPicThumb+"ZoomSwitch", idVignetteColor = "vignetteColor", idVignetteColorReset = idVignetteColor+"Reset", idVignetteColorFlood = idVignetteColor+"Flood", idVignetteColorLightning = idVignetteColor+"Lightning", $jqStackList = $("#"+idElizaPicContentStackList), $jqStackScroll = $("#"+idElizaPicContentScroll), langAppPicRightPanel = "Правая панель", // Правая панель langAppPicRightBack = "Назад", // Назад langAppPicForbidden1 = "Изображения и альбомы, удовлетворяющие выбранным фильтрам не найдены", // Изображения и альбомы, удовлетворяющие выбранным фильтрам не найдены langAppPicForbidden2 = "Эта страница доступна только её автору", // Эта страница доступна только её автору langAppPicForbidden3 = "Эта страница запрещена для просмотра лицам, не достигшим возраста ", // Эта страница запрещена для просмотра лицам, не достигшим возраста langAppPicForbidden4 = " лет", // лет langAppPicForbidden5 = "Страница не найдена", // Страница не найдена langAppPicForbidden6 = "Для доступа к функционалу требуется регистрация", // Для доступа к функционалу требуется регистрация langAppPicImgHtmlTitle = "Изображение с ", // Изображение с langAppPicNotificationMoveTo = "Выберите объекты для перемещения", // Выберите объекты для перемещения langAppPicNotificationMoved = "Перемещено элементов: ", // Перемещено элементов: langAppPicNotificationImgSize = "Разрешенные для вставки файлы: JPG, JPEG, GIF, PNG размером не более 10 мегабайт.", // Разрешенные для вставки файлы: JPG, JPEG, GIF, PNG размером не более 10 мегабайт. langAppPicNotificationImgUpl = "Изображение успешно загружено", // Изображение успешно загружено langAppPicNotificationImgThumb = "Новая миниатюра создана", // Новая миниатюра создана langAppPicNotificationImgOversize = "Ряд изображений превышает допустимый размер в 10 мегабайт", // Ряд изображений превышает допустимый размер в 10 мегабайт langAppPicNotificationImgTypes = "Ряд изображений не соотвествует разрешенному формату", // Ряд изображений не соотвествует разрешенному формату langAppPicNotificationImgUploads = "Изображения загружены на первую страницу текущего альбома", // Изображения загружены на первую страницу текущего альбома langAppPicNotificationDel1 = "Удалено элементов: ", // Удалено элементов: langAppPicNotificationDel2 = ". Не удалось удалить: ", // . Не удалось удалить: langAppPicNotificationDel3 = ". Обнаружена связь с контентом", // . Обнаружена связь с контентом langAppPicMenuEditMeta = "Редактировать описание", // Редактировать описание langAppPicMenuAddImage = "Загрузить изображения", // Загрузить изображения langAppPicMenuAddStack = "Добавить альбом", // Добавить альбом langAppPicMenuExplorer = "Проводник по альбомам", // Проводник по альбомам langAppPicMenuDeleted = "Показать удаленное", // Показать удаленное langAppPicMenuRPanel = "Показать правую панель", // Показать правую панель langAppPicNCoverWait = "Подождите", // Подождите langAppPicNCoverTransform = "Идет трансформация", // Идет трансформация langAppPicNCoverCropping = "Идет обработка изображения", // Идет обработка изображения langAppPicNCoverFilters = "Идет обработка использованных фильтров", // Идет обработка использованных фильтров langAppPicNCoverPreparing = "Идет обработка изображения", // Идет обработка изображения langAppPicNCoverCropInit = "Инициализация интерфейса кадрирования", // Инициализация интерфейса кадрирования langAppPicImgSliderTitle1 = "Доступные миниатюры", // Доступные миниатюры langAppPicImgSliderTitle2 = "Изображения в альбоме", // Изображения в альбоме langAppPicImgSliderTitle3 = "Вариации изображения", // Вариации изображения langAppPicImgBtn1 = "Редактировать вариацию", // Редактировать вариацию langAppPicImgBtn2 = "Создать вариацию", // Создать вариацию langAppPicImgBtn3 = "Вариации изображения", // Вариации изображения langAppPicImgBtn4 = "Связи с контентом", // Связи с контентом langAppPicImgBtn5 = "Скачать изображение", // Скачать изображение langAppPicImgBtn6 = "Переместить изображение", // Переместить изображение langAppPicImgBtn7 = "Создать миниатюру", // Создать миниатюру langAppPicImgBtn8 = "Редактирование изображения", // Редактирование изображения langAppPicImgBtn9 = "Создать вариацию", // Создать вариацию langAppPicImgBtn10 = "Редактировать описание", // Редактировать описание langAppPicImgBtn11 = "Удалить", // Удалить langAppPicImgBtn12 = "Отразить по горизонтали", // Отразить по горизонтали langAppPicImgBtn13 = "Отразить по вертикали", // Отразить по вертикали langAppPicImgBtn14 = "Повернуть против часовой стрелки", // Повернуть против часовой стрелки langAppPicImgBtn15 = "Повернуть по часовой стрелке", // Повернуть по часовой стрелке langAppPicImgBtn16 = "Действия", // Действия langAppPicImgBtn17 = "Трансформация изображения", // Трансформация изображения langAppPicImgBtn18 = "Вернуться к предыдущему состоянию", // Вернуться к предыдущему состоянию langAppPicImgTitle1 = "Промежуточное изображение из буфера обмена", // Промежуточное изображение из буфера обмена langAppPicImgRight1 = "Добавлено:", // Добавлено: langAppPicImgRight2 = "Разрешение:", // Разрешение: langAppPicImgRight3 = "Просмотры:", // Просмотры: langAppPicImgRight4 = "Уникальные:", // Уникальные: langAppPicImgRight5 = "Размер файла:", // Размер файла: langAppPicImgRight6 = "Ссылка", // Ссылка langAppPicImgRight7 = "HTML", // HTML langAppPicImgRight8 = "BBCode", // BBCode langAppPicImgRight9 = "Информация", // Информация langAppPicImgRight10 = "панель информации", // панель информации langAppPicImgRight11 = "Редактирование изображения", // Редактирование изображения langAppPicImgRight12 = "Создание новой вариации", // Создание новой вариации langAppPicImgRight13 = "панель редактирования", // панель редактирования langAppPicImgEdit1 = "Ширина результата", // Ширина результата langAppPicImgEdit2 = "Высота результата", // Высота результата langAppPicImgEdit3 = "Позиция рамки", // Позиция рамки langAppPicImgEdit4 = "Позиция вершины: X", // Позиция вершины: X langAppPicImgEdit5 = "Позиция вершины: Y", // Позиция вершины: Y langAppPicImgEdit6 = "Масштабирование", // Масштабирование langAppPicImgEdit7 = "Ширина изображения", // Ширина изображения langAppPicImgEdit8 = "Высота изображения", // Высота изображения langAppPicImgEdit9 = "Оригинал", // Оригинал langAppPicImgEdit10 = "Произвольно", // Произвольно langAppPicImgEdit11 = "Стороны", // Стороны langAppPicImgEdit12 = "Сохранить изображение", // Сохранить изображение langAppPicImgEdit13 = "Создать миниатюру", // Создать миниатюру langAppPicImgEdit14 = "Отмена", // Отмена langAppPicImgEdit15 = "Кадрирование изображения", // Кадрирование изображения langAppPicImgEdit16 = "Создание новой миниатюры", // Создание новой миниатюры langAppPicImgEdit17 = "панель кадрирования", // панель кадрирования langAppPicImgEdit18 = "панель создания миниатюры", // панель создания миниатюры langAppPicImgEdit19 = "Сохранить изменения", // Сохранить изменения langAppPicImgEdit20 = "Создать вариацию", // Создать вариацию langAppPicSettingsEdit = "Изменение настроек", // Изменение настроек langAppPicSettingsClose = "Закрыть", // Закрыть langAppPicSettings1 = "альбома", // альбома langAppPicSettings2 = "изображения", // изображения langAppPicSettings3 = "Настройки", // Настройки langAppPicExplorer = "Проводник по альбомам", // Проводник по альбомам langAppPicExplorerClose = "Закрыть", // Закрыть langAppPicStackFooter1 = "Показать только альбомы", // Показать только альбомы langAppPicStackFooter2 = "Показать только связанное с контентом", // Показать только связанное с контентом langAppPicStackFooter3 = "Сбросить выделение", // Сбросить выделение langAppPicPageGoTo1 = "Перейти на первую страницу", // Перейти на первую страницу langAppPicPageGoTo2 = "Перейти в корень", // Перейти в корень langAppPicPageGoTo3 = "Перейти на главную страницу", // Перейти на главную страницу langAppPicPageGoTo4 = "Наверх", // Наверх langAppPicPageGoTo5 = "Предыдущая страница", // Предыдущая страница langAppPicPageGoTo6 = "Перейти в альбом", // Перейти в альбом langAppPicPageGoTo7 = "Перейти к оригиналу", // Перейти к оригиналу langAppPicPageGoTo8 = "Предыдущее изображение", // Предыдущее изображение langAppPicPageGoTo9 = "Следующее изображение", // Следующее изображение langAppPicPageGoTo10 = "Следующая страница", // Следующая страница langApiPicSelectionTitle1 = "Добавить альбом", // Добавить альбом langApiPicSelectionTitle2 = "Проводник по альбомам", // Проводник по альбомам langApiPicSelectionTitle3 = "Показать удаленное", // Показать удаленное langApiPicSelectionTitle4 = "Восстановить удаленное", // Восстановить удаленное langApiPicSelectionTitle5 = "Объеденить выбранное в альбом", // Объеденить выбранное в альбом langApiPicSelectionTitle6 = "Переместить выбранное в альбом", // Переместить выбранное в альбом langApiPicSelectionTitle7 = "Восстановить выбранное", // Восстановить выбранное langApiPicSelectionTitle8 = "Удалить выбранное", // Удалить выбранное langApiPicSelectionTitle9 = "Сделать иконкой альбома", // Сделать иконкой альбома langApiPicSelectionTitle10 = "Является иконкой альбома", // Является иконкой альбома langApiPicCommon1 = "изображение", // изображение langApiPicCommon2 = "альбом", // альбом langApiPicCommon3 = "выделенное", // выделенное langApiPicCommon4 = "Восстановить", // Восстановить langApiPicCommon5 = "Переместить", // Переместить langApiPicCommon6 = "на уровень выше", // на уровень выше langApiPicCommon7 = "в корень", // в корень langApiPicCommon8 = "Связанный контент", // Связанный контент langApiPicCommon9 = "Загрузить изображения в этот альбом", // Загрузить изображения в этот альбом langApiPicCommon10 = "Поместить выбранное в этот альбом", // Поместить выбранное в этот альбом langApiPicCommon11 = "Адрес", // Адрес langApiPicCommon12 = "скопирован в буфер обмена", // скопирован в буфер обмена langApiPicClip1 = "Копировать адрес", // Копировать адрес langApiPicClip2 = "Копировать BBCode", // Копировать BBCode langApiPicClip3 = "Копировать Html", // Копировать Html langApiPicClip4 = "Адрес скопирован в буфер обмена", // Адрес скопирован в буфер обмена langApiPicClip5 = "BBCode скопирован в буфер обмена", // BBCode скопирован в буфер обмена langApiPicClip6 = "Html скопирован в буфер обмена", // Html скопирован в буфер обмена langApiPicUplZoneTitle1 = "Выберите файлы", // Выберите файлы langApiPicUplZoneTitle2 = "В этом альбоме ещё нет изображений", // В этом альбоме ещё нет изображений langApiPicUplZoneText1 = "Или перетащите в эту область", // Или перетащите в эту область langApiPicUplZoneText2 = "Вы можете сделать снимок экрана и нажать", // Вы можете сделать снимок экрана и нажать langApiPicUplZoneText3 = "Выберите изображения для загрузки, нажав на эту область, или перетащите файлы сюда", // Выберите изображения для загрузки, нажав на эту область, или перетащите файлы сюда langApiPicUplZoneSize = "Ограничение на размер файла", // Ограничение на размер файла langTmplExplorerLi = { title1: "Перейти в альбом", // Перейти в альбом title2: "Альбом ID", // Альбом ID title3: "Перенести выделенное в этот альбом", // Перенести выделенное в этот альбом title4: "Развернуть" // Развернуть }, langTmplImageCropper = { label: "Расширенный режим", // Расширенный режим title: "Соотношения сторон" // Соотношения сторон }, langTmplImageEditor = { title1: "Удалить предустановленный фильтр", // Удалить предустановленный фильтр title2: "Сохранить текущие настройки фильтра", // Сохранить текущие настройки фильтра title3: "Отмена", // Отмена title4: "Сброс", // Сброс capt1: "Фильтры", // Фильтры capt2: "Цветовая коррекция", // Цветовая коррекция capt3: "Цвета виньетирования" // Цвета виньетирования }, langTmplImageRightContent = { title1: "Автор", // Автор title2: "Оригинал", // Оригинал title3: "Альбом" // Альбом }, langTmplImageRightHead = { close: "Закрыть" // Закрыть }, langTmplImageSlider = { text: 'Изображения в альбоме', // Изображения в альбоме title1: 'Закрыть', // Закрыть title2: 'Создать новую миниатюру', // Создать новую миниатюру item: 'Новая миниатюра' // Новая миниатюра }, langTmplImageSliderItem = { del: "Удалить" // Удалить }, langTmplItemsItem = { title1: "Размер изображения", // Размер изображения title2: "Вариаций изображения", // Вариаций изображения title3: "Формат изображения", // Формат изображения title4p1: "Является", // Является title4p2: "Сделать", // Сделать title4p3: "иконкой альбома", // иконкой альбома title5: "Альбомов внутри", // Альбомов внутри title6: "Изображений в альбоме", // Изображений в альбоме title7: "Альбом", // Альбом title8: "Дней до удаления", // Дней до удаления title9: "Изображение", // Изображение title10: "Иконка альбома", // Иконка альбома title11: "Доступ ограничен", // Доступ ограничен title12p1: "Доступно только пользователям старше", // Доступно только пользователям старше title12p2: "лет", // лет title13: "Доступно только вам", // Доступно только вам title14: "Доступно только автору", // Доступно только автору title15: "Доступно только по прямой ссылке" // Доступно только по прямой ссылке" }, langTmplItemsLoading = { txt: "идет загрузка..." // идет загрузка... }, langTmplPopupContent = { txt1: "Автор", // Имя txt2: "Оригинал", // Дата txt3: "Альбом" // Автор }, langTmplPopupSettings = { holder1: "Введите название", // Введите название holder2: "Введите описание", // Введите описание label1: "Название", // Название label2: "Описание", // Описание label3: "Применить ко всем вложенным элементам" // Применить ко всем вложенным элементам }, months = ["Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"]; templateGetPackage( "eliza_app_pic", [ tmplPicExplorerLi, tmplPicExplorerUl, tmplPicExplorerWp, tmplPicImage, tmplPicImageCropper, tmplPicImageEditor, tmplPicImageEditorFooter, tmplPicImageRightContent, tmplPicImageRightHead, tmplPicImageSlider, tmplPicImageSliderItem, tmplPicImageSliderItems, tmplPicImageSvg, tmplPicItemsGroup, tmplPicItemsItem, tmplPicItemsList, tmplPicItemsLoading, tmplPopupContent, tmplPopupSettings, tmplCmnIcon, tmplCmnLoadingCircle, tmplCmnUploadZone, tmplCmnBookmarks, tmplCmnBookmarksItem, tmplCmnAvatar, tmplTbPanel, tmplTbButton, tmplTbGroup, tmplTbTitle, tmplTbNum, tmplElzScroll, tmplElzForbidden, tmplElzFooter, tmplCntxItem, tmplCntxList ], function() { tmpAppPicExplorerLi = tmpG(tmplPicExplorerLi); tmpAppPicExplorerUl = tmpG(tmplPicExplorerUl); tmpAppPicExplorerWp = tmpG(tmplPicExplorerWp); tmpAppPicImage = tmpG(tmplPicImage); tmpAppPicImageCropper = tmpG(tmplPicImageCropper); tmpAppPicImageEditor = tmpG(tmplPicImageEditor); tmpAppPicImageEditorFooter = tmpG(tmplPicImageEditorFooter); tmpAppPicImageRightContent = tmpG(tmplPicImageRightContent); tmpAppPicImageRightHead = tmpG(tmplPicImageRightHead); tmpAppPicImageSlider = tmpG(tmplPicImageSlider); tmpAppPicImageSliderItem = tmpG(tmplPicImageSliderItem); tmpAppPicImageSliderItems = tmpG(tmplPicImageSliderItems); tmpAppPicImageSvg = tmpG(tmplPicImageSvg); tmpAppPicItemsGroup = tmpG(tmplPicItemsGroup); tmpAppPicItemsItem = tmpG(tmplPicItemsItem); tmpAppPicItemsList = tmpG(tmplPicItemsList); tmpAppPicItemsLoading = tmpG(tmplPicItemsLoading); tmpAppPicPopupContent = tmpG(tmplPopupContent); tmpAppPicPopupSettings = tmpG(tmplPopupSettings); tmpAppToolbarPanel = tmpG(tmplTbPanel); tmpAppToolbarButton = tmpG(tmplTbButton); tmpAppToolbarGroup = tmpG(tmplTbGroup); tmpAppToolbarTitle = tmpG(tmplTbTitle); tmpAppToolbarNum = tmpG(tmplTbNum); tmpAppCommonIcon = tmpG(tmplCmnIcon); tmpAppCommonLoadingCircle = tmpG(tmplCmnLoadingCircle); tmpAppCommonUploadZone = tmpG(tmplCmnUploadZone); tmpAppCommonBookmarks = tmpG(tmplCmnBookmarks); tmpAppCommonBookmarksItem = tmpG(tmplCmnBookmarksItem); tmpAppCommonAvatar = tmpG(tmplCmnAvatar); tmpAppScrollContent = tmpG(tmplElzScroll); tmpAppFooter = tmpG(tmplElzFooter); tmpAppForbidden = tmpG(tmplElzForbidden); tmpAppFeatureContextMenuItem = tmpG(tmplCntxItem); tmpAppFeatureContextMenuList = tmpG(tmplCntxList); tmpObjElzIcon = {"common/elz_icon": tmpAppCommonIcon}; tmpObjItemsItem = {"app/pic/items_item": tmpAppPicItemsItem}; tmpObjImgSliderItem = {"app/pic/image_slider_item": tmpAppPicImageSliderItem}; } ); /** * Функция обработчик стэка. Это корневая функция, с которой начинается любой стек. При несовпадении неймов * система перестраивает весь html, если же нейм не изменился, то просто вызывается функция инициализации страницы * текущего стэка. * * @param {string} item - Нейм альбома, семь символов 0-9a-zA-Z * @param {string} page - Параметр постраничности ?page = {start}-{end} * @param {boolean} forcedMeta - Принудительная полная пересборка шаблона стека, с обновлением всех данных */ function picStackHandler(item, page, forcedMeta) { if (item !== picStatus.name || forcedMeta) { // Если неймы не совпадают, то мы переключились в другой стэк picGetAlbumMeta(item, function() {picStackHandlerCallback(page, true);}); } else { picStackHandlerCallback(page, false); } } /** * Функция-обработчик стэка. Распарсивает постраничность. При необходимости добавляет/пеерсобирает юзер-меню и * фуутер. Реинициализирует постраничность и осуществляет запрос актуального списка объект, которые находятся в * альбоме. * * @param {string} page - Параметр постраничности ?page = {start}-{end} * @param {bool} fullRebuild - Принудительная полная пересборка шаблона стека */ function picStackHandlerCallback(page, fullRebuild) { if (page) { var pageData = pageParser(page, picStatus.pages.max); picStatus.pages.start = pageData.start; picStatus.pages.end = pageData.end; /*if (picStatus.pages.end > picStatus.pages.max) { picStatus.pages.end = parseInt(picStatus.pages.max, 10); }*/ } var action = (picStatus.name === "trash" ? "add" : "remove")+"Class"; if (picStatus.state !== "stack" || fullRebuild) { app.layout.content.cnt.content.removeAttr("data-elz-bg"); app.layout.content.cnt.subfooter.removeAttr("data-elz-bg"); app.layout.main.right.closest(".tplCLSgrid").removeClass("showside"); app.layout.content.cnt.subfooter.find(".elzCLSwinslider").removeClass("show"); //scroller_enabled = false; picInsertMenuStack(); picStatus.state = "stack"; } picInsertFooterStack(fullRebuild); $("#"+idElizaPicRightBack)[picStatus.name === "root" ? "addClass" : "removeClass"]("hide"); $("#"+idElizaPicToolTrash)[action]("active"); $("#"+idElizaPicFooterAlbums )[action]("hide"); $("#"+idElizaPicFooterContent)[action]("hide"); picPaginatingReset(); if (fullRebuild) { picStackRebuildHtml(); } imageEditActive = false; imageCropActive = false; $("#"+idElizaPicPluploadBtn).find(".elzIc.main").removeClass("ic-images").removeClass("ic-image").addClass( $("#"+idElizaApp).attr("data-appstate") === "list album" ? "ic-images" : "ic-image" ); //одкостылим проверочку if (picStatus.items) { var picCLSupload = $("#"+idElizaPicContentScroll).find(".picCLSupload"); picCLSupload.removeClass("empty"); if (picStatus.pages.start === 1 && picStatus.name !== "trash") { picCLSupload.removeClass("hide"); } else { picCLSupload.addClass("hide"); } } if (picGLBContentOnly === "true" || picGLBAlbumsOnly === "true") { $("#"+idElizaPicPluploadZone).closest(".picCLSupload").removeClass("empty").addClass("hide"); } /*if (app.standAlone === 1) { picStackItemsInit(); app.standAlone = 2; } else {*/ picGetItemsList({type: "replace", page: page, stackId: picStatus.stackId, ownerId: picStatus.ownerId}); /*}*/ } /** * Функция сборки верхней меню пользовательской меню для работы со стеком. Тут же хранятся инициализаторы событий. */ function picInsertMenuStack() { if (UserHandler.isNotActivated()) { return false; } if (UserHandler.getId() === picStatus.ownerId) { var $mid = app.layout.top.header.find('[data-layout="toolbar_middle"]'), btn = tmpAppToolbarButton, list = [], funcCompress = function (list, tag, id, title, icon, subIcon, subColor) { var returnObj = { tag: tag, id: id, title: title, align: "right", icon: {svg: {main: icon}, size: 'small'} }; if (subIcon) { returnObj.icon.svg.sub = subIcon; returnObj.icon.color = {subbg: subColor}; } list.push(returnObj); }, len; if (picGLBAlbumsOnly !== "true" && picGLBContentOnly !== "true") { if (picStatus.name !== "root" && picStatus.name !== "trash") { funcCompress(list, "div", idElizaPicImagePageMeta, langAppPicMenuEditMeta, "ic-pencil"); } funcCompress(list, "label", idElizaPicToolAddImage, langAppPicMenuAddImage, "ic-image", "ic-plus", "blue"); funcCompress(list, "div", idElizaPicToolAddStack, langAppPicMenuAddStack, "ic-folder", "ic-plus", "blue"); } funcCompress(list, "div", idElizaPicToolTree, langAppPicMenuExplorer, "ic-foldertree"); list.push({ tag: "a", id: idElizaPicToolTrash, title: langAppPicMenuDeleted, align: "right", border: { enable: 1, lines: "bottom", color: "red 800" }, icon: {svg: {main: 'ic-trash'}, size: 'small'}, href: (!app.standAlone ? "#pic" : "")+ "/trash" }); len = list.length; $mid.html(tmpR(tmpAppToolbarGroup, { active: "", position: "right", xsub: "320", v_pos: "top", h_pos: "right" })); $mid.find('[data-layout="tool_trigger"]').prepend(tmpR(btn, { id: idElizaPicToolStackExp, tag: "div", title: langAppPicMenuRPanel, setts: {type: 'default', align: "right", link: '1'}, icon: {svg: {main: 'ic-more1'}, size: 'small', radius: "rad"} }, tmpObjElzIcon)); //$("#"+picIds.toolStackExp).click(function() {$(this).closest(".group").toggleClass("active");}); var $ins = $mid.find('[data-layout="tool_list"]'); for(var a = 0, item; a < len; a++) { item = list[a]; list[a] = tmpR(btn, { id: item.id, tag: item.tag, href: item.href, title: item.title, border: item.border ? item.border : {}, setts: {type: 'default', align: item.align, txt: item.txt, link: '1'}, text: {str: item.title, align: 'left'}, icon: item.icon }, tmpObjElzIcon); } $ins.append(list.join('')); } picFooterFiltersCheck(); picPluploaderGet(true); } function userPanelMenus() { var $toolbarMiddle = app.layout.top.header.find('[data-layout="toolbar_middle"]'), $toolbarRight = app.layout.top.header.find('[data-layout="toolbar_right"]'), $footer = app.layout.content.cnt.footer.closest("div"), $subfooter = app.layout.content.cnt.subfooter.closest("div"), $content = app.layout.content.cnt.content, ids = picIds, picItem = tmpAppPicItemsItem, funcCompress = function() { $("#"+idElizaPicImageToolGroupMain).removeClass("active"); $("#"+idElizaPicImageToolGroupExpand).removeClass("active"); }; //app.layout.content.cnt.content.attr( "data-elz-bg", "grey 900"); app.layout.content.cnt.subfooter.attr("data-elz-bg", "grey 900"); // ФУНКЦИОНАЛ СТЭКА // ------------------------------------------------------------------------------------------------------------- $toolbarMiddle.off("click").on("click", "#"+idElizaPicToolTree, function() { picExplorerWindow(); }).on("click", "#"+idElizaPicToolTrash, function(e) { if (!selectedCount) { if (app.standAlone) { hApi.pushState( e, $(this).attr("href"), null, {callback: 'picRouter'}, appPicStandAloneRouter ); DIAppReg.regState(app.name, $(this).attr("href")); } return this; } e.preventDefault(); picStackDelete(); }).on("click", "#"+idElizaPicToolAddStack, function(e) { e.preventDefault(); var data = picStatus, stackId = data.stackId, $stackList = $jqStackList; if(selectedCount > 0) { data = picAddStack(stackId, 0); data.lang = langTmplItemsItem; $stackList.prepend(tmpR(picItem, data)); selectedCount -= 1; picMoveToStack($('.fileItem[data-name="'+data.system.name+'"]')); picPaginationUpdate(); } else { if(data.pages.start === 1) { data = picAddStack(stackId, 0); data.lang = langTmplItemsItem; $stackList.prepend(tmpR(picItem, data)); } picItemListRefresh('add', 1); picPaginationUpdate(); } picStackItemsInit(); if (picStatus.name !== "trash") { $("#"+idElizaPicPluploadZone).closest(".picCLSupload").removeClass("empty"); } else { $("#"+idElizaPicPluploadZone).closest(".picCLSupload").removeClass("empty").addClass("hide"); } }).on("click", "#"+idElizaPicToolStackExp, function() { $(this).closest(".group").toggleClass("active"); }); // ------------------------------------------------------------------------------------------------------------- // ФУНКЦИОНАЛ КАРТИНКИ // ------------------------------------------------------------------------------------------------------------- $toolbarMiddle.on("click", "#"+idElizaPicImageToolGroupTransformExpand, function() { var $edit = $("#"+idElizaPicImagePageEdit); funcCompress(); $("#"+idElizaPicImageToolGroupTransform).toggleClass("active"); $(this).toggleClass("active"); if ($edit.hasClass("active")) { $edit.click(); } }).on("click", "#"+idElizaPicImageToolGroupExpand, function() { funcCompress(); $("#"+idElizaPicImageToolGroupMain).toggleClass("active"); $(this).toggleClass("active"); /*if ($edit.hasClass("active")) { $edit.click(); }*/ }).on("click", "#"+idElizaPicImagePageEdit, function(e) { var $this = $(this), $viewer = $("#"+idElizaPicImageViewer); $viewer.removeAttr("style"); imageCropActive = false; $("#"+idElizaPicImagePageCrop).removeClass("active"); if ($this.hasClass("active")) { imageEditActive = false; picImageRightContent(); if (DICookies.get("rightMenuActive") === "false") { app.layout.main.right.closest(".tplCLSgrid").removeClass("showside"); } $this.removeClass("active"); $("#"+idElizaPicSVGFilters).addClass("hide"); $viewer.removeClass("hide"); } else { imageEditActive = true; picImageRightEditor(); $("#"+idElizaPicSVGFilters).removeClass("hide"); $this.addClass("active"); } funcCompress(); }).on("click", "#"+idElizaPicImagePageMeta, function() { if ($("#"+idElizaApp).attr("data-appstate") === "list album") { picItemSettings("stack", picStatus.stackId); } else { picItemSettings("image", picStatus.imageData.image.system.id); funcCompress(); } }).on("click", "#"+idElizaPicImagePageDelete, function() { var stack = status.imageData.stack, name = stack === "root" ? "root" : stack.system.name, uri = (app.standAlone ? "/" : "#pic") + (name === "root" ? "" : (!app.standAlone ? "/" : "")+name), deleteList = [{type: "image", id: status.imageData.image.system.id}]; ajaxSend({ url: uriPicStack+"deleteList/"+status.stackId, data: {list: JSON.stringify(deleteList)}, success: function(result){ if (app.standAlone) { hApi.replaceStateData({callback: "picRouter"}, uri); DIAppReg.regState(app.name, uri); appPicStandAloneRouter(); } else { bBone.history.navigate(uri, {trigger: true}); } } }); funcCompress(); }).on("click", "#"+idElizaPicImagePageTree, function(e) { selectedCount = 1; selectedList = [picStatus.name]; picExplorerWindow(); picGetImageMeta(picStatus.name, function() {picImageHandlerCallback(true);}); appShow(); funcCompress(); }).on("click", "#"+idElizaPicImagePageCrop, function(e) { var $edit = $("#"+idElizaPicImagePageEdit); $("#"+idElizaPicImageViewer).removeAttr("style"); if ($edit.hasClass("active")) { $edit.click(); } if (!$(this).hasClass("active")) { $("#"+idElizaPicThumbCreate).click(); } else { $("#"+idElizaPicImageCropperRightPanelClose).click(); } funcCompress(); }).on("click", "#"+idElizaPicImageToolGroupTransformMirrorHorizontal+", " + "#"+idElizaPicImageToolGroupTransformMirrorVertical+", " + "#"+idElizaPicImageToolGroupTransformRotateLeft+", " + "#"+idElizaPicImageToolGroupTransformRotateRight, function() { var $edit = $("#"+idElizaPicImagePageEdit); $("#"+idElizaPicImageViewer).removeAttr("style"); elizaNcoverTexted(langAppPicNCoverWait, langAppPicNCoverTransform, true); if ($edit.hasClass("active")) { $edit.click(); } var variants = {}, mode; variants[idElizaPicImageToolGroupTransformMirrorHorizontal] = ["transformMirroring", "horizontal"]; variants[idElizaPicImageToolGroupTransformMirrorVertical] = ["transformMirroring", "vertical" ]; variants[idElizaPicImageToolGroupTransformRotateLeft] = ["transformRotation", "left" ]; variants[idElizaPicImageToolGroupTransformRotateRight] = ["transformRotation", "right" ]; mode = variants[$(this).attr("id")]; ajaxSend({ url: uriPicImage+mode[0]+"/"+picStatus.imageData.image.system.id+"/"+mode[1], success: function() { var time = 0, resultImage = picStatus.imageData.image, name = resultImage.system.name, file = resultImage.meta.file; picGetImageMeta(name, function() { var width = file.width, height = file.height, type = file.type; setTimeout(function() { var imageUrl = "/upl/" + name + "." + type + "?" + (new Date().getTime()); $("#"+idElizaPicImageViewer ).find("img").attr("src", imageUrl).attr("width", width).attr("height", height); $("#"+idElizaPicImageCropper).find("img").attr("src", imageUrl).attr("width", width).attr("height", height); thumbnailReset(); setTimeout(function(){elizaNcoverTexted('', '', false);}, 500); }, time); }); } }); } ); $toolbarRight.off().on("click", "#"+idElizaPicRightPanel, function() { var $this = $(this), $right = app.layout.main.right.closest(".tplCLSgrid"); $("#"+idElizaPicImageViewer).removeAttr("style"); if ($this.hasClass("active")) { $this.removeClass("active"); DICookies.set("rightMenuActive", "false", {expires: 365}); rightMenuActive = false; if (imageEditActive) { picImageRightEditor(); } else if(imageCropActive) { picImageRightCropper(); } else { $right.removeClass("showside"); } } else { $this.addClass("active"); DICookies.set("rightMenuActive", "true", {expires: 365}); rightMenuActive = true; picImageRightContent(); $right.addClass("showside"); } }).on("click", "#"+idElizaPicRightBack, function() { $("#"+idElizaPicFooterRoot).click(); }).on("mouseenter", "#"+idElizaPicRightBack, function() { $(this).attr("data-elz-title", $("#"+idElizaPicFooterRoot).attr("data-elz-title")); }); // ------------------------------------------------------------------------------------------------------------- // F O O T E R $footer.off("click").on("click", "#"+idElizaPicFooterAlbums, function() { scrollLoadSkip = false; if (picGLBAlbumsOnly === "false") { picGLBAlbumsOnly = "true"; } else { picGLBAlbumsOnly = "false"; } picFooterFiltersCheck(); picStackHandler(picStatus.name, "1", true); }).on("click", "#"+idElizaPicFooterContent, function() { scrollLoadSkip = false; if (picGLBContentOnly === "false") { picGLBContentOnly = "true"; } else { picGLBContentOnly = "false"; } picFooterFiltersCheck(); picStackHandler(picStatus.name, "1", true); }).on("click", "#"+idElizaPicToolUnsel, function() { picSelectionReset(); }); if (app.standAlone) { var status = picStatus, rootButtonId = ", #"+idElizaPicFooterRoot, rootBtnName = (status.parent ? (!app.standAlone ? "/" : "")+status.parent : ""); if (!UserHandler.getId() && (rootBtnName === "" || rootBtnName === "/")) { rootButtonId = ""; } $footer.on("click", "#"+idElizaPicFooterPrev+", #"+idElizaPicFooterNext+rootButtonId, function(e) { var $this = $(this); if ($this.hasClass("disabled")) { e.preventDefault(); return false; } picSelectionReset(); (UserHandler.getDevice() === "desktop" ? $jqStackScroll.closest(".scroll-content") : $jqStackScroll.closest(".elzScroll")).scrollTop(0); hApi.pushState( e, $this.attr("href"), null, {callback: 'picRouter'}, appPicStandAloneRouter ); DIAppReg.regState(app.name, $this.attr("href")); }); } $footer.on('click', "#"+idElizaPicImageFooterThumbs, function() { var $this = $(this), $cropper = $("#"+idElizaPicImageCropper).find("img"), $slider = $("#"+idElizaPicImageSlider), $sliderList = $("#"+idElizaPicImageSliderList), $btnSibling = $("#"+idElizaPicImageFooterSiblings), $btnVariation = $("#"+idElizaPicImageFooterVariations), $sliderCrop = $("#"+idElizaPicImageSliderCrop); imageSiblingsActive = false; imageVariationsActive = false; imageThumbnailsActive = true; if (!picStatus.imageData.image.access.editing) { $sliderCrop.hide(); } ajaxSend({ url: uriPicImage+"getImageThumbs/"+picStatus.imageData.image.system.id, success: function(result) { if ($this.hasClass("active") && !imageActiveIgnore) { $this.removeClass("active"); imageThumbnailsActive = false; $slider.removeClass("show"); setTimeout(function() {$(window).trigger('resize');}, 50); //$cropper.cropper("destroy"); } else { if(picStatus.imageData.image.access.editing) { $sliderCrop.show(); } $sliderList.find(".thumbnail").remove(); $sliderList.find(".image").remove(); $("#"+idElizaPicImageSliderTitle).html(langAppPicImgSliderTitle1); $sliderCrop.nextAll("li").remove(); $sliderList.append(tmpR( tmpAppPicImageSliderItems, { list: result, item_type: "thumbnail", target: "_blank", deletable: picStatus.editable ? 1 : 0, lang: langTmplImageSliderItem }, tmpObjImgSliderItem )); $sliderList.find(".elzCLSoverControls .cntrlItem.link").click(function() { var $this = $(this); ajaxSend({ url: uriPicImage+"deleteThumbByName/"+$this.attr("data-name")+"/"+$this.attr("data-width")+"/"+$this.attr("data-height"), success: function() { $this.closest(".thumbnail").remove(); } }); }); $this.addClass("active"); $slider.addClass("show"); $btnSibling.removeClass("active"); $btnVariation.removeClass("active"); setTimeout(function() {$(window).trigger('resize');}, 50); } imageActiveIgnore = false; return false; } }); }).on("click", "#"+idElizaPicImageFooter, function() { if (picStatus.imageData.stack === "root") { return this; } var $this = $(this), $sliderList = $("#"+idElizaPicImageSliderList), $slider = $("#"+idElizaPicImageSlider), $btnThumbs = $("#"+idElizaPicImageFooterThumbs), $btnContent = $("#"+idElizaPicImageFooterContent), $btnVariation = $("#"+idElizaPicImageFooterVariations); imageSiblingsActive = true; imageVariationsActive = false; imageThumbnailsActive = false; if ($this.hasClass("active")) { $this.removeClass("active"); $slider.removeClass("show"); imageSiblingsActive = false; setTimeout(function() {$(window).trigger('resize');}, 50); return false; } ajaxSend({ url: uriPicImage+"getImageSiblings/"+picStatus.imageData.stack.system.id, success: function(result) { var $sliderCrop = $("#"+idElizaPicImageSliderCrop); $sliderCrop.hide(); $sliderList.find(".image").remove(); $sliderList.find(".thumbnail").remove(); $("#"+idElizaPicImageSliderTitle).html(langAppPicImgSliderTitle2); $sliderCrop.nextAll("li").remove(); $sliderList.append(tmpR(tmpAppPicImageSliderItems, {list: result, lang: langTmplImageSliderItem}, tmpObjImgSliderItem )); $this.addClass("active"); $slider.addClass("show"); $btnThumbs.removeClass("active"); $btnVariation.removeClass("active"); var $active = $sliderList.find('.sliderItem[data-name="'+picStatus.name+'"] a').addClass("active"), position = $active.offset(); $("#"+idElizaPicImageSlider+" .scroll-content").scrollLeft(position.left); setTimeout(function() {$(window).trigger('resize');}, 50); $(".sliderItem a", $sliderList).off().click(function(e) { // TODO: подъебнуть на слайдер hApi.pushState( e, $(this).attr("href"), null, {callback: 'picRouter'}, appPicStandAloneRouter ); DIAppReg.regState(app.name, $(this).attr("href")); }); } }); }).on("click", "#"+idElizaPicImageFooterVariations, function() { var $this = $(this), $sliderList = $("#"+idElizaPicImageSliderList), $slider = $("#"+idElizaPicImageSlider), $btnThumbs = $("#"+idElizaPicImageFooterThumbs), $btnSibling = $("#"+idElizaPicImageFooterSiblings); imageSiblingsActive = false; imageVariationsActive = true; imageThumbnailsActive = false; if ($this.hasClass("active")) { $this.removeClass("active"); $slider.removeClass("show"); imageVariationsActive = false; setTimeout(function() {$(window).trigger('resize');}, 50); return false; } ajaxSend({ url: uriPicImage+"getImageVariations/"+(picStatus.imageData.image.system.parent || picStatus.imageData.image.system.id), success: function(result) { var $sliderCrop = $("#"+idElizaPicImageSliderCrop); $sliderCrop.hide(); $sliderList.find(".elz.item.image").remove(); $("#"+idElizaPicImageSliderTitle).html(langAppPicImgSliderTitle3); $sliderCrop.nextAll("li").remove(); $sliderList.append(tmpR(tmpAppPicImageSliderItems, {list: result, lang: langTmplImageSliderItem}, tmpObjImgSliderItem )); $this.addClass("active"); $slider.addClass("show"); $btnThumbs.removeClass("active"); $btnSibling.removeClass("active"); setTimeout(function() {$(window).trigger('resize');}, 50); var $active = $sliderList.find('.sliderItem[data-name="'+picStatus.name+'"] a').addClass("active"), position = $active.offset(); $("#"+idElizaPicImageSlider+" .scroll-content").scrollLeft(position.left); setTimeout(function() {$(window).trigger('resize');}, 50); $sliderList.find(".cntrlItem.link").off().click(function() { // TODO: naebnyt' var $this = $(this), name = $this.attr("data-name"); ajaxSend({ url: uriPicImage+"deleteVariation/"+name, success: function() { $this.closest("li.item.image").remove(); } }); }); if (app.standAlone) { $(".sliderItem a", $sliderList).off().click(function(e) { // TODO: подъебнуть на слайдер hApi.pushState( e, $(this).attr("href"), null, {callback: 'picRouter'}, appPicStandAloneRouter ); DIAppReg.regState(app.name, $(this).attr("href")); }); } } }); }).on("click", "#"+idElizaPicImageFooterContent, function() {picItemContentLinks(picStatus.imageData.image.system.id);}); //-------------------------------------------------------------------------------------------------------------- // S L I D E R $subfooter.off().on("click", "#"+idElizaPicImageSlider+" .elzCLStoolbar .link.right.dtr", function() { $("#"+idElizaPicImageFooterThumbs).removeClass("active"); $("#"+idElizaPicImageFooterSiblings).removeClass("active"); $("#"+idElizaPicImageFooterVariations).removeClass("active"); setTimeout(function() {$(window).trigger('resize');}, 50); $("#"+idElizaPicImageSlider).removeClass("show"); }).on("click", "#"+idElizaPicThumbCreate, function() { imageEditActive = false; imageCropActive = true; $("#"+idElizaPicImagePageEdit).removeClass("active"); $("#"+idElizaPicImagePageCrop).addClass("active"); picImageRightCropper(); }); if (UserHandler.getDevice() !== "desktop") { $content.on("swipeleft", function() { $("#"+idElizaPicFooterNext).click(); }).on("swiperight", function() { $("#"+idElizaPicFooterPrev).click(); }); } } /** * Функция удаления альбома. */ function picStackDelete() { var data = picStatus, stackId = data.stackId, $stackList = $jqStackList; if(selectedCount > 0) { var len = selectedList.length, name, a, item, deleteList = []; if(!len) { return false; } var $items = $(".fileItem", $stackList); for(a = 0; a < len; a++) { name = selectedList[a]; item = $items.filter('[data-name="'+name+'"]'); deleteList.push({type: item.attr("data-type"), id:item.attr("data-id")}); if (item.hasClass("orange")) { continue; } item.remove(); } if (data.name === 'trash') { ajaxSend({ url: uriPicStack+"restoreList/", data: {list: JSON.stringify(deleteList)}, success: function() { picSelectionReset(); picPaginationUpdate(); picStackHandlerCallback("", false); } }); } else { ajaxSend({ url: uriPicStack+"deleteList/"+stackId, data: {list: JSON.stringify(deleteList)}, success: function(result){ var selected = 0; for(var a = 0; a < selectedCount; a++) { item = $('.fileItem[data-name="'+selectedList[a]+'"]', $stackList); selected +=1; if (item.hasClass("orange")) { continue; } item.remove(); } /** @namespace result.deleted */ /** @namespace result.prevented */ var deleted = parseInt(result.deleted, 10), prevented = parseInt(result.prevented, 10); notificationLine( langAppPicNotificationDel1+deleted+(prevented ? langAppPicNotificationDel2+prevented+langAppPicNotificationDel3 : ""), prevented ? "blue" : "red 700", prevented ? 5000 : 2500); picStackHandlerCallback("", false); picSelectionReset(); picStackItemsInit(); picPaginationUpdate(); } }); } } } /** * Отображение/сборка всплывающего окна настроек альбома/изображения. * * @param {string } itemType - тип объекта * @param {int} itemId - идентификатор объекта */ function picItemSettings(itemType, itemId) { var id = idElizaPicPopupSettings, idHash = "#"+id, $popup = $(idHash), $window = $(window), baseWidth = 360, baseHeight = 500, wHeight = $window.height(), wWidth = $window.width(), posX = Math.round((wWidth - baseWidth ) / 2), posY = Math.round((wHeight - baseHeight) / 2); if (!$popup.length) { var settingsLayouts = popupAssembler({ setts: { id: id, isDraggable: 1, width: baseWidth, height: baseHeight }, enable: { content: {cnt: {}} } }); $popup = $(idHash); settingsLayouts.top.header.html(tmpR(tmpAppToolbarPanel, { floated: "floated", tone: "dark", withoutbg: 1, bordered: "bordered", class: "padded bottom" })); settingsLayouts.top.header.find('[data-layout="toolbar_app"]').html(tmpR( tmpAppToolbarButton, { tag: 'div', setts: {type: 'default', txt: '1'}, icon: {svg: {main: 'ic-image', sub: 'ic-pencil'}, size: 'small', color: {subbg: 'blue'}}, text: {str: langAppPicSettingsEdit, align: 'right'} }, tmpObjElzIcon )); settingsLayouts.top.header.find('[data-layout="toolbar_right"]').html(tmpR( tmpAppToolbarButton, { tag: 'div', id: idElizaPicPopupSettingsClose, title: langAppPicSettingsClose, class: 'close', setts: {type: 'default', link: '1', tip_h: 'dtr'}, icon: {svg: {main: 'ic-cross'}, size: 'small'} }, tmpObjElzIcon )); $("#"+idElizaPicPopupSettingsClose+", #"+idElizaPicPopupSettingsCancel).off().click(function() {$popup.addClass("hide");}); settingsLayouts.content.cnt.content.html(tmpR( tmpAppScrollContent, {id: idElizaPicPopupScroll} )); inputsInitDefault(); if (UserHandler.getDevice() === "desktop") { $popup.draggable({handle: ".elzCLSenginePanel.header"}); } } ajaxSend({ url: uriPicUtils+"getDataForSettings/"+itemType+"/"+itemId, success: function(result) { result.lang = langTmplPopupSettings; $("#"+idElizaPicPopupScroll).html(tmpR( tmpAppPicPopupSettings, result )); inputsInitDefault(); var $header = $popup.find('.header[data-layout="top_header"]'), $form = $popup.find("form"), $app = $header.find('.wrapInner[data-layout="toolbar_app"]'), $formTitle = $form.find('input[name="title"]'), $formText = $form.find('textarea[name="description"]'), $formAge = $form.find('input[name="age"]'), $formAccess = $form.find('input[name="access"]'), $formAgM = $form.find('input[name="master_age"]'), $formAcM = $form.find('input[name="master_access"]'); /** @namespace result.isAlbum */ $app.find('.text.right').html(langAppPicSettingsEdit+" "+(result.isAlbum ? langAppPicSettings1 : langAppPicSettings2)); $app.find('.elzIc.main').removeClass("ic-image").removeClass("ic-folder").addClass( result.isAlbum ? "ic-folder" : "ic-image" ); DIContextMenu.hide(); $popup.removeClass("hide").css("top", posY).css("left", posX); $popup.css("height", $header.height() + $form.height()); $header.on("submit", function(e) {e.preventDefault();}); modernTextInput($formTitle, function(callback) { picItemSettingsSendData(itemType, itemId, {field: "title", value: $formTitle.val()}, callback); }); modernTextInput($formText, function(callback) { picItemSettingsSendData(itemType, itemId, {field: "descr", value: $formText.val()}, callback); }); $formAccess.on("click", function() { var $this = $(this), $icSpan; if($formAcM.prop("checked")) { $icSpan = $formAcM.next(".checker"); if (!$icSpan.html()) { $icSpan.html(''); } } picItemSettingsSendData(itemType, itemId, {field: "access", value: $this.val(), master: $formAcM.prop("checked") ? "on" : ""}); }); $formAge.on("click", function() { var $this = $(this), $icSpan; if($formAgM.prop("checked")) { $icSpan = $formAgM.next(".checker"); if (!$icSpan.html()) { $icSpan.html(''); } } picItemSettingsSendData(itemType, itemId, {field: "age", value: $this.val(), master: $formAgM.prop("checked") ? "on" : ""}); }); $formAcM.on("change", function() { var $this = $(this); picItemSettingsSendData(itemType, itemId, {field: "access", value: $formAccess.filter(":checked").val(), master: $this.prop("checked") ? "on" : ""}); }); $formAgM.on("change", function() { var $this = $(this); picItemSettingsSendData(itemType, itemId, {field: "age", value: $formAge.filter(":checked").val(), master: $this.prop("checked") ? "on" : ""}); }); } }); } function picItemSettingsSendData(itemType, itemId, data, callback) { ajaxSend({ url: uriPicUtils+"setDataForSettings/"+itemType+"/"+itemId, data: data, success: function(result) { if ($("#"+idElizaPicImageViewer).length) { picGetImageMeta(picStatus.name, function() { if ($("#"+idElizaPicImageDescr).length) { picImageRightContent(); } }); $("#"+idElizaPicFooterTitle).find(".text").html( $("#"+idElizaPicPopupSettings).find('input[name="title"]').val() ); return false; } else if ($("#"+idElizaApp).attr("data-appstate") === "list album" && parseInt(itemId, 10) === parseInt(picStatus.stackId, 10)) { $("#"+idElizaPicFooterTitle).find(".text").html( $("#"+idElizaPicPopupSettings).find('input[name="title"]').val() ); } result.lang = langTmplItemsItem; $('[data-type="'+itemType+'"][data-id="'+itemId+'"]', $jqStackList).off().replaceWith( tmpR(tmpAppPicItemsItem, result) ); picStackItemsInit(); if (callback) { callback(); } } }); } function modernTextInput($object, callback) { var control = $object.elizaIFormsControls(), loading = 0, timeout; $object.on("input", function() { if (!loading) { loading = 1; control.showLoading(); } clearTimeout(timeout); timeout = setTimeout(function() { control.showAccept(); loading = 0; callback(function() {timeout = setTimeout(function() {control.resetIconInfo();}, 2000);}); }, 500); }); } /** * Отображение/сборка окна связей с контентом * * @param {int} imageId - идентификатор изображения */ function picItemContentLinks(imageId) { var id = idElizaPicPopupContent, idHash = "#"+id, scrollId = idElizaPicPopupContentScroll, booksScrl = idElizaPicPopupContentBooks, $popup = $(idHash), $window = $(window), baseWidth = 640, baseHeight = 500, wHeight = $window.height(), wWidth = $window.width(), posX = Math.round((wWidth - baseWidth ) / 2), posY = Math.round((wHeight - baseHeight) / 2); if (!$popup.length) { var settingsLayouts = popupAssembler({ setts: { id: id, isDraggable: 1, width: baseWidth, height: baseHeight }, enable: { top: {subheader: 1}, content: {cnt: {}} } }); $popup = $(idHash); settingsLayouts.top.header.html(tmpR(tmpAppToolbarPanel, {floated: "floated", popup: 1})); settingsLayouts.top.header.find('[data-layout="toolbar_app"]').html(tmpR( tmpAppToolbarButton, { tag: 'div', class: 'grow', setts: {type: 'default', txt: '1'}, icon: {svg: {main: 'ic-sharedfile'}, size: 'small'}, text: {str: langAppPicImgBtn4, align: 'right'} }, tmpObjElzIcon )); settingsLayouts.top.header.find('[data-layout="toolbar_right"]').html(tmpR( tmpAppToolbarButton, { tag: 'div', id: idElizaPicPopupContentClose, title: langAppPicSettingsClose, class: 'close', setts: {type: 'default', link: '1', tip_h: 'dtr'}, icon: {svg: {main: 'ic-cross'}, size: 'small'} }, tmpObjElzIcon )); $("#"+idElizaPicPopupContentClose).off().click(function() {$popup.addClass("hide");}); settingsLayouts.top.subheader.html( '
'+ tmpR(tmpAppScrollContent, {id: booksScrl})+ '
' ); settingsLayouts.content.cnt.content.html(tmpR( tmpAppScrollContent, {id: scrollId} )); inputsInitDefault(); if (UserHandler.getDevice() === "desktop") { $popup.draggable({handle: ".elzCLSenginePanel.header"}); } } DIContextMenu.hide(); $popup.removeClass("hide").css("top", posY).css("left", posX); ajaxSend({ url: uriPicUtils+"getContentLinksFull/"+imageId, success: function(result) { /** @namespace result.bookmarks */ /** @namespace result.bookmarks */ /** @namespace {string} result.status */ if (result.status === "no_links") { $popup.addClass("hide"); return this; } $("#"+booksScrl).html(tmpR( tmpAppCommonBookmarks, {wrap: {id: idElizaPicContentBookmarks}, list: result.bookmarks}, {"common/bookmarks_item": tmpAppCommonBookmarksItem} )); $("#"+scrollId).html(tmpR(tmpAppPicPopupContent, {list: result.content, lang: langTmplPopupContent})); var $books = $("#"+idElizaPicContentBookmarks).find(".bookmarkItem"); $books.off().click(function() { var $this = $(this); if ($this.hasClass("active")) { return this; } ajaxSend({ url: uriPicUtils+"getContentLinksByType/"+imageId+"/"+$this.attr("data-cid"), success: function (result) { $("#"+scrollId).html(tmpR(tmpAppPicPopupContent, {list: result, lang: langTmplPopupContent})); $books.removeClass("active"); $this.addClass("active"); } }); }); } }); } var presetListSet = false; function picPresetNameListReset(selectOverride) { ajaxSend({ url: uriPicUtils+"getCorrectionsPreset/"+picStatus.imageData.image.system.id, success: function(result) { var len = result.length, a, item, html = "", part; for(a = 0; a < len; a++) { item = result[a]; part = ""; if (item.disabled && item.disabled === 1) { part = ' disabled="disabled"'; } else if((item.selected && item.selected === 1 && !selectOverride) || (selectOverride && selectOverride === item.val)) { part = ' selected="selected"'; } html += ''; } $("#"+idElizaPicCorrPresetList).html(html).change(); presetListSet = true; } }); } /** * Сборка/отображение окна проводника по альбомам */ function picExplorerWindow() { var toolTreeLayouts, id = idElizaPicPopupExplorer, idHash = "#"+id, scrollId = idElizaPicPopupExplorerScroll, $popup = $(idHash), $window = $(window), baseWidth = 640, baseHeight = 610, wHeight = $window.height(), wWidth = $window.width(), posX = Math.round((wWidth - baseWidth ) / 2), posY = Math.round((wHeight - baseHeight) / 2), $explorer; if (!$popup.length) { toolTreeLayouts = popupAssembler({ setts: { id: id, isResizable: 1, isDraggable: 1, width: baseWidth, height: baseHeight }, enable: {content: {cnt: {}}} }); $popup = $(idHash); toolTreeLayouts.top.header.html(tmpR(tmpAppToolbarPanel, { floated: "floated", tone: "dark", withoutbg: 1, bordered: "bordered", class: "padded bottom" })); toolTreeLayouts.top.header.find('[data-layout="toolbar_app"]').html(tmpR( tmpAppToolbarButton, { tag: 'div', setts: {type: 'default', txt: '1'}, icon: {svg: {main: 'ic-foldertree'}, size: 'small'}, text: {str: langAppPicExplorer, align: 'right'} }, tmpObjElzIcon )); toolTreeLayouts.top.header.find('[data-layout="toolbar_right"]').html(tmpR( tmpAppToolbarButton, { tag: 'div', id: idElizaPicExplorerClose, title: langAppPicExplorerClose, class: 'close', setts: {type: 'default', link: '1', tip_h: 'dtr'}, icon: {svg: {main: 'ic-cross'}, size: 'small'} }, tmpObjElzIcon )); $("#"+idElizaPicExplorerClose).click(function() {$popup.addClass("hide");}); toolTreeLayouts.content.cnt.content.html(tmpR( tmpAppScrollContent, {id: scrollId} )); inputsInitDefault(); $("#" + scrollId).html(tmpR(tmpAppPicExplorerWp, {id: idElizaPicExplorerWP})); if (UserHandler.getDevice() === "desktop") { $popup.draggable({ handle: ".elzCLSenginePanel.header" }).resizable({ handles: 'all', minWidth: 320, minHeight: 320 }); } $explorer = $("#"+idElizaPicExplorerWP); $explorer.on("click", ".elzCLSlabel.link", function() { picMoveToStack($(this).closest(".elz.expItem"), true); $popup.addClass("hide"); }); $explorer.closest(".padSmall").addClass("picExplorer").on("click", ".expNodeShower", function() { var $this = $(this), $li = $this.closest("li"), id = $this.attr("data-id"); if(!$("#"+idElizaPicExplorerUl+id).length) { ajaxSend({ url: uriPicStack+"getAlbumTree/"+id, async: false, success: function(result) { picExplorerCreateNode(result[id], id, $li); } }); } }).on("click", "a.expLink", function(e) { $("#"+idElizaPicExplorerWP).find(".expInner").removeClass("here"); $(this).closest(".expInner").addClass("here"); if (app.standAlone) { hApi.pushState( e, $(this).attr("href"), null, {callback: 'picRouter'}, appPicStandAloneRouter ); (UserHandler.getDevice() === "desktop" ? $jqStackScroll.closest(".scroll-content") : $jqStackScroll.closest(".elzScroll")).scrollTop(0); DIAppReg.regState(app.name, $(this).attr("href")); } }); } $popup.removeClass("hide").css("top", posY).css("left", posX); $explorer = $("#"+idElizaPicExplorerWP); ajaxSend({ url: uriPicStack+"getAlbumTree", success: function(result) { if (!result["0"]) { return this; } $explorer.html('