public override void RenderInViewMode(HtmlTextWriter writer, CmsPage page, int identifier, CmsLanguage langToRenderFor, string[] paramList) { GlossaryDb db = new GlossaryDb(); GlossaryPlaceholderData placeholderData = db.getGlossary(page, identifier, langToRenderFor, true); string letterToDisplay = getLetterToDisplay(placeholderData); GlossaryData[] items = db.getGlossaryData(placeholderData, letterToDisplay); string[] charactersWithData = db.getAllCharactersWithData(placeholderData); StringBuilder html = new StringBuilder(); html.Append(GetHtmlDisplay(page, items, placeholderData, charactersWithData, letterToDisplay)); writer.Write(html.ToString()); } // RenderView
} // RenderView public override Rss.RssItem[] GetRssFeedItems(CmsPage page, CmsPlaceholderDefinition placeholderDefinition, CmsLanguage langToRenderFor) { GlossaryDb db = new GlossaryDb(); GlossaryPlaceholderData placeholderData = db.getGlossary(page, placeholderDefinition.Identifier, langToRenderFor, true); GlossaryPlaceholderData.GlossaryViewMode origViewMode = placeholderData.ViewMode; // -- gets all glossary items (regardless of the ViewMode) GlossaryData[] items = db.getGlossaryData(placeholderData.GlossaryId); // -- each glossary item gets its own rssItem List <Rss.RssItem> ret = new List <Rss.RssItem>(); foreach (GlossaryData glData in items) { Rss.RssItem rssItem = new Rss.RssItem(); rssItem = base.InitRssItem(rssItem, page, langToRenderFor); rssItem.Description = glData.description; // -- setup the proper link switch (placeholderData.ViewMode) { case GlossaryPlaceholderData.GlossaryViewMode.PagePerLetter: Dictionary <string, string> urlParams = new Dictionary <string, string>(); urlParams.Add("l", glData.word.ToUpper()[0].ToString()); rssItem.Link = new Uri(page.getUrl(urlParams, langToRenderFor)); break; case GlossaryPlaceholderData.GlossaryViewMode.SinglePageWithJumpList: // nothing to do break; default: throw new Exception("Error: invalid GlossaryViewMode"); } // switch } return(ret.ToArray()); }
public override void RenderInEditMode(HtmlTextWriter writer, CmsPage page, int identifier, CmsLanguage langToRenderFor, string[] paramList) { string ControlId = "Glossary_" + page.ID.ToString() + "_" + identifier.ToString() + "_" + langToRenderFor.shortCode; string renderEditorToDivId = ControlId + "RenderArea"; string renderJsonToFormId = ControlId + "JsonFormData"; string jsonDataVarName = ControlId + "_GlossaryJsonData"; GlossaryDb db = new GlossaryDb(); GlossaryPlaceholderData placeholderData = db.getGlossary(page, identifier, langToRenderFor, true); string action = PageUtils.getFromForm(ControlId + "_action", ""); if (String.Compare(action, "updateGlossary", true) == 0) { string receivedJSONData = PageUtils.getFromForm(renderJsonToFormId, ""); GlossaryData[] newData = fromJSON(receivedJSONData); placeholderData.SortOrder = (GlossaryPlaceholderData.GlossarySortOrder)PageUtils.getFromForm(ControlId + "SortOrder", typeof(GlossaryPlaceholderData.GlossarySortOrder), placeholderData.SortOrder); placeholderData.ViewMode = (GlossaryPlaceholderData.GlossaryViewMode)PageUtils.getFromForm(ControlId + "ViewMode", typeof(GlossaryPlaceholderData.GlossaryViewMode), placeholderData.ViewMode); bool b = db.saveUpdatedGlossary(page, identifier, langToRenderFor, placeholderData, newData); if (b) { GlossaryData[] dataToSave = db.getGlossaryData(placeholderData, ""); string jsonToSave = getJSVariableStatement(jsonDataVarName, dataToSave); try { string jsonFilename = System.Web.Hosting.HostingEnvironment.MapPath(CmsContext.ApplicationPath + "_system/writable/Glossary/" + jsonDataVarName + ".js"); System.IO.File.Delete(jsonFilename); System.IO.File.WriteAllText(jsonFilename, jsonToSave); } catch { } } } // if updateGlossary StringBuilder html = new StringBuilder(); html.Append(PageUtils.getHiddenInputHtml(ControlId + "_action", "updateGlossary")); string EOL = Environment.NewLine; html.Append("<p><strong>Glossary Display Configuration:</strong></p>"); html.Append("<table>"); if (CmsConfig.Languages.Length > 1) { html.Append("<tr>"); html.Append("<td>Language:</td><td>" + langToRenderFor.shortCode + "</td>"); html.Append("</tr>"); } html.Append("<tr>"); html.Append("<td>Display Mode: </td>"); html.Append("<td>"); html.Append(PageUtils.getDropDownHtml(ControlId + "ViewMode", ControlId + "ViewMode", Enum.GetNames(typeof(GlossaryPlaceholderData.GlossaryViewMode)), Enum.GetName(typeof(GlossaryPlaceholderData.GlossaryViewMode), placeholderData.ViewMode))); html.Append("</td>"); html.Append("</tr>"); html.Append("<tr>"); html.Append("<td>Output Sorting: </td>"); html.Append("<td>"); html.Append(PageUtils.getDropDownHtml(ControlId + "SortOrder", ControlId + "SortOrder", Enum.GetNames(typeof(GlossaryPlaceholderData.GlossarySortOrder)), Enum.GetName(typeof(GlossaryPlaceholderData.GlossarySortOrder), placeholderData.SortOrder))); html.Append("</td>"); html.Append("</tr>"); html.Append("</table>" + EOL); // -- glossary data // note: the form is linked to GlossaryEditor.js GlossaryData[] items = db.getGlossaryData(placeholderData, ""); html.Append("<p><strong>Glossary Entries:</strong></p>"); html.Append("<div id=\"" + renderEditorToDivId + "\"></div>"); html.Append("<input type=\"button\" onclick=\"AddGlossaryElement('" + renderEditorToDivId + "');\" value=\"add new glossary entry\">" + Environment.NewLine); // -- the JSON data is passed to the server through this hidden form element html.Append(PageUtils.getHiddenInputHtml(renderJsonToFormId, renderJsonToFormId, "")); page.HeadSection.AddJavascriptFile(JavascriptGroup.Library, "js/_system/json2.js"); page.HeadSection.AddJavascriptFile(JavascriptGroup.FrontEnd, "js/_system/GlossaryEditor.js"); page.HeadSection.AddJSStatements(getJSVariableStatement(jsonDataVarName, items)); page.HeadSection.AddJSOnReady("var " + ControlId + "Instance = new GlossaryEditor('" + renderEditorToDivId + "', '" + renderJsonToFormId + "', JSON.parse(" + jsonDataVarName + ")); "); page.HeadSection.AddJSOnReady("GlossaryEditorInstances[GlossaryEditorInstances.length] = " + ControlId + "Instance; "); page.HeadSection.AddJSOnReady("" + ControlId + "Instance.updateDisplay();"); writer.Write(html.ToString()); } // RenderEdit