/// <summary> /// Получить данные пользователя приложения /// </summary> /// <remarks>Для веб-приложения данные пользователя сохраняются в сессии</remarks> public static UserData GetUserData() { HttpSessionState session = HttpContext.Current == null ? null : HttpContext.Current.Session; UserData userData = session == null ? null : session["UserData"] as UserData; if (userData == null) { AppData.InitAppData(); userData = new UserData(); if (session != null) session.Add("UserData", userData); // загрузка настроек представлений string errMsg; if (!userData.ViewSettings.LoadFromFile(AppData.ConfigDir + ViewSettings.DefFileName, out errMsg)) AppData.Log.WriteAction(errMsg, Log.ActTypes.Exception); } return userData; }
protected void Session_Start(object sender, EventArgs e) { // добавление информации о пользователе AppData.GetAppData().UserMonitor.AddUser(UserData.GetUserData()); }
protected string viewFileNameArrStr; // строковая запись массива имён файлов представлений protected void Page_Load(object sender, EventArgs e) { // отключение кэширования страницы ScadaUtils.DisablePageCache(Response); // получение данных пользователя UserData userData = UserData.GetUserData(); // проверка входа в систему userData.CheckLoggedOn(Context); // перевод веб-страницы Localization.TranslatePage(this, "Scada.Web.WFrmMain"); // определение индекса выбранного при входе набора представлений int viewSetInd; int.TryParse(Request.Params["viewSet"], out viewSetInd); viewSetIndStr = viewSetInd.ToString(); // получение выбранного набора представлений, если на него есть права ViewSettings.ViewSet viewSet = null; int viewCnt = 0; if (userData.GetViewSetRight(viewSetInd).ViewRight) { List <ViewSettings.ViewSet> viewSetList = userData.ViewSettings.ViewSetList; if (0 <= viewSetInd && viewSetInd < viewSetList.Count) { viewSet = viewSetList[viewSetInd]; viewCnt = viewSet.Count; // вывод заголовка страницы Title = "SCADA - " + viewSet.Name; // заполнение списка представлений bool first = true; for (int i = 0; i < viewCnt; i++) { if (userData.GetViewRight(viewSetInd, i).ViewRight) { ListItem item = new ListItem(viewSet[i].Title, i.ToString()); item.Selected = first; ddlView.Items.Add(item); first = false; } } } } // заполнение списков дней, месяцев и годов, выбор текущей даты DateTime today = DateTime.Today; int curDay = today.Day; for (int day = 1; day <= 31; day++) { string dayStr = day.ToString(); ListItem item = new ListItem(day < 10 ? "0" + dayStr : dayStr, dayStr); item.Selected = day == curDay; ddlDay.Items.Add(item); } int curMonth = today.Month; string[] monthNames = Localization.Culture.DateTimeFormat.MonthNames; for (int month = 1; month <= 12; month++) { ListItem item = new ListItem(monthNames[month - 1], month.ToString()); item.Selected = month == curMonth; ddlMonth.Items.Add(item); } for (int i = 0, year = today.Year; i < 10; i++, year--) { string yearStr = year.ToString(); ListItem item = new ListItem(yearStr, yearStr); item.Selected = i == 0; ddlYear.Items.Add(item); } // добавление скрипта перемещения выпадающего списка дней после списка месяцев, если необходимо if (Localization.DayAfterMonth) { ClientScript.RegisterStartupScript(this.GetType(), "Startup", "PlaceDayAfterMonth();", true); } // привязка событий ddlView.Attributes["onchange"] = "ShowData()"; ddlDay.Attributes["onchange"] = "ShowData()"; ddlMonth.Attributes["onchange"] = "ShowData()"; ddlYear.Attributes["onchange"] = "ShowData()"; rbStage1.Attributes["onclick"] = "ShowView()"; rbStage2.Attributes["onclick"] = "ShowView()"; rbStageFull.Attributes["onclick"] = "ShowView()"; // настройка отображения событий и фрейма для проверка входа в систему pnlEvents.Visible = AppData.WebSettings.EventCnt > 0; frameLoginChecker.Visible = !pnlEvents.Visible; // формирование массивов, описывающих представления if (viewCnt > 0) { string[] viewTypeArr = new string[viewCnt]; string[] viewFileNameArr = new string[viewCnt]; for (int i = 0; i < viewCnt; i++) { ViewSettings.ViewInfo viewInfo = viewSet[i]; viewTypeArr[i] = "\"" + viewInfo.Type + "\""; viewFileNameArr[i] = "\"" + viewInfo.FileName + "\""; } viewTypeArrStr = "[" + string.Join(", ", viewTypeArr) + "]"; viewFileNameArrStr = "[" + string.Join(", ", viewFileNameArr) + "]"; } else { viewTypeArrStr = "\"\""; viewFileNameArrStr = "\"\""; } }
protected void Page_Load(object sender, EventArgs e) { // отключение кэширования страницы ScadaUtils.DisablePageCache(Response); // получение данных пользователя UserData userData = UserData.GetUserData(); // проверка входа в систему userData.CheckLoggedOn(Context, false); if (!userData.LoggedOn) { throw new Exception(WebPhrases.NotLoggedOn); } // перевод веб-страницы Translator.TranslatePage(this, "Scada.Web.WFrmEvTable"); // определение индексов выбранного представления int viewSetIndex, viewIndex; if (!int.TryParse(Request["viewSet"], out viewSetIndex)) { viewSetIndex = -1; } if (!int.TryParse(Request["view"], out viewIndex)) { viewIndex = -1; } // получение представления и прав пользователя на него BaseView view; MainData.Right right; userData.GetView(null, viewSetIndex, viewIndex, out view, out right); // вывод сообщения о загрузке if (view == null && right.ViewRight) { lblLoading.Visible = true; tblEv.Visible = false; hidEvStamp.Value = "-1"; return; } // определение фильтра событий bool showAllEvents = Request["filter"] == "all"; // проверка загрузки представления и прав на просмотр информации if (view == null) { throw new Exception(WebPhrases.UnableLoadView); } else if (!right.ViewRight || showAllEvents && userData.Role == ServerComm.Roles.Custom) { throw new Exception(CommonPhrases.NoRights); } // определение параметров запроса int year, month, day; int.TryParse(Request["year"], out year); int.TryParse(Request["month"], out month); int.TryParse(Request["day"], out day); DateTime reqDate; try { reqDate = new DateTime(year, month, day); } catch { throw new Exception(WebPhrases.IncorrectDate); } // получение обновлённых данных событий EventTableLight eventTable; AppData.MainData.RefreshEvents(reqDate, out eventTable); hidEvStamp.Value = eventTable.FileModTime.Ticks.ToString(); List <int> cnlList = showAllEvents ? null : view.CnlList; List <MainData.EventView> events = AppData.MainData.ConvertEvents( AppData.MainData.GetLastEvents(eventTable, cnlList, AppData.WebSettings.EventCnt)); if (events.Count > 0) { for (int eventInd = events.Count - 1; eventInd >= 0; eventInd--) { MainData.EventView eventView = events[eventInd]; TableRow row = new TableRow(); WFrmTableView.NewCell(row, eventView.Num, "c"); WFrmTableView.NewCell(row, eventView.Date, "c"); WFrmTableView.NewCell(row, eventView.Time, "c"); WFrmTableView.NewCell(row, eventView.Obj); WFrmTableView.NewCell(row, eventView.KP); WFrmTableView.NewCell(row, eventView.Cnl); WFrmTableView.NewCell(row, eventView.Text); // установка номера события для воспроизведения звука при загрузке страницы if (eventView.Sound && string.IsNullOrEmpty(hidSndEvNum.Value)) { hidSndEvNum.Value = eventView.Num; } // формирование ячейки квитирования if (right.CtrlRight && !eventView.Check) { string chkCellText = "<a href=\"javascript:CheckEvent(" + viewSetIndex + ", " + viewIndex + ", " + year + ", " + month + ", " + day + ", " + eventView.Num + ")\" style=\"color: " + eventView.Color + "\">" + eventView.User + "</a>"; WFrmTableView.NewCell(row, chkCellText, "c"); } else { WFrmTableView.NewCell(row, eventView.User, "c"); } // установка свойств строки таблицы WFrmTableView.SetCssClass(row, eventInd % 3 == 2, eventInd == 0); string color = eventView.Color; if (!(color == "" || color.ToLower() == "black")) { row.ForeColor = Color.FromName(color); } tblEv.Rows.Add(row); } } else { lblNoData.Visible = true; tblEv.Visible = false; } }
protected void Page_Load(object sender, EventArgs e) { try { // настройка выходного потока Response.ClearContent(); Response.TrySkipIisCustomErrors = true; // перевод веб-страницы Localization.TranslatePage(this, "Scada.Web.WFrmError"); // определение сообщения об ошибке string errMsg = ""; Exception ex = Server.GetLastError(); if (ex == null) { string msg = Request["msg"]; if (!string.IsNullOrEmpty(msg)) { errMsg = msg; } } else { if (ex.InnerException != null) { ex = ex.InnerException; } errMsg = ex.Message; } if (errMsg == "") { errMsg = lblMessage.Text; } else { errMsg = lblMessage.Text + ": " + errMsg; lblMessage.Text = ScadaUtils.HtmlEncodeWithBreak(errMsg); // вывод на форму } // вывод сообщения с дополнительной информацией в журнал приложения StringBuilder sbLogMsg = new StringBuilder(errMsg); if (ex != null) { sbLogMsg.AppendLine().Append(ex.StackTrace); } sbLogMsg .AppendLine() .Append(Localization.UseRussian ? "Страница: " : "Page: ") .Append(Request.Url.AbsoluteUri); if (Context.Session == null) { AppData.InitAppData(); } else { UserData userData = UserData.GetUserData(); if (userData != null) { sbLogMsg .AppendLine() .Append(Localization.UseRussian ? "Пользователь: " : "User: ") .Append(userData.UserLogin); } } AppData.Log.WriteAction(sbLogMsg.ToString(), Log.ActTypes.Exception); } finally { Server.ClearError(); } }