/// <summary> /// Click event - updates new values. /// </summary> /// <param name="sender">Sender</param> /// <param name="e">Params</param> protected void nameElem_Click(object sender, EventArgs e) { // Check 'EditForm' permission if (!CMSContext.CurrentUser.IsAuthorizedPerResource("cms.form", "EditForm")) { RedirectToCMSDeskAccessDenied("cms.form", "EditForm"); } // Code name validation string err = new Validator().IsIdentificator(nameElem.CodeName, GetString("general.erroridentificatorformat")).Result; if (err != String.Empty) { lblError.Visible = true; lblError.Text = err; lblInfo.Visible = false; return; } // Validate form id AlternativeFormInfo afi = AlternativeFormInfoProvider.GetAlternativeFormInfo(altFormId); EditedObject = afi; if (afi == null) { return; } // Checking for duplicate items DataSet ds = AlternativeFormInfoProvider.GetAlternativeForms("FormName='" + SqlHelperClass.GetSafeQueryString(nameElem.CodeName, false) + "' AND FormClassID=" + afi.FormClassID, null); if (!DataHelper.DataSourceIsEmpty(ds)) { if (!((ds.Tables.Count == 1) && (ds.Tables[0].Rows.Count == 1) && ( ValidationHelper.GetInteger(ds.Tables[0].Rows[0]["FormID"], 0) == altFormId))) { lblError.Visible = true; lblError.Text = GetString("general.codenameexists"); lblInfo.Visible = false; return; } } afi.FormDisplayName = nameElem.DisplayName; afi.FormName = nameElem.CodeName; AlternativeFormInfoProvider.SetAlternativeFormInfo(afi); // Required to log staging task, alternative form is not binded to bizform as child using (CMSActionContext context = new CMSActionContext()) { context.CreateVersion = false; // Log synchronization BizFormInfo bfi = BizFormInfoProvider.GetBizFormInfo(formId); SynchronizationHelper.LogObjectChange(bfi, TaskTypeEnum.UpdateObject); } URLHelper.Redirect("AlternativeForms_Edit_General.aspx?altformid=" + altFormId + "&formid=" + formId + "&saved=1"); }
private string SynchronizeCompleteInternal() { int sid = SelectedServerID; if (sid <= 0) { sid = SynchronizationInfoProvider.ENABLED_SERVERS; } AddLog(GetString("Synchronization.LoggingTasks")); var objectTypes = GetObjectTypes(); // Create update tasks SynchronizationHelper.LogObjectChange(objectTypes, 0, DateTimeHelper.ZERO_TIME, TaskTypeEnum.UpdateObject, true, false, false, false, false, CurrentSiteID, sid); AddLog(GetString("Synchronization.RunningTasks")); // Get the tasks DataSet ds = GetStagingDataTasks(); // Run the synchronization string result = StagingHelper.RunSynchronization(ds, SelectedServerID, true, CurrentSiteID, AddLog); return(result); }
void layoutElem_OnAfterSave(object sender, EventArgs e) { // Log synchronization BizFormInfo bfi = BizFormInfoProvider.GetBizFormInfo(bizFormId); SynchronizationHelper.LogObjectChange(bfi, TaskTypeEnum.UpdateObject); }
private string SynchronizeCurrentInternal() { int sid = SelectedServerID; if (sid <= 0) { sid = SynchronizationInfoProvider.ENABLED_SERVERS; } string result = null; // Process all types string[] syncTypes = objectType.Split(';'); foreach (string syncType in syncTypes) { if (syncType != string.Empty) { AddLog(String.Format(GetString("Synchronization.LoggingTasks"), syncType)); // Create update tasks SynchronizationHelper.LogObjectChange(syncType, synchronizedSiteId, DateTimeHelper.ZERO_TIME, TaskTypeEnum.UpdateObject, true, false, false, false, false, CurrentSiteID, sid); AddLog(GetString("Synchronization.RunningTasks")); // Get the tasks string where = GetSiteWhere(); DataSet ds = StagingTaskInfoProvider.SelectObjectTaskList(CurrentSiteID, SelectedServerID, syncType, @where, "TaskID", -1, "TaskID"); // Run the synchronization result += StagingTaskRunner.RunSynchronization(ds); } } return(result); }
/// <summary> /// UniGrid action buttons event handler. /// </summary> protected void GridOnAction(string actionName, object actionArgument) { // Process proper action switch (actionName.ToLower()) { case "delete": if (this.IsMediaThumbnail) { // Delete thumbnail file if (this.LibraryInfo != null) { // Check 'File delete' permission if (MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(this.LibraryInfo, "filemodify")) { MediaFileInfoProvider.DeleteMediaFilePreview(CMSContext.CurrentSiteName, this.LibraryID, this.FileInfo.FilePath, false); if (this.FileInfo != null) { SiteInfo si = SiteInfoProvider.GetSiteInfo(FileInfo.FileSiteID); if (si != null) { // Log synchronization task SynchronizationHelper.LogObjectChange(FileInfo, TaskTypeEnum.UpdateObject); } // Drop the cache dependencies CacheHelper.TouchKeys(MediaFileInfoProvider.GetDependencyCacheKeys(this.FileInfo, true)); } } else { lblError.Text = MediaLibraryHelper.GetAccessDeniedMessage("filemodify"); } } // Ensure recent action is forgotten this.gridAttachments.ClearActions(); } else { if (this.LibraryInfo != null) { // Check 'File delete' permission if (MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(this.LibraryInfo, "filedelete")) { // Delete Media File if (this.FileInfo != null) { MediaFileInfoProvider.DeleteMediaFileInfo(this.FileInfo); } } } } // Force reload data ReloadData(); break; } }
protected void altFormFieldEditor_OnAfterSave(object sender, EventArgs e) { // Required to log staging task, alternative form is not bound to bizform as child using (CMSActionContext context = new CMSActionContext()) { context.CreateVersion = false; // Log synchronization SynchronizationHelper.LogObjectChange(bfi, TaskTypeEnum.UpdateObject); } }
void nameElem_Click(object sender, EventArgs e) { // Check 'EditForm' permission if (!CMSContext.CurrentUser.IsAuthorizedPerResource("cms.form", "EditForm")) { RedirectToCMSDeskAccessDenied("cms.form", "EditForm"); } // Code name validation string err = new Validator().IsIdentificator(nameElem.CodeName, GetString("general.erroridentificatorformat")).Result; if (err != String.Empty) { lblError.Visible = true; lblError.Text = err; return; } // Checking for duplicate items DataSet ds = AlternativeFormInfoProvider.GetAlternativeForms("FormName='" + nameElem.CodeName + "' AND FormClassID=" + classId, null); if (!DataHelper.DataSourceIsEmpty(ds)) { lblError.Visible = true; lblError.Text = GetString("general.codenameexists"); return; } // Create new info object AlternativeFormInfo afi = new AlternativeFormInfo(); afi.FormID = 0; afi.FormGUID = Guid.NewGuid(); afi.FormClassID = classId; afi.FormName = nameElem.CodeName; afi.FormDisplayName = nameElem.DisplayName; AlternativeFormInfoProvider.SetAlternativeFormInfo(afi); // Required to log staging task, alternative form is not binded to bizform as child using (CMSActionContext context = new CMSActionContext()) { context.CreateVersion = false; // Log synchronization SynchronizationHelper.LogObjectChange(bfi, TaskTypeEnum.UpdateObject); } URLHelper.Redirect("AlternativeForms_Frameset.aspx?formid=" + formId.ToString() + "&altformid=" + afi.FormID + "&saved=1"); }
protected void altFormEdit_OnAfterSave(object sender, EventArgs e) { // Required to log staging task, alternative form is not bound to bizform as a child using (CMSActionContext context = new CMSActionContext()) { context.CreateVersion = false; // Log synchronization int formId = QueryHelper.GetInteger("formid", 0); BizFormInfo bfi = BizFormInfoProvider.GetBizFormInfo(formId); SynchronizationHelper.LogObjectChange(bfi, TaskTypeEnum.UpdateObject); } }
protected void altFormEdit_OnAfterSave(object sender, EventArgs e) { // Required to log staging task, alternative form is not bound to bizform as a child using (CMSActionContext context = new CMSActionContext()) { context.CreateVersion = false; // Log synchronization SynchronizationHelper.LogObjectChange(bfi, TaskTypeEnum.UpdateObject); } URLHelper.Redirect("AlternativeForms_Frameset.aspx?formid=" + bfi.FormID + "&altformid=" + ((AlternativeFormInfo)EditedObject).FormID + "&saved=1"); }
private void layoutElem_OnAfterSave(object sender, EventArgs e) { // Delete all attachments if layout was deleted if (FormInfo != null) { var dci = DataClassInfoProvider.GetDataClassInfo(FormInfo.FormClassID); if ((dci != null) && string.IsNullOrEmpty(dci.ClassFormLayout)) { // Delete all attachments MetaFileInfoProvider.DeleteFiles(FormInfo.FormID, BizFormInfo.OBJECT_TYPE, ObjectAttachmentsCategories.LAYOUT); } } // Log synchronization SynchronizationHelper.LogObjectChange(FormInfo, TaskTypeEnum.UpdateObject); }
private void listElem_OnDelete(object sender, object actionArgument) { // Check 'EditForm' permission if (!CMSContext.CurrentUser.IsAuthorizedPerResource("cms.form", "EditForm")) { RedirectToCMSDeskAccessDenied("cms.form", "EditForm"); } AlternativeFormInfoProvider.DeleteAlternativeFormInfo(ValidationHelper.GetInteger(actionArgument, 0)); // Required to log staging task, alternative form is not bound to bizform as child using (CMSActionContext context = new CMSActionContext()) { context.CreateVersion = false; // Log synchronization SynchronizationHelper.LogObjectChange(bfi, TaskTypeEnum.UpdateObject); } }
private void layoutElem_OnAfterSave(object sender, EventArgs e) { BizFormInfo bfi = BizFormInfoProvider.GetBizFormInfo(bizFormId); // Delete all attachments if layout was deleted if (bfi != null) { DataClassInfo dci = DataClassInfoProvider.GetDataClass(bfi.FormClassID); if ((dci != null) && string.IsNullOrEmpty(dci.ClassFormLayout)) { // Delete all attachments MetaFileInfoProvider.DeleteFiles(bfi.FormID, FormObjectType.BIZFORM, MetaFileInfoProvider.OBJECT_CATEGORY_LAYOUT); } } // Log synchronization SynchronizationHelper.LogObjectChange(bfi, TaskTypeEnum.UpdateObject); }
private string SynchronizeCurrentInternal() { int sid = SelectedServerID; if (sid <= 0) { sid = SynchronizationInfoProvider.ENABLED_SERVERS; } string result = null; // Process all types string[] syncTypes = objectType.Split(';'); foreach (string syncType in syncTypes) { if (syncType != string.Empty) { AddLog(String.Format(GetString("Synchronization.LoggingTasks"), syncType)); // Scheduled tasks have disabled staging, they have to be dealt in extra manner if (syncType.Equals(TaskInfo.OBJECT_TYPE, StringComparison.InvariantCultureIgnoreCase)) { CreateStagingTasksForScheduledTasks(synchronizedSiteId, CurrentSiteID); } else { // Create update tasks SynchronizationHelper.LogObjectChange(syncType, synchronizedSiteId, DateTimeHelper.ZERO_TIME, TaskTypeEnum.UpdateObject, true, false, false, false, false, CurrentSiteID, sid); } AddLog(GetString("Synchronization.RunningTasks")); // Get the tasks string where = GetSiteWhere(); DataSet ds = StagingTaskInfoProvider.SelectObjectTaskList(CurrentSiteID, SelectedServerID, syncType, @where, "TaskID", -1, "TaskID"); // Run the synchronization result += StagingTaskRunner.RunSynchronization(ds); } } return(result); }
private string SynchronizeCurrentInternal() { int sid = SelectedServerID; if (sid <= 0) { sid = SynchronizationInfoProvider.ENABLED_SERVERS; } AddLog(String.Format(GetString("Synchronization.LoggingTasks"), objectType)); // Create update tasks SynchronizationHelper.LogObjectChange(objectType, 0, DateTimeHelper.ZERO_TIME, TaskTypeEnum.UpdateObject, true, false, false, false, false, CurrentSiteID, sid); AddLog(GetString("Synchronization.RunningTasks")); // Get the tasks DataSet ds = GetStagingDataTasks(); // Run the synchronization return(StagingTaskRunner.RunSynchronization(ds)); }
protected void btnOk_Click(object sender, EventArgs e) { MediaLibraryInfo mli = MediaLibraryInfoProvider.GetMediaLibraryInfo(LibraryID); // Check 'File create' permission if (!MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(mli, "filecreate")) { RaiseOnNotAllowed("filecreate"); return; } // No file for upload specified if (!FileUpload.HasFile) { lblError.Text = GetString("media.newfile.errorempty"); return; } // Check if preview file is image if ((PreviewUpload.HasFile) && (!ImageHelper.IsImage(Path.GetExtension(PreviewUpload.FileName))) && (Path.GetExtension(PreviewUpload.FileName).ToLowerCSafe() != ".ico") && (Path.GetExtension(PreviewUpload.FileName).ToLowerCSafe() != ".tif") && (Path.GetExtension(PreviewUpload.FileName).ToLowerCSafe() != ".tiff") && (Path.GetExtension(PreviewUpload.FileName).ToLowerCSafe() != ".wmf")) { lblError.Text = GetString("Media.File.PreviewIsNotImage"); return; } if (mli != null) { // Get file extension string fileExtension = Path.GetExtension(FileUpload.FileName).TrimStart('.'); // Check file extension if (MediaLibraryHelper.IsExtensionAllowed(fileExtension)) { try { // Create new media file record MediaFileInfo mediaFile = new MediaFileInfo(FileUpload.PostedFile, LibraryID, FolderPath); mediaFile.FileDescription = txtFileDescription.Text; // Save the new file info MediaFileInfoProvider.SetMediaFileInfo(mediaFile); // Save preview if presented if (PreviewUpload.HasFile) { string previewSuffix = MediaLibraryHelper.GetMediaFilePreviewSuffix(CMSContext.CurrentSiteName); if (!String.IsNullOrEmpty(previewSuffix)) { string previewExtension = Path.GetExtension(PreviewUpload.PostedFile.FileName); string previewName = Path.GetFileNameWithoutExtension(MediaLibraryHelper.GetPreviewFileName(mediaFile.FileName, mediaFile.FileExtension, previewExtension, CMSContext.CurrentSiteName, previewSuffix)); string previewFolder = MediaLibraryHelper.EnsurePath(FolderPath.TrimEnd('/')) + "/" + MediaLibraryHelper.GetMediaFileHiddenFolder(CMSContext.CurrentSiteName); byte[] previewFileBinary = new byte[PreviewUpload.PostedFile.ContentLength]; PreviewUpload.PostedFile.InputStream.Read(previewFileBinary, 0, PreviewUpload.PostedFile.ContentLength); // Save preview file MediaFileInfoProvider.SaveFileToDisk(CMSContext.CurrentSiteName, mli.LibraryFolder, previewFolder, previewName, previewExtension, mediaFile.FileGUID, previewFileBinary, false); // Log synchronization task SynchronizationHelper.LogObjectChange(mediaFile, TaskTypeEnum.UpdateObject); } } string normalizedFolderPath = MediaLibraryHelper.EnsurePath(FolderPath).Trim('/'); // If the event was fired by control itself- no save another media file should be proceeded if (e != null) { ltlScript.Text += ScriptHelper.GetScript("RefreshAndClose('" + normalizedFolderPath.Replace("\'", "\\'") + "');"); } else { ltlScript.Text += ScriptHelper.GetScript("RefreshParent('" + normalizedFolderPath.Replace("\'", "\\'") + "');"); } } catch (Exception ex) { // Creation of new media file failed lblError.Text = GetString("media.newfile.failed") + ": " + ex.Message; } } else { // The file with extension selected isn't allowed lblError.Text = String.Format(GetString("media.newfile.extensionnotallowed"), fileExtension); } } }
/// <summary> /// Provides operations necessary to create and store new library file. /// </summary> private void HandleLibrariesUpload() { // Get related library info if (LibraryInfo != null) { MediaFileInfo mediaFile = null; // Get the site name SiteInfo si = SiteInfoProvider.GetSiteInfo(LibraryInfo.LibrarySiteID); string siteName = (si != null) ? si.SiteName : SiteContext.CurrentSiteName; string message = string.Empty; try { // Check the allowed extensions CheckAllowedExtensions(); if (MediaFileID > 0) { #region "Check permissions" if (!MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(LibraryInfo, "FileModify")) { throw new Exception(GetString("media.security.nofilemodify")); } #endregion mediaFile = MediaFileInfoProvider.GetMediaFileInfo(MediaFileID); if (mediaFile != null) { // Ensure object version SynchronizationHelper.EnsureObjectVersion(mediaFile); if (IsMediaThumbnail) { string newFileExt = Path.GetExtension(ucFileUpload.FileName).TrimStart('.'); if ((ImageHelper.IsImage(newFileExt)) && (newFileExt.ToLowerCSafe() != "ico") && (newFileExt.ToLowerCSafe() != "wmf")) { // Update or creation of Media File update string previewSuffix = MediaLibraryHelper.GetMediaFilePreviewSuffix(siteName); if (!String.IsNullOrEmpty(previewSuffix)) { string previewExtension = Path.GetExtension(ucFileUpload.PostedFile.FileName); string previewName = Path.GetFileNameWithoutExtension(MediaLibraryHelper.GetPreviewFileName(mediaFile.FileName, mediaFile.FileExtension, previewExtension, siteName, previewSuffix)); string previewFolder = DirectoryHelper.CombinePath(Path.EnsureSlashes(LibraryFolderPath.TrimEnd('/')), MediaLibraryHelper.GetMediaFileHiddenFolder(siteName)); byte[] previewFileBinary = new byte[ucFileUpload.PostedFile.ContentLength]; ucFileUpload.PostedFile.InputStream.Read(previewFileBinary, 0, ucFileUpload.PostedFile.ContentLength); // Delete current preview thumbnails MediaFileInfoProvider.DeleteMediaFilePreview(siteName, mediaFile.FileLibraryID, mediaFile.FilePath); // Save preview file MediaFileInfoProvider.SaveFileToDisk(siteName, LibraryInfo.LibraryFolder, previewFolder, previewName, previewExtension, mediaFile.FileGUID, previewFileBinary, false, false); // Log synchronization task SynchronizationHelper.LogObjectChange(mediaFile, TaskTypeEnum.UpdateObject); } // Drop the cache dependencies CacheHelper.TouchKeys(MediaFileInfoProvider.GetDependencyCacheKeys(mediaFile, true)); } else { message = GetString("media.file.onlyimgthumb"); } } else { // Get folder path string path = Path.GetDirectoryName(DirectoryHelper.CombinePath(MediaLibraryInfoProvider.GetMediaLibraryFolderPath(LibraryInfo.LibraryID), mediaFile.FilePath)); // If file system permissions are sufficient for file update if (DirectoryHelper.CheckPermissions(path, false, true, true, true)) { // Delete existing media file MediaFileInfoProvider.DeleteMediaFile(LibraryInfo.LibrarySiteID, LibraryInfo.LibraryID, mediaFile.FilePath, true); // Update media file preview if (MediaLibraryHelper.HasPreview(siteName, LibraryInfo.LibraryID, mediaFile.FilePath)) { // Get new unique file name string newName = URLHelper.GetSafeFileName(ucFileUpload.PostedFile.FileName, siteName); // Get new file path string newPath = DirectoryHelper.CombinePath(path, newName); newPath = MediaLibraryHelper.EnsureUniqueFileName(newPath); newName = Path.GetFileName(newPath); // Rename preview MediaLibraryHelper.MoveMediaFilePreview(mediaFile, newName); // Delete preview thumbnails MediaFileInfoProvider.DeleteMediaFilePreviewThumbnails(mediaFile); } // Receive media info on newly posted file mediaFile = GetUpdatedFile(mediaFile); // Save media file information MediaFileInfoProvider.SetMediaFileInfo(mediaFile); } else { // Set error message message = String.Format(GetString("media.accessdeniedtopath"), path); } } } } else { #region "Check permissions" // Creation of new media file if (!MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(LibraryInfo, "FileCreate")) { throw new Exception(GetString("media.security.nofilecreate")); } #endregion // No file for upload specified if (!ucFileUpload.HasFile) { throw new Exception(GetString("media.newfile.errorempty")); } // Create new media file record mediaFile = new MediaFileInfo(ucFileUpload.PostedFile, LibraryID, LibraryFolderPath, ResizeToWidth, ResizeToHeight, ResizeToMaxSideSize, LibraryInfo.LibrarySiteID); mediaFile.FileDescription = ""; // Save the new file info MediaFileInfoProvider.SetMediaFileInfo(mediaFile); } } catch (Exception ex) { // Creation of new media file failed message = ex.Message; } finally { // Create media file info string string mediaInfo = ""; if ((mediaFile != null) && (mediaFile.FileID > 0) && (IncludeNewItemInfo)) { mediaInfo = mediaFile.FileID + "|" + LibraryFolderPath.Replace('\\', '>').Replace("'", "\\'"); } // Ensure message text message = HTMLHelper.EnsureLineEnding(message, " "); if (RaiseOnClick) { ScriptHelper.RegisterStartupScript(Page, typeof(Page), "UploaderOnClick", ScriptHelper.GetScript("if (parent.UploaderOnClick) { parent.UploaderOnClick('" + MediaFileName.Replace(" ", "").Replace(".", "").Replace("-", "") + "'); }")); } string script = String.Format(@" if (typeof(parent.DFU) !== 'undefined') {{ parent.DFU.OnUploadCompleted('{0}'); }} if ((window.parent != null) && (/parentelemid={1}/i.test(window.location.href)) && (window.parent.InitRefresh_{1} != null)){{ window.parent.InitRefresh_{1}({2}, false, '{3}'{4}); }}", QueryHelper.GetString("containerid", ""), ParentElemID, ScriptHelper.GetString(message.Trim()), mediaInfo, (InsertMode ? ", 'insert'" : ", 'update'")); // Call function to refresh parent window ScriptHelper.RegisterStartupScript(Page, typeof(Page), "RefreshParrent", ScriptHelper.GetScript(script)); } } }
/// <summary> /// Synchronizes the current object type. /// </summary> private void SynchronizeCurrent(object parameter) { string result = string.Empty; eventCode = "SYNCCURRENTDATA"; CanceledString = GetString("Tasks.SynchronizationCanceled"); try { int sid = serverId; if (sid <= 0) { sid = SynchronizationInfoProvider.ENABLED_SERVERS; } AddLog(GetString("Synchronization.LoggingTasks")); // Get the tasks List <ISynchronizationTask> tasks = SynchronizationHelper.LogObjectChange(objectType, 0, DateTimeHelper.ZERO_TIME, TaskTypeEnum.UpdateObject, true, false, false, false, false, currentSiteId, sid); AddLog(GetString("Synchronization.RunningTasks")); // Run the synchronization foreach (TaskInfo task in tasks.OfType <TaskInfo>()) { AddLog(string.Format(ResHelper.GetAPIString("synchronization.running", "Processing '{0}' task"), HTMLHelper.HTMLEncode(task.TaskTitle))); result += StagingHelper.RunSynchronization(task.TaskID, serverId, true, currentSiteId); } // Log possible error if (!string.IsNullOrEmpty(result)) { CurrentError = GetString("Tasks.SynchronizationFailed"); AddErrorLog(CurrentError, null); } else { CurrentInfo = GetString("Tasks.SynchronizationOK"); AddLog(CurrentInfo); } } catch (ThreadAbortException ex) { string state = ValidationHelper.GetString(ex.ExceptionState, string.Empty); if (state == CMSThread.ABORT_REASON_STOP) { // Canceled by user CurrentInfo = CanceledString; AddLog(CurrentInfo); } else { CurrentError = GetString("Tasks.SynchronizationFailed"); AddErrorLog(CurrentError, result); } } catch (Exception ex) { CurrentError = GetString("Tasks.SynchronizationFailed") + ": " + ex.Message; AddErrorLog(CurrentError); } finally { // Finalizes log context FinalizeContext(); } }
/// <summary> /// Complete synchronization. /// </summary> public void SynchronizeComplete(object parameter) { string result = null; eventCode = "SYNCCOMPLETEDATA"; CanceledString = GetString("Tasks.SynchronizationCanceled"); try { int sid = serverId; if (sid <= 0) { sid = SynchronizationInfoProvider.ENABLED_SERVERS; } AddLog(GetString("Synchronization.LoggingTasks")); // Get custom tables object types string objectTypes = string.Empty; DataSet dsTables = DataClassInfoProvider.GetCustomTableClasses(currentSiteId, null, null, 0, "ClassName"); if (!DataHelper.DataSourceIsEmpty(dsTables)) { DataTable table = dsTables.Tables[0]; foreach (DataRow dr in table.Rows) { objectTypes += CustomTableItemProvider.GetObjectType(dr["ClassName"].ToString()) + ";"; } } // Get the tasks List <ISynchronizationTask> tasks = SynchronizationHelper.LogObjectChange(objectTypes.Trim(';'), 0, DateTimeHelper.ZERO_TIME, TaskTypeEnum.UpdateObject, true, false, false, false, false, currentSiteId, sid); AddLog(GetString("Synchronization.RunningTasks")); // Run the synchronization foreach (TaskInfo task in tasks.OfType <TaskInfo>()) { AddLog(string.Format(ResHelper.GetAPIString("synchronization.running", "Processing '{0}' task"), HTMLHelper.HTMLEncode(task.TaskTitle))); result += StagingHelper.RunSynchronization(task.TaskID, serverId, true, currentSiteId); } // Log possible errors if (!string.IsNullOrEmpty(result)) { CurrentError = GetString("Tasks.SynchronizationFailed"); AddErrorLog(CurrentError, null); } else { CurrentInfo = GetString("Tasks.SynchronizationOK"); AddLog(CurrentInfo); } } catch (ThreadAbortException ex) { string state = ValidationHelper.GetString(ex.ExceptionState, string.Empty); if (state == CMSThread.ABORT_REASON_STOP) { // Canceled by user CurrentInfo = CanceledString; AddLog(CurrentInfo); } else { CurrentError = GetString("Tasks.SynchronizationFailed"); AddErrorLog(CurrentError, result); } } catch (Exception ex) { CurrentError = GetString("Tasks.SynchronizationFailed") + ": " + ex.Message; AddErrorLog(CurrentError); } finally { // Finalize log context FinalizeContext(); } }
/// <summary> /// Synchronizes the current object type. /// </summary> private void SynchronizeCurrent(object parameter) { string result = null; eventCode = "SYNCCURRENTOBJECT"; CanceledString = GetString("Tasks.SynchronizationCanceled"); try { int sid = serverId; if (sid <= 0) { sid = SynchronizationInfoProvider.ENABLED_SERVERS; } // Process all types string[] syncTypes = objectType.Split(';'); foreach (string syncType in syncTypes) { if (syncType != string.Empty) { AddLog(GetString("Synchronization.LoggingTasks")); // Get the tasks List <ISynchronizationTask> tasks = SynchronizationHelper.LogObjectChange(syncType, siteId, DateTimeHelper.ZERO_TIME, TaskTypeEnum.UpdateObject, true, false, false, false, false, currentSiteId, sid); AddLog(GetString("Synchronization.RunningTasks")); // Run the synchronization result += StagingHelper.RunSynchronization(tasks, serverId, true, siteId, AddLog); } } // Log possible error if (!string.IsNullOrEmpty(result)) { CurrentError = GetString("Tasks.SynchronizationFailed"); AddErrorLog(CurrentError, null); } else { CurrentInfo = GetString("Tasks.SynchronizationOK"); AddLog(CurrentInfo); } } catch (ThreadAbortException ex) { string state = ValidationHelper.GetString(ex.ExceptionState, string.Empty); if (state == CMSThread.ABORT_REASON_STOP) { // Canceled by user CurrentInfo = CanceledString; AddLog(CurrentInfo); } else { CurrentError = GetString("Tasks.SynchronizationFailed"); AddErrorLog(CurrentError, result); } } catch (Exception ex) { CurrentError = GetString("Tasks.SynchronizationFailed") + ": " + ex.Message; AddErrorLog(CurrentError); } finally { // Finalize log context FinalizeContext(); } }
/// <summary> /// Provides operations necessary to create and store new library file. /// </summary> private void HandleLibrariesUpload() { // Get related library info if (LibraryInfo != null) { MediaFileInfo mediaFile = null; // Get the site name string siteName = CMSContext.CurrentSiteName; SiteInfo si = SiteInfoProvider.GetSiteInfo(LibraryInfo.LibrarySiteID); if (si != null) { siteName = si.SiteName; } string message = string.Empty; try { // Check the allowed extensions CheckAllowedExtensions(); if (MediaFileID > 0) { #region "Check permissions" if (!MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(LibraryInfo, "FileModify")) { throw new Exception(GetString("media.security.nofilemodify")); } #endregion mediaFile = MediaFileInfoProvider.GetMediaFileInfo(MediaFileID); if (mediaFile != null) { // Ensure object version SynchronizationHelper.EnsureObjectVersion(mediaFile); if (IsMediaThumbnail) { string newFileExt = Path.GetExtension(ucFileUpload.FileName).TrimStart('.'); if ((ImageHelper.IsImage(newFileExt)) && (newFileExt.ToLower() != "ico") && (newFileExt.ToLower() != "wmf")) { // Update or creation of Media File update string previewSuffix = MediaLibraryHelper.GetMediaFilePreviewSuffix(siteName); if (!String.IsNullOrEmpty(previewSuffix)) { string previewExtension = Path.GetExtension(ucFileUpload.PostedFile.FileName); string previewName = Path.GetFileNameWithoutExtension(MediaLibraryHelper.GetPreviewFileName(mediaFile.FileName, mediaFile.FileExtension, previewExtension, siteName, previewSuffix)); string previewFolder = DirectoryHelper.CombinePath(MediaLibraryHelper.EnsurePath(LibraryFolderPath.TrimEnd('/')), MediaLibraryHelper.GetMediaFileHiddenFolder(siteName)); byte[] previewFileBinary = new byte[ucFileUpload.PostedFile.ContentLength]; ucFileUpload.PostedFile.InputStream.Read(previewFileBinary, 0, ucFileUpload.PostedFile.ContentLength); // Delete current preview thumbnails MediaFileInfoProvider.DeleteMediaFilePreview(siteName, mediaFile.FileLibraryID, mediaFile.FilePath, false); // Save preview file MediaFileInfoProvider.SaveFileToDisk(siteName, LibraryInfo.LibraryFolder, previewFolder, previewName, previewExtension, mediaFile.FileGUID, previewFileBinary, false, false); // Log synchronization task SynchronizationHelper.LogObjectChange(mediaFile, TaskTypeEnum.UpdateObject); } // Drop the cache dependencies CacheHelper.TouchKeys(MediaFileInfoProvider.GetDependencyCacheKeys(mediaFile, true)); } else { message = GetString("media.file.onlyimgthumb"); } } else { // Delete existing media file MediaFileInfoProvider.DeleteMediaFile(LibraryInfo.LibrarySiteID, LibraryInfo.LibraryID, mediaFile.FilePath, true, false); // Update media file preview if (MediaLibraryHelper.HasPreview(siteName, LibraryInfo.LibraryID, mediaFile.FilePath)) { // Get new file path string newPath = DirectoryHelper.CombinePath(Path.GetDirectoryName(mediaFile.FilePath).TrimEnd('/'), ucFileUpload.PostedFile.FileName); newPath = MediaLibraryHelper.EnsureUniqueFileName(newPath); // Get new unique file name string newName = Path.GetFileName(newPath); // Rename preview MediaLibraryHelper.MoveMediaFilePreview(mediaFile, newName); // Delete preview thumbnails MediaFileInfoProvider.DeleteMediaFilePreviewThumbnails(mediaFile); } // Receive media info on newly posted file mediaFile = GetUpdatedFile(mediaFile.Generalized.DataClass); MediaFileInfoProvider.SetMediaFileInfo(mediaFile); } } } else { // Creation of new media file #region "Check permissions" if (!MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(LibraryInfo, "FileCreate")) { throw new Exception(GetString("media.security.nofilecreate")); } #endregion // No file for upload specified if (!ucFileUpload.HasFile) { throw new Exception(GetString("media.newfile.errorempty")); } // Create new media file record mediaFile = new MediaFileInfo(ucFileUpload.PostedFile, LibraryID, LibraryFolderPath, ResizeToWidth, ResizeToHeight, ResizeToMaxSideSize, LibraryInfo.LibrarySiteID); mediaFile.FileDescription = ""; // Save the new file info MediaFileInfoProvider.SetMediaFileInfo(mediaFile); } } catch (Exception ex) { // Creation of new media file failed message = ex.Message; } finally { // Create media file info string string mediaInfo = ""; if ((mediaFile != null) && (mediaFile.FileID > 0) && (IncludeNewItemInfo)) { mediaInfo = mediaFile.FileID + "|" + LibraryFolderPath.Replace('\\', '>').Replace("'", "\\'"); } // Ensure message text message = HTMLHelper.EnsureLineEnding(message, " "); // Call function to refresh parent window ScriptHelper.RegisterStartupScript(this.Page, typeof(Page), "refresh", ScriptHelper.GetScript("if ((wopener.parent != null) && (wopener.parent.InitRefresh_" + ParentElemID + " != null)){wopener.parent.InitRefresh_" + ParentElemID + "(" + ScriptHelper.GetString(message.Trim()) + ", false" + ((mediaInfo != "") ? ", '" + mediaInfo + "'" : "") + (InsertMode ? ", 'insert'" : ", 'update'") + ");}window.close();")); } } }
/// <summary> /// PreRender action on which security settings are set. /// </summary> private void Page_PreRender(object sender, EventArgs e) { if ((Form == null) || !mDocumentSaved) { return; } TreeNode editedNode = Form.EditedObject as TreeNode; // Create or rebuild department content index CreateDepartmentContentSearchIndex(editedNode); if ((editedNode == null) || !editedNode.NodeIsACLOwner) { return; } ForumInfo fi = ForumInfoProvider.GetForumInfo("Default_department_" + editedNode.NodeGUID, SiteContext.CurrentSiteID); MediaLibraryInfo mi = MediaLibraryInfoProvider.GetMediaLibraryInfo("Department_" + editedNode.NodeGUID, SiteContext.CurrentSiteName); // Check if forum of media library exists if ((fi == null) && (mi == null)) { return; } // Get allowed roles ID int aclID = ValidationHelper.GetInteger(editedNode.GetValue("NodeACLID"), 0); DataSet listRoles = AclItemInfoProvider.GetAllowedRoles(aclID, NodePermissionsEnum.Read, "RoleID"); string roleIDs = null; if (!DataHelper.DataSourceIsEmpty(listRoles)) { IList <string> roles = DataHelper.GetStringValues(listRoles.Tables[0], "RoleID"); roleIDs = TextHelper.Join(";", roles); } // Set permissions for forum if (fi != null) { // Get resource object ResourceInfo resForums = ResourceInfoProvider.GetResourceInfo("CMS.Forums"); // Get permissions IDs DataSet dsForumPerm = PermissionNameInfoProvider.GetPermissionNames("ResourceID = " + resForums.ResourceID + " AND (PermissionName != '" + CMSAdminControl.PERMISSION_READ + "' AND PermissionName != '" + CMSAdminControl.PERMISSION_MODIFY + "')", null, 0, "PermissionID"); string forumPermissions = null; if (!DataHelper.DataSourceIsEmpty(dsForumPerm)) { foreach (DataRow drForumPerm in dsForumPerm.Tables[0].Rows) { forumPermissions += drForumPerm["PermissionID"] + ";"; } forumPermissions = forumPermissions.TrimEnd(';'); } // Delete old permissions apart attach file permission ForumRoleInfoProvider.DeleteAllRoles("ForumID = " + fi.ForumID + " AND PermissionID IN (" + forumPermissions.Replace(";", ", ") + ")"); // Set forum permissions ForumRoleInfoProvider.SetPermissions(fi.ForumID, roleIDs, forumPermissions); // Log staging task SynchronizationHelper.LogObjectChange(fi, TaskTypeEnum.UpdateObject); } // Set permissions for media library if (mi == null) { return; } // Get resource object ResourceInfo resMediaLibs = ResourceInfoProvider.GetResourceInfo("CMS.MediaLibrary"); // Get permissions IDs DataSet dsMediaLibPerm = PermissionNameInfoProvider.GetPermissionNames("ResourceID = " + resMediaLibs.ResourceID + " AND (PermissionName = 'LibraryAccess' OR PermissionName = 'FileCreate')", null, 0, "PermissionID"); string mediaLibPermissions = null; if (!DataHelper.DataSourceIsEmpty(dsMediaLibPerm)) { foreach (DataRow drMediaLibPerm in dsMediaLibPerm.Tables[0].Rows) { mediaLibPermissions += drMediaLibPerm["PermissionID"] + ";"; } mediaLibPermissions = mediaLibPermissions.TrimEnd(';'); } // Delete old permissions only for Create file and See library content permissions MediaLibraryRolePermissionInfoProvider.DeleteAllRoles("LibraryID = " + mi.LibraryID + " AND PermissionID IN (" + mediaLibPermissions.Replace(";", ", ") + ")"); // Set media library permissions MediaLibraryRolePermissionInfoProvider.SetPermissions(mi.LibraryID, roleIDs, mediaLibPermissions); // Log staging task SynchronizationHelper.LogObjectChange(mi, TaskTypeEnum.UpdateObject); }
/// <summary> /// Saves modified image data. /// </summary> /// <param name="name">Image name</param> /// <param name="extension">Image extension</param> /// <param name="mimetype">Image mimetype</param> /// <param name="title">Image title</param> /// <param name="description">Image description</param> /// <param name="binary">Image binary data</param> /// <param name="width">Image width</param> /// <param name="height">Image height</param> private void SaveImage(string name, string extension, string mimetype, string title, string description, byte[] binary, int width, int height) { // Process media file if (mfi == null) { mfi = MediaFileInfoProvider.GetMediaFileInfo(mediafileGuid, CurrentSiteName); } if (mfi != null) { MediaLibraryInfo mli = MediaLibraryInfoProvider.GetMediaLibraryInfo(mfi.FileLibraryID); if (mli != null) { string path = Path.GetDirectoryName(DirectoryHelper.CombinePath(MediaLibraryInfoProvider.GetMediaLibraryFolderPath(mli.LibraryID), mfi.FilePath)); bool permissionsOK = DirectoryHelper.CheckPermissions(path, false, true, true, true); // Check file write permissions FileInfo file = FileInfo.New(MediaFileInfoProvider.GetMediaFilePath(mfi.FileLibraryID, mfi.FilePath)); if (file != null) { permissionsOK = permissionsOK && !file.IsReadOnly; } if (permissionsOK) { MediaFileInfo originalMfi = mfi.Clone(true); try { // Ensure object version SynchronizationHelper.EnsureObjectVersion(mfi); if (isPreview && !String.IsNullOrEmpty(PreviewPath)) { SiteInfo si = SiteInfoProvider.GetSiteInfo(mfi.FileSiteID); if (si != null) { string previewExt = (!String.IsNullOrEmpty(extension) && (extension != OldPreviewExt)) ? extension : OldPreviewExt; string previewName = Path.GetFileNameWithoutExtension(PreviewPath); string previewFolder = Path.EnsureSlashes(DirectoryHelper.CombinePath(Path.GetDirectoryName(mfi.FilePath).TrimEnd('/'), MediaLibraryHelper.GetMediaFileHiddenFolder(si.SiteName))); // Delete old preview files with thumbnails MediaFileInfoProvider.DeleteMediaFilePreview(SiteContext.CurrentSiteName, mli.LibraryID, mfi.FilePath); MediaFileInfoProvider.DeleteMediaFilePreviewThumbnails(mfi); // Save preview file MediaFileInfoProvider.SaveFileToDisk(si.SiteName, mli.LibraryFolder, previewFolder, previewName, previewExt, mfi.FileGUID, binary, false, false); // Log synchronization task SynchronizationHelper.LogObjectChange(mfi, TaskTypeEnum.UpdateObject); } } else { string newExt = null; string newName = null; if (!String.IsNullOrEmpty(extension)) { newExt = extension; } if (!String.IsNullOrEmpty(mimetype)) { mfi.FileMimeType = mimetype; } mfi.FileTitle = title; mfi.FileDescription = description; if (width > 0) { mfi.FileImageWidth = width; } if (height > 0) { mfi.FileImageHeight = height; } if (binary != null) { mfi.FileBinary = binary; mfi.FileSize = binary.Length; } // Test all parameters to empty values and update new value if available if (!String.IsNullOrEmpty(name)) { newName = name; } // If filename changed move preview file and remove all ald thumbnails if ((!String.IsNullOrEmpty(newName) && (mfi.FileName != newName)) || (!String.IsNullOrEmpty(newExt) && (mfi.FileExtension.ToLowerCSafe() != newExt.ToLowerCSafe()))) { SiteInfo si = SiteInfoProvider.GetSiteInfo(mfi.FileSiteID); if (si != null) { string fileName = (newName ?? mfi.FileName); string fileExt = (newExt ?? mfi.FileExtension); string newPath = MediaFileInfoProvider.GetMediaFilePath(mfi.FileLibraryID, DirectoryHelper.CombinePath(Path.GetDirectoryName(mfi.FilePath), fileName) + fileExt); // Rename file only if file with same name does not exsists if (!File.Exists(newPath)) { // Ensure max length of file path if (newPath.Length < 260) { // Remove old thumbnails MediaFileInfoProvider.DeleteMediaFileThumbnails(mfi); MediaFileInfoProvider.DeleteMediaFilePreviewThumbnails(mfi); // Move media file MediaFileInfoProvider.MoveMediaFile(si.SiteName, mli.LibraryID, mfi.FilePath, DirectoryHelper.CombinePath(Path.GetDirectoryName(mfi.FilePath), fileName) + fileExt, false); // Set new file name or extension mfi.FileName = fileName; mfi.FileExtension = fileExt; mfi.FileMimeType = MimeTypeHelper.GetMimetype(fileExt); // Ensure new binary if (binary != null) { mfi.FileBinary = binary; mfi.FileSize = binary.Length; } } else { throw new IOExceptions.PathTooLongException(); } } else { baseImageEditor.ShowError(GetString("img.errors.fileexists")); SavingFailed = true; return; } } } else { // Remove old thumbnails MediaFileInfoProvider.DeleteMediaFileThumbnails(mfi); // Remove original media file before save string filePath = MediaFileInfoProvider.GetMediaFilePath(mfi.FileLibraryID, mfi.FilePath); if (File.Exists(filePath)) { File.Delete(filePath); } } // Save new data MediaFileInfoProvider.SetMediaFileInfo(mfi, false); } } catch (Exception e) { // Log exception EventLogProvider.LogException("ImageEditor", "Save file", e); baseImageEditor.ShowError(GetString("img.errors.processing"), tooltipText: e.Message); SavingFailed = true; // Save original media file info MediaFileInfoProvider.SetMediaFileInfo(originalMfi, false); } } else // User hasn't permissions for save file { baseImageEditor.ShowError(GetString("img.errors.filesystempermissions")); SavingFailed = true; } } } }
/// <summary> /// Provides operations necessary to create and store new files in media library. /// </summary> /// <param name="args">Upload arguments.</param> /// <param name="context">HttpContext instance.</param> private void HandleMediaLibraryUpload(UploaderHelper args, HttpContext context) { string uploadPath = Path.Combine(MediaLibraryInfoProvider.GetMediaLibraryFolderPath(args.MediaLibraryArgs.LibraryID), args.MediaLibraryArgs.FolderPath); string filePath = Path.Combine(uploadPath, args.FileName); MediaLibraryInfo mli = MediaLibraryInfoProvider.GetMediaLibraryInfo(args.MediaLibraryArgs.LibraryID); if (mli != null) { MediaFileInfo mediaFile = null; // Get the site name SiteInfo si = SiteInfoProvider.GetSiteInfo(mli.LibrarySiteID); string siteName = (si != null) ? si.SiteName : CMSContext.CurrentSiteName; try { args.IsExtensionAllowed(); if (args.MediaLibraryArgs.MediaFileID > 0) { if (!MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(mli, "FileModify")) { throw new Exception(ResHelper.GetString("media.security.nofilemodify")); } mediaFile = MediaFileInfoProvider.GetMediaFileInfo(args.MediaLibraryArgs.MediaFileID); if (mediaFile != null) { // Ensure object version SynchronizationHelper.EnsureObjectVersion(mediaFile); if (args.MediaLibraryArgs.IsMediaThumbnail) { if ((ImageHelper.IsImage(args.Extension)) && (args.Extension.ToLowerCSafe() != "ico") && (args.Extension.ToLowerCSafe() != "wmf")) { // Update or creation of Media File update string previewSuffix = MediaLibraryHelper.GetMediaFilePreviewSuffix(siteName); if (!String.IsNullOrEmpty(previewSuffix)) { //string previewExtension = Path.GetExtension(ucFileUpload.PostedFile.FileName); string previewName = Path.GetFileNameWithoutExtension(MediaLibraryHelper.GetPreviewFileName(mediaFile.FileName, mediaFile.FileExtension, args.Extension, siteName, previewSuffix)); string previewFolder = String.Format("{0}\\{1}", MediaLibraryHelper.EnsurePath(args.MediaLibraryArgs.FolderPath.TrimEnd('/')), MediaLibraryHelper.GetMediaFileHiddenFolder(siteName)); // This method is limited to 2^32 byte files (4.2 GB) using (FileStream fs = File.OpenRead(args.FilePath)) { byte[] previewFileBinary = new byte[fs.Length]; fs.Read(previewFileBinary, 0, Convert.ToInt32(fs.Length)); // Delete current preview thumbnails MediaFileInfoProvider.DeleteMediaFilePreview(siteName, mediaFile.FileLibraryID, mediaFile.FilePath, false); // Save preview file MediaFileInfoProvider.SaveFileToDisk(siteName, mli.LibraryFolder, previewFolder, previewName, args.Extension, mediaFile.FileGUID, previewFileBinary, false, false); // Log synchronization task SynchronizationHelper.LogObjectChange(mediaFile, TaskTypeEnum.UpdateObject); fs.Close(); } } // Drop the cache dependencies CacheHelper.TouchKeys(MediaFileInfoProvider.GetDependencyCacheKeys(mediaFile, true)); } else { args.Message = ResHelper.GetString("media.file.onlyimgthumb"); } } else { // Get folder path string path = Path.GetDirectoryName(DirectoryHelper.CombinePath(MediaLibraryInfoProvider.GetMediaLibraryFolderPath(mli.LibraryID), mediaFile.FilePath)); // If file system permissions are sufficient for file update if (DirectoryHelper.CheckPermissions(path, false, true, true, true)) { // Delete existing media file MediaFileInfoProvider.DeleteMediaFile(mli.LibrarySiteID, mli.LibraryID, mediaFile.FilePath, true, false); // Update media file preview if (MediaLibraryHelper.HasPreview(siteName, mli.LibraryID, mediaFile.FilePath)) { // Get new unique file name string newName = URLHelper.GetSafeFileName(Path.GetFileName(args.Name), siteName); // Get new file path string newPath = DirectoryHelper.CombinePath(path, newName); newPath = MediaLibraryHelper.EnsureUniqueFileName(newPath); newName = Path.GetFileName(newPath); // Rename preview MediaLibraryHelper.MoveMediaFilePreview(mediaFile, newName); // Delete preview thumbnails MediaFileInfoProvider.DeleteMediaFilePreviewThumbnails(mediaFile); } // Receive media info on newly posted file mediaFile = GetUpdatedFile(mediaFile.Generalized.DataClass, args, mli); MediaFileInfoProvider.SetMediaFileInfo(mediaFile); } } } } else { // Check 'File create' permission if (!MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(mli, "filecreate")) { throw new Exception(ResHelper.GetString("media.security.nofilecreate")); } mediaFile = new MediaFileInfo(args.FilePath, args.MediaLibraryArgs.LibraryID, args.MediaLibraryArgs.FolderPath, args.ResizeToWidth, args.ResizeToHeight, args.ResizeToMaxSide); MediaFileInfoProvider.SetMediaFileInfo(mediaFile); } } catch (Exception ex) { // Creation of new media file failed args.Message = ex.Message; // The CMS.IO library uses reflection to create an instance of file stream if (ex is System.Reflection.TargetInvocationException) { if (ex.InnerException != null && !String.IsNullOrEmpty(ex.Message)) { args.Message = ex.InnerException.Message; } } // Log the error EventLogProvider.LogException("MultiFileUploader", "UPLOADMEDIA", ex); } finally { if (args.RaiseOnClick) { args.AfterScript += string.Format(@" if(window.UploaderOnClick) {{ window.UploaderOnClick('{0}'); }}", args.MediaLibraryArgs.MediaFileName.Replace(" ", "").Replace(".", "").Replace("-", "")); } // Create media library info string string mediaInfo = ((mediaFile != null) && (mediaFile.FileID > 0) && (args.IncludeNewItemInfo)) ? String.Format("'{0}|{1}', ", mediaFile.FileID, args.MediaLibraryArgs.FolderPath.Replace('\\', '>').Replace("'", "\\'")) : ""; // Create after script and return it to the silverlight application, this script will be evaluated by the SL application in the end args.AfterScript += string.Format(@" if (window.InitRefresh_{0}) {{ window.InitRefresh_{0}('{1}', false, {2}); }} else {{ if ('{1}' != '') {{ alert('{1}'); }} }}", args.ParentElementID, ScriptHelper.GetString(args.Message.Trim(), false), mediaInfo + (args.IsInsertMode ? "'insert'" : "'update'")); args.AddEventTargetPostbackReference(); context.Response.Write(args.AfterScript); context.Response.Flush(); } } }
/// <summary> /// Saves modified image data. /// </summary> /// <param name="name">Image name</param> /// <param name="extension">Image extension</param> /// <param name="mimetype">Image mimetype</param> /// <param name="title">Image title</param> /// <param name="description">Image description</param> /// <param name="binary">Image binary data</param> /// <param name="width">Image width</param> /// <param name="height">Image height</param> private void SaveImage(string name, string extension, string mimetype, string title, string description, byte[] binary, int width, int height) { // Process media file if (mfi == null) { mfi = MediaFileInfo.Provider.Get(mediafileGuid, SiteInfoProvider.GetSiteID(CurrentSiteName)); } if (mfi == null) { return; } var mli = MediaLibraryInfo.Provider.Get(mfi.FileLibraryID); if (mli == null) { return; } string path = Path.GetDirectoryName(DirectoryHelper.CombinePath(MediaLibraryInfoProvider.GetMediaLibraryFolderPath(mli.LibraryID), mfi.FilePath)); bool permissionsOK = DirectoryHelper.CheckPermissions(path, false, true, true, true); // Check file write permissions FileInfo file = FileInfo.New(MediaFileInfoProvider.GetMediaFilePath(mfi.FileLibraryID, mfi.FilePath)); if (file != null) { permissionsOK = permissionsOK && !file.IsReadOnly; } if (!permissionsOK) { baseImageEditor.ShowError(GetString("img.errors.filesystempermissions")); SavingFailed = true; return; } MediaFileInfo originalMfi = mfi.Clone(true); try { var site = SiteInfo.Provider.Get(mfi.FileSiteID); if (site == null) { throw new NullReferenceException("Site of media file not specified."); } // Ensure object version SynchronizationHelper.EnsureObjectVersion(mfi); if (isPreview && !String.IsNullOrEmpty(PreviewPath)) { // Save preview file only if it was modified if (binary != null) { string previewExt = !String.IsNullOrEmpty(extension) && (extension != OldPreviewExt) ? extension : OldPreviewExt; string previewName = Path.GetFileNameWithoutExtension(PreviewPath); string previewFolder = Path.EnsureForwardSlashes(DirectoryHelper.CombinePath(Path.GetDirectoryName(mfi.FilePath).TrimEnd('/'), MediaLibraryHelper.GetMediaFileHiddenFolder(site.SiteName))); // Delete old preview files with thumbnails MediaFileInfoProvider.DeleteMediaFilePreview(SiteContext.CurrentSiteName, mli.LibraryID, mfi.FilePath); MediaFileInfoProvider.DeleteMediaFilePreviewThumbnails(mfi); // Save preview file MediaFileInfoProvider.SaveFileToDisk(site.SiteName, mli.LibraryFolder, previewFolder, previewName, previewExt, mfi.FileGUID, binary, false, false); SynchronizationHelper.LogObjectChange(mfi, TaskTypeEnum.UpdateObject); } } else { if (!String.IsNullOrEmpty(mimetype)) { mfi.FileMimeType = mimetype; } mfi.FileTitle = title; mfi.FileDescription = description; if (width > 0) { mfi.FileImageWidth = width; } if (height > 0) { mfi.FileImageHeight = height; } if (binary != null) { mfi.FileBinary = binary; mfi.FileSize = binary.Length; } string newExt = null; string newName = null; if (!String.IsNullOrEmpty(extension)) { newExt = extension; } if (!String.IsNullOrEmpty(name)) { newName = name; } // If file name or extension changed move preview file and remove all ald thumbnails if (NameOrExtensionWasModified(newName, newExt)) { string fileName = (newName ?? mfi.FileName); string fileExt = (newExt ?? mfi.FileExtension); string newPath = MediaFileInfoProvider.GetMediaFilePath(mfi.FileLibraryID, DirectoryHelper.CombinePath(Path.GetDirectoryName(mfi.FilePath), fileName) + fileExt); // Rename file only if file with same name does not exsists if (File.Exists(newPath)) { baseImageEditor.ShowError(GetString("img.errors.fileexists")); SavingFailed = true; return; } // Ensure max length of file path if (newPath.Length >= 260) { throw new IOExceptions.PathTooLongException(); } // Remove old thumbnails MediaFileInfoProvider.DeleteMediaFileThumbnails(mfi); MediaFileInfoProvider.DeleteMediaFilePreviewThumbnails(mfi); // Move media file MediaFileInfoProvider.MoveMediaFile(site.SiteName, mli.LibraryID, mfi.FilePath, DirectoryHelper.CombinePath(Path.GetDirectoryName(mfi.FilePath), fileName) + fileExt); // Set new file name or extension mfi.FileName = fileName; mfi.FileExtension = fileExt; mfi.FileMimeType = MimeTypeHelper.GetMimetype(fileExt); // Ensure new binary if (binary != null) { mfi.FileBinary = binary; mfi.FileSize = binary.Length; } } else { // Remove original media file before save if the image was modified if (binary != null) { // Remove old thumbnails MediaFileInfoProvider.DeleteMediaFileThumbnails(mfi); string filePath = MediaFileInfoProvider.GetMediaFilePath(mfi.FileLibraryID, mfi.FilePath); if (File.Exists(filePath)) { File.Delete(filePath); } } } // Save new data mfi.EnsureUniqueFileName(false); MediaFileInfo.Provider.Set(mfi); } } catch (Exception e) { // Log exception Service.Resolve <IEventLogService>().LogException("ImageEditor", "Save file", e); baseImageEditor.ShowError(GetString("img.errors.processing"), tooltipText: e.Message); SavingFailed = true; // Save original media file info originalMfi.EnsureUniqueFileName(false); MediaFileInfo.Provider.Set(originalMfi); } }
protected void btnOK_Click(object sender, EventArgs e) { // History back count BackCount++; string result = null; // Trim the key before save string key = txtKey.Text.Trim(); // Validate the code name if default culture if (uic.UICultureCode == CultureHelper.DefaultUICulture) { result = new Validator() .NotEmpty(key, rfvKey.ErrorMessage) .IsCodeName(key, GetString("Administration-UICulture_String_New.InvalidCodeName")) .Result; } if (!string.IsNullOrEmpty(result)) { // Display error message ShowError(result); return; } // Update the string ResourceStringInfo ri = SqlResourceManager.GetResourceStringInfo(stringID, uiCultureID); if (ri != null) { // Check if string with given key is not already defined ResourceStringInfo existing = SqlResourceManager.GetResourceStringInfo(key); if ((existing == null) || (existing.StringId == ri.StringId)) { ri.StringIsCustom = chkCustomString.Checked; ri.UICultureCode = uic.UICultureCode; ri.TranslationText = txtText.Text; if (txtKey.Visible) { // If key changed, log deletion of old string string newKey = key; if ((!CMSString.Equals(ri.StringKey, newKey, true)) && (ri.Generalized.LogSynchronization == SynchronizationTypeEnum.LogSynchronization)) { SynchronizationHelper.LogObjectChange(ri, TaskTypeEnum.DeleteObject); } ri.StringKey = key; } // Update key SqlResourceManager.SetResourceStringInfo(ri); ShowChangesSaved(); tabs[1, 0] = ri.StringKey; } else { ShowError(string.Format(GetString("Administration-UICulture_String_New.StringExists"), key)); } } }
/// <summary> /// PreRender action on which security settings are set. /// </summary> private void Page_PreRender(object sender, EventArgs e) { if ((Form == null) || !mDocumentSaved) { return; } TreeNode editedNode = Form.EditedObject as TreeNode; // Create or rebuild department content index CreateDepartmentContentSearchIndex(editedNode); if ((editedNode == null) || !editedNode.NodeIsACLOwner) { return; } ForumInfo fi = ForumInfoProvider.GetForumInfo("Default_department_" + editedNode.NodeGUID, SiteContext.CurrentSiteID); MediaLibraryInfo mi = MediaLibraryInfoProvider.GetMediaLibraryInfo("Department_" + editedNode.NodeGUID, SiteContext.CurrentSiteName); // Check if forum of media library exists if ((fi == null) && (mi == null)) { return; } // Get allowed roles ID int aclID = ValidationHelper.GetInteger(editedNode.GetValue("NodeACLID"), 0); DataSet listRoles = AclItemInfoProvider.GetAllowedRoles(aclID, NodePermissionsEnum.Read, "RoleID"); IList <int> roleIds = null; if (!DataHelper.DataSourceIsEmpty(listRoles)) { roleIds = DataHelper.GetIntegerValues(listRoles.Tables[0], "RoleID") as List <int>; } // Set permissions for forum if (fi != null) { // Get resource object ResourceInfo resForums = ResourceInfoProvider.GetResourceInfo("CMS.Forums"); // Get permissions IDs var forumPermissions = PermissionNameInfoProvider.GetPermissionNames() .Column("PermissionID") .WhereEquals("ResourceID", resForums.ResourceID) .WhereNotEquals("PermissionName", CMSAdminControl.PERMISSION_READ) .WhereNotEquals("PermissionName", CMSAdminControl.PERMISSION_MODIFY); // Delete old permissions apart attach file permission ForumRoleInfoProvider.DeleteAllRoles(new WhereCondition().WhereEquals("ForumID", fi.ForumID).WhereIn("PermissionID", forumPermissions)); // Set forum permissions ForumRoleInfoProvider.SetPermissions(fi.ForumID, roleIds, forumPermissions.Select(p => p.PermissionId).ToArray()); // Log staging task SynchronizationHelper.LogObjectChange(fi, TaskTypeEnum.UpdateObject); } // Set permissions for media library if (mi == null) { return; } // Get resource object ResourceInfo resMediaLibs = ResourceInfoProvider.GetResourceInfo("CMS.MediaLibrary"); // Get permissions IDs var where = new WhereCondition() .WhereEquals("ResourceID", resMediaLibs.ResourceID) .And() .Where(new WhereCondition() .WhereEquals("PermissionName", "LibraryAccess") .Or() .WhereEquals("PermissionName", "FileCreate")); DataSet dsMediaLibPerm = PermissionNameInfoProvider.GetPermissionNames().Where(where).Column("PermissionID"); IList <int> mediaLibPermissionsIds = null; if (!DataHelper.DataSourceIsEmpty(dsMediaLibPerm)) { mediaLibPermissionsIds = DataHelper.GetIntegerValues(dsMediaLibPerm.Tables[0], "PermissionID"); } var deleteWhere = new WhereCondition() .WhereEquals("LibraryID", mi.LibraryID) .WhereIn("PermissionID", mediaLibPermissionsIds); // Delete old permissions only for Create file and See library content permissions MediaLibraryRolePermissionInfoProvider.DeleteAllRoles(deleteWhere.ToString(true)); MediaLibraryRolePermissionInfoProvider.SetPermissions(mi.LibraryID, roleIds, mediaLibPermissionsIds); // Log staging task; SynchronizationHelper.LogObjectChange(mi, TaskTypeEnum.UpdateObject); }
/// <summary> /// Saves resource translations and returns TRUE if save was successful. Returns FALSE if any error ocurred. /// </summary> private void Save() { // Check permissions if (CMSContext.CurrentUser.IsAuthorizedPerResource("CMS.Localization", "LocalizeStrings")) { // Change resource key string key = txtStringKey.Text.Trim(); if (key != rsi.StringKey) { // Validate the key string result = new Validator().NotEmpty(key, rfvKey.ErrorMessage).IsCodeName(key, GetString("Administration-UICulture_String_New.InvalidCodeName")).Result; if (String.IsNullOrEmpty(result)) { ResourceStringInfo riNew = SqlResourceManager.GetResourceStringInfo(txtStringKey.Text.Trim()); // Check if string with given key is not already defined if ((riNew == null) || (rsi.StringId == riNew.StringId)) { // Log deletion of old string if ((!String.Equals(key, rsi.StringKey, StringComparison.OrdinalIgnoreCase)) && (rsi.Generalized.LogSynchronization == SynchronizationTypeEnum.LogSynchronization)) { SynchronizationHelper.LogObjectChange(rsi, TaskTypeEnum.DeleteObject); } rsi.StringKey = key; SqlResourceManager.SetResourceStringInfo(rsi); } // New resource key collides with already existing resource key else { lblError.Text = String.Format(GetString("Administration-UICulture_String_New.StringExists"), key); lblError.Visible = true; } } // New resource string key is not code name else { lblError.Visible = true; lblError.Text = result; } } string existingTranslation = null; string newTranslation = null; FormEngineUserControl control = null; // Go through all cultures foreach (string cultureCode in translations.Keys) { // Check if translation in given culture exists existingTranslation = SqlResourceManager.GetStringStrictly(txtStringKey.Text, cultureCode); // Get control for given culture control = (FormEngineUserControl)translations[cultureCode]; if (control != null) { // Translation is not already created if (String.IsNullOrEmpty(existingTranslation)) { // Get new translation newTranslation = ValidationHelper.GetString(control.Value, String.Empty).Trim(); // Create new translation in given culture if (!String.IsNullOrEmpty(newTranslation)) { UpdateString(cultureCode, newTranslation); } // Translation of default culture must exist else if (cultureCode == CultureHelper.DefaultUICulture) { lblError.Text = String.Format(ResHelper.GetString("localizable.deletedefault"), defaultCultureName); lblError.Visible = true; } } // Existing translation is being updated else { newTranslation = ValidationHelper.GetString(control.Value, String.Empty).Trim(); // Delete translation if new translation is empty if (String.IsNullOrEmpty(newTranslation)) { // Delete translation if (cultureCode != CultureHelper.DefaultUICulture) { SqlResourceManager.DeleteResourceStringInfo(txtStringKey.Text, cultureCode); } // Translation in default culture cannot be deleted or set to empty in Localizable textbox else { lblError.Text = String.Format(ResHelper.GetString("localizable.deletedefault"), defaultCultureName); lblError.Visible = true; } } // Update translation if new translation is not empty else { UpdateString(cultureCode, newTranslation); } } // Set updated translation in current culture if (cultureCode == CultureHelper.PreferredUICulture) { defaultTranslation = newTranslation; } } } } // Current user is not global admin else { lblError.ResourceString = "general.actiondenied"; lblError.Visible = true; pnlControls.Visible = false; } }