protected void publishButton_OnClick(object sender, EventArgs e)
 {
     WBLogging.Debug("In publishButton_OnClick()");
     MaybeGoToNextPage();
 }
Esempio n. 2
0
        private void RefreshBoundData()
        {
            if (SelectedWorkBoxView == VIEW__SELECTED_RECORDS_TYPE)
            {
                FilterOpenStatus.Enabled   = true;
                FilterClosedStatus.Enabled = true;
                FilterAllStatus.Enabled    = true;
            }
            else
            {
                FilterOpenStatus.Enabled   = false;
                FilterClosedStatus.Enabled = false;
                FilterAllStatus.Enabled    = false;

                ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "ClearHighlightedRecordsTypes", "$('a.ms-navitem').css('font-weight', 'normal');", true);
            }

            WBTaxonomy recordsTypes = WBTaxonomy.GetRecordsTypes(SPContext.Current.Site);
            WBTaxonomy teams        = WBTaxonomy.GetTeams(recordsTypes);

            WBQuery query = new WBQuery();

            query.AddViewColumn(WBColumn.Title);
            query.AddViewColumn(WBColumn.WorkBoxURL);
            //query.AddViewColumn(WBColumn.OwningTeam);
            //                        query.AddViewColumn(WBColumn.FunctionalArea);
            //query.AddViewColumn(WBColumn.ReferenceDate);
            //query.AddViewColumn(WBColumn.ReferenceID);
            //query.AddViewColumn(WBColumn.SeriesTag);
            //                    query.AddViewColumn(WBColumn.InvolvedTeams);
            query.AddViewColumn(WBColumn.WorkBoxStatus);

            checkSortState();
            if (sortColumn != null)
            {
                query.OrderBy(sortColumn, ascending);
            }

            SelectedWorkBoxes.Columns.Clear();
            SelectedWorkBoxes.Columns.Add(WBUtils.FixedIconTemplateField(WorkBox.ICON_16_IMAGE_URL, WBColumn.WorkBoxURL));
            SelectedWorkBoxes.Columns.Add(WBUtils.HyperLinkField(WBColumn.Title, WBColumn.WorkBoxURL, sortColumn, ascending, ""));
            //                    SelectedWorkBoxes.Columns.Add(WBUtils.BoundField(WBColumn.OwningTeam, sortColumn, ascending));
            //                        ShowResults.Columns.Add(WBUtils.BoundField(WBColumn.FunctionalArea, sortColumn, ascending));
            // SelectedWorkBoxes.Columns.Add(WBUtils.BoundField(WBColumn.ReferenceDate, HorizontalAlign.Center, sortColumn, ascending));
            //                  SelectedWorkBoxes.Columns.Add(WBUtils.BoundField(WBColumn.ReferenceID, sortColumn, ascending));
            //                SelectedWorkBoxes.Columns.Add(WBUtils.BoundField(WBColumn.SeriesTag, sortColumn, ascending));
            //    ShowResults.Columns.Add(WBUtils.BoundField(WBColumn.InvolvedTeams, sortColumn, ascending));

            switch (SelectedWorkBoxView)
            {
            case VIEW__RECENTLY_CREATED:
            {
                query.AddViewColumn(WBColumn.WorkBoxDateCreated);
                //query.AddViewColumn(WBColumn.RecordsType);
                SelectedWorkBoxes.Columns.Add(WBUtils.BoundField(WBColumn.WorkBoxDateCreated, HorizontalAlign.Center, sortColumn, ascending));
                //SelectedWorkBoxes.Columns.Add(WBUtils.BoundField(WBColumn.RecordsType, HorizontalAlign.Center, sortColumn, ascending));

                break;
            }

            case VIEW__RECENTLY_MODIFIED:
            {
                query.AddViewColumn(WBColumn.WorkBoxDateLastModified);
                //query.AddViewColumn(WBColumn.RecordsType);
                SelectedWorkBoxes.Columns.Add(WBUtils.BoundField(WBColumn.WorkBoxDateLastModified, HorizontalAlign.Center, sortColumn, ascending));
                //SelectedWorkBoxes.Columns.Add(WBUtils.BoundField(WBColumn.RecordsType, HorizontalAlign.Center, sortColumn, ascending));

                break;
            }

            case VIEW__RECENTLY_VISITED:
            {
                query.AddViewColumn(WBColumn.WorkBoxDateLastVisited);
                //query.AddViewColumn(WBColumn.RecordsType);
                SelectedWorkBoxes.Columns.Add(WBUtils.BoundField(WBColumn.WorkBoxDateLastVisited, HorizontalAlign.Center, sortColumn, ascending));
                //SelectedWorkBoxes.Columns.Add(WBUtils.BoundField(WBColumn.RecordsType, HorizontalAlign.Center, sortColumn, ascending));

                break;
            }

            case VIEW__SELECTED_RECORDS_TYPE:
            {
                query.AddViewColumn(WBColumn.ReferenceDate);

                SelectedWorkBoxes.Columns.Add(WBUtils.BoundField(WBColumn.ReferenceDate, HorizontalAlign.Center, sortColumn, ascending));

                break;
            }
            }

            SelectedWorkBoxes.Columns.Add(WBUtils.BoundField(WBColumn.WorkBoxStatus, HorizontalAlign.Center, sortColumn, ascending));


            WBRecordsType recordsType = null;
            WBTeam        team        = WBTeam.GetFromTeamSite(teams, SPContext.Current.Web);

            if (team != null)
            {
                switch (SelectedInvolvementFilter)
                {
                case FILTER_INVOLVEMENT__OWNS:
                {
                    WBLogging.Debug("Adding a filter for OwningTeam");
                    query.AddEqualsFilter(WBColumn.OwningTeam, team);
                    break;
                }

                case FILTER_INVOLVEMENT__INVOLVED:
                {
                    WBLogging.Debug("Adding a filter for InvolvedTeams");
                    query.AddEqualsFilter(WBColumn.InvolvedTeams, team);
                    break;
                }

                case FILTER_INVOLVEMENT__VISITING:
                {
                    WBLogging.Debug("Adding a filter for VisitingTeams");
                    query.AddEqualsFilter(WBColumn.VisitingTeams, team);
                    break;
                }
                }
            }

            if (SelectedWorkBoxView == VIEW__SELECTED_RECORDS_TYPE)
            {
                if (SelectedRecordsTypeGUID != "")
                {
                    recordsType = recordsTypes.GetRecordsType(new Guid(SelectedRecordsTypeGUID));
                }
                else if (!IsPostBack && !String.IsNullOrEmpty(webPart.InitialRecordsType))
                {
                    string initialRecordsTypePath = webPart.InitialRecordsType.Replace(" / ", "/").Trim();
                    recordsType = recordsTypes.GetSelectedRecordsType(initialRecordsTypePath);
                }

                if (recordsType != null)
                {
                    String recordsTypePath = recordsType.FullPath;
                    //recordsTypePath = recordsTypePath.Substring(1, recordsTypePath.Length - 1);
                    recordsTypePath = recordsTypePath.Replace("/", " / ");

                    SelectionTitle.Text       = recordsTypePath;
                    SelectionDescription.Text = recordsType.Description;

                    WBQueryClause recordsTypeClause = new WBQueryClause(WBColumn.RecordsType, WBQueryClause.Comparators.Equals, recordsType);
                    recordsTypeClause.UseDescendants = false;
                    query.AddClause(recordsTypeClause);

                    string statusFilter = SelectedWorkBoxStatusFilter;
                    if (statusFilter != "All")
                    {
                        query.AddEqualsFilter(WBColumn.WorkBoxStatus, statusFilter);
                    }

                    try
                    {
                        using (WBCollection collection = new WBCollection(recordsType.WorkBoxCollectionUrl))
                        {
                            DataTable dataTable = collection.Query(query);

                            SelectedWorkBoxes.DataSource = dataTable;
                            SelectedWorkBoxes.DataBind();

                            if (recordsType.CanCurrentUserCreateWorkBoxForTeam(collection, team))
                            {
                                string createNewURL  = collection.GetUrlForNewDialog(recordsType, team);
                                string createNewText = recordsType.CreateNewWorkBoxText;

                                CreateNewWorkBoxLink.Text = "<a href=\"#\" onclick=\"javascript: WorkBoxFramework_commandAction('" + createNewURL + "', 730, 800);\">" + createNewText + "</a>";
                            }
                            else
                            {
                                CreateNewWorkBoxLink.Text = "";
                            }
                        }
                    }
                    catch (Exception exception)
                    {
                        SelectedWorkBoxes.DataSource = null;
                        SelectedWorkBoxes.DataBind();

                        SelectionDescription.Text = SelectionDescription.Text + "<p><em>(An exception occured when trying to query the work boxes for this records type!)</em></p>";
                        CreateNewWorkBoxLink.Text = "";

                        WBLogging.RecordsTypes.Unexpected("Exception occurred on a team site when trying to query the work boxes of records type: " + recordsTypePath, exception);
                    }
                }
                else
                {
                    WBUtils.logMessage("SelectedRecordsTypeGUID was empty");
                }
            }
            else
            {
                String cachedDetailsListUrl = WBFarm.Local.OpenWorkBoxesCachedDetailsListUrl;

                // OK so this is a general 'recent' query
                using (SPWeb cacheWeb = SPContext.Current.Site.OpenWeb(cachedDetailsListUrl))
                {
                    SPList cacheList = cacheWeb.GetList(cachedDetailsListUrl);

                    DataTable dataTable = cacheList.WBxGetDataTable(SPContext.Current.Site, query);

                    SelectedWorkBoxes.DataSource = dataTable;
                    SelectedWorkBoxes.DataBind();

                    CreateNewWorkBoxLink.Text = "";

                    SelectionTitle.Text       = SelectedWorkBoxView + " Work Boxes";
                    SelectionDescription.Text = "Select a category from left hand tree navigation to list work boxes of that type.";
                }
            }


            // OK so now to check that the right filters are highlighted:
            ViewRecentlyCreated.CssClass  = "";
            ViewRecentlyModified.CssClass = "";
            ViewRecentlyVisited.CssClass  = "";

            if (SelectedWorkBoxView == VIEW__RECENTLY_CREATED)
            {
                ViewRecentlyCreated.CssClass = "wbf-filter-selected";
            }
            if (SelectedWorkBoxView == VIEW__RECENTLY_MODIFIED)
            {
                ViewRecentlyModified.CssClass = "wbf-filter-selected";
            }
            if (SelectedWorkBoxView == VIEW__RECENTLY_VISITED)
            {
                ViewRecentlyVisited.CssClass = "wbf-filter-selected";
            }

            FilterByOwns.CssClass     = "";
            FilterByInvolved.CssClass = "";
            FilterByVisiting.CssClass = "";

            if (SelectedInvolvementFilter == FILTER_INVOLVEMENT__OWNS)
            {
                FilterByOwns.CssClass = "wbf-filter-selected";
            }
            if (SelectedInvolvementFilter == FILTER_INVOLVEMENT__INVOLVED)
            {
                FilterByInvolved.CssClass = "wbf-filter-selected";
            }
            if (SelectedInvolvementFilter == FILTER_INVOLVEMENT__VISITING)
            {
                FilterByVisiting.CssClass = "wbf-filter-selected";
            }

            FilterOpenStatus.CssClass   = "";
            FilterClosedStatus.CssClass = "";
            FilterAllStatus.CssClass    = "";

            if (SelectedWorkBoxStatusFilter == "Open")
            {
                FilterOpenStatus.CssClass = "wbf-filter-selected";
            }
            if (SelectedWorkBoxStatusFilter == "Closed")
            {
                FilterClosedStatus.CssClass = "wbf-filter-selected";
            }
            if (SelectedWorkBoxStatusFilter == "All")
            {
                FilterAllStatus.CssClass = "wbf-filter-selected";
            }
        }
        private void RenderPage()
        {
            if (process == null)
            {
                WBLogging.Debug("process == null");
                return;
            }

            DocumentsBeingPublished.Text = process.GetStandardHTMLTableRows();

            SPListItem currentItem = process.CurrentItem;

            EditShortTitle.Text = process.CurrentShortTitle;
            ShortTitle.Text     = process.CurrentShortTitle;

            WBLogging.Debug("Passed title / name");

            SelectLocationButton.OnClientClick = "WorkBoxFramework_pickANewLocation(WorkBoxFramework_PublishDoc_pickedANewLocation, '" + process.FunctionalAreaUIControlValue + "', '" + process.RecordsTypeUIControlValue + "'); return false;";


            if (!String.IsNullOrEmpty(process.ToReplaceRecordID) && process.ReplaceAction != WBPublishingProcess.REPLACE_ACTION__CREATE_NEW_SERIES)
            {
                recordBeingReplaced = manager.Libraries.GetRecordByID(process.ToReplaceRecordID);
                if (recordBeingReplaced == null)
                {
                    ErrorMessageLabel.Text = "Could not find the record that is meant to be replaced. Supposedly it has RecordID = " + process.ToReplaceRecordID;
                    return;
                }
            }

            if (recordBeingReplaced == null)
            {
                if (documentFunctionalArea != null && documentRecordsType != null)
                {
                    LocationPath.Text = documentFunctionalArea.Name + " / " + documentRecordsType.FullPath.Replace("/", " / ");
                }
                else
                {
                    LocationPath.Text = "<none>";
                }
            }
            else
            {
                LocationPath.Text = process.ToReplaceRecordPath;
            }

            if (recordBeingReplaced == null || process.ReplaceAction == WBPublishingProcess.REPLACE_ACTION__CREATE_NEW_SERIES)
            {
                WBLogging.Debug("Setting buttons etc for NEW");

                NewRadioButton.Checked      = true;
                ReplaceRadioButton.Checked  = false;
                LeaveOnIzziCheckBox.Enabled = true; // Otherwise the surrounding span tag is disabled too! - we'll disable with jQuery!
                SelectLocationButton.Text   = "Choose Location";
                PublishAll.Enabled          = true;

                NewOrReplace.Text = "New";
            }
            else
            {
                WBLogging.Debug("Setting buttons etc for REPLACE");

                NewRadioButton.Checked      = false;
                ReplaceRadioButton.Checked  = true;
                LeaveOnIzziCheckBox.Enabled = true;
                if (process.ReplaceAction == WBPublishingProcess.REPLACE_ACTION__LEAVE_ON_IZZI)
                {
                    LeaveOnIzziCheckBox.Checked = true;
                }
                else
                {
                    LeaveOnIzziCheckBox.Checked = false;
                }
                SelectLocationButton.Text = "Choose Document";
                PublishAll.Enabled        = false;

                NewOrReplace.Text = "Replace";
            }

            WBLogging.Debug("Just before protective zone stage");

            TheProtectiveZone.Text = process.ProtectiveZone;

            if (showSubjectTags)
            {
                if (documentRecordsType == null || documentRecordsType.IsDocumentSubjectTagsRequired)
                {
                    SubjectTagsTitle.Text = "Subject Tags" + WBConstant.REQUIRED_ASTERISK;
                }
                else
                {
                    SubjectTagsTitle.Text = "Subject Tags (optional)";
                }

                if (documentRecordsType != null)
                {
                    SubjectTagsDescription.Text = documentRecordsType.DocumentSubjectTagsDescription;
                }

                process.SubjectTagsTaxonomy.InitialiseTaxonomyControl(SubjectTagsField, WorkBox.COLUMN_NAME__SUBJECT_TAGS, true);
                SubjectTagsField.Text = process.SubjectTagsUIControlValue;
            }

            /*
             * if (showReferenceID)
             * {
             *  if (documentRecordsType.IsDocumentReferenceIDRequired)
             *  {
             *      ReferenceIDTitle.Text = "Reference ID" + WBConstant.REQUIRED_ASTERISK;
             *  }
             *  else
             *  {
             *      ReferenceIDTitle.Text = "Reference ID (optional)";
             *  }
             *  ReferenceIDDescription.Text = documentRecordsType.DocumentReferenceIDDescription;
             *  ReferenceID.Text = sourceDocAsItem.WBxGetColumnAsString(WorkBox.COLUMN_NAME__REFERENCE_ID);
             * }
             *
             * if (showReferenceDate)
             * {
             *  if (documentRecordsType.IsDocumentReferenceDateRequired)
             *  {
             *      ReferenceDateTitle.Text = "Reference Date" + WBConstant.REQUIRED_ASTERISK;
             *  }
             *  else
             *  {
             *      ReferenceDateTitle.Text = "Reference Date (optional)";
             *  }
             *  ReferenceDateDescription.Text = documentRecordsType.DocumentReferenceDateDescription;
             *  if (sourceDocAsItem.WBxColumnHasValue(WorkBox.COLUMN_NAME__REFERENCE_DATE))
             *  {
             *      ReferenceDate.SelectedDate = (DateTime)sourceDocAsItem[WorkBox.COLUMN_NAME__REFERENCE_DATE];
             *  }
             *  else
             *  {
             *      ReferenceDate.SelectedDate = DateTime.Now;
             *  }
             * }
             *
             * if (showSeriesTag)
             * {
             *  if (documentRecordsType.IsDocumentSeriesTagRequired)
             *  {
             *      SeriesTagTitle.Text = "Series Tag" + WBConstant.REQUIRED_ASTERISK;
             *  }
             *  else
             *  {
             *      SeriesTagTitle.Text = "Series Tag (optional)";
             *  }
             *  SeriesTagDescription.Text = documentRecordsType.DocumentSeriesTagDescription;
             *
             *  SeriesTagDropDownList.DataSource = GetSeriesTagDataSource(documentRecordsType.DocumentSeriesTagParentTerm(process.SeriesTagsTaxonomy));
             *  SeriesTagDropDownList.DataTextField = "SeriesTagTermName";
             *  SeriesTagDropDownList.DataValueField = "SeriesTagTermUIControlValue";
             *  SeriesTagDropDownList.DataBind();
             *
             *  if (sourceDocAsItem.WBxColumnHasValue(WorkBox.COLUMN_NAME__SERIES_TAG))
             *  {
             *      SeriesTagDropDownList.SelectedValue = sourceDocAsItem.WBxGetSingleTermColumn<WBTerm>(process.SeriesTagsTaxonomy, WorkBox.COLUMN_NAME__SERIES_TAG).UIControlValue;
             *  }
             * }
             *
             * if (showScanDate)
             * {
             *  if (documentRecordsType.IsDocumentScanDateRequired)
             *  {
             *      ScanDateTitle.Text = "Scan Date" + WBConstant.REQUIRED_ASTERISK;
             *  }
             *  else
             *  {
             *      ScanDateTitle.Text = "Scan Date (optional)";
             *  }
             *  ScanDateDescription.Text = documentRecordsType.DocumentScanDateDescription;
             *  if (sourceDocAsItem.WBxColumnHasValue(WorkBox.COLUMN_NAME__SCAN_DATE))
             *  {
             *      ScanDate.SelectedDate = (DateTime)sourceDocAsItem[WorkBox.COLUMN_NAME__SCAN_DATE];
             *  }
             * }
             */

            WBLogging.Debug("Just owning team");

            process.TeamsTaxonomy.InitialiseTaxonomyControl(OwningTeamField, WorkBox.COLUMN_NAME__OWNING_TEAM, false);
            OwningTeamField.Text = process.OwningTeamUIControlValue;

            WBLogging.Debug("Just involved team");

            process.TeamsTaxonomy.InitialiseTaxonomyControl(InvolvedTeamsField, WorkBox.COLUMN_NAME__INVOLVED_TEAMS, true);
            InvolvedTeamsField.Text = process.InvolvedTeamsWithoutOwningTeamAsUIControlValue;

            if (process.ProtectiveZone == WBRecordsType.PROTECTIVE_ZONE__PUBLIC)
            {
                WebPageURL.Text = process.WebPageURL;
                showWebPageURL  = true;
            }
            else
            {
                WebPageURL.Text    = "";
                process.WebPageURL = "";
                showWebPageURL     = false;
            }


            if (process.CountStillToPublish > 1)
            {
                if (process.ProtectiveZone == WBRecordsType.PROTECTIVE_ZONE__PROTECTED)
                {
                    showPublishAllButton = manager.AllowBulkPublishOfFileTypes(process.DifferentFileTypesStillToPublish);
                }
                else
                {
                    showPublishAllButton = manager.AllowBulkPublishToPublicOfFileTypes(process.DifferentFileTypesStillToPublish);
                }
            }
            else
            {
                showPublishAllButton = false;
            }


            WBLogging.Debug("Just before serialization");

            // Lastly we're going to capture the state of the publishing process:
            PublishingProcessJSON.Value = WBUtils.SerializeToCompressedJSONForURI(process);
        }
Esempio n. 4
0
        protected void ProcessSelection(String selectedPath)
        {
            WBLogging.Debug("In ProcessSelection(): selectedPath = " + selectedPath);

            if (!String.IsNullOrEmpty(selectedPath))
            {
                if (string.IsNullOrEmpty(selectedPath))
                {
                    selectedPath = "/";
                }

                selectedPath = selectedPath.Replace("(root)", "");
                if (string.IsNullOrEmpty(selectedPath))
                {
                    selectedPath = "/";
                }

                SelectedFolderPath.Text = selectedPath;

                // Now for the bit where the path is analysed to pick out the selected functional area and the records type:

                String[] pathSteps = selectedPath.Split('/');

                // We're only interested in selections of 3rd level 'folders' that are: functional area / records type / records type  ... or below.
                if (pathSteps.Length < 3)
                {
                    return;
                }

                WBTerm functionalArea = manager.FunctionalAreasTaxonomy.GetSelectedWBTermByPath(pathSteps[0]);
                if (functionalArea == null)
                {
                    WBLogging.Debug("The functional area part of the selected path came back null: " + selectedPath);
                    return;
                }

                Term recordsTypeTerm = manager.RecordsTypesTaxonomy.GetOrCreateSelectedTermByPath(pathSteps[1] + "/" + pathSteps[2]);
                if (recordsTypeTerm == null)
                {
                    WBLogging.Debug("The records type part of the selected path came back null: " + selectedPath);
                    return;
                }
                WBRecordsType recordsType = new WBRecordsType(manager.RecordsTypesTaxonomy, recordsTypeTerm);


                process.FunctionalAreaUIControlValue = functionalArea.UIControlValue;
                process.RecordsTypeUIControlValue    = recordsType.UIControlValue;

                WBLogging.Debug("Set the new records type to be: " + process.RecordsTypeUIControlValue);


                // Finally let's see if there is a specific record being selected as well:
                if (!process.IsReplaceActionToCreateNewSeries)
                {
                    WBRecord record = manager.Libraries.GetRecordByPath(selectedPath);

                    SelectedRecordID.Text       = record.RecordID;
                    process.ToReplaceRecordID   = record.RecordID;
                    process.ToReplaceRecordPath = selectedPath;
                    process.ToReplaceShortTitle = record.Title;
                    process.ToReplaceSubjectTagsUIControlValue = record.SubjectTagsUIControlValue;
                }


                PublishingProcessJSON.Value = WBUtils.SerializeToCompressedJSONForURI(process);
            }
            else
            {
                WBLogging.Debug("In LibraryLocations_SelectedNodeChanged(): Selected path was null");
            }
        }
        private void RefreshBoundData()
        {
            if (SelectedNodePath != "")
            {
                SelectedRecordsType.Text = SelectedNodePath.Replace("Records Types/", "").Replace("/", " / ");

                WBRecordsType recordsType    = null;
                WBTerm        functionalArea = null;
                WBTerm        subjectTag     = null;

                switch (SelectedView)
                {
                case VIEW_BY_RECORDS_TYPE:
                {
                    recordsType = recordsTypesTaxonomy.GetSelectedRecordsType(SelectedNodePath);
                    SelectedRecordsTypeDescription.Text = recordsType.Description;
                    break;
                }

                case VIEW_BY_FUNCTION_THEN_TYPE:
                {
                    string[] parts = SelectedNodePath.Split('/');
                    if (parts.Length < 3)
                    {
                        return;
                    }

                    string        functionPath = parts[0];
                    List <String> partsList    = new List <String>(parts);
                    partsList.RemoveAt(0);
                    string recordsTypePath = String.Join("/", partsList.ToArray());

                    Term functionalAreaTerm = functionalAreaTaxonomy.GetSelectedTermByPath(functionPath);
                    if (functionalAreaTerm != null)
                    {
                        functionalArea = new WBTerm(functionalAreaTaxonomy, functionalAreaTerm);
                    }

                    recordsType = recordsTypesTaxonomy.GetSelectedRecordsType(recordsTypePath);
                    SelectedRecordsTypeDescription.Text = recordsType.Description;
                    break;
                }

                case VIEW_BY_SUBJECT:
                {
                    Term subjectTagsTerm = subjectTagsTaxonomy.GetSelectedTermByPath(SelectedNodePath);
                    if (subjectTagsTerm != null)
                    {
                        subjectTag = new WBTerm(subjectTagsTaxonomy, subjectTagsTerm);
                        SelectedRecordsTypeDescription.Text = subjectTag.Description;
                    }

                    if (subjectTag == null)
                    {
                        WBLogging.Debug("Did not find subject with path: " + SelectedNodePath);
                        return;
                    }
                    break;
                }


                default: return;
                }


                WBTeam team = WBTeam.GetFromTeamSite(teamsTaxonomy, SPContext.Current.Web);

                String recordsLibraryURL = WBFWebPartsUtils.GetRecordsLibraryURL(SPContext.Current.Site);

                if (Request.QueryString["Library"] == "Extranet")
                {
                    recordsLibraryURL = WBFWebPartsUtils.GetExtranetLibraryURL(SPContext.Current.Site);
                }

                using (SPSite site = new SPSite(recordsLibraryURL))
                {
                    using (SPWeb web = site.OpenWeb())
                    {
                        WBQuery query = new WBQuery();

                        if (recordsType != null)
                        {
                            WBQueryClause recordsTypeClause = new WBQueryClause(WBColumn.RecordsType, WBQueryClause.Comparators.Equals, recordsType);
                            recordsTypeClause.UseDescendants = true;
                            query.AddClause(recordsTypeClause);
                        }

                        if (functionalArea != null)
                        {
                            WBQueryClause functionalAreaClause = new WBQueryClause(WBColumn.FunctionalArea, WBQueryClause.Comparators.Equals, functionalArea);
                            functionalAreaClause.UseDescendants = true;
                            query.AddClause(functionalAreaClause);
                        }

                        if (subjectTag != null)
                        {
                            WBQueryClause subjectTagClause = new WBQueryClause(WBColumn.SubjectTags, WBQueryClause.Comparators.Equals, subjectTag);
                            subjectTagClause.UseDescendants = false;
                            query.AddClause(subjectTagClause);
                        }

                        if (team != null)
                        {
                            query.AddEqualsFilter(WBColumn.InvolvedTeams, team);
                        }

                        //                        string protectiveZoneFilter = "Public"; // Request.QueryString["ProtectiveZone"];
                        //                      if (protectiveZoneFilter != null && protectiveZoneFilter != "")
                        //                    {
                        //                      query.AddEqualsFilter(WBColumn.ProtectiveZone, protectiveZoneFilter);
                        //                }


                        query.AddViewColumn(WBColumn.Name);
                        query.AddViewColumn(WBColumn.Title);
                        query.AddViewColumn(WBColumn.FileSize);
                        query.AddViewColumn(WBColumn.FileTypeIcon);
                        query.AddViewColumn(WBColumn.FileType);
                        query.AddViewColumn(WBColumn.TitleOrName);
                        query.AddViewColumn(WBColumn.DisplayFileSize);
                        query.AddViewColumn(WBColumn.RecordID);
                        query.AddViewColumn(WBColumn.EncodedAbsoluteURL);
                        query.AddViewColumn(WBColumn.ReferenceDate);
                        query.AddViewColumn(WBColumn.ReferenceID);
                        query.AddViewColumn(WBColumn.ProtectiveZone);
                        query.AddViewColumn(WBColumn.DeclaredRecord);

                        if (SelectedView != VIEW_BY_SUBJECT)
                        {
                            query.AddViewColumn(WBColumn.SubjectTags);
                        }
                        else
                        {
                            query.AddViewColumn(WBColumn.RecordsType);
                        }

                        if (sortColumn == null)
                        {
                            sortColumn = WBColumn.DeclaredRecord;
                            ascending  = false;
                        }

                        if (sortColumn != null)
                        {
                            query.OrderBy(sortColumn, ascending);
                        }

                        SPList recordsLibrary = web.GetList(recordsLibraryURL); //"Documents"]; //farm.RecordsCenterRecordsLibraryName];

                        DataTable dataTable = recordsLibrary.WBxGetDataTable(site, query);

                        ShowResults.DataSource = dataTable;

                        ShowResults.Columns.Clear();

                        ButtonField buttonField = new ButtonField();
                        buttonField.Text        = "Select";
                        buttonField.CommandName = "Select Document";
                        ShowResults.Columns.Add(buttonField);

                        ShowResults.Columns.Add(WBUtils.DynamicIconTemplateField(WBColumn.FileTypeIcon, WBColumn.EncodedAbsoluteURL));
                        ShowResults.Columns.Add(WBUtils.BoundField(WBColumn.Title, sortColumn, ascending));
                        ShowResults.Columns.Add(WBUtils.BoundField(WBColumn.Name, sortColumn, ascending));
                        ShowResults.Columns.Add(WBUtils.BoundField(WBColumn.DeclaredRecord, sortColumn, ascending));
                        ShowResults.Columns.Add(WBUtils.BoundField(WBColumn.ProtectiveZone, sortColumn, ascending));
                        ShowResults.Columns.Add(WBUtils.BoundField(WBColumn.RecordID, sortColumn, ascending));

//                        BoundField test = WBUtils.BoundField(WBColumn.ServerURL, sortColumn, ascending);
//                      test.Hid

//                        ShowResults.Columns.Add(WBUtils.BoundField(WBColumn.FunctionalArea, sortColumn, ascending));
                        //ShowResults.Columns.Add(WBUtils.BoundField(WBColumn.OwningTeam, sortColumn, ascending));
                        //  ShowResults.Columns.Add(WBUtils.BoundField(WBColumn.ReferenceDate, sortColumn, ascending));
                        //  ShowResults.Columns.Add(WBUtils.BoundField(WBColumn.ReferenceID, sortColumn, ascending));
                        //ShowResults.Columns.Add(WBUtils.BoundField(WBColumn.SeriesTag, sortColumn, ascending));

                        //if (SelectedView != VIEW_BY_SUBJECT)
                        // {
                        //     ShowResults.Columns.Add(WBUtils.BoundField(WBColumn.SubjectTags, sortColumn, ascending));
                        // }
                        //else
                        // {
                        //    ShowResults.Columns.Add(WBUtils.BoundField(WBColumn.RecordsType, sortColumn, ascending));
                        // }



                        ShowResults.DataBind();
                    }
                }
            }

            else
            {
                WBUtils.logMessage("SelectedNodePath was empty");
            }
        }
        protected override void Render(HtmlTextWriter writer)
        {
            //WBTaxonomy recordsTypes = WBTaxonomy.GetRecordsTypes(SPContext.Current.Site);
            WBTaxonomy seriesTags = WBTaxonomy.GetSeriesTags(SPContext.Current.Site);

            WBTerm seriesTag = null;

            if (SeriesTag != null && SeriesTag != "")
            {
                Term seriesTagTerm = seriesTags.GetSelectedTermByPath(SeriesTag);
                if (seriesTagTerm != null)
                {
                    seriesTag = new WBTerm(seriesTags, seriesTagTerm);
                }
            }

            WBQuery query = new WBQuery();

            //query.AddEqualsFilter(WBColumn.RecordsType, workBox.RecordsType);

            if (seriesTag != null)
            {
                query.AddEqualsFilter(WBColumn.SeriesTag, seriesTag);
            }

            if (ReferenceID != null && ReferenceID != "")
            {
                query.AddEqualsFilter(WBColumn.ReferenceID, ReferenceID);
            }

            //            if (FilterByOwningTeam)
            //            query.AddEqualsFilter(WBColumn.OwningTeam, workBox.OwningTeam);


            if (sortColumn != null)
            {
                WBLogging.Debug("Sorting in Render with sortColumn: " + sortColumn.DisplayName);
            }
            else
            {
                WBLogging.Debug("SortColumn was null - so sorting by declared record date.");

                sortColumn = WBColumn.DeclaredRecord;
                ascending  = false;
            }

            if (sortColumn != null)
            {
                query.OrderBy(sortColumn, ascending);
            }

            query.AddViewColumn(WBColumn.Name);
            query.AddViewColumn(WBColumn.FileTypeIcon);
            query.AddViewColumn(WBColumn.EncodedAbsoluteURL);
            query.AddViewColumn(WBColumn.ReferenceDate);
            query.AddViewColumn(WBColumn.ProtectiveZone);
            query.AddViewColumn(WBColumn.DeclaredRecord);

            WBFarm farm = WBFarm.Local;

            using (SPSite site = new SPSite(farm.ProtectedRecordsLibraryUrl))
            {
                using (SPWeb web = site.OpenWeb())
                {
                    SPList recordsLibrary = web.GetList(farm.ProtectedRecordsLibraryUrl);

                    DataTable dataTable = recordsLibrary.WBxGetDataTable(site, query, MaxNumDocuments);

                    gridView.DataSource = dataTable;

                    gridView.Columns.Clear();
                    gridView.Columns.Add(WBUtils.DynamicIconTemplateField(WBColumn.FileTypeIcon, WBColumn.EncodedAbsoluteURL));
                    gridView.Columns.Add(WBUtils.HyperLinkField(WBColumn.Name, WBColumn.EncodedAbsoluteURL, sortColumn, ascending));
                    gridView.Columns.Add(WBUtils.BoundField(WBColumn.ReferenceDate, sortColumn, ascending));
                    gridView.Columns.Add(WBUtils.BoundField(WBColumn.ProtectiveZone, sortColumn, ascending));
                    gridView.Columns.Add(WBUtils.BoundField(WBColumn.DeclaredRecord, sortColumn, ascending));

                    gridView.DataBind();
                }
            }

            base.Render(writer);
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            WBLogging.Generic.Verbose("In Page_Load for the self approval dialog");

            manager = new WBRecordsManager(SPContext.Current.Web.CurrentUser.LoginName);

            // If this is the initial call to the page then we need to load the basic details of the document we're publishing out:
            if (!IsPostBack)
            {
                process         = WBUtils.DeserializeFromCompressedJSONInURI <WBPublishingProcess>(Request.QueryString["PublishingProcessJSON"]);
                process.WorkBox = WorkBox;

//                WBLogging.Debug("Created the WBProcessObject");

                PublishingProcessJSON.Value = WBUtils.SerializeToCompressedJSONForURI(process);

                //             WBLogging.Debug("Serialized the WBProcessObject to hidden field");
            }
            else
            {
                process         = WBUtils.DeserializeFromCompressedJSONInURI <WBPublishingProcess>(PublishingProcessJSON.Value);
                process.WorkBox = WorkBox;
            }



            // Let's clear out all of the error messages text fields:
            ErrorMessageLabel.Text = "";


            //OK so we have the basic identity information for the document being published out so let's get the document item:

            Guid sourceListGuid            = new Guid(process.ListGUID);
            SPDocumentLibrary sourceDocLib = (SPDocumentLibrary)WorkBox.Web.Lists[sourceListGuid];

            sourceDocAsItem = sourceDocLib.GetItemById(int.Parse(process.CurrentItemID));
            sourceFile      = sourceDocAsItem.File;

            WBDocument sourceDocument = new WBDocument(WorkBox, sourceDocAsItem);

            fileTypeInfo = manager.GetFileTypeInfo(sourceDocument.FileType);

            if (fileTypeInfo != null)
            {
                Dictionary <String, String> checkBoxDetails = manager.GetCheckBoxDetailsForDocumentType(fileTypeInfo.WBxGetAsString(WBColumn.DocumentType));
                foreach (String checkBoxCode in checkBoxDetails.Keys)
                {
                    CheckBoxes.Controls.Add(CreateCheckBoxDiv(checkBoxCode, checkBoxDetails[checkBoxCode]));
                }

                CheckBoxesCodes.Value = String.Join(";", checkBoxDetails.Keys.ToArray <string>());
            }

            if (!IsPostBack)
            {
                DocumentsBeingPublished.Text = process.GetStandardHTMLTableRows();

                String typeText = null;

                if (fileTypeInfo != null)
                {
                    typeText = fileTypeInfo.WBxGetAsString(WBColumn.DocumentType) + " (" + fileTypeInfo.WBxGetAsString(WBColumn.FileTypePrettyName) + ")";
                }
                if (String.IsNullOrEmpty(typeText))
                {
                    typeText = sourceDocument.FileType + " " + sourceDocument.Name;
                }
                DocumentType.Text = typeText;
                WBLogging.Debug("The file type of the record is: " + typeText);

                IAO.Text = "<none found>";
                if (!String.IsNullOrEmpty(process.OwningTeamsIAOAtTimeOfPublishing))
                {
                    SPUser owningTeamIAO = SPContext.Current.Web.WBxEnsureUserOrNull(process.OwningTeamsIAOAtTimeOfPublishing);
                    if (owningTeamIAO != null)
                    {
                        IAO.Text = owningTeamIAO.Name;
                    }
                }
            }
        }
Esempio n. 8
0
        internal String RenderHTMLForOneDocumentVersion(Dictionary <String, String> checklistTextMap, WBDocument document, String majorVersion, String minorVersion, int minorVersionIndex)
        {
            String html = "";

            String versionNumber = majorVersion;

            if (!String.IsNullOrEmpty(minorVersion))
            {
                versionNumber += "." + minorVersion;
            }

            String versionAsToggleID = versionNumber.Replace(".", "-");

            String publishedDateString = "";

            if (document.HasValue(WBColumn.DatePublished))
            {
                publishedDateString = String.Format("{0:dd/MM/yyyy}", document[WBColumn.DatePublished]);
            }
            if (publishedDateString == "" && document.HasValue(WBColumn.Modified))
            {
                publishedDateString = String.Format("{0:dd/MM/yyyy}", document[WBColumn.Modified]);
            }

            String publishedByString = "<unknown>";
            SPUser publishedBy       = document.GetSingleUserColumn(WBColumn.PublishedBy);

            if (publishedBy != null)
            {
                publishedByString = publishedBy.Name;
            }
            else
            {
                // If the published by column isn't set then we'll use the author column as a backup value:
                publishedBy = document.GetSingleUserColumn(WBColumn.Author);
                if (publishedBy != null)
                {
                    publishedByString = publishedBy.Name;
                }
            }

            String modifiedByString = "";
            String modifiedOnString = "";

            if (document.IsSPListItemVersion)
            {
                SPFieldUserValue versionCreated = document.ItemVersion.CreatedBy;
                SPUser           modifiedBy     = versionCreated.User;
                if (modifiedBy != null)
                {
                    WBLogging.Debug("Version created by lookup ID: " + versionCreated.LookupId);
                    WBLogging.Debug("Version created by lookup Value: " + versionCreated.LookupValue);
                    WBLogging.Debug("Version created by as string: " + versionCreated.ToString());
                    WBLogging.Debug("Version created by SPUser.Login: "******"Version created by SPUser.Name: " + modifiedBy.Name);
                    modifiedByString = modifiedBy.Name;
                }

                modifiedOnString = String.Format("{0:dd/MM/yyyy}", document.ItemVersion.Created);
            }
            else
            {
                SPUser modifiedBy = document.GetSingleUserColumn(WBColumn.ModifiedBy);
                if (modifiedBy != null)
                {
                    modifiedByString = modifiedBy.Name;
                }
                if (document.HasValue(WBColumn.Modified))
                {
                    modifiedOnString = String.Format("{0:dd/MM/yyyy}", document[WBColumn.Modified]);
                }
            }


            String approvedByString = document.GetMultiUserColumn(WBColumn.PublishingApprovedBy).WBxToPrettyString();
            String iaoString        = document.GetSingleUserColumn(WBColumn.IAOAtTimeOfPublishing).WBxToPrettyString();

            long fileLength = (document.Item.File.Length / 1024);

            if (fileLength == 0)
            {
                fileLength = 1;
            }
            String fileLengthString = "" + fileLength + " KB";

            String status         = document[WBColumn.RecordSeriesStatus].WBxToString();
            String extraStatusCSS = "";

            if (String.IsNullOrEmpty(status))
            {
                status = "Latest";
            }
            if (minorVersionIndex > 0)
            {
                status         = "(old metadata)";
                extraStatusCSS = " wbf-old-metadata";
            }

            String explainStatus = "";

            if (status == "Latest")
            {
                if (document.ProtectiveZone == WBRecordsType.PROTECTIVE_ZONE__PUBLIC)
                {
                    explainStatus = "(live on the public website)";
                }
                else if (document.ProtectiveZone == WBRecordsType.PROTECTIVE_ZONE__PUBLIC_EXTRANET)
                {
                    explainStatus = "(live on a public extranet website)";
                }
                else
                {
                    explainStatus = "(live on izzi intranet)";
                }
            }
            else if (status == "Retired")
            {
                explainStatus = "(visible on izzi intranet searches)";
            }
            else if (status == "Archived")
            {
                explainStatus = "(archived in the protected, master records library)";
            }

            String reviewDateString = "";

            if (document.HasValue(WBColumn.ReviewDate))
            {
                reviewDateString = String.Format("{0:dd/MM/yyyy}", document[WBColumn.ReviewDate]);
            }

            String checkInComments = "";

            if (document.IsSPListItemVersion)
            {
                int fileVersionsCount = document.Item.File.Versions.Count;

                WBLogging.Debug("File versions count: " + fileVersionsCount);
                WBLogging.Debug("minorVersionIndex = " + minorVersionIndex);

                int minorFileVersionIndex = fileVersionsCount - minorVersionIndex;
                WBLogging.Debug("minorFileVersionIndex = " + minorFileVersionIndex);

                if (minorFileVersionIndex >= 0 && minorFileVersionIndex < fileVersionsCount)
                {
                    SPFileVersion fileVersion = document.Item.File.Versions[minorFileVersionIndex];
                    checkInComments = fileVersion.CheckInComment;
                }
                else
                {
                    checkInComments = document.Item.File.CheckInComment;
                }
            }
            else
            {
                checkInComments = document.Item.File.CheckInComment;
            }


            String checklistCount = "0";
            String checklistDiv   = "";

            String checklistCodes = document[WBColumn.PublishingApprovalChecklist].WBxToString();

            if (!String.IsNullOrEmpty(checklistCodes))
            {
                String[] codes = checklistCodes.Split(';');
                checklistDiv = "<div id='wbf-checklist-" + versionAsToggleID + "' style='display: none;'>";
                foreach (String code in codes)
                {
                    if (checklistTextMap.ContainsKey(code))
                    {
                        checklistDiv += "<input type='checkbox' enabled='false' checked disabled/>" + checklistTextMap[code] + "<br/>";
                    }
                    else
                    {
                        checklistDiv += "<input type='checkbox' enabled='false' checked disabled/>" + code + " (couldn't decode this checklist item)<br/>";
                    }
                }
                checklistDiv += "</div>";

                checklistCount = codes.Length.ToString();
            }

            String issueOddOrEven = "odd";

            if (majorVersion.WBxToInt() % 2 == 0)
            {
                issueOddOrEven = "even";
            }

            html += "<tr>"
                    + "<td class='wbf-record-series-summary-issue-" + issueOddOrEven + "'>" + versionNumber + "</td>"
                    + "<td class='wbf-record-series-summary-detail wbf-record-series-detail-left'>" + document.Name + "</td>"
                    + "<td class='wbf-record-series-summary-detail'>" + publishedDateString + "</td>"
                    + "<td class='wbf-record-series-summary-detail'>" + publishedByString + "</td>"
                    + "<td class='wbf-record-series-summary-detail'>" + modifiedOnString + "</td>"
                    + "<td class='wbf-record-series-summary-detail " + extraStatusCSS + "'>" + status + "</td>"
                    + "<td class='wbf-record-series-summary-detail wbf-record-series-detail-right'>" + fileLengthString + "</td>"
                    + "<td class='wbf-record-series-summary-detail'><a href='#' class='wbf-more-or-less' id='wbf-more-or-less-" + versionAsToggleID + "' onclick='WBF_toggleByID(\"" + versionAsToggleID + "\");'><nobr>more &gt;</nobr></a></td>"
                    + "</tr>\n";

            html += "<tr class='wbf-record-details' id='wbf-record-details-" + versionAsToggleID + "' style=' display: none;' ><td></td><td colspan='6' class='wbf-record-series-details-panel-cell'><table class='wbf-record-series-details-panel' width='100%'>";

            html += "<tr><td class='wbf-record-series-detail-title wbf-record-series-detail-odd'>Title</td><td class='wbf-record-series-detail-odd'>" + document.Title + "</td></tr>";
            html += "<tr><td class='wbf-record-series-detail-title wbf-record-series-detail-even'>Filename</td><td class='wbf-record-series-detail-even wbf-record-series-detail-left'>" + document.Filename + "</td></tr>";
            html += "<tr><td class='wbf-record-series-detail-title wbf-record-series-detail-odd'>Location</td><td class='wbf-record-series-detail-odd'>" + document.LibraryLocation + "</td></tr>";
            html += "<tr><td class='wbf-record-series-detail-title wbf-record-series-detail-even'>Subject Tags</td><td class='wbf-record-series-detail-even'>" + document.SubjectTags.Names() + "</td></tr>";
            html += "<tr><td class='wbf-record-series-detail-title wbf-record-series-detail-odd'>Owning Team</td><td class='wbf-record-series-detail-odd'>" + document.OwningTeam.Name + "</td></tr>";
            html += "<tr><td class='wbf-record-series-detail-title wbf-record-series-detail-even'>Involved Teams</td><td class='wbf-record-series-detail-even'>" + document.InvolvedTeamsWithoutOwningTeam.Names() + "</td></tr>";
            html += "<tr><td class='wbf-record-series-detail-title wbf-record-series-detail-odd'>Protective Zone</td><td class='wbf-record-series-detail-odd'>" + document.ProtectiveZone + "</td></tr>";
            html += "<tr><td class='wbf-record-series-detail-title wbf-record-series-detail-even'>Status</td><td class='wbf-record-series-detail-even'>" + status + " " + explainStatus + "</td></tr>";
            html += "<tr><td class='wbf-record-series-detail-title wbf-record-series-detail-odd'>Approved By</td><td class='wbf-record-series-detail-odd'>" + approvedByString + "</td></tr>";
            html += "<tr><td class='wbf-record-series-detail-title wbf-record-series-detail-even'>Approval Checklist</td><td class='wbf-record-series-detail-even'><a href='#' onclick='WBF_toggleChecklist(\"" + versionAsToggleID + "\");'>" + checklistCount + " checklist items were ticked</a>" + checklistDiv + "</td></tr>";
            html += "<tr><td class='wbf-record-series-detail-title wbf-record-series-detail-odd'>IAO When Published</td><td class='wbf-record-series-detail-odd'>" + iaoString + "</td></tr>";
            html += "<tr><td class='wbf-record-series-detail-title wbf-record-series-detail-even'>Intended Web Page URL</td><td class='wbf-record-series-detail-even'>" + document[WBColumn.IntendedWebPageURL].WBxToString() + "</td></tr>";
            html += "<tr><td class='wbf-record-series-detail-title wbf-record-series-detail-odd'>Review Date</td><td class='wbf-record-series-detail-odd'>" + reviewDateString + "</td></tr>";
            html += "<tr><td class='wbf-record-series-detail-title wbf-record-series-detail-even'>Modified By</td><td class='wbf-record-series-detail-even'>" + modifiedByString + "</td></tr>";
            html += "<tr><td class='wbf-record-series-detail-title wbf-record-series-detail-odd'>Modified On</td><td class='wbf-record-series-detail-odd'>" + modifiedOnString + "</td></tr>";
            html += "<tr><td class='wbf-record-series-detail-title wbf-record-series-detail-even'>Reason for Change</td><td class='wbf-record-series-detail-even'>" + checkInComments + "</td></tr>";
            html += "<tr><td class='wbf-record-series-detail-title wbf-record-series-detail-odd'>Record Series ID</td><td class='wbf-record-series-detail-odd'>" + document.RecordSeriesID + "</td></tr>";
            html += "<tr><td class='wbf-record-series-detail-title wbf-record-series-detail-even'>Record ID</td><td class='wbf-record-series-detail-even'>" + document.RecordID + "</td></tr>";

            html += "<tr><td class='wbf-record-series-detail-even' colspan='2' align='center'><input type='button' value='View Document' onclick='window.open(\"" + document.AbsoluteURL + "\", \"_blank\");' />";
            if (minorVersionIndex <= 0 && status != "Archived")
            {
                html += "&nbsp;<input type='button' value='Edit Metadata' onclick='WBF_edit_records_metadata(\"" + document.RecordID + "\");'/>";
            }
            html += "</td></tr>";

            html += "</table>\n";

            return(html);
        }
Esempio n. 9
0
        private void RenderPage()
        {
            WBTaxonomy subjectTagsTaxonomy = WBTaxonomy.GetSubjectTags(SPContext.Current.Site);

            subjectTagsTaxonomy.InitialiseTaxonomyControl(SubjectTagsField, WorkBox.COLUMN_NAME__SUBJECT_TAGS, true);

            if (!String.IsNullOrEmpty(newSubjectTagsUIControlValue))
            {
                SubjectTagsField.Text = newSubjectTagsUIControlValue;
            }

            EditDocumentsTable.Controls.Clear();

            List <String> documentsDetailsList = new List <String>();

            string currentDetails = DocumentsDetails.Value.WBxTrim();

            WBLogging.Debug("Building the table with current details: " + currentDetails);

            if (!String.IsNullOrEmpty(currentDetails))
            {
                documentsDetailsList = new List <String>(currentDetails.Split(';'));
            }

            numOfDocs = documentsDetailsList.Count;

            Table table = new Table();

            table.Width = Unit.Percentage(100);

            TableRow headers = new TableRow();

            headers.WBxAddTableHeaderCell("Title");
            headers.WBxAddTableHeaderCell("Filename");
            headers.WBxAddTableHeaderCell("File Type");
            //            headers.WBxAddTableHeaderCell("Else");

            table.Rows.Add(headers);

            String recordsLibraryURL = WBFWebPartsUtils.GetRecordsLibraryURL(SPContext.Current.Site);

            using (SPSite site = new SPSite(recordsLibraryURL))
                using (SPWeb web = site.OpenWeb())
                {
                    SPList library = web.GetList(recordsLibraryURL);



                    int index = 0;
                    foreach (String details in documentsDetailsList)
                    {
                        TableRow row = CreateEditableTableRow(site, web, library, index, details);

                        allRows.Add(row);

                        table.Rows.Add(row);
                        index++;
                    }


                    if (extranetRecordsWeb != null)
                    {
                        extranetRecordsWeb.Dispose();
                    }
                    if (extranetRecordsSite != null)
                    {
                        extranetRecordsSite.Dispose();
                    }
                }
            EditDocumentsTable.Controls.Add(table);
        }
Esempio n. 10
0
        protected void Page_Load(object sender, EventArgs e)
        {
            webPart = this.Parent as TeamSiteWorkBoxExplorer;

            SelectedWorkBoxes.AllowSorting = true;
            SelectedWorkBoxes.Sorting     += new GridViewSortEventHandler(SelectedWorkBoxes_Sorting);

            SelectedWorkBoxes.AllowPaging                   = true;
            SelectedWorkBoxes.PageIndexChanging            += new GridViewPageEventHandler(SelectedWorkBoxes_PageIndexChanging);
            SelectedWorkBoxes.PagerSettings.Mode            = PagerButtons.Numeric;
            SelectedWorkBoxes.PagerSettings.Position        = PagerPosition.Bottom;
            SelectedWorkBoxes.PagerSettings.PageButtonCount = 50;
            SelectedWorkBoxes.PagerSettings.Visible         = true;
            SelectedWorkBoxes.PageSize = 30;

            // this odd statement is required in order to get the pagination to work with an SPGridView!
            SelectedWorkBoxes.PagerTemplate = null;

            CoreResultsWebPart.UseLocationVisualization = false;
            CoreResultsWebPart.PropertiesToRetrieve     = string.Empty;
            CoreResultsWebPart.SelectColumns            = @"<Columns>  <Column Name=""WorkId""/>  <Column Name=""Rank""/>  <Column Name=""Title""/>  <Column Name=""Author""/>  <Column Name=""Size""/>  <Column Name=""Path""/>  <Column Name=""Description""/>  <Column Name=""Write""/>  <Column Name=""SiteName""/>  <Column Name=""CollapsingStatus""/>  <Column Name=""HitHighlightedSummary""/>  <Column Name=""HitHighlightedProperties""/>  <Column Name=""ContentClass""/>  <Column Name=""IsDocument""/>  <Column Name=""PictureThumbnailURL""/>  <Column Name=""PopularSocialTags""/>  <Column Name=""PictureWidth""/>  <Column Name=""PictureHeight""/>  <Column Name=""DatePictureTaken""/>  <Column Name=""ServerRedirectedURL""/>  <Column Name=""SiteTitle""/>  <Column Name=""SPWebURL""/>  <Column Name=""OwningTeam""/>  </Columns>";
            CoreResultsWebPart.XslLink = "/Style Library/WBF/wb-explorer-search-results.xslt";

            //CoreResultsWebPart.DisplayAlertMeLink = true;
            //CoreResultsWebPart.AllowConnect = false;


            SPWeb  web  = SPContext.Current.Web;
            SPSite site = SPContext.Current.Site;

            WBTaxonomy recordsTypesTaxonomy = WBTaxonomy.GetRecordsTypes(SPContext.Current.Site);

            string teamGUIDString = "";

            Team = WBTeam.GetFromTeamSite(SPContext.Current);
            if (Team == null)
            {
                return;
            }

            // RefinementByOwningTeam = "owningteam%3D%22%23" + (Team.Id.ToString().Replace(" ", "%20").Replace("#", "%23").Replace("-", "%2D")) + "%22";
            RefinementByOwningTeam = "owningteam%3D%22" + (Team.Name.ToString().Replace(" ", "%20").Replace("#", "%23").Replace("-", "%2D")) + "%22";

            teamGUIDString = WBExtensions.WBxToString(Team.Id);
            string recordsTypesListUrl = Team.RecordsTypesListUrl;

            if (recordsTypesListUrl == null || recordsTypesListUrl == "")
            {
                //recordsTypesListUrl = web.Url + "/Lists/Configure%20Teams%20Records%20Classes";
                NotSetupText = "(<i>The team has no records types list setup yet.</i>)";
                return;
            }

            // urm ... this is a real mess - a hidden field and a view state - it's a mashup mess!!
            String selectedRecordsTypeGUID = Request.QueryString["recordsTypeGUID"];

            if (String.IsNullOrEmpty(selectedRecordsTypeGUID))
            {
                String guidString = HiddenRecordsTypeGUIDField.Value;
                if (guidString != null && guidString != "")
                {
                    SelectedRecordsTypeGUID = guidString;
                }
            }
            else
            {
                SelectedRecordsTypeGUID          = selectedRecordsTypeGUID;
                HiddenRecordsTypeGUIDField.Value = selectedRecordsTypeGUID;
            }



            using (SPWeb configWeb = site.OpenWeb(recordsTypesListUrl))
            {
                ConfigurationList = configWeb.GetList(recordsTypesListUrl);
                if (ConfigurationList != null)
                {
                    if (!ConfigurationList.Fields.ContainsField("Records Class"))
                    {
                        ConfigurationList = null;
                        NotSetupText      = "(<i>The configuration list " + recordsTypesListUrl + " has no 'Records Class' column.</i>)";
                    }
                }
                else
                {
                    NotSetupText = "(<i>The configuration list " + recordsTypesListUrl + " was not set up correctly or does not exist.</i>)";
                }

                if (ConfigurationList != null)
                {
                    TeamAdminRecordsTypesTreeView.Nodes.Clear();
                    OurWorkRecordsTypesTreeView.Nodes.Clear();
                    CouncilWideRecordsTypesTreeView.Nodes.Clear();

                    TeamAdminRecordsTypesFilter.Nodes.Clear();
                    OurWorkRecordsTypesFilter.Nodes.Clear();
                    CouncilWideRecordsTypesFilter.Nodes.Clear();

                    foreach (SPListItem item in ConfigurationList.Items)
                    {
                        try
                        {
                            WBRecordsType recordsClass      = new WBRecordsType(recordsTypesTaxonomy, WBExtensions.WBxGetColumnAsString(item, "Records Class"));
                            TreeNode      createNewNodes    = createNodes(recordsClass, Team, false);
                            TreeNode      forFilteringNodes = createNodes(recordsClass, Team, true);

                            string groupName = item.WBxGetColumnAsString("Records Group");
                            if (groupName.Equals("Team admin"))
                            {
                                addNodesToTreeView(TeamAdminRecordsTypesTreeView, createNewNodes, selectedRecordsTypeGUID);
                                addNodesToTreeView(TeamAdminRecordsTypesFilter, forFilteringNodes, selectedRecordsTypeGUID);
                            }

                            if (groupName.Equals("Our work"))
                            {
                                addNodesToTreeView(OurWorkRecordsTypesTreeView, createNewNodes, selectedRecordsTypeGUID);
                                addNodesToTreeView(OurWorkRecordsTypesFilter, forFilteringNodes, selectedRecordsTypeGUID);
                            }

                            if (groupName.Equals("Council-wide business"))
                            {
                                addNodesToTreeView(CouncilWideRecordsTypesTreeView, createNewNodes, selectedRecordsTypeGUID);
                                addNodesToTreeView(CouncilWideRecordsTypesFilter, forFilteringNodes, selectedRecordsTypeGUID);
                            }
                        }
                        catch (Exception exception)
                        {
                            WBUtils.logMessage("The error message was: " + exception.Message);
                        }
                    }
                }
            }


            if (!IsPostBack)
            {
                List <String> ascendingDescendingOptions = new List <String>();
                ascendingDescendingOptions.Add("Ascending");
                ascendingDescendingOptions.Add("Descending");

                AscendingDescendingChoice.DataSource = ascendingDescendingOptions;
                AscendingDescendingChoice.DataBind();

                SetSortColumn(WBColumn.WorkBoxDateLastModified);
                GridViewSortDirection = SortDirection.Descending;

                SelectedViewStyle            = VIEW_STYLE__ICONS;
                StatusCheckBox.Checked       = false;
                RecordsTypeCheckBox.Checked  = true;
                LastModifiedCheckBox.Checked = true;
                DateCreatedCheckBox.Checked  = true;


                List <String> statusOptions = new List <String>();
                statusOptions.Add("Open");
                statusOptions.Add("Closed");
                statusOptions.Add("Deleted");
                statusOptions.Add("Any");

                StatusFilter.DataSource = statusOptions;
                StatusFilter.DataBind();

                StatusFilter.WBxSafeSetSelectedValue("Any");

                List <String> involvementOptions = new List <String>();
                involvementOptions.Add(FILTER_INVOLVEMENT__OWNS);
                involvementOptions.Add(FILTER_INVOLVEMENT__INVOLVED);
                involvementOptions.Add(FILTER_INVOLVEMENT__VISITING);
                involvementOptions.Add("Any involvement");

                InvolvementFilter.DataSource = involvementOptions;
                InvolvementFilter.DataBind();


                WBLogging.Debug("Not in post back so setting guid value to be: " + SelectedRecordsTypeGUID);
                RefreshBoundData();
            }
        }
Esempio n. 11
0
        protected void Page_Load(object sender, EventArgs e)
        {
            String html = "<table class='wbf-record-series-details'>\n";

            html += "<tr>"
                    + "<th class='wbf-record-series-odd'>Version</th>"
                    + "<th class='wbf-record-series-even'>Filename</th>"
                    + "<th class='wbf-record-series-odd'>Published</th>"
                    + "<th class='wbf-record-series-even'>Published By</th>"
                    + "<th class='wbf-record-series-odd'>Modified</th>"
                    + "<th class='wbf-record-series-even'>Status</th>"
                    + "<th class='wbf-record-series-odd'>File Size</th>"
                    + "<th class='wbf-record-series-odd'></th>"
                    + "</tr>\n";



            String recordSeriesID = Request.QueryString["RecordSeriesID"];
            String recordID       = Request.QueryString["RecordID"];

            using (WBRecordsManager manager = new WBRecordsManager(SPContext.Current.Web.CurrentUser.LoginName))
            {
                WBRecordsLibrary masterLibrary     = manager.Libraries.ProtectedMasterLibrary;
                SPList           masterLibraryList = masterLibrary.List;
                WBQuery          query             = new WBQuery();
                if (String.IsNullOrEmpty(recordSeriesID) || recordSeriesID == recordID)
                {
                    query.AddEqualsFilter(WBColumn.RecordID, recordID);
                }
                else
                {
                    query.AddEqualsFilter(WBColumn.RecordSeriesID, recordSeriesID);
                    query.OrderBy(WBColumn.RecordSeriesIssue, false);
                }

                SPListItemCollection items = masterLibraryList.WBxGetItems(SPContext.Current.Site, query);

                /*
                 * List<WBDocument> versions = new List<WBDocument>();
                 * foreach (SPListItem item in items)
                 * {
                 *
                 *  bool notInserted = true;
                 *  for (int i = 0; i < versions.Count && notInserted; i++)
                 *  {
                 *
                 *
                 *      if (document.RecordSeriesIssue.WBxToInt() > versions[i].RecordSeriesIssue.WBxToInt())
                 *  }
                 *
                 * }
                 * */

                Dictionary <String, String> checklistTextMap = manager.GetChecklistTextMap();

                if (masterLibrary.List.EnableVersioning)
                {
                    foreach (SPListItem item in items)
                    {
                        SPListItemVersionCollection versionCollection = item.Versions;

                        int versionCount = item.Versions.Count;

                        WBLogging.Debug("Item versions count | File versions count: " + versionCount + " | " + item.File.Versions.Count);

                        for (int i = 0; i < versionCount; i++)
                        {
                            SPListItemVersion version  = versionCollection[i];
                            WBDocument        document = new WBDocument(masterLibrary, version);
                            // We're going to render the minor version numbers counting up - even though lower index values are for more recent versions:
                            html += RenderHTMLForOneDocumentVersion(checklistTextMap, document, document.RecordSeriesIssue, (versionCount - 1 - i).ToString(), i);
                        }
                    }
                }
                else
                {
                    foreach (SPListItem item in items)
                    {
                        WBDocument document = new WBDocument(masterLibrary, item);
                        html += RenderHTMLForOneDocumentVersion(checklistTextMap, document, document.RecordSeriesIssue, null, -1);
                    }
                }
            }

            html += "</table>";

            ViewRecordSeriesTable.Text = html;
        }
Esempio n. 12
0
        private void RefreshBoundData()
        {
            if (IsPostBack)
            {
                ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "TriggerUpdateFunction", "aspPanelHasUpdated();", true);
            }

            WBTaxonomy recordsTypes = WBTaxonomy.GetRecordsTypes(SPContext.Current.Site);
            WBTaxonomy teams        = WBTaxonomy.GetTeams(recordsTypes);

            WBQuery query = new WBQuery();

            query.AddViewColumn(WBColumn.Title);
            query.AddViewColumn(WBColumn.WorkBoxURL);

            //                        query.AddViewColumn(WBColumn.FunctionalArea);
            //query.AddViewColumn(WBColumn.ReferenceDate);
            //query.AddViewColumn(WBColumn.ReferenceID);
            //query.AddViewColumn(WBColumn.SeriesTag);
            //                    query.AddViewColumn(WBColumn.InvolvedTeams);


            //List<String> orderByColumnOptions = new List<String>();
            //orderByColumnOptions.Add("Title");

            checkSortState();
            if (sortColumn != null)
            {
                query.OrderBy(sortColumn, ascending);
            }


            SelectedWorkBoxes.Columns.Clear();

            SelectedWorkBoxes.Columns.Add(WBUtils.StatusIconTemplateField("24"));
            SelectedWorkBoxes.Columns.Add(WBUtils.HyperLinkField(WBColumn.Title, WBColumn.WorkBoxURL, sortColumn, ascending, ""));

            OrderBy.Items.Clear();
            addColumnAsOption(OrderBy, WBColumn.Title);

            //                        ShowResults.Columns.Add(WBUtils.BoundField(WBColumn.FunctionalArea, sortColumn, ascending));
            // SelectedWorkBoxes.Columns.Add(WBUtils.BoundField(WBColumn.ReferenceDate, HorizontalAlign.Center, sortColumn, ascending));
            //                  SelectedWorkBoxes.Columns.Add(WBUtils.BoundField(WBColumn.ReferenceID, sortColumn, ascending));
            //                SelectedWorkBoxes.Columns.Add(WBUtils.BoundField(WBColumn.SeriesTag, sortColumn, ascending));


            query.AddViewColumn(WBColumn.WorkBoxStatus);
            if (StatusCheckBox.Checked)
            {
                SelectedWorkBoxes.Columns.Add(WBUtils.BoundField(WBColumn.WorkBoxStatus, HorizontalAlign.Center, sortColumn, ascending));
                addColumnAsOption(OrderBy, WBColumn.WorkBoxStatus);
            }
            string statusFilter = SelectedWorkBoxStatusFilter;

            if (statusFilter != "Any")
            {
                query.AddEqualsFilter(WBColumn.WorkBoxStatus, statusFilter);
            }


            query.AddViewColumn(WBColumn.RecordsType);
            if (RecordsTypeCheckBox.Checked)
            {
                SelectedWorkBoxes.Columns.Add(WBUtils.BoundField(WBColumn.RecordsType, HorizontalAlign.Center, sortColumn, ascending));
                addColumnAsOption(OrderBy, WBColumn.RecordsType);
            }

            if (LastModifiedCheckBox.Checked)
            {
                query.AddViewColumn(WBColumn.WorkBoxDateLastModified);
                SelectedWorkBoxes.Columns.Add(WBUtils.BoundField(WBColumn.WorkBoxDateLastModified, HorizontalAlign.Center, sortColumn, ascending));
                addColumnAsOption(OrderBy, WBColumn.WorkBoxDateLastModified);
            }

            if (LastVisitedCheckBox.Checked)
            {
                query.AddViewColumn(WBColumn.WorkBoxDateLastVisited);
                SelectedWorkBoxes.Columns.Add(WBUtils.BoundField(WBColumn.WorkBoxDateLastVisited, HorizontalAlign.Center, sortColumn, ascending));
                addColumnAsOption(OrderBy, WBColumn.WorkBoxDateLastVisited);
            }

            if (DateCreatedCheckBox.Checked)
            {
                query.AddViewColumn(WBColumn.WorkBoxDateCreated);
                SelectedWorkBoxes.Columns.Add(WBUtils.BoundField(WBColumn.WorkBoxDateCreated, HorizontalAlign.Center, sortColumn, ascending));
                addColumnAsOption(OrderBy, WBColumn.WorkBoxDateCreated);
            }

            if (ReferenceDateCheckBox.Checked)
            {
                query.AddViewColumn(WBColumn.ReferenceDate);
                SelectedWorkBoxes.Columns.Add(WBUtils.BoundField(WBColumn.ReferenceDate, HorizontalAlign.Center, sortColumn, ascending));
                addColumnAsOption(OrderBy, WBColumn.ReferenceDate);
            }

            if (ReferenceIDCheckBox.Checked)
            {
                query.AddViewColumn(WBColumn.ReferenceID);
                SelectedWorkBoxes.Columns.Add(WBUtils.BoundField(WBColumn.ReferenceID, HorizontalAlign.Center, sortColumn, ascending));
                addColumnAsOption(OrderBy, WBColumn.ReferenceID);
            }


            query.AddViewColumn(WBColumn.OwningTeam);
            if (OwningTeamCheckBox.Checked)
            {
                SelectedWorkBoxes.Columns.Add(WBUtils.BoundField(WBColumn.OwningTeam, sortColumn, ascending));
                addColumnAsOption(OrderBy, WBColumn.OwningTeam);
            }

            query.AddViewColumn(WBColumn.InvolvedTeams);
            if (InvolvedTeamsCheckBox.Checked)
            {
                SelectedWorkBoxes.Columns.Add(WBUtils.BoundField(WBColumn.InvolvedTeams, sortColumn, ascending));
                addColumnAsOption(OrderBy, WBColumn.InvolvedTeams);
            }

            query.AddViewColumn(WBColumn.VisitingTeams);
            if (VisitingTeamsCheckBox.Checked)
            {
                SelectedWorkBoxes.Columns.Add(WBUtils.BoundField(WBColumn.VisitingTeams, sortColumn, ascending));
                addColumnAsOption(OrderBy, WBColumn.VisitingTeams);
            }

            query.AddViewColumn(WBColumn.InvolvedIndividuals);
            if (InvolvedIndividualsCheckBox.Checked)
            {
                SelectedWorkBoxes.Columns.Add(WBUtils.BoundField(WBColumn.InvolvedIndividuals, sortColumn, ascending));
                addColumnAsOption(OrderBy, WBColumn.InvolvedIndividuals);
            }

            query.AddViewColumn(WBColumn.VisitingIndividuals);
            if (VisitingIndividualsCheckBox.Checked)
            {
                SelectedWorkBoxes.Columns.Add(WBUtils.BoundField(WBColumn.VisitingIndividuals, sortColumn, ascending));
                addColumnAsOption(OrderBy, WBColumn.VisitingIndividuals);
            }

            //OrderBy.DataSource = orderByColumnOptions;
            //OrderBy.DataBind();

            OrderBy.WBxSafeSetSelectedValue(ViewState["SortExpression"] as String);


            WBRecordsType recordsType = null;
            WBTeam        team        = WBTeam.GetFromTeamSite(teams, SPContext.Current.Web);

            WBLogging.Generic.Unexpected("SelectedInvolvementFilter = " + SelectedInvolvementFilter);

            if (team != null)
            {
                switch (SelectedInvolvementFilter)
                {
                case FILTER_INVOLVEMENT__OWNS:
                {
                    WBLogging.Debug("Adding a filter for OwningTeam");
                    query.AddEqualsFilter(WBColumn.OwningTeam, team);
                    break;
                }

                case FILTER_INVOLVEMENT__INVOLVED:
                {
                    WBLogging.Debug("Adding a filter for InvolvedTeams");
                    query.AddEqualsFilter(WBColumn.InvolvedTeams, team);
                    break;
                }

                case FILTER_INVOLVEMENT__VISITING:
                {
                    WBLogging.Debug("Adding a filter for VisitingTeams");
                    query.AddEqualsFilter(WBColumn.VisitingTeams, team);
                    break;
                }
                }
            }

            if (SelectedRecordsTypeGUID != "")
            {
                recordsType = recordsTypes.GetRecordsType(new Guid(SelectedRecordsTypeGUID));
            }

            if (recordsType != null)
            {
                String recordsTypePath = recordsType.FullPath;
                //recordsTypePath = recordsTypePath.Substring(1, recordsTypePath.Length - 1);
                recordsTypePath = recordsTypePath.Replace("/", " / ");

                RecordsTypeSelected.Text    = recordsTypePath;
                RecordsTypeDescription.Text = recordsType.Description;

                WBQueryClause recordsTypeClause = new WBQueryClause(WBColumn.RecordsType, WBQueryClause.Comparators.Equals, recordsType);
                recordsTypeClause.UseDescendants = false;
                query.AddClause(recordsTypeClause);
            }
            else
            {
                RecordsTypeSelected.Text    = "No records type selected";
                RecordsTypeDescription.Text = "";
            }

            String cachedDetailsListUrl = WBFarm.Local.OpenWorkBoxesCachedDetailsListUrl;

            // OK so this is a general 'recent' query
            using (SPWeb cacheWeb = SPContext.Current.Site.OpenWeb(cachedDetailsListUrl))
            {
                SPList cacheList = cacheWeb.GetList(cachedDetailsListUrl);

                SPListItemCollection items = cacheList.WBxGetItems(SPContext.Current.Site, query);

                StringBuilder html = new StringBuilder();
                foreach (SPListItem item in items)
                {
                    String status = item.WBxGetAsString(WBColumn.WorkBoxStatus);

                    html.Append("<div class='wbf-icons-view-icon-panel'><div class='wbf-icons-view-icon'><a href='");
                    html.Append(item.WBxGetAsString(WBColumn.WorkBoxURL)).Append("'>").Append("<img src='").Append(WBUtils.StatusIconImageURL(status, "64")).Append("' alt='Work box icon for: ").Append(item.WBxGetAsString(WBColumn.Title).Replace('\'', ' ')).Append("' />").Append("</a></div><div class='wbf-icons-view-label'><a href='");
                    html.Append(item.WBxGetAsString(WBColumn.WorkBoxURL)).Append("'>").Append(item.WBxGetAsString(WBColumn.Title)).Append("</a></div></div>\n\n");
                }

                IconViewLiteral.Text = html.ToString();

                DataTable dataTable = cacheList.WBxGetDataTable(SPContext.Current.Site, query);

                SelectedWorkBoxes.DataSource = dataTable;
                SelectedWorkBoxes.DataBind();
            }
        }
Esempio n. 13
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                String currentUserLoginName = SPContext.Current.Web.CurrentUser.LoginName;

                WBTaxonomy teams           = WBTaxonomy.GetTeams(SPContext.Current.Site);
                WBTaxonomy functionalAreas = WBTaxonomy.GetFunctionalAreas(teams);
                WBTeam     team            = WBTeam.GetFromTeamSite(teams, SPContext.Current.Web);
                if (team == null)
                {
                    WorkBox workBox = WorkBox.GetIfWorkBox(SPContext.Current);
                    if (workBox != null)
                    {
                        team = workBox.OwningTeam;
                    }
                }

                // Check if this user has permission - checking basic team membership:
                if (team == null || !team.IsCurrentUserTeamMember())
                {
                    AccessDeniedPanel.Visible          = true;
                    UpdateRecordsMetadataPanel.Visible = false;
                    AccessDeniedReason.Text            = "You are not a member of this team";
                    return;
                }

                RecordID.Text = Request.QueryString["RecordID"];
                WBLogging.Debug("Record ID is found to be: " + RecordID.Text);

                using (WBRecordsManager manager = new WBRecordsManager(currentUserLoginName))
                {
                    WBRecord record = manager.Libraries.GetRecordByID(RecordID.Text);

                    record.CheckMetadata();

                    Filename.Text    = record.Name;
                    RecordTitle.Text = record.Title;

                    String location = "<unknown>";
                    if (record.FunctionalArea != null && record.FunctionalArea.Count > 0)
                    {
                        WBLogging.Debug("Found functional area = " + record.FunctionalArea);
                        WBTerm functionalArea = record.FunctionalArea[0];
                        location = functionalArea.FullPath;
                        WBLogging.Debug("location = " + location);

                        WBTermCollection <WBTerm> teamsFunctionalAreas = team.FunctionalArea(functionalAreas);

                        if (!teamsFunctionalAreas.Contains(functionalArea))
                        {
                            WBLogging.Debug("Team functional areas UIControlValue: " + teamsFunctionalAreas.UIControlValue);
                            WBLogging.Debug("Record's functional area UIControlValue: " + functionalArea);

                            AccessDeniedPanel.Visible          = true;
                            UpdateRecordsMetadataPanel.Visible = false;
                            AccessDeniedReason.Text            = "The team " + team.Name + " does not have permission to edit this functional area: " + functionalArea.Name;
                            return;
                        }
                    }
                    location += "/" + record.RecordsType.FullPath;

                    String folders = record.ProtectedMasterRecord.LibraryRelativePath.Replace(record.Name, "").Replace(location, "");

                    RecordsLocation.Text = "<b>" + location + "</b> " + folders;

                    String status = record.RecordSeriesStatus;
                    RecordSeriesStatus.Text = status;

                    String explainStatus = "";
                    if (status == "Latest")
                    {
                        if (record.ProtectiveZone == WBRecordsType.PROTECTIVE_ZONE__PUBLIC)
                        {
                            explainStatus = "(live on the public website)";
                        }
                        else if (record.ProtectiveZone == WBRecordsType.PROTECTIVE_ZONE__PUBLIC_EXTRANET)
                        {
                            explainStatus = "(live on a public extranet website)";
                        }
                        else
                        {
                            explainStatus = "(live on izzi intranet)";
                        }
                    }
                    else if (status == "Retired")
                    {
                        explainStatus = "(visible on izzi intranet searches)";
                    }
                    else if (status == "Archived")
                    {
                        explainStatus = "(archived in the protected, master records library)";
                    }
                    ExplainStatus.Text = explainStatus;

                    RecordSeriesStatusChange.DataSource = new String[] { "", "Retire", "Archive" };
                    RecordSeriesStatusChange.DataBind();
                    RecordSeriesStatusChange.SelectedValue = "";

                    ProtectiveZone.DataSource = new String[] { WBRecordsType.PROTECTIVE_ZONE__PROTECTED, WBRecordsType.PROTECTIVE_ZONE__PUBLIC };
                    ProtectiveZone.DataBind();
                    ProtectiveZone.SelectedValue = record.ProtectiveZone;

                    manager.SubjectTagsTaxonomy.InitialiseTaxonomyControl(SubjectTags, WBColumn.SubjectTags.DisplayName, true);
                    SubjectTags.Text = record.SubjectTagsUIControlValue;

                    manager.TeamsTaxonomy.InitialiseTaxonomyControl(OwningTeam, WBColumn.OwningTeam.DisplayName, false);
                    OwningTeam.Text = record.OwningTeam.UIControlValue;

                    manager.TeamsTaxonomy.InitialiseTaxonomyControl(InvolvedTeams, WBColumn.InvolvedTeams.DisplayName, true);
                    InvolvedTeams.Text = record.InvolvedTeamsWithoutOwningTeamAsUIControlValue;
                }
            }
        }
Esempio n. 14
0
        protected void updateButton_OnClick(object sender, EventArgs e)
        {
            /* Something here appears to be causing an authentication error
             * if (team == null || !team.IsCurrentUserTeamMember())
             * {
             *  return;
             * }
             * WBTermCollection<WBTerm> teamsFunctionalAreas = team.FunctionalArea(teams);
             */

            String callingUserLogin = SPContext.Current.Web.CurrentUser.LoginName;

            if (true)
            {
                SPSecurity.RunWithElevatedPrivileges(delegate()
                {
                    using (WBRecordsManager elevatedManager = new WBRecordsManager(callingUserLogin))
                    {
                        WBRecord record = elevatedManager.Libraries.GetRecordByID(RecordID.Text);

                        // Just making sure that any old records have any missing metadata filled in before the update is applied:
                        record.CheckMetadata();

                        /* Something here appears to be causing an authentication error
                         * // Let's just double check the permissions to edit:
                         * WBTermCollection<WBTerm> recordsFunctionalAreas = record.FunctionalArea;
                         * if (recordsFunctionalAreas != null && recordsFunctionalAreas.Count > 0)
                         * {
                         *  WBTerm functionalArea = record.FunctionalArea[0];
                         *  if (!teamsFunctionalAreas.Contains(functionalArea))
                         *  {
                         *      throw new Exception("You are trying to edit a record (" + record.RecordID + ") which has a functional area (" + functionalArea.Name + ") that your team (" + team.Name + ") doesn't have permission to edit!");
                         *  }
                         * }
                         */

                        if (RecordSeriesStatusChange.SelectedValue == "Retire")
                        {
                            if (record.RecordSeriesStatus == "Latest")
                            {
                                record.RecordSeriesStatus = "Retired";
                            }
                        }
                        if (RecordSeriesStatusChange.SelectedValue == "Archive")
                        {
                            record.RecordSeriesStatus = "Archived";
                            record.LiveOrArchived     = "Archived";
                        }

                        record.Title                     = RecordTitle.Text;
                        record.ProtectiveZone            = ProtectiveZone.SelectedValue;
                        record.SubjectTagsUIControlValue = SubjectTags.Text;
                        record.OwningTeamUIControlValue  = OwningTeam.Text;
                        record.InvolvedTeamsWithoutOwningTeamAsUIControlValue = InvolvedTeams.Text;

                        if (record.ProtectiveZone != WBRecordsType.PROTECTIVE_ZONE__PROTECTED && record.Metadata.IsNullOrEmpty(WBColumn.ReviewDate))
                        {
                            record[WBColumn.ReviewDate] = DateTime.Now.AddYears(2);
                        }

                        WBLogging.Debug("About to udpate with callingUser = "******"The security digest for the request was not OK");
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            WBLogging.Debug("In Page_Load for the public doc metadata dialog");

            manager = new WBRecordsManager(SPContext.Current.Web.CurrentUser.LoginName);

            // If this is the initial call to the page then we need to load the basic details of the document we're publishing out:
            if (!IsPostBack)
            {
                process         = WBUtils.DeserializeFromCompressedJSONInURI <WBPublishingProcess>(Request.QueryString["PublishingProcessJSON"]);
                process.WorkBox = WorkBox;

                WBLogging.Debug("Created the WBProcessObject");

                PublishingProcessJSON.Value = WBUtils.SerializeToCompressedJSONForURI(process);

                WBLogging.Debug("Serialized the WBProcessObject to hidden field");

                NewRadioButton.Checked = true;
                NewOrReplace.Text      = "New";

                pageRenderingRequired = true;
            }
            else
            {
                process         = WBUtils.DeserializeFromCompressedJSONInURI <WBPublishingProcess>(PublishingProcessJSON.Value.WBxTrim());
                process.WorkBox = WorkBox;

                CaptureChanges();

                // By default we should not be rendering the page on a post back call
                pageRenderingRequired = false;
            }

            if (errorMessage.Length > 0)
            {
                ErrorMessageLabel.Text = errorMessage;
                return;
            }

            // Let's clear out all of the error messages text fields:
            ErrorMessageLabel.Text         = "";
            ReferenceIDMessage.Text        = "";
            ReferenceDateMessage.Text      = "";
            SeriesTagFieldMessage.Text     = "";
            ScanDateMessage.Text           = "";
            OwningTeamFieldMessage.Text    = "";
            InvolvedTeamsFieldMessage.Text = "";
            PublishingLocationError.Text   = "";
            ShortTitleError.Text           = "";

            if (IsPostBack)
            {
                // If this is a post back - then let's check if the records type has been modified:
                if (!String.IsNullOrEmpty(UpdatedPublishingProcessJSON.Value))
                {
                    WBLogging.Generic.Unexpected("The returned value was: " + UpdatedPublishingProcessJSON.Value);

                    process         = WBUtils.DeserializeFromCompressedJSONInURI <WBPublishingProcess>(UpdatedPublishingProcessJSON.Value.WBxTrim());
                    process.WorkBox = WorkBox;

                    CaptureChanges();

                    // Now set the title and subject tags from the record that is going to be replaced:
                    process.CurrentShortTitle         = process.ToReplaceShortTitle;
                    process.SubjectTagsUIControlValue = process.ToReplaceSubjectTagsUIControlValue;

                    // Now blanking this hidden field so that it doesn't trigger a recapture each time!
                    UpdatedPublishingProcessJSON.Value = "";

                    pageRenderingRequired = true;
                }
                else
                {
                    // Otherwise we are in a normal post back call.
                    pageRenderingRequired = false;
                }
            }


            destinationType = process.ProtectiveZone;

            // Now load up some of the basic details:
            if (String.IsNullOrEmpty(process.RecordsTypeUIControlValue))
            {
                showReferenceID   = false;
                showReferenceDate = false;
                showSubjectTags   = true;
                showSeriesTag     = false;
                showScanDate      = false;
            }
            else
            {
                documentRecordsType = new WBRecordsType(process.RecordsTypeTaxonomy, process.RecordsTypeUIControlValue);

                // Which of the metadata fields are being used in the form (or will need to be processed in any postback) :
                showReferenceID   = documentRecordsType.DocumentReferenceIDRequirement != WBRecordsType.METADATA_REQUIREMENT__HIDDEN;
                showReferenceDate = documentRecordsType.DocumentReferenceDateRequirement != WBRecordsType.METADATA_REQUIREMENT__HIDDEN;
                showSubjectTags   = true; // documentRecordsType.DocumentSubjectTagsRequirement != WBRecordsType.METADATA_REQUIREMENT__HIDDEN;
                showSeriesTag     = documentRecordsType.DocumentSeriesTagRequirement != WBRecordsType.METADATA_REQUIREMENT__HIDDEN;
                showScanDate      = documentRecordsType.DocumentScanDateRequirement != WBRecordsType.METADATA_REQUIREMENT__HIDDEN;
            }

            if (!String.IsNullOrEmpty(process.FunctionalAreaUIControlValue))
            {
                documentFunctionalArea = new WBTerm(process.FunctionalAreasTaxonomy, process.FunctionalAreaUIControlValue);
            }
            else
            {
                documentFunctionalArea = null;
            }


            if (pageRenderingRequired)
            {
                WBLogging.Debug("In Page_Load calling RenderPage()");
                RenderPage();
            }
        }
Esempio n. 16
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                String allDetails = Request.QueryString["CurrentDetails"];

                string[] details = allDetails.Split(',');

                if (details.Length != 5)
                {
                    WBLogging.Debug("The details sent to this page have the wrong structure: " + allDetails);
                    ErrorMessage.Text = "There was a problem with the data sent to this page.";
                    return;
                }

                EditTitle.Text               = WBUtils.PutBackDelimiterCharacters(details[0]);
                EditDescription.Text         = WBUtils.PutBackDelimiterCharacters(details[1]);
                newSubjectTagsUIControlValue = WBUtils.PutBackDelimiterCharacters(details[2]);
                EditCoverage.Text            = WBUtils.PutBackDelimiterCharacters(details[3]);
                DocumentsDetails.Value       = WBUtils.PutBackDelimiterCharacters(details[4]);
            }

            List <String> documentsDetailsList = new List <String>();

            string currentDetails = DocumentsDetails.Value.WBxTrim();

            if (!String.IsNullOrEmpty(currentDetails))
            {
                documentsDetailsList = new List <String>(currentDetails.Split(';'));
            }

            if (IsPostBack)
            {
                if (!String.IsNullOrEmpty(ReplaceRowIndex.Value))
                {
                    int rowIndex = Convert.ToInt32(ReplaceRowIndex.Value);
                    ReplaceRowIndex.Value = "";

                    if (rowIndex == -1)
                    {
                        documentsDetailsList.Add(ReplacementDetails.Value);
                    }
                    else
                    {
                        documentsDetailsList.RemoveAt(rowIndex);
                        documentsDetailsList.Insert(rowIndex, ReplacementDetails.Value);
                    }

                    DocumentsDetails.Value = String.Join(";", documentsDetailsList.ToArray());
                }


                if (!String.IsNullOrEmpty(DeleteRowIndex.Value))
                {
                    int rowIndex = Convert.ToInt32(DeleteRowIndex.Value);
                    DeleteRowIndex.Value = "";

                    documentsDetailsList.RemoveAt(rowIndex);

                    DocumentsDetails.Value = String.Join(";", documentsDetailsList.ToArray());
                }
            }

            RenderPage();
        }
Esempio n. 17
0
        private void RefreshBoundData()
        {
            if (SelectedNodePath != "")
            {
                SPGroup rmManagersGroup = SPContext.Current.Web.WBxGetGroupOrNull(WBFarm.Local.RecordsManagersGroupName);

                if (rmManagersGroup != null)
                {
                    if (rmManagersGroup.ContainsCurrentUser)
                    {
                        currentUserIsRecordsManager = true;
                        WBLogging.Debug("Set the current user as being a records manager.");
                    }
                    else
                    {
                        WBLogging.Debug("The current user is not a part of the RM Managers group called: " + WBFarm.Local.RecordsManagersGroupName);
                    }
                }
                else
                {
                    WBLogging.Debug("Could not find the RM Managers group called: " + WBFarm.Local.RecordsManagersGroupName);
                }

                SelectedRecordsType.Text = SelectedNodePath.Replace("Records Types/", "").Replace("/", " / ");

                WBRecordsType recordsType    = null;
                WBTerm        functionalArea = null;
                WBTerm        subjectTag     = null;

                switch (SelectedView)
                {
                case VIEW_BY_RECORDS_TYPE:
                {
                    recordsType = recordsTypesTaxonomy.GetSelectedRecordsType(SelectedNodePath);
                    SelectedRecordsTypeDescription.Text = recordsType.Description;
                    break;
                }

                case VIEW_BY_FUNCTION_THEN_TYPE:
                {
                    string[] parts = SelectedNodePath.Split('/');
                    if (parts.Length < 3)
                    {
                        break;
                    }

                    string        functionPath = parts[0];
                    List <String> partsList    = new List <String>(parts);
                    partsList.RemoveAt(0);
                    string recordsTypePath = String.Join("/", partsList.ToArray());

                    Term functionalAreaTerm = functionalAreaTaxonomy.GetSelectedTermByPath(functionPath);
                    if (functionalAreaTerm != null)
                    {
                        functionalArea = new WBTerm(functionalAreaTaxonomy, functionalAreaTerm);
                    }

                    recordsType = recordsTypesTaxonomy.GetSelectedRecordsType(recordsTypePath);
                    SelectedRecordsTypeDescription.Text = recordsType.Description;
                    break;
                }

                case VIEW_BY_SUBJECT:
                {
                    Term subjectTagsTerm = subjectTagsTaxonomy.GetSelectedTermByPath(SelectedNodePath);
                    if (subjectTagsTerm != null)
                    {
                        subjectTag = new WBTerm(subjectTagsTaxonomy, subjectTagsTerm);
                        SelectedRecordsTypeDescription.Text = subjectTag.Description;
                    }

                    if (subjectTag == null)
                    {
                        WBLogging.Generic.Verbose("Did not find subject with path: " + SelectedNodePath);
                        return;
                    }
                    break;
                }

                case VIEW_BY_FOLDER_PATH:
                {
                    string[] parts = SelectedNodePath.Split('/');
                    if (parts.Length < 3)
                    {
                        break;
                    }

                    string        functionPath         = parts[0];
                    List <String> recordsTypePartsList = new List <String>();
                    recordsTypePartsList.Add(parts[1]);
                    recordsTypePartsList.Add(parts[2]);
                    string recordsTypePath = String.Join("/", recordsTypePartsList.ToArray());

                    Term functionalAreaTerm = functionalAreaTaxonomy.GetSelectedTermByPath(functionPath);
                    if (functionalAreaTerm != null)
                    {
                        functionalArea = new WBTerm(functionalAreaTaxonomy, functionalAreaTerm);
                    }

                    recordsType = recordsTypesTaxonomy.GetSelectedRecordsType(recordsTypePath);
                    SelectedRecordsTypeDescription.Text = recordsType.Description;
                    break;
                }

                default: return;
                }


                WBTeam team = WBTeam.GetFromTeamSite(teamsTaxonomy, SPContext.Current.Web);

                WBFarm farm = WBFarm.Local;

                using (SPSite site = new SPSite(farm.ProtectedRecordsLibraryUrl))
                {
                    using (SPWeb web = site.OpenWeb())
                    {
                        WBQuery query = new WBQuery();

                        if (recordsType == null && functionalArea == null)
                        {
                            query.LogicallyCannotHaveResults = true;
                        }
                        else
                        {
                            if (SelectedView == VIEW_BY_FUNCTION_THEN_TYPE || SelectedView == VIEW_BY_FOLDER_PATH)
                            {
                                WBLogging.Generic.Unexpected("Setting FilterByFolderPath = " + SelectedNodePath);
                                query.FilterByFolderPath = SelectedNodePath;
                            }
                            else
                            {
                                if (recordsType != null)
                                {
                                    WBQueryClause recordsTypeClause = new WBQueryClause(WBColumn.RecordsType, WBQueryClause.Comparators.Equals, recordsType);
                                    recordsTypeClause.UseDescendants = true;
                                    query.AddClause(recordsTypeClause);
                                }

                                if (functionalArea != null)
                                {
                                    WBQueryClause functionalAreaClause = new WBQueryClause(WBColumn.FunctionalArea, WBQueryClause.Comparators.Equals, functionalArea);
                                    functionalAreaClause.UseDescendants = true;
                                    query.AddClause(functionalAreaClause);
                                }
                            }

                            query.AddClause(new WBQueryClause(WBColumn.ContentType, WBQueryClause.Comparators.Equals, farm.WorkBoxRecordContentTypeName));

                            if (subjectTag != null)
                            {
                                WBQueryClause subjectTagClause = new WBQueryClause(WBColumn.SubjectTags, WBQueryClause.Comparators.Equals, subjectTag);
                                subjectTagClause.UseDescendants = false;
                                query.AddClause(subjectTagClause);
                            }

                            if (team != null)
                            {
                                query.AddEqualsFilter(WBColumn.InvolvedTeams, team);
                            }

                            if (!String.IsNullOrEmpty(webPart.FilterByProtectiveZone))
                            {
                                query.AddEqualsFilter(WBColumn.ProtectiveZone, webPart.FilterByProtectiveZone);
                            }
                        }

                        showFilters = true;

                        string statusFilter = SelectedLiveOrArchivedStatusFilter;
                        if (statusFilter == null || statusFilter == "")
                        {
                            statusFilter = "All";                                             // WBColumn.LIVE_OR_ARCHIVED__LIVE;
                        }
                        if (statusFilter != "All")
                        {
                            query.AddEqualsFilter(WBColumn.LiveOrArchived, statusFilter);
                        }

                        FilterLiveStatus.CssClass     = "wbf-unselected-filter";
                        FilterArchivedStatus.CssClass = "wbf-unselected-filter";
                        FilterAllStatus.CssClass      = "wbf-unselected-filter";

                        if (statusFilter == WBColumn.LIVE_OR_ARCHIVED__LIVE)
                        {
                            FilterLiveStatus.CssClass = "wbf-selected-filter";
                        }
                        if (statusFilter == WBColumn.LIVE_OR_ARCHIVED__ARCHIVED)
                        {
                            FilterArchivedStatus.CssClass = "wbf-selected-filter";
                        }
                        if (statusFilter == "All")
                        {
                            FilterAllStatus.CssClass = "wbf-selected-filter";
                        }


                        query.AddViewColumn(WBColumn.Name);
                        query.AddViewColumn(WBColumn.Title);
                        query.AddViewColumn(WBColumn.TitleOrName);
                        query.AddViewColumn(WBColumn.FileSize);
                        query.AddViewColumn(WBColumn.FileTypeIcon);
                        query.AddViewColumn(WBColumn.FileType);
                        query.AddViewColumn(WBColumn.DisplayFileSize);
                        query.AddViewColumn(WBColumn.EncodedAbsoluteURL);
                        query.AddViewColumn(WBColumn.FunctionalArea);
                        query.AddViewColumn(WBColumn.OwningTeam);
                        query.AddViewColumn(WBColumn.ReferenceDate);
                        query.AddViewColumn(WBColumn.ReferenceID);
                        query.AddViewColumn(WBColumn.SeriesTag);
                        query.AddViewColumn(WBColumn.ProtectiveZone);
                        query.AddViewColumn(WBColumn.RecordID);
                        query.AddViewColumn(WBColumn.LiveOrArchived);



                        if (SelectedView != VIEW_BY_SUBJECT)
                        {
                            query.AddViewColumn(WBColumn.SubjectTags);
                        }
                        else
                        {
                            query.AddViewColumn(WBColumn.RecordsType);
                        }

                        if (sortColumn != null)
                        {
                            query.OrderBy(sortColumn, ascending);
                        }



                        SPList recordsLibrary = web.GetList(farm.ProtectedRecordsLibraryUrl); //"Documents"]; //farm.RecordsCenterRecordsLibraryName];

                        DataTable dataTable = recordsLibrary.WBxGetDataTable(site, query);

                        ShowResults.DataSource = dataTable;

                        ShowResults.Columns.Clear();
                        ShowResults.Columns.Add(WBUtils.DynamicIconTemplateField(WBColumn.FileTypeIcon, WBColumn.EncodedAbsoluteURL));
                        ShowResults.Columns.Add(WBUtils.HyperLinkField(WBColumn.TitleOrName, WBColumn.EncodedAbsoluteURL, sortColumn, ascending));
                        ShowResults.Columns.Add(WBUtils.BoundField(WBColumn.FileType, sortColumn, ascending));
                        ShowResults.Columns.Add(WBUtils.BoundField(WBColumn.DisplayFileSize, sortColumn, ascending));
//                        ShowResults.Columns.Add(WBUtils.BoundField(WBColumn.FunctionalArea, sortColumn, ascending));
                        ShowResults.Columns.Add(WBUtils.BoundField(WBColumn.ReferenceDate, sortColumn, ascending));
                        //                      ShowResults.Columns.Add(WBUtils.BoundField(WBColumn.ReferenceID, sortColumn, ascending));
                        //ShowResults.Columns.Add(WBUtils.BoundField(WBColumn.SeriesTag, sortColumn, ascending));
                        ShowResults.Columns.Add(WBUtils.BoundField(WBColumn.OwningTeam, sortColumn, ascending));
                        ShowResults.Columns.Add(WBUtils.BoundField(WBColumn.ProtectiveZone, sortColumn, ascending));
                        ShowResults.Columns.Add(WBUtils.BoundField(WBColumn.LiveOrArchived, sortColumn, ascending));


                        if (SelectedView != VIEW_BY_SUBJECT)
                        {
                            ShowResults.Columns.Add(WBUtils.BoundField(WBColumn.SubjectTags, sortColumn, ascending));
                        }
                        else
                        {
                            ShowResults.Columns.Add(WBUtils.BoundField(WBColumn.RecordsType, sortColumn, ascending));
                        }

                        if (this.currentUserIsRecordsManager)
                        {
                            List <WBColumn> valueColumns = new List <WBColumn>();
                            valueColumns.Add(WBColumn.RecordID);

                            String formatString = SPContext.Current.Web.Url + "/_layouts/WorkBoxFramework/UpdateRecordsMetadata.aspx?RecordID={0}";

                            formatString = "<a href=\"javascript: WorkBoxFramework_commandAction('" + formatString + "', 800, 600); \">(edit metadata)</a>";

                            ShowResults.Columns.Add(WBUtils.FormatStringTemplateField(formatString, valueColumns));
                            WBLogging.Debug("Added the (edit metadata) show column.");
                        }
                        else
                        {
                            WBLogging.Debug("Did not add the (edit metadata) show column.");
                        }


                        ShowResults.DataBind();
                    }
                }
            }
            else
            {
                WBUtils.logMessage("SelectedNodePath was empty");
            }
        }
Esempio n. 18
0
        protected void Page_Load(object sender, EventArgs e)
        {
            webPart = this.Parent as ViewSubjectPages;

            DocumentsForSubject.AllowSorting = true;
            DocumentsForSubject.Sorting     += new GridViewSortEventHandler(DocumentsForSubject_Sorting);

            DocumentsForSubject.AllowPaging                   = true;
            DocumentsForSubject.PageIndexChanging            += new GridViewPageEventHandler(DocumentsForSubject_PageIndexChanging);
            DocumentsForSubject.PagerSettings.Mode            = PagerButtons.Numeric;
            DocumentsForSubject.PagerSettings.Position        = PagerPosition.Bottom;
            DocumentsForSubject.PagerSettings.PageButtonCount = 20;
            DocumentsForSubject.PagerSettings.Visible         = true;
            DocumentsForSubject.PageSize = 20;

            // this odd statement is required in order to get the pagination to work with an SPGridView!
            DocumentsForSubject.PagerTemplate = null;


            showAtoZ    = webPart.ShowAToZ;
            showFilters = false;

            string additionalPath = "";

            if (String.IsNullOrEmpty(webPart.RootSubjectTag))
            {
                PageName.Text = "<i>(Web part not yet configured)</i>";
                return;
            }

            // Let's capture the information about what we should be looking at:
            pickedLetter = Request.QueryString["Letter"];
            if (!String.IsNullOrEmpty(pickedLetter))
            {
                viewingALetter = true;
            }

            additionalPath = Request.QueryString["AdditionalPath"];
            if (additionalPath == null)
            {
                additionalPath = "";
            }

            recordsTypeFullPath = Request.QueryString["RecordsType"];
            if (String.IsNullOrEmpty(recordsTypeFullPath))
            {
                recordsTypeFullPath = NO_RECORDS_TYPE_SELECTED;
            }

            if (webPart.ShowRecordTypes)
            {
                WBLogging.Debug("ViewSubjectPages: Using records types. Currently set as: " + recordsTypeFullPath);
            }
            else
            {
                WBLogging.Debug("ViewSubjectPages: Not using records types");
            }

            FullSubjectTagPath = webPart.RootSubjectTag + additionalPath;
            WBLogging.Debug("FullSubjectTagPath = " + FullSubjectTagPath);

            WBTaxonomy subjectTags = WBTaxonomy.GetSubjectTags(SPContext.Current.Site);

            Term   rootSubjectTagTerm = subjectTags.GetSelectedTermByPath(webPart.RootSubjectTag);
            WBTerm rootSubjectTag     = null;

            if (rootSubjectTagTerm != null)
            {
                rootSubjectTag = new WBTerm(subjectTags, rootSubjectTagTerm);
            }

            if (rootSubjectTag == null)
            {
                PageName.Text = "<i>(Could not find the root subject tag with path: " + webPart.RootSubjectTag + ")</i>";
                return;
            }


            Term pageSubjectTagTerm = subjectTags.GetSelectedTermByPath(FullSubjectTagPath);
            //SC: WBTerm pageSubjectTag = null;
            WBSubjectTag pageSubjectTag = null;

            if (pageSubjectTagTerm != null)
            {
                //SC: pageSubjectTag = new WBTerm(subjectTags, pageSubjectTagTerm);
                pageSubjectTag = new WBSubjectTag(subjectTags, pageSubjectTagTerm);
            }

            if (pageSubjectTag == null)
            {
                PageName.Text = "<i>(Could not find the page subject tag with path: " + FullSubjectTagPath + ")</i>";
                return;
            }

            string html = "";

            string recordsTypeParameter = "";

            if (webPart.ShowRecordTypes)
            {
                recordsTypeParameter = "&RecordsType=" + recordsTypeFullPath;
            }

            //webPart.OnlyTermsWithDocuments = false;

            if (webPart.OnlyTermsWithDocuments)
            {
                BuildListOfAllowedTerms();
            }

            if (viewingALetter)
            {
                PageName.Text = "<a href='?'>" + webPart.RootSubjectTag + "</a> - " + pickedLetter;
                PageSubjectTagDescription.Text = "You are viewing a list of all of the subjects with the letter '" + pickedLetter + "'.";

                Dictionary <String, String> allTermPaths = new Dictionary <string, string>();
                AddAllTermsThatMatch(pickedLetter, "", rootSubjectTagTerm, allTermPaths);

                if (allTermPaths.Count > 0)
                {
                    List <String> terms = new List <String>(allTermPaths.Keys);
                    terms.Sort();

                    List <String> termsWithLetterFirst = new List <String>();
                    List <String> remainingTerms       = new List <String>();

                    foreach (String term in terms)
                    {
                        if (term.IndexOf(pickedLetter) == 0)
                        {
                            termsWithLetterFirst.Add(term);
                        }
                        else
                        {
                            remainingTerms.Add(term);
                        }
                    }

                    foreach (String term in termsWithLetterFirst)
                    {
                        html += "<div class='lbi-a-to-z-child-subject'><a href='?AdditionalPath=" + allTermPaths[term] + recordsTypeParameter + "'>" + term + "</a></div>\n";
                    }

                    if (remainingTerms.Count > 0)
                    {
                        html += "<div>&nbsp;</div>\n";
                        foreach (String term in remainingTerms)
                        {
                            html += "<div class='lbi-a-to-z-child-subject'><a href='?AdditionalPath=" + allTermPaths[term] + recordsTypeParameter + "'>" + term + "</a></div>\n";
                        }
                    }
                }
                else
                {
                    html += "<p>There were no terms found for the letter '" + pickedLetter + "'.</p>";
                }
            }
            else
            {
                List <String> names = new List <String>(FullSubjectTagPath.Split('/'));
                List <String> path  = new List <String>(names);
                path.RemoveAt(0);


                String justRecordsType = "";
                if (!String.IsNullOrEmpty(recordsTypeFullPath) && recordsTypeFullPath != NO_RECORDS_TYPE_SELECTED)
                {
                    justRecordsType = GetJustRecordsTypeName(recordsTypeFullPath);
                }

                PageName.Text = BuildPageNamePath(names, path, justRecordsType);

                //SC: PageSubjectTagDescription.Text = pageSubjectTag.Description;
                if (String.IsNullOrEmpty(pageSubjectTag.PageContent))
                {
                    PageSubjectTagDescription.Text = pageSubjectTag.Description;
                }
                else
                {
                    PageSubjectTagDescription.Text = pageSubjectTag.PageContent;
                }

                // Contacts
                if (!String.IsNullOrEmpty(pageSubjectTag.InternalContactLoginName))
                {
                    panInternalContact.Visible = true;
                    var user = pageSubjectTag.InternalContact(SPContext.Current.Web);
                    if (user != null)
                    {
                        // Bind user to control for presentation
                        ((WBFUser)wbfInternalContact).User = user;
                    }
                }
                else
                {
                    panInternalContact.Visible = false;
                }
                if (!pageSubjectTag.ExternalContact.WBxIsHtmlFieldEmpty())
                {
                    panExternalContact.Visible = true;
                    litExternalContact.Text    = pageSubjectTag.ExternalContact;
                }
                else
                {
                    panExternalContact.Visible = false;
                }


                foundChildSubjectTags = false;

                onRootOfAtoZ = (webPart.ShowAToZ && pageSubjectTag.Name == webPart.RootSubjectTag);

                bool showDocuments = true;

                if (!onRootOfAtoZ)
                {
                    // OK so now we need to find the sub terms and put them in order.
                    List <String> termLabels = new List <String>();
                    foreach (Term child in pageSubjectTag.Term.Terms)
                    {
                        if (child.IsAvailableForTagging && CheckTermIsAllowed(child))
                        {
                            termLabels.Add(child.Name);
                            foundChildSubjectTags = true;
                        }
                    }

                    if (termLabels.Count > 0)
                    {
                        if (webPart.OnlyShowDocumentsOnLeafPages)
                        {
                            showDocuments = false;
                        }

                        termLabels.Sort();

                        foreach (String label in termLabels)
                        {
                            html += "<div class='lbi-a-to-z-child-subject'><a href='?AdditionalPath=" + additionalPath + "/" + label + recordsTypeParameter + "'>" + label + "</a></div>\n";
                        }
                    }
                    else
                    {
                        // OK so there are no further subject tags, but should we be presenting records types:
                        if (webPart.ShowRecordTypes)
                        {
                            if (recordsTypeFullPath == NO_RECORDS_TYPE_SELECTED)
                            {
                                Dictionary <String, String> recordsTypesToList = FindRecordsTypesToList();
                                if (recordsTypesToList.Count > 0)
                                {
                                    if (webPart.OnlyShowDocumentsOnLeafPages)
                                    {
                                        showDocuments = false;
                                    }

                                    List <String> justRecordsTypes = new List <String>(recordsTypesToList.Keys);
                                    justRecordsTypes.Sort();

                                    foreach (String recordsType in justRecordsTypes)
                                    {
                                        String recordsTypePath = recordsTypesToList[recordsType];

                                        html += "<div class='lbi-a-to-z-child-subject'><a href='?AdditionalPath=" + additionalPath + "&RecordsType=" + recordsTypePath + "'>" + recordsType + "</a></div>\n";
                                    }
                                }
                            }
                        }
                    }
                }
                else
                {
                    if (webPart.ShowDocumentsOnAtoZRootPage)
                    {
                        showDocuments = true;
                    }
                    else
                    {
                        showDocuments = false;
                    }
                }

                if (showDocuments)
                {
                    RefreshBoundDocumentsList();
                }
            }

            if (!String.IsNullOrEmpty(html))
            {
                //TableOfChildSubjects.Text = String.Concat("<h3 class='wbf-subject-tag-section-head'>Child Subject Tags</h3>", html);
                TableOfChildSubjects.Text = html;
            }

            // Added by Steve Clements
            SetupAddEditButtons(pageSubjectTag);
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            webPart = this.Parent as PickedDocumentsGroup;

            SPWebPartManager webPartManager = (SPWebPartManager)WebPartManager.GetCurrentWebPartManager(this.Page);

            Guid WebPartGuid = webPartManager.GetStorageKey(webPart);

            WebPartUniqueID = WebPartGuid.ToString().Replace("-", String.Empty);;

            //EditRelatedDocumentsButton.OnClientClick = "WorkBoxFramework_editRelatedDocuments(WBF_EditDialogCallback" + WebPartUniqueID + ", \"" + webPart.PickedDocumentsDetails + "\"); return false;";


            String[] detailsToSave = new String[5];

            detailsToSave[0] = WBUtils.ReplaceDelimiterCharacters(webPart.Title);
            detailsToSave[1] = WBUtils.ReplaceDelimiterCharacters(webPart.DocumentsGroupDescription);
            detailsToSave[2] = WBUtils.ReplaceDelimiterCharacters(webPart.DocumentsGroupSubjectTags);
            detailsToSave[3] = WBUtils.ReplaceDelimiterCharacters(webPart.DocumentsGroupCoverage);
            detailsToSave[4] = WBUtils.ReplaceDelimiterCharacters(webPart.PickedDocumentsDetails.WBxTrim());

            String currentDetails = String.Join(",", detailsToSave);

            WBLogging.Debug("Current details: " + currentDetails);

            if (IsPostBack)
            {
                if (NeedToSave.Value == "true")
                {
                    WBLogging.Debug("Trying to save value: " + NewDocumentsGroupDetails.Value);

                    string[] newDetails = NewDocumentsGroupDetails.Value.WBxTrim().Split(',');

                    if (newDetails.Length != 5)
                    {
                        WBLogging.Debug("The details sent to this page have the wrong structure: " + NewDocumentsGroupDetails.Value);
                        Description.Text = "(the web part has not yet been edited).";
                        return;
                    }


                    webPart.Title = WBUtils.PutBackDelimiterCharacters(newDetails[0]);
                    webPart.DocumentsGroupDescription = WBUtils.PutBackDelimiterCharacters(newDetails[1]);
                    webPart.DocumentsGroupSubjectTags = WBUtils.PutBackDelimiterCharacters(newDetails[2]);
                    webPart.DocumentsGroupCoverage    = WBUtils.PutBackDelimiterCharacters(newDetails[3]);
                    webPart.PickedDocumentsDetails    = WBUtils.PutBackDelimiterCharacters(newDetails[4]);

                    webPartManager.SaveChanges(WebPartGuid);

                    SPContext.Current.File.Update();
                    SPContext.Current.Web.Update();

                    currentDetails = NewDocumentsGroupDetails.Value.WBxTrim();

                    WBLogging.Debug("New current details: " + currentDetails);
                }
            }

            if (!String.IsNullOrEmpty(currentDetails) && !currentDetails.Contains(","))
            {
                WBLogging.Generic.Unexpected("The PickRelatedDocuments web part had an odd value: " + currentDetails);
                currentDetails = "";
            }

            if ((SPContext.Current.FormContext.FormMode == SPControlMode.Edit) ||
                (webPartManager.DisplayMode == WebPartManager.EditDisplayMode))
            {
                EditPanel.Visible = true;
                InEditMode        = true;
                EditDocumentsGroupButton.OnClientClick = "WorkBoxFramework_editDocumentsGroup(WBF_EditDialogCallback" + WebPartUniqueID + ", \"" + currentDetails + "\"); return false;";
            }
            else
            {
                EditPanel.Visible = false;
                EditDocumentsGroupButton.OnClientClick = "";
            }



            WBLogging.Debug("PickedDocumentsGroup currentDetails: " + currentDetails);


            Title.Text       = webPart.Title;
            Description.Text = WBUtils.MaybeAddParagraphTags(webPart.DocumentsGroupDescription);

            WBTermCollection <WBTerm> allSubjects = new WBTermCollection <WBTerm>(null, webPart.DocumentsGroupSubjectTags);

            SubjectTags.Text = allSubjects.Names();
            Coverage.Text    = webPart.DocumentsGroupCoverage;


            if (String.IsNullOrEmpty(webPart.PickedDocumentsDetails))
            {
                DocumentsList.Text = "<ul><li>(No documents picked)</li></ul>";
                DocumentsToView    = false;
                return;
            }

            String extranetRecordsLibraryURL = WBFWebPartsUtils.GetExtranetLibraryURL(SPContext.Current.Site);

            SPSite extranetRecordsSite    = null;
            SPWeb  extranetRecordsWeb     = null;
            SPList extranetRecordsLibrary = null;

            try
            {
                string[] documentsDetailsArray = webPart.PickedDocumentsDetails.Split(';');

                String publicRecordsLibraryURL = WBFWebPartsUtils.GetRecordsLibraryURL(SPContext.Current.Site);

                using (SPSite publicRecordsSite = new SPSite(publicRecordsLibraryURL))
                    using (SPWeb publicRecordsWeb = publicRecordsSite.OpenWeb())
                    {
                        SPList publicRecordsLibrary = publicRecordsWeb.GetList(publicRecordsLibraryURL);

                        String html = "<ul>\n";

                        foreach (string documentDetails in documentsDetailsArray)
                        {
                            string[] documentDetailsArray = documentDetails.Split('|');

                            if (documentDetailsArray.Length != 4)
                            {
                                WBLogging.Generic.Unexpected("Badly formatted document details in PickRelatedDocuments web part: " + currentDetails + " - Ignoring these details");
                                continue;
                            }

                            string zone     = documentDetailsArray[0];
                            string recordID = documentDetailsArray[1];
                            string sourceID = documentDetailsArray[2];
                            string filename = documentDetailsArray[3];

                            SPListItem item = null;

                            if (zone == "Public Extranet")
                            {
                                if (extranetRecordsLibrary == null)
                                {
                                    extranetRecordsSite    = new SPSite(extranetRecordsLibraryURL);
                                    extranetRecordsWeb     = extranetRecordsSite.OpenWeb();
                                    extranetRecordsLibrary = extranetRecordsWeb.GetList(extranetRecordsLibraryURL);
                                }

                                item = WBFWebPartsUtils.GetRecord(extranetRecordsSite, extranetRecordsWeb, extranetRecordsLibrary, zone, recordID);
                            }
                            else
                            {
                                item = WBFWebPartsUtils.GetRecord(publicRecordsSite, publicRecordsWeb, publicRecordsLibrary, zone, recordID);
                            }

                            if (item == null)
                            {
                                if (InEditMode)
                                {
                                    html += "<li><i>(Could not find document)</i></li>";
                                }
                            }
                            else
                            {
                                DocumentsToView = true;

                                string title = item.WBxGetAsString(WBColumn.Title);
                                if (String.IsNullOrEmpty(title))
                                {
                                    title = Path.GetFileNameWithoutExtension(item.Name);
                                }

                                string extension = Path.GetExtension(item.Name).Replace(".", "").ToUpper();

                                string additionalText = "";
                                long   fileLength     = (item.File.Length / 1024);
                                additionalText = ", " + fileLength + "KB";

                                if (item.WBxHasValue(WBColumn.ReferenceDate))
                                {
                                    DateTime referenceDate       = (DateTime)item.WBxGet(WBColumn.ReferenceDate);
                                    string   referenceDateString = string.Format("{0}-{1}-{2}",
                                                                                 referenceDate.Year.ToString("D4"),
                                                                                 referenceDate.Month.ToString("D2"),
                                                                                 referenceDate.Day.ToString("D2"));

                                    additionalText += ", " + referenceDateString;
                                }

                                html += String.Format("<li><img src=\"{0}\" alt=\"{1}\"/><a target=\"_blank\" href=\"{2}\">{1}</a> <span>({3})</span></li>",
                                                      WBUtils.DocumentIcon16(item.WBxGetAsString(WBColumn.Name)),
                                                      title,
                                                      item.WBxGetAsString(WBColumn.EncodedAbsoluteURL),
                                                      extension + additionalText);
                            }
                        }

                        html += "</ul>\n";

                        DocumentsList.Text = html;
                    }
            }
            catch (Exception exception)
            {
                if (InEditMode)
                {
                    DocumentsList.Text = "An error occurred: " + exception.Message;
                }
                else
                {
                    DocumentsToView = false;
                }
            }
            finally
            {
                if (extranetRecordsWeb != null)
                {
                    extranetRecordsWeb.Dispose();
                }
                if (extranetRecordsSite != null)
                {
                    extranetRecordsSite.Dispose();
                }
            }
        }
Esempio n. 20
0
        private Dictionary <String, String> FindRecordsTypesToList()
        {
            WBFarm farm = WBFarm.Local;

            Dictionary <String, String> typesToList = new Dictionary <String, String>();

            using (SPSite site = new SPSite(farm.ProtectedRecordsLibraryUrl))
            {
                WBTaxonomy subjectTags          = WBTaxonomy.GetSubjectTags(site);
                WBTaxonomy teamsTaxonomy        = WBTaxonomy.GetTeams(subjectTags);
                WBTaxonomy recordsTypesTaxonomy = WBTaxonomy.GetRecordsTypes(teamsTaxonomy);

                Term   pageSeriesTagTerm   = subjectTags.GetSelectedTermByPath(FullSubjectTagPath);
                WBTerm localPageSubjectTag = null;
                if (pageSeriesTagTerm != null)
                {
                    localPageSubjectTag = new WBTerm(subjectTags, pageSeriesTagTerm);
                }

                if (localPageSubjectTag != null)
                {
                    using (SPWeb web = site.OpenWeb())
                    {
                        WBQuery query = new WBQuery();

                        WBQueryClause subjectTagClause = new WBQueryClause(WBColumn.SubjectTags, WBQueryClause.Comparators.Equals, localPageSubjectTag);
                        subjectTagClause.UseDescendants = false;
                        query.AddClause(subjectTagClause);

                        if (webPart.OnlyLiveRecords)
                        {
                            WBQueryClause isLiveClause = new WBQueryClause(WBColumn.LiveOrArchived, WBQueryClause.Comparators.Equals, WBColumn.LIVE_OR_ARCHIVED__LIVE);
                            query.AddClause(isLiveClause);
                        }

                        /*
                         * else
                         * {
                         * string statusFilter = SelectedLiveOrArchivedStatusFilter;
                         * if (statusFilter == null || statusFilter == "") statusFilter = WBColumn.LIVE_OR_ARCHIVED__LIVE;
                         * if (statusFilter != "All")
                         * {
                         *  query.AddEqualsFilter(WBColumn.LiveOrArchived, statusFilter);
                         * }
                         * }
                         */

                        WBTeam team = null;
                        if (!String.IsNullOrEmpty(webPart.FilterByOwningTeam))
                        {
                            team = teamsTaxonomy.GetSelectedTeam(webPart.FilterByOwningTeam);

                            if (team != null)
                            {
                                query.AddEqualsFilter(WBColumn.OwningTeam, team);
                            }
                        }

                        query.AddViewColumn(WBColumn.Name);
                        query.AddViewColumn(WBColumn.Title);
                        query.AddViewColumn(WBColumn.RecordsType);

                        if (sortColumn == null)
                        {
                            sortColumn = WBColumn.ReferenceDate;
                            ascending  = false;
                        }

                        if (sortColumn != null)
                        {
                            query.OrderBy(sortColumn, ascending);
                        }

                        SPList recordsLibrary = web.GetList(farm.ProtectedRecordsLibraryUrl); //"Documents"]; //farm.RecordsCenterRecordsLibraryName];

                        SPListItemCollection listOfFoundDocuments = recordsLibrary.WBxGetItems(site, query);

                        foreach (SPListItem item in listOfFoundDocuments)
                        {
                            WBRecordsType recordsType     = item.WBxGetSingleTermColumn <WBRecordsType>(recordsTypesTaxonomy, WBColumn.RecordsType);
                            String        justRecordsType = GetJustRecordsTypeName(recordsType.Name);

                            if (!typesToList.ContainsKey(justRecordsType))
                            {
                                typesToList.Add(justRecordsType, recordsType.FullPath);
                            }
                        }
                    }
                }
                else
                {
                    WBLogging.Debug("pageSubjectTag was null");
                }
            }

            return(typesToList);
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            SPGroup publishersGroup = WorkBox.OwningTeam.PublishersGroup(SPContext.Current.Site);

            if (publishersGroup != null)
            {
                if (publishersGroup.ContainsCurrentUser)
                {
                    userCanPublishToPublic = true;
                }
            }

            if (!IsPostBack)
            {
                if (Request.QueryString["selectedItemsIDsString"] != null && Request.QueryString["selectedListGUID"] != null)
                {
                    manager = new WBRecordsManager(SPContext.Current.Web.CurrentUser.LoginName);
                    string   selectedListGUID = Request.QueryString["selectedListGUID"];
                    string[] selectedItemsIDs = Request.QueryString["selectedItemsIDsString"].ToString().Split('|');

                    WBLogging.Debug("Before creating the WBProcessObject");

                    process = new WBPublishingProcess(WorkBox, selectedListGUID, selectedItemsIDs);

                    WBLogging.Debug("Created the WBProcessObject");

                    PublishingProcessJSON.Value = WBUtils.SerializeToCompressedJSONForURI(process);

                    String html = "";

                    WBLogging.Debug("Created the WBProcessObject and serialised " + PublishingProcessJSON.Value);

                    if (process.ItemIDs.Count == 0)
                    {
                        WBLogging.Debug("process.ItemIDs.Count == 0");
                        html += "<i>No documents selected!</i>";
                    }
                    else
                    {
                        html += "<table cellpadding='0px' cellspacing='5px'>";

                        foreach (String itemID in process.ItemIDs)
                        {
                            String filename = process.MappedFilenames[itemID];

                            WBLogging.Debug("list through item with name: " + filename);
                            html += "<tr><td align='center'><img src='" + WBUtils.DocumentIcon16(filename) + "' alt='Icon for file " + filename + "'/></td><td align='left'>" + filename + "</td></tr>\n";

                            String fileType = WBUtils.GetExtension(filename);
                            if (!fileTypes.Contains(fileType))
                            {
                                fileTypes.Add(fileType);
                            }
                        }

                        html += "</table>";

                        List <string> disallowedFileTypes = manager.GetFileTypesDisallowedFromBeingPublishedToPublic(fileTypes);

                        if (String.IsNullOrEmpty(WorkBox.OwningTeam.InformationAssetOwnerLogin))
                        {
                            PublicWebSiteButton.Enabled          = false;
                            PublicNotAllowedMessage.Text         = "You cannot publish to the public website because the owning team of this work box does not have an assigned Information Asset Owner(IAO)";
                            PublicExtranetButton.Enabled         = false;
                            PublicExtranetNotAllowedMessage.Text = "You cannot publish to the public website because the owning team of this work box does not have an assigned Information Asset Owner(IAO)";
                        }
                        else if (!WorkBox.OwningTeam.IsCurrentUserTeamMember())
                        {
                            PublicWebSiteButton.Enabled          = false;
                            PublicNotAllowedMessage.Text         = "You cannot publish to the public website from here because you are not a member of this work box's owning team";
                            PublicExtranetButton.Enabled         = false;
                            PublicExtranetNotAllowedMessage.Text = "You cannot publish to the public website from here because you are not a member of this work box's owning team";
                        }
                        else if (disallowedFileTypes.Count > 0)
                        {
                            PublicWebSiteButton.Enabled          = false;
                            PublicNotAllowedMessage.Text         = "The following file types have not been approved for publishing to a public website: " + String.Join(", ", disallowedFileTypes.ToArray());
                            PublicExtranetButton.Enabled         = false;
                            PublicExtranetNotAllowedMessage.Text = "The following file types have not been approved for publishing to a public website: " + String.Join(", ", disallowedFileTypes.ToArray());
                        }
                    }

                    DocumentsBeingPublished.Text = html;
                }
                else
                {
                    ErrorMessageLabel.Text = "There was an error with the passed through values";
                }
            }
            else
            {
                process         = WBUtils.DeserializeFromCompressedJSONInURI <WBPublishingProcess>(PublishingProcessJSON.Value);
                process.WorkBox = WorkBox;
            }
        }
Esempio n. 22
0
        private void BuildListOfAllowedTerms()
        {
            WBFarm farm = WBFarm.Local;

            using (SPSite site = new SPSite(farm.ProtectedRecordsLibraryUrl))
            {
                WBTaxonomy subjectTagsTaxonomy = WBTaxonomy.GetSubjectTags(site);
                WBTaxonomy teamsTaxonomy       = WBTaxonomy.GetTeams(subjectTagsTaxonomy);

                Term   pageSeriesTagTerm   = subjectTagsTaxonomy.GetSelectedTermByPath(FullSubjectTagPath);
                WBTerm localPageSubjectTag = null;
                if (pageSeriesTagTerm != null)
                {
                    localPageSubjectTag = new WBTerm(subjectTagsTaxonomy, pageSeriesTagTerm);
                }

                if (localPageSubjectTag != null)
                {
                    using (SPWeb web = site.OpenWeb())
                    {
                        WBQuery query = new WBQuery();

                        //WBQueryClause subjectTagClause = new WBQueryClause(WBColumn.SubjectTags, WBQueryClause.Comparators.Equals, localPageSubjectTag);
                        //subjectTagClause.UseDescendants = true;
                        //query.AddClause(subjectTagClause);

                        if (webPart.OnlyLiveRecords)
                        {
                            WBQueryClause isLiveClause = new WBQueryClause(WBColumn.LiveOrArchived, WBQueryClause.Comparators.Equals, WBColumn.LIVE_OR_ARCHIVED__LIVE);
                            query.AddClause(isLiveClause);
                        }

                        WBTeam team = null;
                        if (!String.IsNullOrEmpty(webPart.FilterByOwningTeam))
                        {
                            team = teamsTaxonomy.GetSelectedTeam(webPart.FilterByOwningTeam);

                            if (team != null)
                            {
                                query.AddEqualsFilter(WBColumn.OwningTeam, team);
                            }
                        }


                        /*
                         * string protectiveZoneFilter = "Public"; // Request.QueryString["ProtectiveZone"];
                         * if (protectiveZoneFilter != null && protectiveZoneFilter != "")
                         * {
                         *  query.AddEqualsFilter(WBColumn.ProtectiveZone, protectiveZoneFilter);
                         * }
                         * */

                        query.AddViewColumn(WBColumn.Name);
                        query.AddViewColumn(WBColumn.SubjectTags);

                        SPList recordsLibrary = web.GetList(farm.ProtectedRecordsLibraryUrl); //"Documents"]; //farm.RecordsCenterRecordsLibraryName];

                        SPListItemCollection documents = recordsLibrary.WBxGetItems(site, query);

                        WBLogging.Debug("Got documents back");

                        WBLogging.Debug("Documents contains " + documents.Count + " items");

                        foreach (SPListItem document in documents)
                        {
                            WBTermCollection <WBTerm> subjectTags = document.WBxGetMultiTermColumn <WBTerm>(subjectTagsTaxonomy, WBColumn.SubjectTags.DisplayName);
                            foreach (WBTerm subjectTag in subjectTags)
                            {
                                string fullPath = subjectTag.FullPath;
                                if (allUsedTerms.Contains(fullPath))
                                {
                                    WBLogging.Debug("Already has term: " + fullPath + "  so not adding");
                                }
                                else
                                {
                                    WBLogging.Debug("Adding to list of allowed terms: " + fullPath);
                                    this.allUsedTerms.Add(fullPath);
                                    while (fullPath.Contains("/"))
                                    {
                                        int lastIndex = fullPath.LastIndexOf('/');
                                        fullPath = fullPath.Substring(0, lastIndex);
                                        if (allUsedTerms.Contains(fullPath))
                                        {
                                            WBLogging.Debug("Already has term: " + fullPath + "  so not adding");
                                            fullPath = "";
                                        }
                                        else
                                        {
                                            allUsedTerms.Add(fullPath);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                else
                {
                    WBUtils.logMessage("pageSubjectTag was null");
                }
            }
        }
Esempio n. 23
0
        protected void Page_Load(object sender, EventArgs e)
        {
            WBLogging.Debug("In Page_Load");

            WBLogging.Debug("EventArgs type: " + e.GetType().Name);

            WBLogging.Debug("Request[\"__EVENTARGUMENT\"] = " + Request["__EVENTARGUMENT"]);


            manager = new WBRecordsManager(SPContext.Current.Web.CurrentUser.LoginName);

            if (!IsPostBack)
            {
                process         = WBUtils.DeserializeFromCompressedJSONInURI <WBPublishingProcess>(Request.QueryString["PublishingProcessJSON"]);
                process.WorkBox = WorkBox;

                WBLogging.Debug("Created the WBProcessObject");

                newOrReplace   = Request.QueryString["NewOrReplace"];
                archiveOrLeave = Request.QueryString["ArchiveOrLeave"];
                if (newOrReplace == "New")
                {
                    process.ReplaceAction = WBPublishingProcess.REPLACE_ACTION__CREATE_NEW_SERIES;
                }
                else
                {
                    if (archiveOrLeave == "Archive")
                    {
                        process.ReplaceAction = WBPublishingProcess.REPLACE_ACTION__ARCHIVE_FROM_IZZI;
                    }
                    else
                    {
                        process.ReplaceAction = WBPublishingProcess.REPLACE_ACTION__LEAVE_ON_IZZI;
                    }
                }

                WBLogging.Debug("Captured replace action as: " + process.ReplaceAction);

                PublishingProcessJSON.Value = WBUtils.SerializeToCompressedJSONForURI(process);

                WBLogging.Debug("Serialized the WBProcessObject to hidden field");

                SelectedFolderPath.Text = "/";
            }
            else
            {
                process         = WBUtils.DeserializeFromCompressedJSONInURI <WBPublishingProcess>(PublishingProcessJSON.Value);
                process.WorkBox = WorkBox;
            }

            LibraryLocations.TreeNodePopulate += new TreeNodeEventHandler(LibraryLocations_TreeNodePopulate);
            //LibraryLocations.SelectedNodeChanged += new EventHandler(LibraryLocations_SelectedNodeChanged);

            LibraryLocations.PopulateNodesFromClient = true;
            LibraryLocations.EnableClientScript      = true;

            String viewMode = process.IsReplaceActionToCreateNewSeries ? "New" : "Replace";

            treeState = new WBLocationTreeState(SPContext.Current.Web, viewMode, process.ProtectiveZone);

            if (!IsPostBack)
            {
                if (viewMode == "New")
                {
                    Description.Text = "Select the folder into which to publish the document";
                }
                else
                {
                    Description.Text = "Select the document to replace";
                }

                WBTermCollection <WBTerm> teamFunctionalAreas = WorkBox.OwningTeam.FunctionalArea(manager.FunctionalAreasTaxonomy);

                manager.PopulateWithFunctionalAreas(treeState, LibraryLocations.Nodes, viewMode, teamFunctionalAreas);
            }
            else
            {
                String selectedPath = manager.GetSelectedPath(Request);
                if (!String.IsNullOrEmpty(selectedPath))
                {
                    ProcessSelection(selectedPath);
                }
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            webPart = this.Parent as PickRelatedDocuments;

            SPWebPartManager webPartManager = (SPWebPartManager)WebPartManager.GetCurrentWebPartManager(this.Page);

            Guid WebPartGuid = webPartManager.GetStorageKey(webPart);

            WebPartUniqueID = WebPartGuid.ToString().Replace("-", String.Empty);;

            //EditRelatedDocumentsButton.OnClientClick = "WorkBoxFramework_editRelatedDocuments(WBF_EditDialogCallback" + WebPartUniqueID + ", \"" + webPart.PickedDocumentsDetails + "\"); return false;";

            String[] detailsToSave = new String[3];

            detailsToSave[0] = WBUtils.ReplaceDelimiterCharacters(webPart.Title);
            detailsToSave[1] = WBUtils.ReplaceDelimiterCharacters(webPart.RelatedDocumentsDescription);
            detailsToSave[2] = WBUtils.ReplaceDelimiterCharacters(webPart.PickedDocumentsDetails.WBxTrim());

            String currentDetails         = String.Join(",", detailsToSave);
            String pickedDocumentsDetails = webPart.PickedDocumentsDetails.WBxTrim();


            if (IsPostBack)
            {
                if (NeedToSave.Value == "true")
                {
                    string[] newDetails = NewRelatedDocumentsDetails.Value.WBxTrim().Split(',');

                    if (newDetails.Length != 3)
                    {
                        WBLogging.Debug("The details sent to this page have the wrong structure: " + NewRelatedDocumentsDetails.Value);
                        Description.Text = "(the web part has not yet been edited).";
                        return;
                    }

                    if (WBFWebPartsUtils.ShowDescription(SPContext.Current.Site))
                    {
                        webPart.Title = WBUtils.PutBackDelimiterCharacters(newDetails[0]);
                        webPart.RelatedDocumentsDescription = WBUtils.PutBackDelimiterCharacters(newDetails[1]);
                    }
                    webPart.PickedDocumentsDetails = WBUtils.PutBackDelimiterCharacters(newDetails[2]);

                    webPartManager.SaveChanges(WebPartGuid);

                    SPContext.Current.File.Update();
                    SPContext.Current.Web.Update();

                    currentDetails         = NewRelatedDocumentsDetails.Value.WBxTrim();
                    pickedDocumentsDetails = webPart.PickedDocumentsDetails;
                }
            }

            if (!String.IsNullOrEmpty(currentDetails) && !currentDetails.Contains(","))
            {
                WBLogging.Generic.Unexpected("The PickRelatedDocuments web part had an odd value: " + currentDetails);
                currentDetails = "";
            }

            Description.Text = WBUtils.MaybeAddParagraphTags(webPart.RelatedDocumentsDescription);
            if (!String.IsNullOrEmpty(Description.Text) && WBFWebPartsUtils.ShowDescription(SPContext.Current.Site))
            {
                showDescription = true;
            }


            if ((SPContext.Current.FormContext.FormMode == SPControlMode.Edit) ||
                (webPartManager.DisplayMode == WebPartManager.EditDisplayMode))
            {
                EditPanel.Visible = true;
                InEditMode        = true;
                EditRelatedDocumentsButton.OnClientClick = "WorkBoxFramework_editRelatedDocuments(WBF_EditDialogCallback" + WebPartUniqueID + ", \"" + stripDownDetailsForEditing(currentDetails) + "\"); return false;";
            }
            else
            {
                EditPanel.Visible = false;
                EditRelatedDocumentsButton.OnClientClick = "";
            }



            WBLogging.Debug("PickRelatedDocuments currentDetails: " + currentDetails);


            if (String.IsNullOrEmpty(pickedDocumentsDetails))
            {
                DocumentList.Text = "<ul><li>(No documents picked)</li></ul>";
                DocumentsToView   = false;
                return;
            }

            try
            {
                string[] documentsDetailsArray = pickedDocumentsDetails.Split(';');

                String recordsLibraryURL = WBFWebPartsUtils.GetRecordsLibraryURL(SPContext.Current.Site);

                using (SPSite site = new SPSite(recordsLibraryURL))
                    using (SPWeb web = site.OpenWeb())
                    {
                        SPList library = web.GetList(recordsLibraryURL);

                        String html = "<ul>\n";

                        foreach (string documentDetails in documentsDetailsArray)
                        {
                            string[] documentDetailsArray = documentDetails.Split('|');

                            if (documentDetailsArray.Length != 4)
                            {
                                WBLogging.Generic.Unexpected("Badly formatted document details in PickRelatedDocuments web part: " + currentDetails + " - Ignoring these details");
                                continue;
                            }

                            string zone     = documentDetailsArray[0];
                            string recordID = documentDetailsArray[1];
                            string sourceID = documentDetailsArray[2];
                            string filename = documentDetailsArray[3];

                            SPListItem item = WBFWebPartsUtils.GetRecord(site, web, library, zone, recordID);

                            if (item == null)
                            {
                                if (InEditMode)
                                {
                                    html += "<li><i>(Could not find document)</i></li>";
                                }
                            }
                            else
                            {
                                DocumentsToView = true;

                                string title = item.WBxGetAsString(WBColumn.Title);
                                if (String.IsNullOrEmpty(title))
                                {
                                    title = Path.GetFileNameWithoutExtension(item.Name);
                                }

                                string extension = Path.GetExtension(item.Name).Replace(".", "").ToUpper();

                                string additionalText = "";

                                if (WBFWebPartsUtils.ShowKBFileSize(SPContext.Current.Site))
                                {
                                    long fileLength = (item.File.Length / 1024);
                                    additionalText = ", " + fileLength + "KB";
                                }

                                if (WBFWebPartsUtils.ShowFileIcons(SPContext.Current.Site))
                                {
                                    title = String.Format("<img src=\"{0}\" alt=\"{1}\" class=\"wbf-picked-doc-image\"/> {1}",
                                                          WBUtils.DocumentIcon16(item.Name),
                                                          title);
                                }

                                html += "<li><a target=\"_blank\" href=\"" + item.WBxGetAsString(WBColumn.EncodedAbsoluteURL) + "\">" + title + "</a> <span>(" + extension + additionalText + ")</span></li>";
                            }
                        }

                        html += "</ul>\n";

                        DocumentList.Text = html;
                    }
            }
            catch (Exception exception)
            {
                if (InEditMode)
                {
                    DocumentList.Text = "An error occurred: " + exception.Message;
                }
                else
                {
                    DocumentsToView = false;
                }
            }
        }