Ejemplo n.º 1
0
        protected void Page_Load(object sender, EventArgs e)
        {
            appData  = AppData.GetAppData();
            userData = UserData.GetUserData();

            // проверка входа в систему
            if (!userData.LoggedOn)
            {
                throw new ScadaException(WebPhrases.NotLoggedOn);
            }

            // скрытие сообщения об ошибке
            pnlErrMsg.HideAlert();

            if (IsPostBack)
            {
                cmdEnabled = (bool)ViewState["CmdEnabled"];
                ctrlCnlNum = (int)ViewState["CtrlCnlNum"];
                cmdTypeID  = (int)ViewState["CmdTypeID"];
            }
            else
            {
                // получение параметров запроса и сохранение во ViewState
                ctrlCnlNum = Request.QueryString.GetParamAsInt("ctrlCnlNum");
                ViewState["CtrlCnlNum"] = ctrlCnlNum;

                int viewID = Request.QueryString.GetParamAsInt("viewID");

                // проверка прав
                if (!userData.UserRights.GetUiObjRights(viewID).ControlRight ||
                    !userData.WebSettings.CmdEnabled)
                {
                    throw new ScadaException(CommonPhrases.NoRights);
                }

                BaseView view = userData.UserViews.GetView(viewID, true);
                if (!view.ContainsCtrlCnl(ctrlCnlNum))
                {
                    throw new ScadaException(CommonPhrases.NoRights);
                }

                // перевод веб-страницы
                Translator.TranslatePage(Page, "Scada.Web.Plugins.Table.WFrmCommand");

                // получение канала управления
                CtrlCnlProps ctrlCnlProps = appData.DataAccess.GetCtrlCnlProps(ctrlCnlNum);
                ViewState["CmdEnabled"] = ctrlCnlProps != null;

                cmdTypeID = ctrlCnlProps == null ? BaseValues.CmdTypes.Standard : ctrlCnlProps.CmdTypeID;
                ViewState["CmdTypeID"] = cmdTypeID;

                if (ctrlCnlProps == null)
                {
                    // вывести сообщение, что канал управления не найден
                    lblCtrlCnlNotFound.Text = string.Format(lblCtrlCnlNotFound.Text, ctrlCnlNum);
                    pnlErrMsg.ShowAlert(lblCtrlCnlNotFound);
                    btnSubmit.Enabled = false;
                }
                else
                {
                    // вывод информации по каналу управления
                    pnlInfo.Visible = true;
                    lblCtrlCnl.Text = HttpUtility.HtmlEncode(
                        string.Format("[{0}] {1}", ctrlCnlProps.CtrlCnlNum, ctrlCnlProps.CtrlCnlName));
                    lblObj.Text = HttpUtility.HtmlEncode(ctrlCnlProps.ObjNum > 0 ?
                                                         string.Format("[{0}] {1}", ctrlCnlProps.ObjNum, ctrlCnlProps.ObjName) : "");
                    lblDev.Text = HttpUtility.HtmlEncode(ctrlCnlProps.KPNum > 0 ?
                                                         string.Format("[{0}] {1}", ctrlCnlProps.KPNum, ctrlCnlProps.KPName) : "");

                    // установка видимости поля для ввода пароля
                    pnlPassword.Visible = userData.WebSettings.CmdPassword;

                    // настройка элементов управления в зависимости от типа команды
                    if (cmdTypeID == BaseValues.CmdTypes.Standard || cmdTypeID == BaseValues.CmdTypes.Binary)
                    {
                        if (ctrlCnlProps.CmdValArr == null)
                        {
                            if (cmdTypeID == BaseValues.CmdTypes.Standard)
                            {
                                pnlRealValue.Visible = true;
                            }
                            else
                            {
                                pnlData.Visible = true;
                            }
                        }
                        else
                        {
                            repCommands.DataSource = GetDiscreteCmds(ctrlCnlProps.CmdValArr);
                            repCommands.DataBind();
                            pnlDiscreteValue.Visible = true;
                            btnSubmit.Enabled        = false;           // disable postback on Enter
                            btnSubmit.CssClass       = "hide-exec-btn"; // hide Execute button
                        }
                    }
                    else // BaseValues.CmdTypes.Request
                    {
                        ViewState["KPNum"] = ctrlCnlProps.KPNum;
                    }
                }
            }
        }