protected void Application_End(Object sender, EventArgs e) { // O.R. [2009-07-28]: Check license and NET Framework version if (Configuration.WorkflowModule && WorkflowActivityWrapper.IsFramework35Installed()) { GlobalWorkflowRuntime.StopRuntime(); } Configuration.Uninitialize(); }
public bool IsEnable(object Sender, object Element) { bool retval = false; // O.R. [2009-07-28]: Check license and NET Framework version // O.R. [2009-10-28]: Check SchemaManager count SchemaMaster[] list = SchemaManager.GetAvailableShemaMasters(); if (Configuration.WorkflowModule && WorkflowActivityWrapper.IsFramework35Installed() && list != null && list.Length > 0) { retval = true; } return(retval); }
protected void Page_Load(object sender, EventArgs e) { // O.R. [2009-07-28]: Check license and NET Framework version if (Mediachase.IBN.Business.Configuration.WorkflowModule && WorkflowActivityWrapper.IsFramework35Installed()) { #if DEBUG if (Request["Id"] != null) { Dictionary <string, string> dicNew = new Dictionary <string, string>(); dicNew.Add("parentName", "_parentName_"); CommandParameters cpNew = new CommandParameters("WFNewActivityPopup", dicNew); Dictionary <string, string> dicEdit = new Dictionary <string, string>(); dicEdit.Add("activityName", "_activityName_"); CommandParameters cpEdit = new CommandParameters("WFEditActivityPopup", dicEdit); string _newActivity = CommandManager.GetCurrent(this.Page).AddCommand("WorkflowInstance", string.Empty, string.Empty, cpNew); string _editActivity = CommandManager.GetCurrent(this.Page).AddCommand("WorkflowInstance", string.Empty, string.Empty, cpEdit); ctrlWFBuilder.NewActivityScript = _newActivity; ctrlWFBuilder.EditActivityScript = _editActivity; ctrlWFBuilder.AddText = CHelper.GetResFileString("{IbnFramework.BusinessProcess:NewActivity}"); ctrlWFBuilder.EditText = CHelper.GetResFileString("{IbnFramework.BusinessProcess:EditActivity}"); ctrlWFBuilder.DeleteText = CHelper.GetResFileString("{IbnFramework.BusinessProcess:DeleteActivity}"); ctrlWFBuilder.WorkflowId = PrimaryKeyId.Parse(Request["Id"]); ctrlWFBuilder.DataBind(); } LayoutExtender _extender = LayoutExtender.GetCurrent(this.Page); if (_extender != null) { _extender.NoHeightResize = true; } Page.ClientScript.RegisterClientScriptBlock(this.Page.GetType(), Guid.NewGuid().ToString(), String.Format("<link type='text/css' rel='stylesheet' href='{0}' />", McScriptLoader.Current.GetScriptUrl("~/styles/IbnFramework/assignment.css", this.Page))); #endif } }
private void BindTabs() { bool CanViewFinances = Document.CanViewFinances(DocumentId); // O.R. [2009-04-06]: Workflow if (Tab != null && (Tab == "General" || Tab == "FileLibrary" || Tab == "Finance" || Tab == "Discussions" || Tab == "Customization" || Tab == "Workflow")) { pc["DocumentView_CurrentTab"] = Tab; } else if (ViewState["CurrentTab"] != null) { pc["DocumentView_CurrentTab"] = ViewState["CurrentTab"].ToString(); } else if (pc["DocumentView_CurrentTab"] == null) { pc["DocumentView_CurrentTab"] = "General"; } if (!CanViewFinances && Tab == "Finance") { pc["DocumentView_CurrentTab"] = "General"; } // O.R. [2009-10-28]: Workflow. Check Schemas Mediachase.Ibn.Assignments.Schemas.SchemaMaster[] list = Mediachase.Ibn.Assignments.Schemas.SchemaManager.GetAvailableShemaMasters(); if (Tab == "Workflow" && !(Configuration.WorkflowModule && WorkflowActivityWrapper.IsFramework35Installed() && list != null && list.Length > 0)) { pc["DocumentView_CurrentTab"] = "General"; } ctrlTopTab.AddTab(LocRM.GetString("tabGeneral"), "General"); ctrlTopTab.AddTab(LocRM.GetString("tbDetails"), "Customization"); ctrlTopTab.AddTab(LocRM.GetString("tabLibrary"), "FileLibrary"); if (CanViewFinances && !Security.CurrentUser.IsExternal) { ctrlTopTab.AddTab(LocRM.GetString("tabFinance"), "Finance"); } else { if (pc["DocumentView_CurrentTab"] == "Finance") { pc["DocumentView_CurrentTab"] = "General"; } } ctrlTopTab.AddTab(LocRM.GetString("tabDiscussions"), "Discussions"); // O.R. [2009-07-28]: Check license and NET Framework version if (Configuration.WorkflowModule && WorkflowActivityWrapper.IsFramework35Installed() && list != null && list.Length > 0) { ctrlTopTab.AddTab(GetGlobalResourceObject("IbnFramework.BusinessProcess", "Workflows").ToString(), "Workflow"); } ctrlTopTab.SelectItem(pc["DocumentView_CurrentTab"]); string controlName = "DocumentGeneral2.ascx"; switch (pc["DocumentView_CurrentTab"]) { case "General": controlName = "DocumentGeneral2.ascx"; break; case "Customization": controlName = "MetaDataView.ascx"; break; case "Finance": if (CanViewFinances) { controlName = "Finance.ascx"; } break; case "FileLibrary": controlName = "FileLibrary.ascx"; break; case "Discussions": controlName = "Discussions.ascx"; break; case "Workflow": // O.R. [2009-04-06]: Workflow hack controlName = "~/Apps/BusinessProcess/Modules/WorkflowListByObject.ascx"; break; } System.Web.UI.UserControl control = (System.Web.UI.UserControl)LoadControl(controlName); phItems.Controls.Add(control); }
protected void Application_BeginRequest(Object sender, EventArgs e) { GetCultureFromRequest(); InitializeGlobalContext(); GlobalResourceManager.Initialize(HostingEnvironment.MapPath("~/App_GlobalResources/GlobalResources.xml")); string path = Request.Path; #region Remove /portals/ from query string constOldUrl = "/portals/"; if (path.IndexOf(constOldUrl, StringComparison.OrdinalIgnoreCase) >= 0) { string fullPath = Request.RawUrl; int index = fullPath.IndexOf(constOldUrl, StringComparison.OrdinalIgnoreCase); string begin = fullPath.Substring(0, index); string end = fullPath.Substring(index + constOldUrl.Length); int endOfDomain = end.IndexOf('/'); if (endOfDomain >= 0) { end = end.Substring(endOfDomain + 1); } path = begin + '/' + end; //OZ: RewritePath чтобы работали старые клиентские инструменты //AK: 2009-01-26 - exclude css if (path.EndsWith(".css", StringComparison.OrdinalIgnoreCase)) { Response.Redirect(path, true); } else { HttpContext.Current.RewritePath(path); } } #endregion bool pathContainsFiles = (path.IndexOf("/files/", StringComparison.OrdinalIgnoreCase) >= 0); bool pathContainsWebDav = (path.IndexOf("/webdav/", StringComparison.OrdinalIgnoreCase) >= 0); if (!pathContainsFiles && !pathContainsWebDav && (path.EndsWith("error.aspx", StringComparison.OrdinalIgnoreCase) || path.EndsWith(".css", StringComparison.OrdinalIgnoreCase) || path.EndsWith(".html", StringComparison.OrdinalIgnoreCase) || path.EndsWith("webresource.axd", StringComparison.OrdinalIgnoreCase) || path.EndsWith("scriptresource.axd", StringComparison.OrdinalIgnoreCase) || path.EndsWith("licenseexpired.aspx", StringComparison.OrdinalIgnoreCase) ) ) { return; } //Обработка файлов которые подвергаются кэшированию // TODO: перенести список строк и время жизни кеша в web.config if (!pathContainsFiles && !pathContainsWebDav && !path.EndsWith("Reserved.ReportViewerWebControl.axd", StringComparison.OrdinalIgnoreCase) && (path.EndsWith(".js", StringComparison.OrdinalIgnoreCase) || path.EndsWith(".gif", StringComparison.OrdinalIgnoreCase) || path.EndsWith(".jpg", StringComparison.OrdinalIgnoreCase) || path.EndsWith(".png", StringComparison.OrdinalIgnoreCase) || path.EndsWith(".axd", StringComparison.OrdinalIgnoreCase) ) ) { HttpCachePolicy cache = HttpContext.Current.Response.Cache; //HttpContext.Current.Response.AddFileDependency(Server.MapPath(path)); bool _hanldeFlag = true; //Вид кэширования (включает возможность кэширования на прокси) cache.SetCacheability(HttpCacheability.Public); //кэширование по параметрам в QueryString (d, versionUid) //все запросы включающие любой из этих параметров будут кешироваться по значению параметра cache.VaryByParams["d"] = true; cache.VaryByParams["versionUid"] = true; cache.SetOmitVaryStar(true); //устанавливаем срок годности закэшированого файла //Можно сделать для разных типов фалов - разные сроки хранения double cacheExpires = 1; if (System.Configuration.ConfigurationManager.AppSettings["ClientCache"] != null) { cacheExpires = Convert.ToDouble(System.Configuration.ConfigurationManager.AppSettings["ClientCache"], CultureInfo.InvariantCulture); } cache.SetExpires(DateTime.Now + TimeSpan.FromMinutes(cacheExpires)); //cache.SetMaxAge(TimeSpan.FromSeconds(259200)); //разрешаем хранить кэш на диске cache.SetAllowResponseInBrowserHistory(true); cache.SetValidUntilExpires(true); #if (DEBUG) cache.SetExpires(DateTime.Now); cache.SetAllowResponseInBrowserHistory(false); #endif DateTime dtRequest = DateTime.MinValue; #if (!DEBUG) //проверка даты модификации файла if (File.Exists(Server.MapPath(path))) { cache.SetLastModified(File.GetLastWriteTime(Server.MapPath(path)).ToUniversalTime()); //Не удалять(!) Включает режим более строгово кеширования //Кэшеирует файлы даже после рестарта IIS, вернусь после отпуска протестирую и включу (dvs) if (HttpContext.Current.Request.Headers["If-Modified-Since"] != null) { try { dtRequest = Convert.ToDateTime(HttpContext.Current.Request.Headers["If-Modified-Since"], CultureInfo.InvariantCulture); } catch { } //если файл существует и его дата модификации совпадает с версией на клиенте то возвращаем 304, в противном случае //обрабатывать данный запрос будет дефолтный хэндлер ASP.NET (подробнее см. System.Web.Cachig.OutputCacheModule) if (File.GetLastWriteTime(Server.MapPath(path)).ToUniversalTime().ToString("r") == dtRequest.ToUniversalTime().ToString("r")) { //Если отладка загрузки скриптов включена, то не кэшируем их if ((path.EndsWith(".js", StringComparison.OrdinalIgnoreCase) || path.EndsWith(".axd", StringComparison.OrdinalIgnoreCase)) && Convert.ToBoolean(System.Configuration.ConfigurationManager.AppSettings["LogSriptLoading"], CultureInfo.InvariantCulture)) { cache.SetExpires(DateTime.Now); } else { Response.ClearContent(); Response.StatusCode = 304; _hanldeFlag = false; } } } } #endif if (_hanldeFlag) { return; } } else { //25.02.2009 et: Не выполнять проверку для WebDav запросов if (!pathContainsFiles && !pathContainsWebDav) { if (path.IndexOf('\\') >= 0 || System.IO.Path.GetFullPath(Request.PhysicalPath) != Request.PhysicalPath) { throw new HttpException(404, "not found"); } } InitializeDatabase(); // Terminates request if error occurs. //AK 2009-01-16 if (!PortalConfig.SystemIsActive) { if (Request.AppRelativeCurrentExecutionFilePath.Equals("~/default.aspx", StringComparison.OrdinalIgnoreCase)) { return; } else { Response.Redirect("~/default.aspx", true); } } //Init TemplateResolver TemplateResolver.Current = new TemplateResolver(); TemplateResolver.Current.AddSource("QueryString", new TemplateSource(HttpContext.Current.Request.QueryString)); if (HttpContext.Current.Session != null) { TemplateResolver.Current.AddSource("Session", new TemplateSource(HttpContext.Current.Session)); } TemplateResolver.Current.AddSource("HttpContext", new TemplateSource(HttpContext.Current.Items)); TemplateResolver.Current.AddSource("DataContext", new TemplateSource(DataContext.Current.Attributes)); TemplateResolver.Current.AddSource("DateTime", new DateTimeTemplateSource()); TemplateResolver.Current.AddSource("Security", new Mediachase.Ibn.Data.Services.SecurityTemplateSource()); TemplateResolver.Current.AddSource("TimeTrackingSecurity", new Mediachase.IbnNext.TimeTracking.TimeTrackingSecurityTemplateSource()); //Init PathTemplateResolver PathTemplateResolver.Current = new PathTemplateResolver(); PathTemplateResolver.Current.AddSource("QueryString", new PathTemplateSource(HttpContext.Current.Request.QueryString)); if (HttpContext.Current.Session != null) { PathTemplateResolver.Current.AddSource("Session", new PathTemplateSource(HttpContext.Current.Session)); } PathTemplateResolver.Current.AddSource("HttpContext", new PathTemplateSource(HttpContext.Current.Items)); PathTemplateResolver.Current.AddSource("DataContext", new PathTemplateSource(DataContext.Current.Attributes)); PathTemplateResolver.Current.AddSource("DateTime", new Mediachase.Ibn.Web.UI.Controls.Util.DateTimePathTemplateSource()); PathTemplateResolver.Current.AddSource("Security", new Mediachase.Ibn.Web.UI.Controls.Util.SecurityPathTemplateSource()); //PathTemplateResolver.Current.AddSource("TimeTrackingSecurity", new Mediachase.IbnNext.TimeTracking.TimeTrackingSecurityTemplateSource()); // O.R. [2009-07-28]: Check license and .NET Framework version if (Configuration.WorkflowModule && WorkflowActivityWrapper.IsFramework35Installed()) { GlobalWorkflowRuntime.StartRuntime(DataContext.Current.SqlContext.ConnectionString); } } }