protected void Page_Load(object sender, EventArgs e)
        {
            if (IsQueryStringMissingParameter(X_ID))
            {
                RedirectToPortalSelectionScreen();
            }

            int xID = GetDecryptedEntityId(X_ID);

            Assessment _assessment;
            string addendumHTML = string.Empty;
            int count = 1;

            _assessment = Assessment.GetAssessmentAndQuestionsByID(xID);
            if (_assessment == null)
            {
                SessionObject.RedirectMessage = "Could not find the assessment.";
                Response.Redirect("~/PortalSelection.aspx", true);
            }

            if (_assessment.Addendums.Count == 0)
            {
                addendumPreviewDiv.InnerHtml = "No addendums found.";
            }
            else
            {
                foreach (Addendum oAddendum in _assessment.Addendums)
                {
                    ImageButton closeButton = new ImageButton();
                    closeButton.ImageUrl = "~/Images/X.png";
                    string closeButtonImgURL = closeButton.ResolveClientUrl(closeButton.ImageUrl);

 addendumHTML +="<div>" + count.ToString() + ": <a href=\"javascript:void(0);\" onclick=\"displayFullDescription(this); return false;\">" + oAddendum.Addendum_Name                   + "</a>" +
                      "<div class=\"fullText\">" +
                       "<img src=\"" + closeButtonImgURL + "\" onclick=\"this.parentNode.style.display='none';\" style=\"position:relative; float:right; cursor:pointer;\" /><p>" 
                                + oAddendum.Addendum_Text + 
                      "</p></div>" +
               "</div>";
                    count++;
                }

                addendumPreviewDiv.InnerHtml = addendumHTML;
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (IsQueryStringMissingParameter(X_ID))
            {
                RedirectToPortalSelectionScreen();
            }

            int xID = GetDecryptedEntityId(X_ID);
            Assessment _assessment;
            string rubricHtml = string.Empty;
            int count = 1;

            _assessment = Assessment.GetAssessmentAndQuestionsByID(xID);
            if (_assessment == null)
            {
                SessionObject.RedirectMessage = "Could not find the assessment.";
                Response.Redirect("~/PortalSelection.aspx", true);
            }


            foreach (TestQuestion tq in _assessment.Items)
            {
                if (tq.Rubric != null)
                {
                    ImageButton closeButton = new ImageButton();
                    closeButton.ImageUrl = "~/Images/X.png";
                    string closeButtonImgUrl = closeButton.ResolveClientUrl(closeButton.ImageUrl);

                    rubricHtml += "<div>" + count.ToString() + ": <a href=\"javascript:void(0);\" onclick=\"displayFullDescription(this); return false;\">" + tq.Rubric.Name
                        + "</a><div class=\"fullText\"><img src=\"" + closeButtonImgUrl + "\" onclick=\"this.parentNode.style.display='none';\" style=\"position:relative; float:right; cursor:pointer;\" />"
                        + tq.Rubric.Content + "</div></div>";
                    count++;
                }
            }
            rubricPreviewDiv.InnerHtml = rubricHtml;
        }
Exemplo n.º 3
0
				public void LoadControlsToContent(List<Tile> tiles)
				{
						if (tiles == null) return;

						var counter = 1;
						
						foreach (Tile t in tiles)
						{
								try
								{
                                    //REFACTOR : WSH - investigate removing this permission check now that we've added check to RecordPage to prevent chunking
										if (t.TilePermission != null)
										{
												var permission = t.TilePermission ?? Thinkgate.Base.Enums.Permission.HasAccess;

												if (SessionObject == null && Session["SessionObject"] != null) SessionObject = (SessionObject)Session["SessionObject"];
												var isTrue = SessionObject.LoggedInUser.HasPermission(permission);

												if (!isTrue) continue;
										}

                    var widget = (TileControlBase) LoadControl(t.ControlPath);

										t.ParentContainer = this;

										//Control must inherit from TileControlBase in order to have Tile property
										//((TileControlBase)widget).Tile = t;
								        widget.Tile = t;

										var destination = FindControl("tileContainerDiv" + counter);

										if (destination == null) continue;

										RadDock dock = (RadDock)destination;

										if (t.Title.Contains("@@dockID"))
										{
												t.Title = t.Title.Replace("@@dockID", dock.ClientID);
										}

										dock.ContentContainer.Controls.Clear();
										dock.ContentContainer.Controls.Add(widget);

										var titlePanel = new System.Web.UI.HtmlControls.HtmlGenericControl("DIV");
										titlePanel.Attributes["class"] = "tileTitleRow";
										titlePanel.InnerHtml = t.Title;
										dock.TitlebarContainer.Controls.Add(titlePanel);

										var extraCommandPanel = new System.Web.UI.WebControls.Panel();
										extraCommandPanel.ID = "extraCommandPanel";
										extraCommandPanel.CssClass = "extraCommandContainer";

										if (t.ToggleView || !String.IsNullOrEmpty(t.HelpJSFunction))
										{
												var extraCommandButtonPanel = new System.Web.UI.HtmlControls.HtmlGenericControl("DIV");
												extraCommandButtonPanel.ID = "extraCommandButtonPanel";

												var tileGuid = Guid.NewGuid().ToString().Replace("-", string.Empty);

												if (t.ToggleView)
												{
													ImageButton extraCommandButton_ListViewToggle = new ImageButton()
													{
															ImageUrl = "~/Images/list_view.png"
													};

													string listViewImgURL = extraCommandButton_ListViewToggle.ResolveClientUrl(extraCommandButton_ListViewToggle.ImageUrl);
													string listViewClass = t.ToggleDefault == "list" ? "toggleViewButtons_selected" : "toggleViewButtons";
											
													ImageButton extraCommandButton_GraphicalViewToggle = new ImageButton
													{
															ImageUrl = "~/Images/graphical_view.png"
													};

													string graphicalViewImgURL = extraCommandButton_GraphicalViewToggle.ResolveClientUrl(extraCommandButton_GraphicalViewToggle.ImageUrl);
													string graphicalViewClass = t.ToggleDefault == "graphical" ? "toggleViewButtons_selected" : "toggleViewButtons";

													var listViewImgButton = new Image()
													{
															ID = destination.ID + "_ListView" + tileGuid,
															ImageUrl = listViewImgURL,
															AlternateText = "List View",
															ToolTip = "List View",
															CssClass = listViewClass,
															ClientIDMode = System.Web.UI.ClientIDMode.Static
													};

													var graphViewImgButton = new Image()
													{
															ID = destination.ID + "_GraphicalView" + tileGuid,
															ImageUrl = graphicalViewImgURL,
															AlternateText = "Graphical View",
															ToolTip = "Graphical View",
															CssClass = graphicalViewClass,
															ClientIDMode = System.Web.UI.ClientIDMode.Static
													};

													listViewImgButton.Attributes.Add("OnClick", "toggleView_SmallTile2(this, '"
																														+ destination.ID + "', 'listView','" + graphViewImgButton.ClientID + "','" + listViewImgButton.ClientID + "')");
													graphViewImgButton.Style.Add(HtmlTextWriterStyle.Display, "none");
													graphViewImgButton.Attributes.Add("OnClick", "toggleView_SmallTile2(this, '"
																														+ destination.ID + "', 'graphicalView','" + listViewImgButton.ClientID + "','" + graphViewImgButton.ClientID + "')");   


													extraCommandButtonPanel.Controls.Add(listViewImgButton);
													extraCommandButtonPanel.Controls.Add(graphViewImgButton);

												//string toggleButtons = "<img src=\"" + listViewImgURL + "\" alt=\"List View\" title='Select List View' class=\""
												//        + listViewClass + "\" onclick=\"toggleView_SmallTile(this, '"
												//        + destination.ID + "', 'listView');\" />"
												//        + "<img src=\"" + graphicalViewImgURL + "\" alt=\"Graphical View\" title='Select Graphical View' class=\""
												//        + graphicalViewClass + "\" onclick=\"toggleView_SmallTile(this, '"
												//        + destination.ID + "', 'graphicalView');\" />";

												//extraCommandButtonPanel.InnerHtml = toggleButtons;
												}
												// Some tiles have a help icon.
												else
												{
													ImageButton extraCommandButton_Help = new ImageButton()	{	ImageUrl = "~/Images/help_small.png" };
													string helpImgURL = extraCommandButton_Help.ResolveClientUrl(extraCommandButton_Help.ImageUrl);
													Image helpImgButton = new Image()
													{
														ID = destination.ID + "_Help" + tileGuid,
														ImageUrl = helpImgURL,
														AlternateText = "Help",
														CssClass = "tileHelpButton",
														ClientIDMode = System.Web.UI.ClientIDMode.Static
													};
													helpImgButton.Attributes.Add("OnClick", t.HelpJSFunction + "()");
													extraCommandButtonPanel.Controls.Add(helpImgButton);
												}
												extraCommandPanel.Controls.Add(extraCommandButtonPanel);
										}
										dock.TitlebarContainer.Controls.Add(extraCommandPanel);

										dock.Command += RadDock_Command;
										t.ParentDock = dock;

										//BJC: Adding new class to the title bar in order to set the height to 50 pixels and create two rows.
										dock.TitlebarContainer.CssClass = "rdTitleBarTwoRows";

										if (t.DockClickMethod != null) dock.Commands.Add(GetDockCommand("Select Class", "changeCommand"));
										if (!String.IsNullOrEmpty(t.ExpandedControlPath)) dock.Commands.Add(GetDockCommand("Expand", "expandCommand", t.ExpandedControlPath, t.ExpandJSFunctionOverride));
										if (!String.IsNullOrEmpty(t.EditControlPath)) dock.Commands.Add(GetDockCommand("Edit", "editCommand", t.EditControlPath, t.EditJSFunctionOverride));
                                        if (!String.IsNullOrEmpty(t.PerformanceLevelControlPath)) dock.Commands.Add(GetDockCommand("PerformanceLevel", "performanceLevel", t.PerformanceLevelControlPath, t.PerformanceLevelJSFunctionOverride));
                                        if (!String.IsNullOrEmpty(t.ExportToExcelJSFunctionOverride)) dock.Commands.Add(GetJSDockCommand("Export to Excel", "exportToExcelCommand", string.Empty, t.ExportToExcelJSFunctionOverride));
                                        if (!String.IsNullOrEmpty(t.ReportJSFunctionOverride)) dock.Commands.Add(GetDockCommand("Assessment Report Card", "reportCommand", t.ReportControlPath, t.ReportJSFunctionOverride));
										foreach (var command in widget.AdditionalCommands())
										{
											dock.Commands.Add(command);
										}

										if (SessionObject.TileClicked != null
														&& SessionObject.Elements_ActiveFolder.Equals(SessionObject.LastElementsFolder_TileClicked))
										{
												if (SessionObject.TileClicked.IndexOf(dock.ClientID) > -1 && dock.ClientID.IndexOf("rotator1") > -1)
												{
														//dock.TitlebarContainer.CssClass = dock.TitlebarContainer.CssClass.ToString() + " rdTitleBar" + counter;
														//SessionObject.selectedRDTitleBarClass = " rdTitleBar" + counter;
														dock.CssClass = string.Empty;
												}
												else if (dock.ClientID.IndexOf("rotator2") > -1)
												{
														//dock.TitlebarContainer.CssClass = dock.TitlebarContainer.CssClass.ToString() + SessionObject.selectedRDTitleBarClass;
														dock.CssClass = string.Empty;
												}
												else
												{
														var browserVersion = System.Web.HttpContext.Current.Request.UserAgent.ToLower();
//														dock.CssClass = browserVersion.Contains("msie 8.") ? "tileContainerDiv_dimmed_IE8" : "tileContainerDiv_dimmed";
														String cs = browserVersion.Contains("msie 8.") ? "tileContainerDiv_dimmed_IE8" : "tileContainerDiv_dimmed";
														dock.ContentContainer.CssClass = dock.ContentContainer.CssClass + " " + cs;
														extraCommandPanel.CssClass = extraCommandPanel.CssClass + " " + cs;
														dock.TitlebarContainer.CssClass = "rdTitleBarTwoRowsLight";
														foreach(var cmd in dock.Commands)
															cmd.CssClass = cmd.CssClass + " " + cs;
												}
										}

								}
								catch (Exception)
								{
								}

								counter++;
						}

						HideUnusedTiles(counter);
				}
        public void LoadStandardsSearchTable_Click(object sender, EventArgs e)
        {
            LoadStandardsSearchDataTable();
            standardsSearchTable.Rows.Clear();

            if(_standardsSearchDataTable.Rows.Count > 0)
            {
                standardsSearchTable.Visible = true;
                standardsSearchHeader.Visible = true;
            }
            else
            {
                standardsSearchTable.Visible = false;
                standardsSearchHeader.Visible = false;
            }

            List<int> filterList = new List<int>();
            if (SessionObject.LoggedInUser.StandardFilters.ContainsKey(_filterName) &&
                SessionObject.LoggedInUser.StandardFilters[_filterName].Length > 0)
            {
                foreach (var strID in SessionObject.LoggedInUser.StandardFilters[_filterName].Split(new Char[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
                {
                    Int32 id;
                    if (Int32.TryParse(strID.Trim(), out id)) filterList.Add(id);
                }
            }

            foreach (DataRow row in _standardsSearchDataTable.Rows)
            {
                if (!filterList.Contains(Convert.ToInt32(row["ID"])))
                {
                    TableRow newRow = new TableRow();
                    TableCell cell1 = new TableCell();
                    TableCell cell2 = new TableCell();
                    TableCell cell3 = new TableCell();
                    TableCell cell4 = new TableCell();
                    TableCell cell5 = new TableCell();
                    TableCell cell6 = new TableCell();
                    TableCell cell7 = new TableCell();

                    newRow.Attributes["standardID"] = row["ID"].ToString();

                    HtmlInputCheckBox cell1Data = new HtmlInputCheckBox();
                    cell1Data.ID = "standardsSearchCheckbox_" + row["ID"].ToString();
                    cell1Data.ClientIDMode = System.Web.UI.ClientIDMode.Static;
                    cell1Data.Attributes["onclick"] = "addToFilter(this); return false;";
                    cell1Data.Attributes["standardID"] = row["ID"].ToString();
                    cell1.CssClass = "alignCellCenter";
                    cell1.Width = 50;
                    cell1.Controls.Add(cell1Data);

                    HyperLink cell2Data = new HyperLink();
                    cell2Data.NavigateUrl = "~/Record/StandardsPage.aspx?xID="
                                            + Standpoint.Core.Classes.Encryption.EncryptString(
                                                row["ID"].ToString());
                    cell2Data.Attributes["onclick"] = "window.open('"
                                                      + cell2Data.ResolveClientUrl(
                                                          cell2Data.NavigateUrl)
                                                      + "'); return false;";
                    cell2Data.Text = row["StandardName"].ToString();
                    cell2.ToolTip = row["StandardName"].ToString();
                    cell2.Style.Add("overflow", "hidden");
                    cell2.Width = 100;
                    cell2.Controls.Add(cell2Data);

                    HtmlGenericControl cell3Data = new HtmlGenericControl("DIV");
                    ImageButton closeButton = new ImageButton();
                    closeButton.ImageUrl = "~/Images/X.png";
                    string closeButtonImgURL = closeButton.ResolveClientUrl(closeButton.ImageUrl);

                    cell3Data.InnerHtml =
                        "<div class=\"divOverflowHidden\"><a href=\"javascript:void(0);\" onclick=\"displayFullDescription(this); return false;\" class=\"standardTextLink\" >"
                        + row["Description"].ToString()
                        + "</a></div><div class='fullText'><img src='" + closeButtonImgURL
                        + "' onclick='this.parentNode.style.display=&quot;none&quot;;' style='position:relative; float:right; cursor:pointer;' />"
                        + row["Description"].ToString() + "</div>";
                    cell3.Controls.Add(cell3Data);
                    cell3.Width = 250;

                    cell4.Text = row["Grade"].ToString();
                    cell4.Width = 50;

                    cell5.Text = row["Subject"].ToString();
                    cell5.Width = 100;

                    cell6.Text = row["Course"].ToString();
                    cell6.Width = 100;

                    cell7.Text = row["Level"].ToString();
                    if (_standardsSearchDataTable.Rows.Count > 13)
                        cell7.Width = 91;
                    else
                        cell7.Width = 100;

                    newRow.Cells.Add(cell1);
                    newRow.Cells.Add(cell2);
                    newRow.Cells.Add(cell3);
                    newRow.Cells.Add(cell4);
                    newRow.Cells.Add(cell5);
                    newRow.Cells.Add(cell6);
                    newRow.Cells.Add(cell7);

                    standardsSearchTable.Rows.Add(newRow);
                }
            }
            standardsSearchTable.DataBind();
        }
        private void LoadStandardsFilterTable()
        {
            standardsFilterTable.Rows.Clear();

            if (_standardsFilterDataTable != null && _standardsFilterDataTable.Rows.Count > 0)
            {
                tableContainerDiv.Attributes["style"] = "display:block;";
                updateButton.Enabled = true;
                defaultMessageDiv.Attributes["style"] = "display:none;";
            }
            else
            {
                tableContainerDiv.Attributes["style"] = "display:none;";
                defaultMessageDiv.Attributes["style"] = "display:block;";
                if(IsPostBack && filterIDs.Value.Length > 0) updateButton.Enabled = false;
            }

            foreach(DataRow row in _standardsFilterDataTable.Rows)
            {
                TableRow newRow = new TableRow();
                TableCell cell1 = new TableCell();
                TableCell cell2 = new TableCell();
                TableCell cell3 = new TableCell();
                TableCell cell4 = new TableCell();
                TableCell cell5 = new TableCell();
                TableCell cell6 = new TableCell();
                TableCell cell7 = new TableCell();

                HtmlInputCheckBox cell1Data = new HtmlInputCheckBox();
                cell1Data.ID = "standardsFilterCheckbox_" + row["StandardID"].ToString();
                cell1Data.ClientIDMode = System.Web.UI.ClientIDMode.Static;
                cell1Data.Attributes["onclick"] = "removeFromFilter(this, this.checked);";
                cell1Data.Attributes["standardID"] = row["StandardID"].ToString();
                cell1.CssClass = "alignCellCenter";
                cell1.Width = 50;
                cell1.Controls.Add(cell1Data);

                HyperLink cell2Data = new HyperLink();
                cell2Data.NavigateUrl = "~/Record/StandardsPage.aspx?xID=" + Standpoint.Core.Classes.Encryption.EncryptString(row["StandardID"].ToString());
                cell2Data.Attributes["onclick"] = "window.open('" + cell2Data.ResolveClientUrl(cell2Data.NavigateUrl) + "'); return false;";
                cell2Data.Text = row["StandardName"].ToString();
                cell2.ToolTip = row["StandardName"].ToString();
                cell2.Style.Add("overflow", "hidden");
                cell2.Width = 100;
                cell2.Controls.Add(cell2Data);

                HtmlGenericControl cell3Data = new HtmlGenericControl("DIV");
                ImageButton closeButton = new ImageButton();
                closeButton.ImageUrl = "~/Images/X.png";
                string closeButtonImgURL = closeButton.ResolveClientUrl(closeButton.ImageUrl);

                cell3Data.InnerHtml = "<div class=\"divOverflowHidden\"><a href=\"javascript:void(0);\" onclick=\"displayFullDescription(this); return false;\" class=\"standardTextLink\" >"
                    + row["Desc"].ToString() + "</a></div><div class='fullText'><img src='" + closeButtonImgURL
                    + "' onclick='this.parentNode.style.display=&quot;none&quot;;' style='position:relative; float:right; cursor:pointer;' />" + row["Desc"].ToString() + "</div>";
                cell3.Controls.Add(cell3Data);
                cell3.Width = 250;

                cell4.Text = row["Grade"].ToString();
                cell4.Width = 50;

                cell5.Text = row["Subject"].ToString();
                cell5.Width = 100;

                cell6.Text = row["Course"].ToString();
                cell6.Width = 100;

                cell7.Text = row["Level"].ToString();
                if (_standardsFilterDataTable.Rows.Count > 13) cell7.Width = 91;
                else cell7.Width = 100;

                newRow.Cells.Add(cell1);
                newRow.Cells.Add(cell2);
                newRow.Cells.Add(cell3);
                newRow.Cells.Add(cell4);
                newRow.Cells.Add(cell5);
                newRow.Cells.Add(cell6);
                newRow.Cells.Add(cell7);

                standardsFilterTable.Rows.Add(newRow);
            }

            standardsFilterTable.DataBind();
        }
        private DataTable GetContentDataTable_ExportToExcel()
        {
            if (_contentData == null || (!String.IsNullOrEmpty(_demoLabel) && !String.IsNullOrEmpty(_demoVal)) || !String.IsNullOrEmpty(_selectedFormID) || _isExcel)
            {
                _contentData = new DataTable();

                if (_distractorAnalysisData.Tables[0].Rows.Count > 0)
                {
                    int questionCount = _distractorAnalysisData.Tables[1].Rows.Count;
                    DataTable contentColumns = _distractorAnalysisData.Tables[1];

                    DataColumn name = new DataColumn("Name");
                    _contentData.Columns.Add(name);

                    DataColumn studentID = new DataColumn("StudentID");
                    _contentData.Columns.Add(studentID);

                    DataColumn score = new DataColumn("Score");
                    _contentData.Columns.Add(score);

                    // if(contentColumns.Columns.Contains("TR_Sort") && contentColumns.Columns.Contains("Sort"))
                    //{
                    foreach (DataRow row in contentColumns.Rows)
                    {
                        var newColName = row["TR_Sort"].ToString() != "0"
                                             ? row["Sort"].ToString() + " r(" + row["TR_Sort"].ToString() + ")"
                                             : row["Sort"].ToString();
                        DataColumn newCol = new DataColumn(newColName);
                        _contentData.Columns.Add(newCol);
                    }
                    //}

                    if (isPDFView || _isExcel)
                    {
                        DataColumn TestResponses = new DataColumn("TestResponses");
                        _contentData.Columns.Add(TestResponses);
                        DataColumn AltResponses = new DataColumn("AltResponses");
                        _contentData.Columns.Add(AltResponses);
                        DataColumn AnswerString = new DataColumn("AnswerString");
                        _contentData.Columns.Add(AnswerString);
                        DataColumn AdditionalData = new DataColumn("AdditionalData");
                        _contentData.Columns.Add(AdditionalData);
                    }

                    //Build Standards and Rigor Rows
                    DataRow standardsRow = _contentData.NewRow();
                    standardsRow[name] = "Standards";

                    foreach (DataRow row in _distractorAnalysisData.Tables[0].Rows)
                    {
                        standardsRow[score] = row["PctCorrectDisp"].ToString();


                    }



                    DataRow rigorRow = _contentData.NewRow();
                    rigorRow[name] = _distractorAnalysisData.Tables[0].Rows[0]["RigorType"].ToString();

                    foreach (DataRow row in _distractorAnalysisData.Tables[0].Rows)
                    {
                        rigorRow[score] = row["PctCorrectDisp"].ToString();


                    }

                    showRigor_checkbox.Value = _distractorAnalysisData.Tables[0].Rows[0]["RigorType"].ToString();
                    showRigor_span.InnerHtml = "Show " + _distractorAnalysisData.Tables[0].Rows[0]["RigorType"].ToString();

                    SessionObject.PreviewStandardsDialogParms.Clear();

                    foreach (DataRow contentRow in contentColumns.Rows)
                    {
                        var colName = contentRow["TR_Sort"].ToString() != "0"
                                             ? contentRow["Sort"].ToString() + " r(" + contentRow["TR_Sort"].ToString() + ")"
                                             : contentRow["Sort"].ToString();
                        ImageButton img = new ImageButton();
                        img.ImageUrl = "~/Images/preview1.gif";
                        string standardID_Encrypted = Encryption.EncryptInt(DataIntegrity.ConvertToInt(contentRow["StandardID"]));

                        Thinkgate.Base.Classes.Standards standard = new Thinkgate.Base.Classes.Standards(DataIntegrity.ConvertToInt(contentRow["StandardID"]),
                            contentRow["StandardName"].ToString(), contentRow["SText"].ToString(), 0, string.Empty);

                        if (!SessionObject.PreviewStandardsDialogParms.ContainsKey(DataIntegrity.ConvertToInt(contentRow["StandardID"])))
                        {
                            SessionObject.PreviewStandardsDialogParms.Add(DataIntegrity.ConvertToInt(contentRow["StandardID"]), standard);
                        }

                        standardsRow[colName] = "<img src=\"" + img.ResolveClientUrl(img.ImageUrl)
                            + "\" onclick=\"customDialog({ maximize_height:true, maxheight: 400,url: '../ControlHost/PreviewStandard.aspx?xID=" + standardID_Encrypted + "' }); return false;\" style=\"cursor:pointer;height:100%;\" title=\""
                            + contentRow["StandardName"].ToString() + ": " + contentRow["SText_Hover"].ToString() + "\"/>";

                        rigorRow[colName] = contentRow["qrigor"].ToString();
                    }
                    _contentData.Rows.Add(standardsRow);
                    _contentData.Rows.Add(rigorRow);

                    //Build Answer Rows
                    foreach (DataRow row in _distractorAnalysisData.Tables[0].Rows)
                    {
                        DataRow newRow = _contentData.NewRow();
                        newRow[name] = row["Student_Name"].ToString().Length > 0 ? row["Student_Name"].ToString() : row["Demo_Name"].ToString();
                        newRow[studentID] = row["StudentID"].ToString();
                        newRow[score] = row["Student_Name"].ToString().Length > 0 && !isPDFView && !_isExcel ? row["PctCorrectDisp_SORT"].ToString() : row["PctCorrectDisp"].ToString();

                        string testResponses = row["TestResponses"].ToString();
                        string altResponses = row["AltResponses"].ToString();
                        string answerString = row["AnswerString"].ToString();
                        int counter = 0;

                        if (isPDFView || _isExcel)
                        {
                            newRow["TestResponses"] = row["TestResponses"].ToString();
                            newRow["AltResponses"] = row["AltResponses"].ToString();
                            newRow["AnswerString"] = row["AnswerString"].ToString();
                            newRow["AdditionalData"] = row["AdditionalData"].ToString();
                        }

                        if (answerString.Length > 0) //For overall average and demographic rows
                        {
                            foreach (DataRow contentRow in contentColumns.Rows)
                            {
                                int sort = counter + 1;
                                var rubricID = contentRow["RubricID"].ToString();
                                var trSort = DataIntegrity.ConvertToInt(contentRow["TR_Sort"]);
                                var sortColName = trSort > 0
                                                 ? contentRow["Sort"].ToString() + " r(" + trSort.ToString() + ")"
                                                 : contentRow["Sort"].ToString();
                                var maxPoints = DataIntegrity.ConvertToInt(contentRow["MaxPoints"]);
                                var masterSort = DataIntegrity.ConvertToInt(contentRow["MasterSort"]) - 1;
                                string[] answers = new string[contentColumns.Rows.Count];

                                answers = answerString.Split(';');

                                if (!string.IsNullOrEmpty(contentRow["DistractorRationale"].ToString()) && !_isExcel && !isPDFView)
                                {
                                    var js =
                                        "customDialog({ url: '../ControlHost/TestQuestionPieChart.aspx?level=" +
                                        _level + "&levelID=" + _levelID + "&testID=" + _testID +
                                        "&sort=" + contentRow["Sort"].ToString() + "&critOrides=" + _criteriaOverrides +
                                        "&formID=" + rcbDistractorAnalysisForms.SelectedValue +
                                        "&parent=" + _parent + "&parentID=" + _parentID +
                                        "', title: 'Distractor Rationale', maximize: true, maxwidth: 550, maxheight: 500 }); return false;";

                                    newRow[sortColName] = "<a style=\"color: blue;\" href=\"javascript:void();\" onclick=\"" + js +
                                                              "\">" + answers[counter] + "</a>";
                                }
                                else
                                {
                                    newRow[sortColName] = answers[counter];

                                }

                                counter++;
                            }
                        }
                        else if (testResponses.Length > 0)
                        {
                            if (altResponses.Length == 0) continue;
                            var additionalData = row["AdditionalData"].ToString();
                            foreach (DataRow contentRow in contentColumns.Rows)
                            {
                                int sort = counter + 1;
                                var scoreOnTest = contentRow["ScoreOnTest"].ToString();
                                var rubricID = contentRow["RubricID"].ToString();
                                var trSort = DataIntegrity.ConvertToInt(contentRow["TR_Sort"]);
                                var sortColName = trSort > 0
                                                 ? contentRow["Sort"].ToString() + " r(" + trSort.ToString() + ")"
                                                 : contentRow["Sort"].ToString();
                                var maxPoints = DataIntegrity.ConvertToInt(contentRow["MaxPoints"]);
                                var masterSort = DataIntegrity.ConvertToInt(contentRow["MasterSort"]);
                                var answer = string.Empty;
                                //var testResponse = testResponses.Substring((masterSort-1), 1);
                                //var altResponse = altResponses.Substring(masterSort == 1 ? 0 : (masterSort*3) - 3, 3);
                                var testResponse = testResponses.Length >= masterSort ? testResponses.Substring((masterSort - 1), 1) : testResponses.Substring(0, 1);
                                var altResponse = altResponses.Length > ((masterSort * 3) - 3) ? altResponses.Substring((masterSort * 3) - 3, 3) : altResponses.Substring(0, 3);
                                var altResponseDisplay = string.Empty;
                                var questionType = contentRow["QuestionType"].ToString();
                                var scoreType = contentRow["ScoreType"].ToString();
                                var questionID = DataIntegrity.ConvertToInt(contentRow["QuestionID"]);
                                var rubricPointListString = string.Empty;
                                var temp = string.Empty;

                                var rubricPointList = new string[] { };
                                var rubricPointCount = 0;

								if (additionalData.Length > 0 && additionalData.IndexOf("score_" + questionID + "=,") > -1)
                                {
                                    rubricPointListString = additionalData.Substring(additionalData.IndexOf("score_" + questionID + "=,") + ("score_" + questionID + "=,").Length);
									if (rubricPointListString.IndexOf(",|?|") > -1) rubricPointListString = rubricPointListString.Substring(0, rubricPointListString.IndexOf(",|?|"));
                                    temp = rubricPointListString;

                                    while (rubricPointListString.IndexOf("_") > -1) 
									{
										rubricPointCount++;
										rubricPointListString = rubricPointListString.Substring(rubricPointListString.IndexOf("_") + 1);
									}
                                }

                                switch (altResponse)
                                {
                                    case "000":
                                        altResponseDisplay = "0%";
                                        break;
                                    case "100":
                                        altResponseDisplay = "100%";
                                        break;
                                    default:
                                        if (altResponse.Substring(0, 1) == "0")
                                        {
                                            altResponseDisplay = altResponse.Substring(1, 2) + "%";
                                        }
                                        else
                                        {
                                            altResponseDisplay = "%";
                                        }
                                        break;
                                }

                                if (altResponse == "***")
                                {
                                    answer = "ns";
                                }
                                else if (testResponse == "*" && (questionType == "MC3" || questionType == "MC4" || questionType == "MC5" || questionType == "T"))
                                {
                                    answer = "x";
                                }
                                else if (testResponse == "*")
                                {
                                    if (rubricID != "0")
                                    {
                                        string scored = "0";

                                        List<int> list = new List<int>();
                                        while (temp.IndexOf("_") > -1)
                                        {
                                            temp = temp.Substring(temp.IndexOf("_") + 1);
                                            scored = (Convert.ToInt32(scored) + Convert.ToInt32(temp.Substring(0, 1))).ToString();
                                            list.Add(Convert.ToInt32(temp.Substring(0, 1)));
                                        }

                                        if (trSort > 0)
                                        {
                                            // overall percentage is altReponseDisplay on all rubric criteria, now get the rubric point set up for each criteria
                                            //int totalRubricCount = Convert.ToInt32(scored) * 100 / Convert.ToInt32( altResponseDisplay.Substring(0,altResponseDisplay.IndexOf("%")));
                                            int totalRubricCount = maxPoints;
                                            // Since altResponseDisplay returns round figure of percentage   
                                            if ((Convert.ToInt32(scored) * 100 / totalRubricCount) != Convert.ToInt32(altResponseDisplay.Substring(0, altResponseDisplay.IndexOf("%"))))
                                                totalRubricCount = (Convert.ToInt32(scored) * 100) / (Convert.ToInt32(altResponseDisplay.Substring(0, altResponseDisplay.IndexOf("%"))) - 1);

                                            int rubricCount = totalRubricCount / list.Count;

                                            if (list.Count > 1)
                                            {
                                                double percentage = (double)((double)list[trSort - 1] * 100 / (double)rubricCount);
                                                answer = list[trSort - 1].ToString() + "(" + Math.Round(percentage).ToString() + "%" + ")";
                                            }
                                            else
                                                answer = list[trSort - 1].ToString() + "(" + altResponseDisplay + ")";
                                            
                                        }
                                        else
                                        {
                                           // sum of scored point
                                            answer = scored + "(" + altResponseDisplay + ")";
										}
                                    }
                                    else
                                    {
                                        answer = altResponseDisplay;
                                    }
                                }
                                else
                                {
                                    answer = testResponse;
                                }

                                if (_isExcel || isPDFView)
                                {
                                    newRow[sortColName] = answer + (contentRow["ScoreOnTest"].ToString() == "No" ? "*" : "");
                                }
                                else if (!string.IsNullOrEmpty(contentColumns.Rows[counter]["DistractorRationale"].ToString()))
                                {
                                    newRow[sortColName] = testResponses.Length > (counter) ? testResponses.Substring(counter, 1) : testResponses.Substring(0, 1); // testResponses.Substring(counter, 1);
                                    var js = "customDialog({ url: '../ControlHost/TestQuestionPieChart.aspx?level=" + _level + "&levelID=" + _levelID + "&testID=" + _testID +
                                        "&sort=" + contentRow["Sort"].ToString() + "&critOrides=" + _criteriaOverrides + "&formID=" + rcbDistractorAnalysisForms.SelectedValue +
                                        "&parent=" + _parent + "&parentID=" + _parentID + "', title: 'Distractor Rationale', maximize: true, maxwidth: 550, maxheight: 500 }); return false;";

                                    var color = string.Empty;
                                    if ((scoreType == "P" || scoreType == "R")
                                        && altResponse != "000" && altResponse != "100")
                                        color = "black";
                                    else
                                        color = "white";

                                    //newRow[sort.ToString()] = "<a href=\"javascript:void();\" studentRow=\"true\" onclick=\"" + js + "\">" + answer + (row["ScoreOnTest"].ToString == "No" ? "*" : "") + "</a>";
                                    newRow[sortColName] = "<a style=\"color: " + color + ";\" href=\"javascript:void();\" studentRow=\"true\" onclick=\"" + js + "\">" + answer + (contentRow["ScoreOnTest"].ToString() == "No" ? "*" : "") + "</a>";
                                }
                                else
                                {
                                    newRow[sortColName] = "<span studentRow=\"true\">" + answer + (contentRow["ScoreOnTest"].ToString() == "No" ? "*" : "") + "</span>";
                                }

                                counter++;
                            }
                        }
                        else
                        {
                            if (testResponses.Length == 0) continue;
                            if (altResponses.Length == 0) continue;

                            foreach (DataRow contentRow in contentColumns.Rows)
                            {
                                var trSort = DataIntegrity.ConvertToInt(contentRow["TR_Sort"]);
                                var sortColName = trSort > 0
                                                 ? contentRow["Sort"].ToString() + " r(" + trSort.ToString() + ")"
                                                 : contentRow["Sort"].ToString();
                                newRow[sortColName] = testResponses.Substring(counter, 1) + (contentRow["ScoreOnTest"].ToString() == "No" ? "*" : "");

                                counter++;
                            }
                        }

                        _contentData.Rows.Add(newRow);
                    }
                }
            }

            return _contentData;
        }