Defined config files

Got applications loading from XML config
Updated User entity to use the Applications cache when retrieving list of Applications (Only the Application class should be in control of instantiating Application entities)
This commit is contained in:
Matt@MBP-PC.Home
2012-06-27 10:57:09 -01:00
parent 852e35d6be
commit ff8bd9362b
12 changed files with 286 additions and 17 deletions

View File

@@ -0,0 +1,10 @@
<?xml version="1.0"?>
<applications>
<add alias="content" name="Content" icon=".traycontent" sortOrder="10" />
<add alias="media" name="Media" icon=".traymedia" sortOrder="20" />
<add alias="settings" name="Settings" icon=".traysettings" sortOrder="30" />
<add alias="developer" name="Developer" icon=".traydeveloper" sortOrder="40" />
<add alias="users" name="Users" icon=".trayusers" sortOrder="50" />
<add alias="member" name="Members" icon=".traymember" sortOrder="60" />
<add alias="translation" name="Translation" icon=".traytranslation" sortOrder="70" />
</applications>

View File

@@ -0,0 +1,78 @@
<?xml version="1.0"?>
<trees>
<!-- Content -->
<add application="content" alias="content" name="Content" type="umbraco.loadContent, umbraco"
iconClosed=".sprTreeFolder" iconOpen=".sprTreeFolder_o" silent="true" sortOrder="10" />
<add application="content" alias="contentRecycleBin" name="RecycleBin" type="umbraco.cms.presentation.Trees.ContentRecycleBin, umbraco"
iconClosed="folder.gif" iconOpen="folder_o.gif" autoInitialize="false" sortOrder="20" />
<!-- Media -->
<add application="media" alias="media" name="Media" type="umbraco.loadMedia, umbraco"
iconClosed=".sprTreeFolder" iconOpen=".sprTreeFolder_o" sortOrder="10" />
<add application="media" alias="mediaRecycleBin" name="RecycleBin" type="umbraco.cms.presentation.Trees.MediaRecycleBin, umbraco"
iconClosed="folder.gif" iconOpen="folder_o.gif" autoInitialize="false" sortOrder="20" />
<!-- Settings -->
<add application="settings" alias="languages" name="Languages" type="umbraco.loadLanguages, umbraco"
iconClosed=".sprTreeFolder" iconOpen=".sprTreeFolder_o" sortOrder="10" />
<add application="settings" alias="dictionary" name="Dictionary" type="umbraco.loadDictionary, umbraco"
iconClosed=".sprTreeFolder" iconOpen=".sprTreeFolder_o" sortOrder="20" />
<add application="settings" alias="noteTypes" name="Document Types" type="umbraco.loadNodeTypes, umbraco"
iconClosed=".sprTreeFolder" iconOpen=".sprTreeFolder_o" sortOrder="30" />
<add application="settings" alias="mediaTypes" name="Media Types" type="umbraco.loadMediaTypes, umbraco"
iconClosed=".sprTreeFolder" iconOpen=".sprTreeFolder_o" sortOrder="40" />
<add application="settings" alias="stylesheets" name="Stylesheets" type="umbraco.loadStylesheets, umbraco"
iconClosed=".sprTreeFolder" iconOpen=".sprTreeFolder_o" sortOrder="50" />
<add application="settings" alias="stylesheetProperty" name="Stylesheet Property" type="umbraco.loadStylesheetProperty, umbraco"
iconClosed="" iconOpen="" autoInitialize="false" sortOrder="51" />
<add application="settings" alias="scripts" name="Scripts" type="umbraco.loadScripts, umbraco"
iconClosed=".sprTreeFolder" iconOpen=".sprTreeFolder_o" sortOrder="60" />
<add application="settings" alias="templates" name="Templates" type="umbraco.loadTemplates, umbraco"
iconClosed=".sprTreeFolder" iconOpen=".sprTreeFolder_o" sortOrder="70" />
<!-- Developer -->
<add application="developer" alias="cacheBrowser" name="Cache Browser" type="umbraco.loadCache, umbraco"
iconClosed=".sprTreeFolder" iconOpen=".sprTreeFolder_o" sortOrder="10" />
<add application="developer" alias="CacheItem" name="Cache Item" type="umbraco.loadCacheItem, umbraco"
iconClosed=".sprTreeFolder" iconOpen=".sprTreeFolder_o" autoInitialize="false" sortOrder="11" />
<add application="developer" alias="datatype" name="Data Types" type="umbraco.loadDataTypes, umbraco"
iconClosed=".sprTreeFolder" iconOpen=".sprTreeFolder_o" sortOrder="20" />
<add application="developer" alias="macros" name="Macros" type="umbraco.loadMacros, umbraco"
iconClosed=".sprTreeFolder" iconOpen=".sprTreeFolder_o" sortOrder="30" />
<add application="developer" alias="packager" name="Packages" type="umbraco.loadPackager, umbraco"
iconClosed="folder.gif" iconOpen="folder_o.gif" sortOrder="40" />
<add application="developer" alias="packagerPackages" name="Packager Packages" type="umbraco.loadPackages, umbraco"
iconClosed="folder.gif" iconOpen="folder_o.gif" autoInitialize="false" sortOrder="41" />
<add application="developer" alias="python" name="Scripting Files" type="umbraco.loadPython, umbraco"
iconClosed="folder.gif" iconOpen="folder_o.gif" sortOrder="50" />
<add application="developer" alias="xslt" name="XSLT Files" type="umbraco.loadXslt, umbraco"
iconClosed=".sprTreeFolder" iconOpen=".sprTreeFolder_o" sortOrder="60" />
<!-- Users -->
<add application="users" alias="users" name="Users" type="umbraco.loadUsers, umbraco"
iconClosed=".sprTreeFolder" iconOpen=".sprTreeFolder_o" sortOrder="10" />
<add application="users" alias="userTypes" name="User Types" type="umbraco.cms.presentation.Trees.UserTypes, umbraco"
iconClosed=".sprTreeFolder" iconOpen=".sprTreeFolder_o" sortOrder="20" />
<add application="users" alias="userPermissions" name="User Permissions" type="umbraco.cms.presentation.Trees.UserPermissions, umbraco"
iconClosed=".sprTreeFolder" iconOpen=".sprTreeFolder_o" sortOrder="30" />
<!-- Members -->
<add application="member" alias="member" name="Members" type="umbraco.loadMembers, umbraco"
iconClosed=".sprTreeFolder" iconOpen=".sprTreeFolder_o" sortOrder="10" />
<add application="member" alias="memberGroup" name="Member Groups" type="umbraco.loadMemberGroups, umbraco"
iconClosed=".sprTreeFolder" iconOpen=".sprTreeFolder_o" sortOrder="20" />
<add application="member" alias="memberType" name="Member Types" type="umbraco.loadMemberTypes, umbraco"
iconClosed=".sprTreeFolder" iconOpen=".sprTreeFolder_o" sortOrder="30" />
<!-- Translation -->
<add application="translation" alias="openTasks" name="Tasks assigned to you" type="umbraco.loadOpenTasks, umbraco"
iconClosed=".sprTreeFolder" iconOpen=".sprTreeFolder_o" sortOrder="10" />
<add application="translation" alias="yourTasks" name="Tasks created by you" type="umbraco.loadYourTasks, umbraco"
iconClosed=".sprTreeFolder" iconOpen=".sprTreeFolder_o" sortOrder="20" />
<!-- Custom -->
<!--<add application="myApplication" alias="myTree" name="Me Tree" type="myPackage.myTree, myPackage"
iconClosed=".sprTreeFolder" iconOpen=".sprTreeFolder_o" sortOrder="10" />-->
</trees>

View File

@@ -3,8 +3,12 @@ using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Linq;
using System.Web;
using System.Xml.Linq;
using umbraco.DataLayer;
using umbraco.IO;
using umbraco.interfaces;
using umbraco.BusinessLogic.Utils;
using System.Runtime.CompilerServices;
@@ -46,6 +50,7 @@ namespace umbraco.BusinessLogic
private string _name;
private string _alias;
private string _icon;
private int _sortOrder;
/// <summary>
@@ -90,10 +95,22 @@ namespace umbraco.BusinessLogic
/// <param name="alias">The application alias.</param>
/// <param name="icon">The application icon.</param>
public Application(string name, string alias, string icon)
: this(name, alias, icon, 0)
{ }
/// <summary>
/// Initializes a new instance of the <see cref="Application"/> class.
/// </summary>
/// <param name="name">The name.</param>
/// <param name="alias">The alias.</param>
/// <param name="icon">The icon.</param>
/// <param name="sortOrder">The sort order.</param>
public Application(string name, string alias, string icon, int sortOrder)
{
this.name = name;
this.alias = alias;
this.icon = icon;
this.sortOrder = sortOrder;
}
/// <summary>
@@ -124,7 +141,19 @@ namespace umbraco.BusinessLogic
{
get { return _icon; }
set { _icon = value; }
}
}
/// <summary>
/// Gets or sets the sort order.
/// </summary>
/// <value>
/// The sort order.
/// </value>
public int sortOrder
{
get { return _sortOrder; }
set { _sortOrder = value; }
}
/// <summary>
/// Creates a new applcation if no application with the specified alias is found.
@@ -134,6 +163,19 @@ namespace umbraco.BusinessLogic
/// <param name="icon">The application icon, which has to be located in umbraco/images/tray folder.</param>
[MethodImpl(MethodImplOptions.Synchronized)]
public static void MakeNew(string name, string alias, string icon)
{
MakeNew(name, alias, icon, (1 + SqlHelper.ExecuteScalar<int>("SELECT MAX(sortOrder) FROM umbracoApp")));
}
/// <summary>
/// Makes the new.
/// </summary>
/// <param name="name">The name.</param>
/// <param name="alias">The alias.</param>
/// <param name="icon">The icon.</param>
/// <param name="sortOrder">The sort order.</param>
[MethodImpl(MethodImplOptions.Synchronized)]
public static void MakeNew(string name, string alias, string icon, int sortOrder)
{
bool exist = false;
foreach (Application app in getAll())
@@ -144,8 +186,6 @@ namespace umbraco.BusinessLogic
if (!exist)
{
int sortOrder = (1 + SqlHelper.ExecuteScalar<int>("SELECT MAX(sortOrder) FROM umbracoApp"));
SqlHelper.ExecuteNonQuery(@"
insert into umbracoApp
(appAlias,appIcon,appName, sortOrder)
@@ -157,7 +197,6 @@ namespace umbraco.BusinessLogic
ReCache();
}
}
@@ -265,12 +304,30 @@ namespace umbraco.BusinessLogic
{
List<Application> tmp = new List<Application>();
using (IRecordsReader dr =
SqlHelper.ExecuteReader("Select appAlias, appIcon, appName from umbracoApp"))
//using (IRecordsReader dr =
// SqlHelper.ExecuteReader("Select appAlias, appIcon, appName from umbracoApp"))
//{
// while (dr.Read())
// {
// tmp.Add(new Application(dr.GetString("appName"), dr.GetString("appAlias"), dr.GetString("appIcon")));
// }
//}
var configPath = IOHelper.MapPath(Path.Combine(IOHelper.ResolveUrl(SystemDirectories.Config), "applications.config"));
var config = XDocument.Load(configPath);
if (config.Root != null)
{
while (dr.Read())
foreach (var addElement in config.Root.Elements("add").OrderBy(x =>
{
var sortOrderAttr = x.Attribute("sortOrder");
return sortOrderAttr != null ? Convert.ToInt32(sortOrderAttr.Value) : 0;
}))
{
tmp.Add(new Application(dr.GetString("appName"), dr.GetString("appAlias"), dr.GetString("appIcon")));
var sortOrderAttr = addElement.Attribute("sortOrder");
tmp.Add(new Application(addElement.Attribute("name").Value,
addElement.Attribute("alias").Value,
addElement.Attribute("icon").Value,
sortOrderAttr != null ? Convert.ToInt32(sortOrderAttr.Value) : 0));
}
}

View File

@@ -256,17 +256,16 @@ namespace umbraco.BusinessLogic
if (!_isInitialized)
setupUser(_id);
var allApps = Application.getAll();
var apps = new List<Application>();
using (IRecordsReader appIcons = SqlHelper.ExecuteReader("select appAlias, appIcon, appname from umbracoApp app join umbracoUser2app u2a on u2a.app = app.appAlias and u2a.[user] = @userID order by app.sortOrder", SqlHelper.CreateParameter("@userID", this.Id)))
using (IRecordsReader appIcons = SqlHelper.ExecuteReader("select app from umbracoUser2app where [user] = @userID", SqlHelper.CreateParameter("@userID", this.Id)))
{
while (appIcons.Read())
{
Application tmp = new Application();
tmp.name = appIcons.GetString("appName");
tmp.icon = appIcons.GetString("appIcon");
tmp.alias = appIcons.GetString("appAlias");
apps.Add(tmp);
var app = allApps.SingleOrDefault(x => x.alias == appIcons.GetString("app"));
if(app != null)
apps.Add(app);
}
}

View File

@@ -111,4 +111,12 @@
<control>/usercontrols/dashboards/EmailAFriendForm_logs.ascx</control>
</tab>
</section>
<section alias="Comments">
<areas>
<area>content</area>
</areas>
<tab caption="Comments">
<control>/usercontrols/blog/CommentModeration.ascx</control>
</tab>
</section>
</dashBoard>

View File

@@ -0,0 +1,10 @@
<?xml version="1.0"?>
<applications>
<add alias="content" name="Content" icon=".traycontent" sortOrder="10" />
<add alias="media" name="Media" icon=".traymedia" sortOrder="20" />
<add alias="settings" name="Settings" icon=".traysettings" sortOrder="30" />
<add alias="developer" name="Developer" icon=".traydeveloper" sortOrder="40" />
<add alias="users" name="Users" icon=".trayusers" sortOrder="50" />
<add alias="member" name="Members" icon=".traymember" sortOrder="60" />
<add alias="translation" name="Translation" icon=".traytranslation" sortOrder="70" />
</applications>

View File

@@ -10,4 +10,8 @@
<permission method="setProperty" allowAll="false" />
</ext>
-->
<ext assembly="Runway.Blog" type="Runway.Blog.Library.Base" alias="umbBlog">
<permission method="CreateComment" returnXml="false" allowAll="true" />
<permission method="GetGravatarImage" returnXml="false" allowAll="true" />
</ext>
</RestExtensions>

View File

@@ -0,0 +1,78 @@
<?xml version="1.0"?>
<trees>
<!-- Content -->
<add application="content" alias="content" name="Content" type="umbraco.loadContent, umbraco"
iconClosed=".sprTreeFolder" iconOpen=".sprTreeFolder_o" silent="true" sortOrder="10" />
<add application="content" alias="contentRecycleBin" name="RecycleBin" type="umbraco.cms.presentation.Trees.ContentRecycleBin, umbraco"
iconClosed="folder.gif" iconOpen="folder_o.gif" autoInitialize="false" sortOrder="20" />
<!-- Media -->
<add application="media" alias="media" name="Media" type="umbraco.loadMedia, umbraco"
iconClosed=".sprTreeFolder" iconOpen=".sprTreeFolder_o" sortOrder="10" />
<add application="media" alias="mediaRecycleBin" name="RecycleBin" type="umbraco.cms.presentation.Trees.MediaRecycleBin, umbraco"
iconClosed="folder.gif" iconOpen="folder_o.gif" autoInitialize="false" sortOrder="20" />
<!-- Settings -->
<add application="settings" alias="languages" name="Languages" type="umbraco.loadLanguages, umbraco"
iconClosed=".sprTreeFolder" iconOpen=".sprTreeFolder_o" sortOrder="10" />
<add application="settings" alias="dictionary" name="Dictionary" type="umbraco.loadDictionary, umbraco"
iconClosed=".sprTreeFolder" iconOpen=".sprTreeFolder_o" sortOrder="20" />
<add application="settings" alias="noteTypes" name="Document Types" type="umbraco.loadNodeTypes, umbraco"
iconClosed=".sprTreeFolder" iconOpen=".sprTreeFolder_o" sortOrder="30" />
<add application="settings" alias="mediaTypes" name="Media Types" type="umbraco.loadMediaTypes, umbraco"
iconClosed=".sprTreeFolder" iconOpen=".sprTreeFolder_o" sortOrder="40" />
<add application="settings" alias="stylesheets" name="Stylesheets" type="umbraco.loadStylesheets, umbraco"
iconClosed=".sprTreeFolder" iconOpen=".sprTreeFolder_o" sortOrder="50" />
<add application="settings" alias="stylesheetProperty" name="Stylesheet Property" type="umbraco.loadStylesheetProperty, umbraco"
iconClosed="" iconOpen="" autoInitialize="false" sortOrder="51" />
<add application="settings" alias="scripts" name="Scripts" type="umbraco.loadScripts, umbraco"
iconClosed=".sprTreeFolder" iconOpen=".sprTreeFolder_o" sortOrder="60" />
<add application="settings" alias="templates" name="Templates" type="umbraco.loadTemplates, umbraco"
iconClosed=".sprTreeFolder" iconOpen=".sprTreeFolder_o" sortOrder="70" />
<!-- Developer -->
<add application="developer" alias="cacheBrowser" name="Cache Browser" type="umbraco.loadCache, umbraco"
iconClosed=".sprTreeFolder" iconOpen=".sprTreeFolder_o" sortOrder="10" />
<add application="developer" alias="CacheItem" name="Cache Item" type="umbraco.loadCacheItem, umbraco"
iconClosed=".sprTreeFolder" iconOpen=".sprTreeFolder_o" autoInitialize="false" sortOrder="11" />
<add application="developer" alias="datatype" name="Data Types" type="umbraco.loadDataTypes, umbraco"
iconClosed=".sprTreeFolder" iconOpen=".sprTreeFolder_o" sortOrder="20" />
<add application="developer" alias="macros" name="Macros" type="umbraco.loadMacros, umbraco"
iconClosed=".sprTreeFolder" iconOpen=".sprTreeFolder_o" sortOrder="30" />
<add application="developer" alias="packager" name="Packages" type="umbraco.loadPackager, umbraco"
iconClosed="folder.gif" iconOpen="folder_o.gif" sortOrder="40" />
<add application="developer" alias="packagerPackages" name="Packager Packages" type="umbraco.loadPackages, umbraco"
iconClosed="folder.gif" iconOpen="folder_o.gif" autoInitialize="false" sortOrder="41" />
<add application="developer" alias="python" name="Scripting Files" type="umbraco.loadPython, umbraco"
iconClosed="folder.gif" iconOpen="folder_o.gif" sortOrder="50" />
<add application="developer" alias="xslt" name="XSLT Files" type="umbraco.loadXslt, umbraco"
iconClosed=".sprTreeFolder" iconOpen=".sprTreeFolder_o" sortOrder="60" />
<!-- Users -->
<add application="users" alias="users" name="Users" type="umbraco.loadUsers, umbraco"
iconClosed=".sprTreeFolder" iconOpen=".sprTreeFolder_o" sortOrder="10" />
<add application="users" alias="userTypes" name="User Types" type="umbraco.cms.presentation.Trees.UserTypes, umbraco"
iconClosed=".sprTreeFolder" iconOpen=".sprTreeFolder_o" sortOrder="20" />
<add application="users" alias="userPermissions" name="User Permissions" type="umbraco.cms.presentation.Trees.UserPermissions, umbraco"
iconClosed=".sprTreeFolder" iconOpen=".sprTreeFolder_o" sortOrder="30" />
<!-- Members -->
<add application="member" alias="member" name="Members" type="umbraco.loadMembers, umbraco"
iconClosed=".sprTreeFolder" iconOpen=".sprTreeFolder_o" sortOrder="10" />
<add application="member" alias="memberGroup" name="Member Groups" type="umbraco.loadMemberGroups, umbraco"
iconClosed=".sprTreeFolder" iconOpen=".sprTreeFolder_o" sortOrder="20" />
<add application="member" alias="memberType" name="Member Types" type="umbraco.loadMemberTypes, umbraco"
iconClosed=".sprTreeFolder" iconOpen=".sprTreeFolder_o" sortOrder="30" />
<!-- Translation -->
<add application="translation" alias="openTasks" name="Tasks assigned to you" type="umbraco.loadOpenTasks, umbraco"
iconClosed=".sprTreeFolder" iconOpen=".sprTreeFolder_o" sortOrder="10" />
<add application="translation" alias="yourTasks" name="Tasks created by you" type="umbraco.loadYourTasks, umbraco"
iconClosed=".sprTreeFolder" iconOpen=".sprTreeFolder_o" sortOrder="20" />
<!-- Custom -->
<!--<add application="myApplication" alias="myTree" name="Me Tree" type="myPackage.myTree, myPackage"
iconClosed=".sprTreeFolder" iconOpen=".sprTreeFolder_o" sortOrder="10" />-->
</trees>

View File

@@ -2,4 +2,8 @@
<XsltExtensions>
<!-- <ext assembly="your.assemblyName" type="your.class.name" alias="yourAlias">
</ext> -->
<ext assembly="umbraco.editorControls" type="umbraco.editorControls.tags.library" alias="tagsLib">
</ext>
<ext assembly="Runway.Blog" type="Runway.Blog.BlogLibrary" alias="BlogLibrary">
</ext>
</XsltExtensions>

View File

@@ -45,7 +45,7 @@ namespace umbraco.cms.presentation
PlaceHolderAppIcons.Text = ui.Text("main", "sections", base.getUser());
plcIcons.Text = "";
foreach (BusinessLogic.Application a in apps)
foreach (BusinessLogic.Application a in apps.OrderBy(x => x.sortOrder))
{
string appClass = a.icon.StartsWith(".") ? a.icon.Substring(1, a.icon.Length - 1) : a.alias;

View File

@@ -44,8 +44,8 @@
<ExamineLuceneIndexSets configSource="config\ExamineIndex.config" />
<appSettings>
<add key="umbracoDbDSN" value="server=.\SQLEXPRESS;database=umbraco;user id=web;password=farmer" />
<add key="umbracoConfigurationStatus" value="4.6.0.Alpha" />
<add key="umbracoDbDSN" value="server=.\sqlexpress2008;database=dbUmb4x;integrated security=false;user id=sa;pwd=D3gr4d3"/>
<add key="umbracoConfigurationStatus" value="4.8.0"/>
<add key="umbracoReservedUrls" value="~/config/splashes/booting.aspx,~/install/default.aspx,~/config/splashes/noNodes.aspx,~/VSEnterpriseHelper.axd" />
<add key="umbracoReservedPaths" value="~/umbraco,~/install/" />
<add key="umbracoContentXML" value="~/App_Data/umbraco.config" />

View File

@@ -62,6 +62,27 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Nant", "Nant", "{17E547B1-D
..\build\Nant\umbraco.build = ..\build\Nant\umbraco.build
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Config Templates", "Config Templates", "{BF7C59D8-3C53-4257-B055-DAC4EED705DA}"
ProjectSection(SolutionItems) = preProject
..\config templates\config\404handlers.config = ..\config templates\config\404handlers.config
..\config templates\config\applications.config = ..\config templates\config\applications.config
..\config templates\config\ClientDependency.config = ..\config templates\config\ClientDependency.config
..\config templates\config\Dashboard.config = ..\config templates\config\Dashboard.config
..\config templates\config\ExamineIndex.config = ..\config templates\config\ExamineIndex.config
..\config templates\config\ExamineSettings.config = ..\config templates\config\ExamineSettings.config
..\config templates\config\feedProxy.config = ..\config templates\config\feedProxy.config
..\config templates\config\formHandlers.config = ..\config templates\config\formHandlers.config
..\config templates\config\metablogConfig.config = ..\config templates\config\metablogConfig.config
..\config templates\config\restExtensions.config = ..\config templates\config\restExtensions.config
..\config templates\config\scripting.config = ..\config templates\config\scripting.config
..\config templates\config\tinyMceConfig.config = ..\config templates\config\tinyMceConfig.config
..\config templates\config\trees.config = ..\config templates\config\trees.config
..\config templates\config\umbracoSettings.config = ..\config templates\config\umbracoSettings.config
..\config templates\config\UrlRewriting.config = ..\config templates\config\UrlRewriting.config
..\config templates\web.config = ..\config templates\web.config
..\config templates\config\xsltExtensions.config = ..\config templates\config\xsltExtensions.config
EndProjectSection
EndProject
Global
GlobalSection(TestCaseManagementSettings) = postSolution
CategoryFile = umbraco2.vsmdi