// Protected Methods (1) /// <summary> /// Sends the tool part content to the specified HtmlTextWriter object, which writes the content to be rendered on the client. /// </summary> /// <param name="output">The HtmlTextWriter object that receives the tool part content.</param> protected override void RenderToolPart(HtmlTextWriter output) { var myWorkWebPart = (MyWorkWebPart)ParentToolPane.SelectedWebPart; string myWorkWebPartHtmlCode = Resources.MyWorkToolPart.Replace("_ID__", UniqueID.Md5()); #region Get Settings string selectedLists = string.Empty; if (myWorkWebPart.SelectedLists != null) { IOrderedEnumerable <string> selLists = (myWorkWebPart.SelectedLists.Where( selectedList => !string.IsNullOrEmpty(selectedList)) .Select( selectedList => string.Format(@"'{0}'", selectedList))).ToList() .OrderBy( l => l); selectedLists = string.Join(",", selLists.ToArray()); } string selectedFields = string.Empty; if (myWorkWebPart.SelectedFields != null) { IOrderedEnumerable <string> selFields = (myWorkWebPart.SelectedFields.Where( selectedField => !string.IsNullOrEmpty(selectedField)) .Select( selectedField => string.Format( @"{{InternalName:'{0}',PrettyName:'{1}'}}", selectedField, selectedField.ToPrettierName()))).ToList(). OrderBy( f => f); selectedFields = string.Join(",", selFields.ToArray()); } List <myworksettings.MWList> myWorkLists = myworksettings.GetMyWorkListsFromDb(_web, MyWork.GetArchivedWebs( _web.Site.ID)); var includedMWLists = new List <string>(); List <myworksettings.MWList> excludedMWLists = myWorkLists.ToList(); if (myWorkWebPart.MyWorkSelectedLists.Count() > 0) { foreach ( myworksettings.MWList myWorkList in myWorkLists.Where(myWorkList => myWorkWebPart.MyWorkSelectedLists.Contains(myWorkList.Name))) { includedMWLists.Add(string.Format(@"{{Id:'{0}',Name:'{1}'}}", myWorkList.Id, myWorkList.Name)); excludedMWLists.Remove(myWorkList); } } else { includedMWLists = excludedMWLists.Select(excludedMWList => string.Format(@"{{Id:'{0}',Name:'{1}'}}", excludedMWList.Id, excludedMWList.Name)).ToList(); excludedMWLists = new List <myworksettings.MWList>(); } string includedMyWorkLists = string.Join(",", includedMWLists.ToArray()); IEnumerable <string> excludedLists = excludedMWLists.Select( excludedMWList => string.Format(@"{{Id:'{0}',Name:'{1}'}}", excludedMWList.Id, SPHttpUtility.HtmlEncode(excludedMWList.Name))); string excludedMyWorkLists = string.Join(",", excludedLists.ToArray()); string crossSiteUrls = string.Empty; if (myWorkWebPart.CrossSiteUrls != null) { IOrderedEnumerable <string> crossSites = myWorkWebPart.CrossSiteUrls.Where( crossSiteUrl => !string.IsNullOrEmpty(crossSiteUrl)) .Select( crossSiteUrl => string.Format(@"'{0}'", crossSiteUrl)) .OrderBy(s => s); crossSiteUrls = string.Join(",", crossSites.ToArray()); } var defaultGlobalViews = new List <string>(); bool defaultViewFound = false; List <MyWorkGridView> myWorkGridViews = MyWork.GetGlobalViews(Utils.GetConfigWeb()).OrderBy(v => v.Name).ToList(); foreach (MyWorkGridView myWorkGridView in myWorkGridViews) { bool defaultView = myWorkWebPart.DefaultGlobalView.Equals(myWorkGridView.Id); if (defaultView) { defaultViewFound = true; } defaultGlobalViews.Add(string.Format(@"{{Id:'{0}',Name:'{1}',Default:{2}}}", myWorkGridView.Id, myWorkGridView.Name, defaultView.Lc())); } defaultGlobalViews.Insert(0, string.Format(@"{{Id:'',Name:'Do Not Set View',Default:{0}}}", (!defaultViewFound).Lc())); string objDefaultGlobalViews = string.Join(",", defaultGlobalViews.ToArray()); bool agoFilterEnabled = false; int agoFilterDays = 0; bool afterFilterEnabled = false; int afterFilterDays = 0; bool indicatorActive = true; int indicatorDays = 2; if (!string.IsNullOrEmpty(myWorkWebPart.DueDayFilter)) { string[] filters = myWorkWebPart.DueDayFilter.Split('|'); bool.TryParse(filters[0], out agoFilterEnabled); int.TryParse(filters[1], out agoFilterDays); bool.TryParse(filters[2], out afterFilterEnabled); int.TryParse(filters[3], out afterFilterDays); } if (!string.IsNullOrEmpty(myWorkWebPart.NewItemIndicator)) { string[] settings = myWorkWebPart.NewItemIndicator.Split('|'); bool.TryParse(settings[0], out indicatorActive); int.TryParse(settings[1], out indicatorDays); } string myWorkObjString = string.Format( @"useCentralizedSettings:{0}, selectedLists:[{1}], selectedFields:[{2}], crossSiteUrls:[{3}], performanceMode:{4}, hideNewButton:{5}, allowEditToggle:{6}, defaultToEditMode:{7}, defaultGlobalViews:[{8}], includedMyWorkLists:[{9}], excludedMyWorkLists:[{10}], daysAgoEnabled:{11}, daysAfterEnabled:{12}, newItemIndicatorEnabled:{13}, daysAgo:'{14}', daysAfter:'{15}', newItemIndicator:'{16}', showToolbar:{17}", myWorkWebPart.UseCentralizedSettings.Lc(), selectedLists, selectedFields, crossSiteUrls, myWorkWebPart.PerformanceMode.Lc(), myWorkWebPart.HideNewButton.Lc(), myWorkWebPart.AllowEditToggle.Lc(), myWorkWebPart.DefaultToEditMode.Lc(), objDefaultGlobalViews, includedMyWorkLists, excludedMyWorkLists, agoFilterEnabled.Lc(), afterFilterEnabled.Lc(), indicatorActive.Lc(), agoFilterDays, afterFilterDays, indicatorDays, myWorkWebPart.ShowToolbar.Lc()); myWorkWebPartHtmlCode = myWorkWebPartHtmlCode.Replace("objMyWork__VAL__", myWorkObjString); #endregion #region Get All Lists and Fields var listsAndFields = new Dictionary <string, List <string> >(); foreach (SPList list in _web.Lists) { try { listsAndFields.Add(list.Title, (list.Fields.Cast <SPField>() .Where(spField => !spField.Hidden && spField.Reorderable) .Select(spField => spField.InternalName)).ToList()); } catch { } } string allListsAndFieldsString = string.Format(@"{0}", string.Join(",", listsAndFields.Select(listAndFields => string.Format(@"{{List:'{0}',Fields:[{1}]}}", listAndFields.Key, string.Join(",", listAndFields.Value. Select( field => string .Format ( @"{{InternalName:'{0}',PrettyName:'{1}'}}", field, field . ToPrettierName ())) . ToArray()))) .ToArray())); myWorkWebPartHtmlCode = myWorkWebPartHtmlCode.Replace("allListsAndFields__VAL__", allListsAndFieldsString); #endregion #region Get Field Lists var fieldLists = new Dictionary <string, List <string> >(); foreach (var listAndFields in listsAndFields) { foreach (string field in listAndFields.Value) { if (!fieldLists.ContainsKey(field)) { fieldLists.Add(field, new List <string>()); } fieldLists[field].Add(listAndFields.Key); } } List <string> fields = fieldLists.Select(fieldList => string.Format(@"{0}:[{1}]", fieldList.Key, string.Join(",", fieldList.Value.Select( list => string.Format(@"'{0}'", list)). ToArray()))) .ToList(); string fieldListsString = string.Join(",", fields.ToArray()); myWorkWebPartHtmlCode = myWorkWebPartHtmlCode.Replace("fieldLists__VAL__", fieldListsString); string listWebsString = string.Join(",", (from myWorkList in myWorkLists let webs = myWorkList.Webs.Select(web => string.Format(@"'{0}'", web)) select string.Format(@"{0}:[{1}]", myWorkList.Id, string.Join(",", webs.ToArray()))).ToArray()); myWorkWebPartHtmlCode = myWorkWebPartHtmlCode.Replace("listWebs__VAL__", listWebsString); #endregion output.Write(myWorkWebPartHtmlCode); }
/// <summary> /// Loads the general settings. /// </summary> private void LoadGeneralSettings() { #region All Lists and Fields Dictionary <string, List <string> > listsAndFields = GetListsAndFields(); Dictionary <string, List <string> > myWorkListsAndFields = GetMyWorkListsAndFields(); #endregion #region Selected Lists MyWorkLists = GetMyWorkListsFromDb(_web, MyWork.GetArchivedWebs(_web.Site.ID)); if (!NewSetup()) { if (!IncludeFixApplied()) { List <string> selectedMyWorkLists = CoreFunctions.getConfigSetting(_web, GeneralSettingsSelectedMyWorkLists).Split(new[] { ',' }). ToList(); var excludedLists = new List <string>(); var includedLists = new List <string>(); foreach (MWList myWorkList in MyWorkLists) { if (DoesListExist(myWorkList.Name)) { if (!selectedMyWorkLists.Contains(myWorkList.Name)) { excludedLists.Add(myWorkList.Name); } else { includedLists.Add(myWorkList.Name); } } } CoreFunctions.setConfigSetting(_web, GeneralSettingsExcludedMyWorkLists, excludedLists.Count > 0 ? string.Join(",", excludedLists.ToArray()) : string.Empty); CoreFunctions.setConfigSetting(_web, GeneralSettingsSelectedMyWorkLists, includedLists.Count > 0 ? string.Join(",", includedLists.ToArray()) : string.Empty); CoreFunctions.setConfigSetting(_web, GeneralSettingsMyWorkIncludeFixApplied, true.ToString(CultureInfo.InvariantCulture)); } } List <string> excludedMyWorkLists = CoreFunctions.getConfigSetting(_web, GeneralSettingsExcludedMyWorkLists).Split(new[] { ',' }).ToList(); foreach (MWList myWorkList in MyWorkLists) { if (DoesListExist(myWorkList.Name)) { var listItem = new ListItem(myWorkList.Name, myWorkList.Id); if (excludedMyWorkLists.Contains(myWorkList.Name)) { lstExcludedMyWorkLists.Items.Add(listItem); } else { lstIncludedMyWorkLists.Items.Add(listItem); } } } List <string> selectedLists = CoreFunctions.getConfigSetting(_web, GeneralSettingsSelectedLists).Split(new[] { ',' }).ToList(); List <string> listSelected = new List <string>(); selectedLists.RemoveAll(string.IsNullOrEmpty); foreach (string selectedList in selectedLists) { if (DoesListExist(selectedList)) { listSelected.Add(selectedList); tbSelectedLists.Text += selectedList + Environment.NewLine; } } CoreFunctions.setConfigSetting(_web, GeneralSettingsSelectedLists, listSelected.Count > 0 ? string.Join(",", listSelected.ToArray()) : string.Empty); #endregion #region Selected Fields List <string> selectedFields = CoreFunctions.getConfigSetting(_web, GeneralSettingsSelectedFields).Split(new[] { ',' }).ToList(); var sFields = new List <ListItem>(); sFields.AddRange((selectedLists.Count > 0 ? (from selectedList in selectedLists where listsAndFields.ContainsKey(selectedList) from field in listsAndFields[selectedList] where selectedFields.Exists(f => f.Equals(field)) let theField = field select new ListItem(theField.ToPrettierName(selectedList, _web), field)) : (from listAndFields in listsAndFields from field in listAndFields.Value where selectedFields.Exists(f => f.Equals(field)) let theField = field select new ListItem(theField.ToPrettierName(listAndFields.Key, _web), field)))); sFields.AddRange(from myWorkListsAndField in myWorkListsAndFields from field in myWorkListsAndField.Value where selectedFields.Contains(field) select new ListItem(field.ToPrettierName(myWorkListsAndField.Key, _web), field)); lstSelectedFields.DataSource = sFields.Distinct().ToList(); lstSelectedFields.DataTextField = "Text"; lstSelectedFields.DataValueField = "Value"; lstSelectedFields.DataBind(); lstSelectedFields.Sort(); #endregion #region Available Fields var availableFields = new List <ListItem>(); availableFields.AddRange((selectedLists.Count > 0 ? (from selectedList in selectedLists where listsAndFields.ContainsKey(selectedList) from field in listsAndFields[selectedList] where !selectedFields.Exists(f => f.Equals(field)) let theField = field select new ListItem(theField.ToPrettierName(selectedList, _web), field)) : (from listAndFields in listsAndFields from field in listAndFields.Value where !selectedFields.Exists(f => f.Equals(field)) let theField = field select new ListItem(theField.ToPrettierName(listAndFields.Key, _web), field)))); availableFields.AddRange(from myWorkListsAndField in myWorkListsAndFields from field in myWorkListsAndField.Value where !selectedFields.Contains(field) select new ListItem(field.ToPrettierName(myWorkListsAndField.Key, _web), field)); lstAllFields.DataTextField = "Text"; lstAllFields.DataValueField = "Value"; lstAllFields.DataSource = availableFields.Distinct().OrderBy(f => f.Text); lstAllFields.DataBind(); #endregion #region Cross Site Urls string crossSiteUrls = CoreFunctions.getConfigSetting(_web, GeneralSettingsCrossSiteUrls); if (!string.IsNullOrEmpty(crossSiteUrls)) { tbCrossSiteUrls.Text = crossSiteUrls.Replace("|", Environment.NewLine); } #endregion #region Performance Mode string performanceMode = CoreFunctions.getConfigSetting(_web, GeneralSettingsPerformanceMode); cbPerformanceMode.Checked = string.IsNullOrEmpty(performanceMode) || performanceMode.Equals("on"); #endregion #region My Work Grid Settings bool agoFilterEnabled = false; int agoFilterDays = 0; bool afterFilterEnabled = false; int afterFilterDays = 0; var dayFilters = CoreFunctions.getConfigSetting(_web, GENERAL_SETTINGS_WORK_DAY_FILTERS); if (!string.IsNullOrEmpty(dayFilters)) { string[] filters = dayFilters.Split('|'); bool.TryParse(filters[0], out agoFilterEnabled); int.TryParse(filters[1], out agoFilterDays); bool.TryParse(filters[2], out afterFilterEnabled); int.TryParse(filters[3], out afterFilterDays); } cbDaysAgo.Checked = agoFilterEnabled; cbDaysAfter.Checked = afterFilterEnabled; if (agoFilterDays > 0) { tbDaysAgo.Text = agoFilterDays.ToString(CultureInfo.InvariantCulture); } if (afterFilterDays > 0) { tbDaysAfter.Text = afterFilterDays.ToString(CultureInfo.InvariantCulture); } tbDaysAgo.Enabled = agoFilterEnabled; tbDaysAfter.Enabled = afterFilterEnabled; hfDaysAgo.Value = tbDaysAgo.Text; hfDaysAfter.Value = tbDaysAfter.Text; bool indicatorActive = true; int indicatorDays = 2; var newItemIndicator = CoreFunctions.getConfigSetting(_web, GENERAL_SETTINGS_NEW_ITEM_INDICATOR); if (!string.IsNullOrEmpty(newItemIndicator)) { var settings = newItemIndicator.Split('|'); bool.TryParse(settings[0], out indicatorActive); int.TryParse(settings[1], out indicatorDays); } cbNewItemIndicator.Checked = indicatorActive; if (indicatorDays > 0) { tbNewItemIndicator.Text = indicatorDays.ToString(CultureInfo.InvariantCulture); } tbNewItemIndicator.Enabled = indicatorActive; hfNewItemIndicator.Value = tbNewItemIndicator.Text; #endregion }