예제 #1
0
        /// <summary>
        /// Метод инициализации ссылок на журналы
        /// </summary>
        /// <param name="urlBuilder"></param>
        /// <param name="detectedMenu"></param>
        /// <returns></returns>
        protected MainPageUrlBuilder InitMenu(MainPageUrlBuilder urlBuilder, bool detectedMenu)
        {
            //если урл не определен, ты определяем урл для данной таблицы
            if (!detectedMenu)
            {
                //проверяем, урл по данной таблице используется или нет
                if (urlBuilder.UserControl.Equals(TableName + "Edit", StringComparison.OrdinalIgnoreCase) ||
                    urlBuilder.UserControl.Equals(TableName + "Journal", StringComparison.OrdinalIgnoreCase))
                {
                    //проверяем что имеющиеся ссылки подходят именно этой части меню
                    var keys = urlBuilder.QueryParameters.Keys.Where(r => r.EndsWith(".id")).ToList();
                    //смотрим либо отсутствуют параметры таблиц, либо они начинаются с текущего референса, тогда считаем текущей таблицей
                    if (keys.Count == 0 || ReferenceName == null ||
                        keys.FirstOrDefault(r => r.StartsWith(ReferenceName)) != null)
                    {
                        detectedMenu    = true;
                        _isCurrentTable = true;
                        InitMenuByChilds(urlBuilder, true);
                    }
                }
                else
                {
                    //обходим по дочкам и пытаемся определить урл для данной таблицы
                    var detectedUrlBuilder = InitMenuByChilds(urlBuilder, false);
                    if (detectedUrlBuilder != null)
                    {
                        urlBuilder   = detectedUrlBuilder;
                        detectedMenu = true;
                    }
                }
            }
            else
            {
                //если урл определен, то передаем его дочкам
                InitMenuByChilds(urlBuilder, true);
            }
            //указываем журнал ссылке
            var setUrl = SetUserControl(urlBuilder);

            if (detectedMenu)
            {
                //выставляем текущему меню ссылку
                if (setUrl)
                {
                    _url = urlBuilder.CreateUrl();
                }
                //укарачиваем ссылки по референсам
                MoveReferenceToParent(urlBuilder, this, Parent);
                return(DetectedUrlBuilder = urlBuilder);
            }
            //если урл не был определен, то убираем все параметры родителей
            RemoveAllTableReferences(urlBuilder);
            //выставляем текущему меню ссылку
            if (setUrl)
            {
                _url = urlBuilder.CreateUrl();
            }
            return(null);
        }
예제 #2
0
        private string GetUrl()
        {
            var url = new MainPageUrlBuilder
            {
                Page             = "MainPage",
                UserControl      = TableName + "Journal",
                IsDataControl    = true,
                IsSelect         = true,
                IsMultipleSelect = MultipleSelect,
                SelectMode       = SelectMode ?? "none",
                ViewMode         = ViewMode ?? "none",
            };

            return(url.CreateUrl());
        }
        private static void Export(HttpContext context, string queryParameters, IDataSourceView4 dataSourceView, IExportJournal journal, ICollection <string> selectedValues)
        {
            if (!dataSourceView.CheckPermit() || !dataSourceView.CheckPermitExport())
            {
                context.Response.StatusCode = 404;
                context.Response.End();
                return;
            }

            var data = selectedValues != null && selectedValues.Count > 0
                           ? dataSourceView.GetSelectIRowByID(queryParameters, selectedValues.ToArray())
                           : dataSourceView.GetSelectIRow(queryParameters);
            var log = InitializerSection.GetSection().LogMonitor;

            log.Init();
            var exportData = data.ToList();

            journal.Url = new MainPageUrlBuilder("/MainPage.aspx/data/" + journal.TableName + "Journal" + queryParameters);
            journal.PrepareExportData(exportData);
            var args = new JournalExportEventArgs
            {
                CheckPermit  = true,
                Columns      = GridHtmlGenerator.GetColumnsForExport(journal.GetColumns()),
                FilterValues = journal.GetFilterValues(),
                Format       = "Excel",
                Header       = journal.TableHeader,
                LogMonitor   = log,
                Control      = new AccessControl(dataSourceView.CheckPermitExport),
                Data         = exportData,
            };
            var url = new MainPageUrlBuilder
            {
                UserControl   = journal.TableName + "Journal",
                IsDataControl = true,
                ShowHistory   = true,
            };

            args.ViewJournalUrl = new StringBuilder();
            url.CreateUrl(args.ViewJournalUrl);
            args.ViewJournalUrl.Append("?id.EqualsCollection=");

            var stream = WebSpecificInstances.GetExcelExporter().GetExcelStream(args);

            PageHelper.DownloadFile(stream, journal.TableHeader + "." + args.FileNameExtention, context.Response);
        }
예제 #4
0
 protected internal string GetJournalUrl(MainPageUrlBuilder urlClone)
 {
     urlClone.UserControl = TableName + "Journal";
     urlClone.IsRead      = false;
     return(urlClone.CreateUrl());
 }
예제 #5
0
 protected string GetLookUrl(MainPageUrlBuilder urlClone)
 {
     urlClone.UserControl = TableName + "Edit";
     urlClone.IsRead      = true;
     return(urlClone.CreateUrl());
 }
예제 #6
0
 protected override void OnPreRender(EventArgs e)
 {
     FilterTree();
     Page.Form.Action = Url.CreateUrl();
     base.OnPreRender(e);
 }
        protected void CreateReport(string culture, bool isSubscriptions)
        {
            if (webReportManager.Plugin == null)
            {
                return;
            }
            errorDisplay.Text = "";
            ValidateReportEventArgs args = new ValidateReportEventArgs();

            if (!webReportManager.Validate(args))
            {
                errorDisplay.ShowError(webReportManager.ErrorText);
                WriteErrors(errorDisplay, args);
                return;
            }
            //webReportManager.ShowReport();
            //StiWebViewer1.Report = webReportManager.Report;
            //StiWebViewer1.ResetCurrentPage();
            if (webReportManager.Plugin != null)
            {
                StorageValues values = webReportManager.GetValues();
                var           sid    = new byte[] { };
                switch (this.Context.User.Identity.AuthenticationType)
                {
                case "Windows":
                    var windowsIdentity = (WindowsIdentity)this.Context.User.Identity;
                    sid = new byte[windowsIdentity.User.BinaryLength];
                    windowsIdentity.User.GetBinaryForm(sid, 0);
                    break;

                case "Forms":     // note: Получение сида при идентификации по формам.
                    sid = Encoding.Default.GetBytes(User.GetSID());
                    break;
                }

                if (((IWebReportPlugin)webReportManager.Plugin).AllowSaveValuesConditions)
                {
                    StorageValues.SetStorageValues(webReportManager.Plugin.GetType().FullName, sid, values);
                }
                if (!isSubscriptions)
                {
                    var redirectReportPlugin = webReportManager.Plugin as IRedirectReportPlugin;
                    var backPath             = Request.QueryString["backPath"];
                    var backText             = Request.QueryString["text"];

                    if (string.IsNullOrEmpty(backPath) && webReportManager.Plugin.Visible)
                    {
                        backPath = WebReportManager.GetReportUrl(
                            string.Empty,
                            webReportManager.Plugin.GetType().FullName,
                            string.Empty,
                            string.Empty,
                            false) + "&open=false&setDefaultParams=true";
                    }

                    if (string.IsNullOrEmpty(backText))
                    {
                        backText = Resources.SBack;
                    }

                    if (webReportManager.Plugin.Visible)
                    {
                        RememberReports(
                            WebReportManager.GetReportUrl(
                                string.Empty,
                                webReportManager.Plugin.GetType().FullName,
                                string.Empty,
                                string.Empty,
                                false) + "&open=false&setDefaultParams=true",
                            webReportManager.Plugin);
                    }

                    if (redirectReportPlugin != null)
                    {
                        if (redirectReportPlugin.LogViewReport)
                        {
                            Tools.Security.DBDataContext.AddViewReports(
                                Tools.Security.User.GetSID(),
                                HttpContext.Current.User.Identity.Name,
                                HttpContext.Current.User.Identity.Name,
                                ReportInitializerSection.GetReportInitializerSection().ReportPageViewer + "?ClassName="
                                + redirectReportPlugin.GetType().FullName,
                                HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority),
                                Environment.MachineName,
                                false,
                                redirectReportPlugin.GetType());
                        }

                        redirectReportPlugin.OpenReport(
                            webReportManager,
                            values,
                            Request.QueryString["rs:format"],
                            culture, HttpUtility.UrlEncode(backPath),
                            backText, Request.QueryString["rs:command"]);
                    }
                    else
                    {
                        var guid = SetSession(values, webReportManager);
                        Response.Redirect(
                            string.Format(
                                "{6}?reportName={0}&expword={4}&values={1}&text={2}&culture={5}&backPath={3}",
                                webReportManager.Plugin.GetType().FullName,
                                guid,
                                backText,
                                HttpUtility.UrlEncode(backPath),
                                Request.QueryString["expword"],
                                culture,
                                ReportInitializerSection.GetReportInitializerSection().ReportingStiReportResultPage));
                    }

                    //                    ScriptManager.RegisterStartupScript(btnCreateReport,
                    //                                                        GetType(),
                    //                                                        "open new window",
                    //                                                        string.Format("window.open('ReportResultPage.aspx?reportName={0}&refPerson={1}', '');",
                    //                                                                      webReportManager.Plugin.GetType().FullName,
                    //                                                                      refPerson,
                    //                                                                      Guid.NewGuid().ToString().Replace("-", "")),
                    //                                                        true);
                }
                else
                {
                    var guid = SetSession(values, webReportManager);
                    var url  = new MainPageUrlBuilder
                    {
                        UserControl   = "ReportSubscriptionsEdit",
                        IsDataControl = true,
                        IsNew         = true
                    };
                    url.CustomQueryParameters.Add("guid", guid);
                    /*Определение типа отчета*/
                    var isSqlReportingServices = Convert.ToByte(webReportManager.Plugin is ISqlReportingServicesPlugin);
                    url.CustomQueryParameters.Add("isSqlReportingServices", isSqlReportingServices.ToString());
                    url.CustomQueryParameters.Add("reportName", webReportManager.Plugin.GetType().FullName);
                    url.CustomQueryParameters.Add("qscommand", Request.QueryString["rs:command"]);
                    url.CustomQueryParameters.Add("culture", culture);
                    /*Определениe формата выгрузки отчета в зависимости от типа отчета*/
                    string format = "";
                    if (isSqlReportingServices == 0)
                    {
                        var webReportPlugin = (IWebReportPlugin)webReportManager.Plugin;
                        var stiPlugin       = (IStimulsoftReportPlugin)webReportPlugin;
                        var expToWord       = !string.IsNullOrEmpty(Request.QueryString["expword"]);
                        if (!expToWord && stiPlugin.AutoExportTo == null)
                        {
                            format = Request.QueryString["expword"];
                        }
                        else if (stiPlugin.AutoExportTo != null)
                        {
                            format = stiPlugin.AutoExportTo.Value.ToString();
                        }
                    }
                    else
                    {
                        format = Request.QueryString["rs:format"];
                    }
                    /**/
                    url.CustomQueryParameters.Add("format", format);
                    Page.Response.Redirect(url.CreateUrl(false, true));
                }
            }
        }