/// <summary> /// AJAX handler to reply a JSON containing the events for /// EventCalendarAggregator placeholder and SimpleCalendar control /// </summary> /// <param name="context"></param> public void ProcessInternalRequest(DateTime start, DateTime end, HttpContext context) { bool showFile = PageUtils.getFromForm("showFile", false); // Basic rule: event calendar shows files, simple calendar does not CmsLanguage lang = CmsLanguage.GetFromHaystack(PageUtils.getFromForm("lang", "en"), CmsConfig.Languages); List <EventCalendarDb.EventCalendarDetailsData> list = new EventCalendarDb().fetchDetailsDataByRange(start, end, lang); List <EventCalendarDb.EventCalendarCategoryData> eventCategories = new EventCalendarDb().fetchCategoryList(); List <FullCalendarEvent> eventsToOutput = new List <FullCalendarEvent>(); foreach (EventCalendarDb.EventCalendarDetailsData c in list) { eventsToOutput.Add(new FullCalendarEvent(c, eventCategories)); if (!showFile) { continue; } CmsPage eventPage = CmsContext.getPageById(c.PageId); List <FileLibraryDetailsData> fileList = new FileLibraryDb().fetchDetailsData(lang, eventPage); foreach (FileLibraryDetailsData f in fileList) { if (userHasAuthority(f)) { eventsToOutput.Add(new FullCalendarEvent(c, f, eventCategories)); } } } string json = JsonWriter.Serialize(eventsToOutput.ToArray()); context.Response.Write(json); }
/// <summary> /// Delete the file from disk (rename the file) /// </summary> /// <param name="detailsPage"></param> /// <returns></returns> protected string deleteFileFromDisk(CmsPage detailsPage, CmsLanguage language) { FileLibraryDb db = new FileLibraryDb(); List <FileLibraryDetailsData> fileList = db.fetchDetailsData(detailsPage); if (fileList.Count == 0) { return(""); } foreach (FileLibraryDetailsData f in fileList) { try { string newFileName = "Deleted." + DateTime.Now.ToString("yyyyMMdd.HH.mm.ss.") + f.FileName; string oldFileNameOnDisk = FileLibraryDetailsData.getTargetNameOnDisk(detailsPage, f.Identifier, language, f.FileName); string newFileNameOnDisk = FileLibraryDetailsData.getTargetNameOnDisk(detailsPage, f.Identifier, language, newFileName); if (File.Exists(oldFileNameOnDisk)) { File.Move(oldFileNameOnDisk, newFileNameOnDisk); } } catch (Exception ex) { return("Error deleting file from disk (" + f.FileName + ": " + ex.Message + ")."); } } return(""); }
/// <summary> /// Handle form submit, either updating an existing category, or adding /// a new category. /// </summary> /// <param name="langArray"></param> /// <param name="controlId"></param> /// <returns></returns> protected string handleFormSubmit(CmsLanguage[] langArray, string controlId) { int id = PageUtils.getFromForm(controlId + "id", -999); if (id == -999) { return(""); } int step = langArray.Length; FileLibraryCategoryData[] data = null; lock (this) // lock this code segment because auto-id cannot be used during insert { if (id == -1) // add new record { data = createAddRecord(langArray, controlId); } else // update existing record { data = createUpdateRecord(langArray, controlId, id); } FileLibraryDb db = new FileLibraryDb(); foreach (FileLibraryCategoryData d in data) { if (id == -1) { // when ID is -1, it is ADD mode if (db.insertCategoryData(d) == false) { return(formatErrorMsg("Error adding record.")); } } else { if (PageUtils.getFromForm(controlId + "delete", "") == "true") { // when ID != -1 and DELETE flag is set, DEL mode string msg = handleDelete(d); if (msg != "") { return(msg); } } else { // when ID != -1 and no DELETE flag, CHG mode if (db.updateCategoryData(d) == false) { return(formatErrorMsg("Error updating record.")); } } } } } return(formatNormalMsg("Updated successfully.")); }
/// <summary> /// Delete the FileLibraryDetails (set Deleted timestamp) /// </summary> /// <param name="detailsPage"></param> /// <returns></returns> protected string deleteFileLibraryDetails(CmsPage detailsPage) { FileLibraryDb db = new FileLibraryDb(); if (db.deleteDetailsData(detailsPage) == false) { return("Error deleting file details (Id " + detailsPage.ID.ToString() + ")."); } return(""); }
/// <summary> /// Delete the FileLibraryAggregator (set Deleted timestamp) /// </summary> /// <param name="aggregatorPage"></param> /// <returns></returns> protected string deleteFileLibraryAggregator(CmsPage aggregatorPage) { FileLibraryDb db = new FileLibraryDb(); if (db.deleteAggregatorData(aggregatorPage) == false) { return("Error deleting file aggregator details (Id " + aggregatorPage.ID.ToString() + ")."); } return(""); }
/// <summary> /// Get all the files attached to this event and render the html. /// </summary> /// <param name="page"></param> /// <param name="lang"></param> /// <returns></returns> protected string renderAttachedFileList(CmsPage page, CmsLanguage lang, CmsUrlFormat fileUrlFormat) { List <FileLibraryDetailsData> fileList = new FileLibraryDb().fetchDetailsData(lang, page); if (fileList.Count == 0) { return(""); } WebPortalUser u = CmsContext.currentWebPortalUser; List <string> renderedLinks = new List <string>(); foreach (FileLibraryDetailsData f in fileList) { string link = renderAttachedFile(lang, f, u, fileUrlFormat); if (link != "") { renderedLinks.Add(link); } } if (renderedLinks.Count == 0) { return(""); } StringBuilder html = new StringBuilder(); html.Append("<tr valign=\"top\">"); html.Append("<td>" + getAttachedFilesText(lang) + ":</td>"); html.Append("<td>" + renderedLinks[0] + "</td>"); html.Append("</tr>"); for (int x = 1; x < renderedLinks.Count; x++) { html.Append("<tr valign=\"top\">"); html.Append("<td> </td>"); html.Append("<td>" + renderedLinks[x] + "</td>"); html.Append("</tr>"); } return(html.ToString()); }
/// <summary> /// Create table body to show the Event Calendar Category records. /// </summary> /// <param name="langArray"></param> /// <param name="controlId"></param> /// <returns></returns> protected string generateContent(CmsLanguage[] langArray, string controlId) { FileLibraryDb db = new FileLibraryDb(); List <FileLibraryCategoryData> list = db.fetchCategoryList(); int step = langArray.Length; StringBuilder html = new StringBuilder(); for (int x = 0; x < list.Count; x = x + step) { html.Append("<tr>" + EOL); FileLibraryCategoryData data1 = list[x]; html.Append("<td>" + EOL); html.Append("<input class=\"" + controlId + "chgButton\" type=\"button\" value=\"Edit\" title=\"" + data1.CategoryId + "\" />" + EOL); html.Append("<input class=\"" + controlId + "delButton\" type=\"button\" value=\"Delete\" title=\"" + data1.CategoryId + "\" />" + EOL); html.Append("<input class=\"" + controlId + "chgSaveButton\" type=\"button\" value=\"Save\" title=\"" + data1.CategoryId + "\" />" + EOL); html.Append("<input class=\"" + controlId + "chgCancelButton\" type=\"button\" value=\"Cancel\" title=\"" + data1.CategoryId + "\" />" + EOL); html.Append("</td>" + EOL); html.Append("<td>" + EOL); html.Append("<select title=\"" + data1.EventRequired.ToString().ToLower() + "\" class=\"" + controlId + "chg\" disabled=\"disabled\" id=\"" + controlId + "eventRequired_" + data1.CategoryId + "\" name=\"" + controlId + "eventRequired\">" + EOL); html.Append(generateEventRequiredOption(data1.EventRequired.ToString().ToLower())); html.Append("</select>" + EOL); html.Append("</td>" + EOL); html.Append("<td>" + EOL); html.Append("<div id=\"" + controlId + "sortOrdinal_" + data1.CategoryId.ToString() + "\">" + data1.SortOrdinal.ToString() + "</td>" + EOL); html.Append("</td>" + EOL); for (int y = 0; y < step; y++) { string l = langArray[y].shortCode; FileLibraryCategoryData data2 = list[y + x]; string catName = data2.CategoryName; html.Append("<td><div id=\"" + controlId + "name_" + l + "_" + data1.CategoryId + "\">" + catName + "</div></td>" + EOL); } html.Append("</tr>" + EOL); } return(html.ToString()); }
/// <summary> /// Create the entity object by reading the new values from html form. /// </summary> /// <param name="langArray"></param> /// <param name="controlId"></param> /// <returns></returns> protected FileLibraryCategoryData[] createAddRecord(CmsLanguage[] langArray, string controlId) { int step = langArray.Length; FileLibraryCategoryData[] data = new FileLibraryCategoryData[step]; FileLibraryDb db = new FileLibraryDb(); int newId = db.fetchNextCategoryId(); for (int x = 0; x < step; x++) { string l = langArray[x].shortCode; data[x] = new FileLibraryCategoryData(); data[x].CategoryId = newId; data[x].Lang = langArray[x]; data[x].EventRequired = PageUtils.getFromForm(controlId + "addEventRequired", false); data[x].CategoryName = PageUtils.getFromForm(controlId + "addName_" + l, ""); data[x].SortOrdinal = PageUtils.getFromForm(controlId + "addSortOrdinal", 0); } return(data); }
/// <summary> /// Delete record from category table /// </summary> /// <param name="d"></param> /// <returns></returns> protected string handleDelete(FileLibraryCategoryData d) { try { FileLibraryDb db = new FileLibraryDb(); if (db.fetchCountByCategory(d) > 0) { return(formatErrorMsg("Some files under this category, cannot delete category record.")); } else if (db.deleteCategoryData(d) == false) { return(formatErrorMsg("Error deleting record.")); } else { return(""); } } catch (Exception ex) { return(formatErrorMsg("Error deleting record. " + ex.Message)); } }