]]>
-
+ gebruik makend van umbraco's member groups.]]>role-based authentication.]]>umbraco %0% voor een nieuwe installatie of een upgrade van versie 3.0.
Druk op "volgende" om de wizard te starten.]]>installeer om de Umbraco %0% database te installeren]]>Volgende om door te gaan.]]>De database kon niet gevonden worden! Gelieve na te kijken of de informatie in de "connection string" van het "web.config" bestand correct is.
Om door te gaan, gelieve het "web.config" bestand aan te passen (met behulp van Visual Studio of je favoriete tekstverwerker), scroll in het bestand naar beneden, voeg de connection string voor je database toe in de key met naam "umbracoDbDSN" en sla het bestand op.
]]> Gelieve contact op te nemen met je ISP indien nodig. Wanneer je installeert op een lokale computer of server, dan heb je waarschijnlijk informatie nodig van je systeembeheerder.]]> Klik de upgrade knop om je database te upgraden naar Umbraco %0%
Maak je geen zorgen - er zal geen inhoud worden gewist en alles blijft gewoon werken!
]]>Klik Volgende om verder te gaan. ]]>volgende om door te gaan]]>/web.config bestand aanpassen, en de Appsetting key umbracoConfigurationStatus onder in het bestand veranderen naar '%0%'.]]>Het wachtwoord van de default gebruiker dient veranderd te worden!]]>De default gebruiker is geblokkeerd of heeft geen toegang tot Umbraco!
Geen verdere actie noodzakelijk. Klik Volgende om verder te gaan.]]>
Het wachtwoord van de default gebruiker is sinds installatie met succes veranderd.
Geen verdere actie noodzakelijk. Klik Volgende om verder te gaan.]]>
umbraco maakt een default gebruiker aan met login ('admin') and wachtwoord ('default'). Het is belangrijk dat dit wachtwoord wordt veranderd in iets unieks.
Deze stap controleert het password van de default gebruiker en adviseert of het veranderd dient te worden.
]]>Je machtigingen zijn bijna perfect!
Je kunt umbraco zonder problemen starten, maar je kunt nog geen packages installeren om volledig van umbraco te profiteren.]]>video tutorial over het instellen van machtigingen voor umbraco, of lees de tekst versie.]]>Je machtigingen zijn misschien incorrect!
Je kunt umbraco probleemloos starten, maar je kunt nog geen mappen aanmaken of packages installeren om zo volledig van umbraco te profiteren.]]>Je machtigingen zijn nog niet gereed gemaakt voor umbraco!
Om umbraco te starten zul je je machtigingen moeten aanpassen.]]>Je machtigingen zijn perfect!
Je bent nu klaar om umbraco te starten en om packages te installeren!]]>leer hoe). Je kunt er later alsnog voor kiezen om Runway te installeren. Ga dan naar de Ontwikkelaar sectie en kies Packages.]]> Dit is onze lijst van aanbevolen modules. Vink de modules die je wilt installeren, of bekijk de volledige lijst modules ]]> "Runway" is een eenvoudige website die je van enkele elementaire documenttypes en templates voorziet. De installer kan Runway automatisch voor je opzetten, maar je kunt het gemakkelijk aanpassen, uitbreiden of verwijderen. Het is niet vereist en je kunt Umbraco prima zonder Runway gebruiken.
-Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je er voor kiest om Runway te installeren, dan kun je optioneel de bouwstenen (genaamd Runway Modules) kiezen om je Runway pagina's te verbeteren. Runway omvat: Home pagina, Getting Started pagina, Module installatie pagina. Optionele Modules: Top Navigatie, Sitemap, Contact, Gallery. ]]>Browse je nieuwe site Je hebt Runway geinstalleerd, dus kijk eens hoe je nieuwe site eruit ziet.]]>Meer hulp en informatie Vind hulp in onze bekroonde community, blader door de documentatie of bekijk enkele gratis videos over het bouwen van een eenvoudige site, het gebruiken van packages en een overzicht van umbraco terminologie]]>meteen beginnen door de "Launch Umbraco" knop hieronder te klikken. Als je een beginnende umbraco gebruiker bent, dan kun je you can find veel informatie op onze "getting started" pagina's vinden.]]>Launch Umbraco Om je website te beheren open je simpelweg de umbraco back office en begin je content toe te voegen, templates en stylesheets aan te passen of nieuwe functionaliteit toe te voegen]]>
-
+Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je er voor kiest om Runway te installeren, dan kun je optioneel de bouwstenen (genaamd Runway Modules) kiezen om je Runway pagina's te verbeteren. Runway omvat: Home pagina, Getting Started pagina, Module installatie pagina. Optionele Modules: Top Navigatie, Sitemap, Contact, Gallery. ]]>Browse je nieuwe site Je hebt Runway geinstalleerd, dus kijk eens hoe je nieuwe site eruit ziet.]]>Meer hulp en informatie Vind hulp in onze bekroonde community, blader door de documentatie of bekijk enkele gratis videos over het bouwen van een eenvoudige site, het gebruiken van packages en een overzicht van umbraco terminologie]]>meteen beginnen door de "Launch Umbraco" knop hieronder te klikken. Als je een beginnende umbraco gebruiker bent, dan kun je you can find veel informatie op onze "getting started" pagina's vinden.]]>Launch Umbraco Om je website te beheren open je simpelweg de umbraco back office en begin je content toe te voegen, templates en stylesheets aan te passen of nieuwe functionaliteit toe te voegen]]>
+
diff --git a/umbraco/presentation/umbraco/developer/DataTypes/editDatatype.aspx.cs b/umbraco/presentation/umbraco/developer/DataTypes/editDatatype.aspx.cs
index 0beccd9af2..1533c15dfa 100644
--- a/umbraco/presentation/umbraco/developer/DataTypes/editDatatype.aspx.cs
+++ b/umbraco/presentation/umbraco/developer/DataTypes/editDatatype.aspx.cs
@@ -44,13 +44,14 @@ namespace umbraco.cms.presentation.developer
datatypes.Add(df.DataTypeName + "|" + Guid.NewGuid().ToString(), df.Id);
IDictionaryEnumerator ide = datatypes.GetEnumerator();
-
+
+ string datatTypeId = dt.DataType != null ? dt.DataType.Id.ToString() : String.Empty;
while (ide.MoveNext()) {
ListItem li = new ListItem();
li.Text = ide.Key.ToString().Substring(0, ide.Key.ToString().IndexOf("|"));
li.Value = ide.Value.ToString();
- if (li.Value.ToString() == dt.DataType.Id.ToString()) li.Selected = true;
+ if (!String.IsNullOrEmpty(datatTypeId) && li.Value.ToString() == datatTypeId) li.Selected = true;
ddlRenderControl.Items.Add(li);
}
@@ -60,7 +61,8 @@ namespace umbraco.cms.presentation.developer
}
- litGuid.Text = dt.DataType.Id.ToString();
+ if (dt.DataType != null)
+ litGuid.Text = dt.DataType.Id.ToString();
Panel1.Text = umbraco.ui.Text("edit") + " datatype: " + dt.Text;
insertPrevalueEditor();
}
diff --git a/umbraco/presentation/umbraco/dialogs/TemplateSkinning.aspx.cs b/umbraco/presentation/umbraco/dialogs/TemplateSkinning.aspx.cs
index ffda3c0c42..007fdb191f 100644
--- a/umbraco/presentation/umbraco/dialogs/TemplateSkinning.aspx.cs
+++ b/umbraco/presentation/umbraco/dialogs/TemplateSkinning.aspx.cs
@@ -106,7 +106,7 @@ namespace umbraco.presentation.umbraco.dialogs
}
else if (((Button)sender).CommandName == "remove")
{
- nodeFactory.Node n = nodeFactory.Node.GetCurrent();
+ NodeFactory.Node n = NodeFactory.Node.GetCurrent();
Template t = new Template(n.template);
Skinning.RollbackSkin(t.Id);
diff --git a/umbraco/presentation/umbraco/nodeFactory/Page.cs b/umbraco/presentation/umbraco/nodeFactory/Page.cs
index 1b6787b3d9..fab4a03b3b 100644
--- a/umbraco/presentation/umbraco/nodeFactory/Page.cs
+++ b/umbraco/presentation/umbraco/nodeFactory/Page.cs
@@ -10,7 +10,7 @@ using umbraco.cms.businesslogic.propertytype;
using System.Collections.Generic;
using umbraco.interfaces;
-namespace umbraco.nodeFactory
+namespace umbraco.NodeFactory
{
///
/// Summary description for Node.
diff --git a/umbraco/presentation/umbraco/nodeFactory/Page_Legacy.cs b/umbraco/presentation/umbraco/nodeFactory/Page_Legacy.cs
index 0ac85ba2c6..768f5e6014 100644
--- a/umbraco/presentation/umbraco/nodeFactory/Page_Legacy.cs
+++ b/umbraco/presentation/umbraco/nodeFactory/Page_Legacy.cs
@@ -1,16 +1,11 @@
using System;
using System.Collections;
using System.Data;
-using System.Linq;
using System.Xml;
using System.Xml.Serialization;
using System.Xml.XPath;
using umbraco.cms.businesslogic;
using umbraco.cms.businesslogic.propertytype;
-using System.Collections.Generic;
-using umbraco.interfaces;
-
-using NF = umbraco.nodeFactory;
namespace umbraco.presentation.nodeFactory
{
@@ -20,81 +15,579 @@ namespace umbraco.presentation.nodeFactory
[Serializable]
[XmlType(Namespace = "http://umbraco.org/webservices/")]
- [Obsolete("This class is obsolete; use class umbraco.nodeFactory.Node instead")]
- public class Node : NF.Node
+ [Obsolete("This class is obsolete; use class umbraco.NodeFactory.Node instead", false)]
+ public class Node
{
+ private Hashtable _aliasToNames = new Hashtable();
- public new Node Parent
+ private bool _initialized = false;
+ private Nodes _children = new Nodes();
+ private Node _parent = null;
+ private int _id;
+ private int _template;
+ private string _name;
+ private string _nodeTypeAlias;
+ private string _writerName;
+ private string _creatorName;
+ private int _writerID;
+ private int _creatorID;
+
+ private string _path;
+ private DateTime _createDate;
+ private DateTime _updateDate;
+ private Guid _version;
+ private Properties _properties = new Properties();
+ private XmlNode _pageXmlNode;
+ private int _sortOrder;
+
+ public Nodes Children
{
get
{
- return base.Parent as Node;
+ if (!_initialized)
+ initialize();
+ return _children;
}
}
-
- public new Properties Properties
+
+ public Node Parent
{
get
{
- return base.Properties as Properties;
+ if (!_initialized)
+ initialize();
+ return _parent;
+ }
+ }
+
+ public int Id
+ {
+ get
+ {
+ if (!_initialized)
+ initialize();
+ return _id;
+ }
+ }
+
+ public int template
+ {
+ get
+ {
+ if (!_initialized)
+ initialize();
+ return _template;
+ }
+ }
+
+ public int SortOrder
+ {
+ get
+ {
+ if (!_initialized)
+ initialize();
+ return _sortOrder;
+ }
+ }
+
+ public string Name
+ {
+ get
+ {
+ if (!_initialized)
+ initialize();
+ return _name;
+ }
+ }
+
+ public string Url
+ {
+ get { return library.NiceUrl(Id); }
+ }
+
+ public string NodeTypeAlias
+ {
+ get
+ {
+ if (!_initialized)
+ initialize();
+ return _nodeTypeAlias;
+ }
+ }
+
+ public string WriterName
+ {
+ get
+ {
+ if (!_initialized)
+ initialize();
+ return _writerName;
+ }
+ }
+
+ public string CreatorName
+ {
+ get
+ {
+ if (!_initialized)
+ initialize();
+ return _creatorName;
+ }
+ }
+
+ public int WriterID
+ {
+ get
+ {
+ if (!_initialized)
+ initialize();
+ return _writerID;
+ }
+ }
+
+ public int CreatorID
+ {
+ get
+ {
+ if (!_initialized)
+ initialize();
+ return _creatorID;
}
}
-
- public new List PropertiesAsList
- {
- get { return Properties.Cast().ToList(); }
- }
-
-
-
- public new Nodes Children
+ public string Path
{
get
{
- return base.Children as Nodes;
+ if (!_initialized)
+ initialize();
+ return _path;
}
}
- public new List ChildrenAsList
+ public DateTime CreateDate
{
- get { return Children.Cast().ToList(); }
+ get
+ {
+ if (!_initialized)
+ initialize();
+ return _createDate;
+ }
}
-
-
- public Node(XmlNode NodeXmlNode) : base(NodeXmlNode){}
-
- public Node(XmlNode NodeXmlNode, bool DisableInitializing) : base(NodeXmlNode, DisableInitializing){}
-
- public Node(int NodeId) : base(NodeId){
- }
-
- public Node(int NodeId, bool forcePublishedXml) : base(NodeId, forcePublishedXml) {}
-
- public new Property GetProperty(string Alias)
+ public DateTime UpdateDate
{
- return base.GetProperty(Alias) as Property;
+ get
+ {
+ if (!_initialized)
+ initialize();
+ return _updateDate;
+ }
}
- public new static Node GetCurrent()
+ public Guid Version
{
- int id = NF.Node.getCurrentNodeId();
- return new Node(id);
+ get
+ {
+ if (!_initialized)
+ initialize();
+ return _version;
+ }
+ }
+
+ public string NiceUrl
+ {
+ get
+ {
+ return library.NiceUrl(_id);
+ }
+ }
+
+ public Properties Properties
+ {
+ get
+ {
+ if (!_initialized)
+ initialize();
+ return _properties;
+ }
+ }
+
+ public Node()
+ {
+ _pageXmlNode = ((IHasXmlNode)library.GetXmlNodeCurrent().Current).GetNode();
+ initializeStructure();
+ initialize();
+ }
+
+ public Node(XmlNode NodeXmlNode)
+ {
+ _pageXmlNode = NodeXmlNode;
+ initializeStructure();
+ initialize();
+ }
+
+ public Node(XmlNode NodeXmlNode, bool DisableInitializing)
+ {
+ _pageXmlNode = NodeXmlNode;
+ initializeStructure();
+ if (!DisableInitializing)
+ initialize();
+ }
+
+ ///
+ /// Special constructor for by-passing published vs. preview xml to use
+ /// when updating the SiteMapProvider
+ ///
+ ///
+ ///
+ public Node(int NodeId, bool forcePublishedXml)
+ {
+ if (forcePublishedXml)
+ {
+ if (NodeId != -1)
+ _pageXmlNode = content.Instance.XmlContent.GetElementById(NodeId.ToString());
+ else
+ {
+ _pageXmlNode = content.Instance.XmlContent.DocumentElement;
+
+ }
+ initializeStructure();
+ initialize();
+ }
+ else
+ {
+ throw new ArgumentException("Use Node(int NodeId) if not forcing published xml");
+
+ }
+ }
+
+ public Node(int NodeId)
+ {
+ if (NodeId != -1)
+ _pageXmlNode = ((IHasXmlNode)library.GetXmlNodeById(NodeId.ToString()).Current).GetNode();
+ else
+ {
+ _pageXmlNode = UmbracoContext.Current.GetXml().DocumentElement;
+
+ }
+ initializeStructure();
+ initialize();
+ }
+
+ public Property GetProperty(string Alias)
+ {
+ foreach (Property p in Properties)
+ {
+ if (p.Alias == Alias)
+ return p;
+ }
+ return null;
+ }
+
+
+
+ public DataTable ChildrenAsTable()
+ {
+ if (Children.Count > 0)
+ {
+ DataTable dt = generateDataTable(Children[0]);
+
+ string firstNodeTypeAlias = Children[0].NodeTypeAlias;
+
+ foreach (Node n in Children)
+ {
+ if (n.NodeTypeAlias == firstNodeTypeAlias)
+ {
+ DataRow dr = dt.NewRow();
+ populateRow(ref dr, n, getPropertyHeaders(n));
+ dt.Rows.Add(dr);
+ }
+ }
+ return dt;
+ }
+ else
+ return new DataTable();
+ }
+
+ public DataTable ChildrenAsTable(string nodeTypeAliasFilter)
+ {
+
+ if (Children.Count > 0)
+ {
+
+ Node Firstnode = null;
+ Boolean nodeFound = false;
+ foreach (Node n in Children)
+ {
+ if (n.NodeTypeAlias == nodeTypeAliasFilter && !nodeFound)
+ {
+ Firstnode = n;
+ nodeFound = true;
+ break;
+ }
+ }
+
+ if (nodeFound)
+ {
+ DataTable dt = generateDataTable(Firstnode);
+
+ foreach (Node n in Children)
+ {
+ if (n.NodeTypeAlias == nodeTypeAliasFilter)
+ {
+ DataRow dr = dt.NewRow();
+ populateRow(ref dr, n, getPropertyHeaders(n));
+ dt.Rows.Add(dr);
+ }
+ }
+ return dt;
+ }
+ else
+ {
+ return new DataTable();
+ }
+ }
+ else
+ return new DataTable();
+ }
+
+ private DataTable generateDataTable(Node SchemaNode)
+ {
+ DataTable NodeAsDataTable = new DataTable(SchemaNode.NodeTypeAlias);
+ string[] defaultColumns = {
+ "Id", "NodeName", "NodeTypeAlias", "CreateDate", "UpdateDate", "CreatorName",
+ "WriterName", "Url"
+ };
+ foreach (string s in defaultColumns)
+ {
+ DataColumn dc = new DataColumn(s);
+ NodeAsDataTable.Columns.Add(dc);
+ }
+
+ // add properties
+ Hashtable propertyHeaders = getPropertyHeaders(SchemaNode);
+ IDictionaryEnumerator ide = propertyHeaders.GetEnumerator();
+ while (ide.MoveNext())
+ {
+ DataColumn dc = new DataColumn(ide.Value.ToString());
+ NodeAsDataTable.Columns.Add(dc);
+ }
+
+ return NodeAsDataTable;
+ }
+
+ private Hashtable getPropertyHeaders(Node SchemaNode)
+ {
+ if (_aliasToNames.ContainsKey(SchemaNode.NodeTypeAlias))
+ return (Hashtable)_aliasToNames[SchemaNode.NodeTypeAlias];
+ else
+ {
+ ContentType ct = ContentType.GetByAlias(SchemaNode.NodeTypeAlias);
+ Hashtable def = new Hashtable();
+ foreach (PropertyType pt in ct.PropertyTypes)
+ def.Add(pt.Alias, pt.Name);
+ System.Web.HttpContext.Current.Application.Lock();
+ _aliasToNames.Add(SchemaNode.NodeTypeAlias, def);
+ System.Web.HttpContext.Current.Application.UnLock();
+
+ return def;
+ }
+ }
+
+ private void populateRow(ref DataRow dr, Node n, Hashtable AliasesToNames)
+ {
+ dr["Id"] = n.Id;
+ dr["NodeName"] = n.Name;
+ dr["NodeTypeAlias"] = n.NodeTypeAlias;
+ dr["CreateDate"] = n.CreateDate;
+ dr["UpdateDate"] = n.UpdateDate;
+ dr["CreatorName"] = n.CreatorName;
+ dr["WriterName"] = n.WriterName;
+ dr["Url"] = library.NiceUrl(n.Id);
+
+ int counter = 8;
+ foreach (Property p in n.Properties)
+ {
+ if (p.Value != null)
+ {
+ dr[AliasesToNames[p.Alias].ToString()] = p.Value;
+ counter++;
+ }
+ }
+ }
+
+
+ private void initializeStructure()
+ {
+ // Load parent if it exists and is a node
+
+ if (_pageXmlNode != null && _pageXmlNode.SelectSingleNode("..") != null)
+ {
+ XmlNode parent = _pageXmlNode.SelectSingleNode("..");
+ if (parent != null && (parent.Name == "node" || (parent.Attributes != null && parent.Attributes.GetNamedItem("isDoc") != null)))
+ _parent = new Node(parent, true);
+ }
+ }
+
+ private void initialize()
+ {
+ if (_pageXmlNode != null)
+ {
+ _initialized = true;
+ if (_pageXmlNode.Attributes != null)
+ {
+ _id = int.Parse(_pageXmlNode.Attributes.GetNamedItem("id").Value);
+ if (_pageXmlNode.Attributes.GetNamedItem("template") != null)
+ _template = int.Parse(_pageXmlNode.Attributes.GetNamedItem("template").Value);
+ if (_pageXmlNode.Attributes.GetNamedItem("sortOrder") != null)
+ _sortOrder = int.Parse(_pageXmlNode.Attributes.GetNamedItem("sortOrder").Value);
+ if (_pageXmlNode.Attributes.GetNamedItem("nodeName") != null)
+ _name = _pageXmlNode.Attributes.GetNamedItem("nodeName").Value;
+ if (_pageXmlNode.Attributes.GetNamedItem("writerName") != null)
+ _writerName = _pageXmlNode.Attributes.GetNamedItem("writerName").Value;
+ // Creatorname is new in 2.1, so published xml might not have it!
+ try
+ {
+ _creatorName = _pageXmlNode.Attributes.GetNamedItem("creatorName").Value;
+ }
+ catch
+ {
+ _creatorName = _writerName;
+ }
+
+ //Added the actual userID, as a user cannot be looked up via full name only...
+ if (_pageXmlNode.Attributes.GetNamedItem("creatorID") != null)
+ _creatorID = int.Parse(_pageXmlNode.Attributes.GetNamedItem("creatorID").Value);
+ if (_pageXmlNode.Attributes.GetNamedItem("writerID") != null)
+ _writerID = int.Parse(_pageXmlNode.Attributes.GetNamedItem("writerID").Value);
+
+ if (UmbracoSettings.UseLegacyXmlSchema)
+ {
+ if (_pageXmlNode.Attributes.GetNamedItem("nodeTypeAlias") != null)
+ _nodeTypeAlias = _pageXmlNode.Attributes.GetNamedItem("nodeTypeAlias").Value;
+ }
+ else
+ {
+ _nodeTypeAlias = _pageXmlNode.Name;
+ }
+
+ if (_pageXmlNode.Attributes.GetNamedItem("path") != null)
+ _path = _pageXmlNode.Attributes.GetNamedItem("path").Value;
+ if (_pageXmlNode.Attributes.GetNamedItem("version") != null)
+ _version = new Guid(_pageXmlNode.Attributes.GetNamedItem("version").Value);
+ if (_pageXmlNode.Attributes.GetNamedItem("createDate") != null)
+ _createDate = DateTime.Parse(_pageXmlNode.Attributes.GetNamedItem("createDate").Value);
+ if (_pageXmlNode.Attributes.GetNamedItem("updateDate") != null)
+ _updateDate = DateTime.Parse(_pageXmlNode.Attributes.GetNamedItem("updateDate").Value);
+ }
+
+ // load data
+ string dataXPath = UmbracoSettings.UseLegacyXmlSchema ? "data" : "* [not(@isDoc)]";
+ foreach (XmlNode n in _pageXmlNode.SelectNodes(dataXPath))
+ _properties.Add(new Property(n));
+
+ // load children
+ string childXPath = UmbracoSettings.UseLegacyXmlSchema ? "node" : "* [@isDoc]";
+ XPathNavigator nav = _pageXmlNode.CreateNavigator();
+ XPathExpression expr = nav.Compile(childXPath);
+ expr.AddSort("@sortOrder", XmlSortOrder.Ascending, XmlCaseOrder.None, "", XmlDataType.Number);
+ XPathNodeIterator iterator = nav.Select(expr);
+ while (iterator.MoveNext())
+ {
+ _children.Add(
+ new Node(((IHasXmlNode)iterator.Current).GetNode(), true)
+ );
+ }
+ }
+ // else
+ // throw new ArgumentNullException("Node xml source is null");
+ }
+
+ public static Node GetCurrent()
+ {
+ XmlNode n = ((IHasXmlNode)library.GetXmlNodeCurrent().Current).GetNode();
+ if (n.Attributes == null || n.Attributes.GetNamedItem("id") == null)
+ throw new ArgumentException("Current node is null. This might be due to previewing an unpublished node. As the NodeFactory works with published data, macros using the node factory won't work in preview mode.", "Current node is " + System.Web.HttpContext.Current.Items["pageID"].ToString());
+
+ return new Node(int.Parse(n.Attributes.GetNamedItem("id").Value));
}
-
}
- [Obsolete("This class is obsolete; use class umbraco.nodeFactory.Nodes instead")]
- public class Nodes : NF.Nodes {}
+ [Obsolete("This class is obsolete; use class umbraco.NodeFactory.Nodes instead", false)]
+ public class Nodes : CollectionBase
+ {
+ public virtual void Add(Node NewNode)
+ {
+ List.Add(NewNode);
+ }
+
+ public virtual Node this[int Index]
+ {
+ get { return (Node)List[Index]; }
+ }
+ }
[Serializable]
[XmlType(Namespace = "http://umbraco.org/webservices/")]
- [Obsolete("This class is obsolete; use class umbraco.nodeFactory.Property instead")]
- public class Property : NF.Property{}
+ [Obsolete("This class is obsolete; use class umbraco.NodeFactory.Property instead", false)]
+ public class Property
+ {
+ private Guid _version;
+ private string _alias;
+ private string _value;
- [Obsolete("This class is obsolete; use class umbraco.nodeFactory.Properties instead")]
- public class Properties : NF.Properties{}
-
-}
\ No newline at end of file
+ public string Alias
+ {
+ get { return _alias; }
+ }
+
+ public string Value
+ {
+ get { return _value; }
+ }
+
+ public Guid Version
+ {
+ get { return _version; }
+ }
+
+ public Property()
+ {
+
+ }
+
+ public Property(XmlNode PropertyXmlData)
+ {
+ if (PropertyXmlData != null)
+ {
+ // For backward compatibility with 2.x (the version attribute has been removed from 3.0 data nodes)
+ if (PropertyXmlData.Attributes.GetNamedItem("versionID") != null)
+ _version = new Guid(PropertyXmlData.Attributes.GetNamedItem("versionID").Value);
+ _alias = UmbracoSettings.UseLegacyXmlSchema ?
+ PropertyXmlData.Attributes.GetNamedItem("alias").Value :
+ PropertyXmlData.Name;
+ _value = xmlHelper.GetNodeValue(PropertyXmlData);
+ }
+ else
+ throw new ArgumentNullException("Property xml source is null");
+ }
+ }
+
+ [Obsolete("This class is obsolete; use class umbraco.NodeFactory.Properties instead", false)]
+ public class Properties : CollectionBase
+ {
+ public virtual void Add(Property NewProperty)
+ {
+ List.Add(NewProperty);
+ }
+
+ public virtual Property this[int Index]
+ {
+ get { return (Property)List[Index]; }
+ }
+ }
+
+
+}
diff --git a/umbraco/presentation/umbraco/nodeFactory/UmbracoSiteMapProvider.cs b/umbraco/presentation/umbraco/nodeFactory/UmbracoSiteMapProvider.cs
index 99b7595932..94fb18d0cb 100644
--- a/umbraco/presentation/umbraco/nodeFactory/UmbracoSiteMapProvider.cs
+++ b/umbraco/presentation/umbraco/nodeFactory/UmbracoSiteMapProvider.cs
@@ -74,7 +74,7 @@ namespace umbraco.presentation.nodeFactory {
return m_root;
}
- public void UpdateNode(Node node) {
+ public void UpdateNode(NodeFactory.Node node) {
lock (this) {
// validate sitemap
BuildSiteMap();
@@ -115,8 +115,9 @@ namespace umbraco.presentation.nodeFactory {
private void loadNodes(string parentId, SiteMapNode parentNode) {
lock (this) {
- Node n = new Node(int.Parse(parentId));
- foreach (Node child in n.Children) {
+ NodeFactory.Node n = new NodeFactory.Node(int.Parse(parentId));
+ foreach (NodeFactory.Node child in n.Children)
+ {
string roles = findRoles(child.Id, child.Path);
SiteMapNode childNode = createNode(
@@ -222,18 +223,18 @@ namespace umbraco.presentation.nodeFactory {
void Access_AfterRemoveProtection(global::umbraco.cms.businesslogic.web.Document sender, RemoveProtectionEventArgs e)
{
- ((UmbracoSiteMapProvider)System.Web.SiteMap.Provider).UpdateNode(new Node(sender.Id));
+ ((UmbracoSiteMapProvider)System.Web.SiteMap.Provider).UpdateNode(new NodeFactory.Node(sender.Id));
}
void Access_AfterRemoveMemberShipRoleToDocument(global::umbraco.cms.businesslogic.web.Document sender, string role, RemoveMemberShipRoleFromDocumentEventArgs e)
{
- ((UmbracoSiteMapProvider) System.Web.SiteMap.Provider).UpdateNode(new Node(sender.Id));
+ ((UmbracoSiteMapProvider)System.Web.SiteMap.Provider).UpdateNode(new NodeFactory.Node(sender.Id));
}
void Access_AfterAddMemberShipRoleToDocument(global::umbraco.cms.businesslogic.web.Document sender, string role, AddMemberShipRoleToDocumentEventArgs e)
{
- ((UmbracoSiteMapProvider) System.Web.SiteMap.Provider).UpdateNode(new Node(sender.Id));
+ ((UmbracoSiteMapProvider)System.Web.SiteMap.Provider).UpdateNode(new NodeFactory.Node(sender.Id));
}
}
}
diff --git a/umbraco/presentation/umbraco/templateControls/Macro.cs b/umbraco/presentation/umbraco/templateControls/Macro.cs
index 22fa86c9e9..52bdff446c 100644
--- a/umbraco/presentation/umbraco/templateControls/Macro.cs
+++ b/umbraco/presentation/umbraco/templateControls/Macro.cs
@@ -8,7 +8,7 @@ using System.Web.UI.WebControls;
using System.Collections;
using umbraco.cms.businesslogic.macro;
-using umbraco.presentation.nodeFactory;
+using umbraco.NodeFactory;
namespace umbraco.presentation.templateControls
{
diff --git a/umbraco/presentation/umbraco/templateControls/Script.cs b/umbraco/presentation/umbraco/templateControls/Script.cs
index 3ced82332d..f0bde5d98c 100644
--- a/umbraco/presentation/umbraco/templateControls/Script.cs
+++ b/umbraco/presentation/umbraco/templateControls/Script.cs
@@ -54,7 +54,7 @@ namespace umbraco.presentation.templateControls
}
Hashtable attr = new Hashtable((Hashtable)Context.Items["pageElements"]);
- attr.Add("currentPage", nodeFactory.Node.GetCurrent());
+ attr.Add("currentPage", NodeFactory.Node.GetCurrent());
// TODO: Hook the new MacroEngine
string result = ""; // MacroScript.Execute(this.Text, this.Language, attr);
diff --git a/umbraco/presentation/umbraco/test.aspx.cs b/umbraco/presentation/umbraco/test.aspx.cs
index e0ceb26645..14f19bd635 100644
--- a/umbraco/presentation/umbraco/test.aspx.cs
+++ b/umbraco/presentation/umbraco/test.aspx.cs
@@ -17,7 +17,7 @@ using System.IO;
using umbraco.cms.businesslogic.web;
-using umbraco.presentation.nodeFactory;
+using umbraco.NodeFactory;
using umbraco.controls;
namespace umbraco.cms.presentation
diff --git a/umbraco/presentation/umbraco/webservices/codeEditorSave.asmx.cs b/umbraco/presentation/umbraco/webservices/codeEditorSave.asmx.cs
index 73f0b8a004..cc6a746d36 100644
--- a/umbraco/presentation/umbraco/webservices/codeEditorSave.asmx.cs
+++ b/umbraco/presentation/umbraco/webservices/codeEditorSave.asmx.cs
@@ -16,7 +16,7 @@ using umbraco.presentation.cache;
using System.Net;
using umbraco.IO;
using System.Collections;
-using umbraco.presentation.nodeFactory;
+using umbraco.NodeFactory;
using umbraco.scripting;
namespace umbraco.presentation.webservices
diff --git a/umbraco/presentation/umbraco_client/Installer/css/lt7.css b/umbraco/presentation/umbraco_client/Installer/css/lt7.css
index be6bf09e26..4efb059fab 100644
--- a/umbraco/presentation/umbraco_client/Installer/css/lt7.css
+++ b/umbraco/presentation/umbraco_client/Installer/css/lt7.css
@@ -1,152 +1,152 @@
* html body{width: expression(document.documentElement.clientWidth < 1000 ? "1000px" : "auto");}
-#header{
background:url(../images/none.gif);
filter: progid:dximagetransform.microsoft.alphaimageloader(src='images/bg-header.png', sizingmethod='scale');
+#header{
background:url(../images/none.gif);
filter: progid:dximagetransform.microsoft.alphaimageloader(src='../umbraco_client/installer/images/bg-header.png', sizingmethod='scale');
}
.tabset .b{
background:url(../images/none.gif);
- filter: progid:dximagetransform.microsoft.alphaimageloader(src='images/sep1.png', sizingmethod='scale');
+ filter: progid:dximagetransform.microsoft.alphaimageloader(src='../umbraco_client/installer/images/sep1.png', sizingmethod='scale');
}
.tabset ul li.active em{
background:url(../images/none.gif);
cursor:pointer;
- filter: progid:dximagetransform.microsoft.alphaimageloader(src='images/bul1.png', sizingmethod='crop');
+ filter: progid:dximagetransform.microsoft.alphaimageloader(src='../umbraco_client/installer/images/bul1.png', sizingmethod='crop');
}
.btn-box .t{
background:url(../images/none.gif);
- filter: progid:dximagetransform.microsoft.alphaimageloader(src='images/sep1.png', sizingmethod='scale');
+ filter: progid:dximagetransform.microsoft.alphaimageloader(src='../umbraco_client/installer/images/sep1.png', sizingmethod='scale');
}
.btn-get span{
background:url(../images/none.gif);
cursor:pointer;
- filter: progid:dximagetransform.microsoft.alphaimageloader(src='images/btn-get.png', sizingmethod='crop');
+ filter: progid:dximagetransform.microsoft.alphaimageloader(src='../umbraco_client/installer/images/btn-get.png', sizingmethod='crop');
}
.btn-accept span{
background:url(../images/none.gif);
cursor:pointer;
- filter: progid:dximagetransform.microsoft.alphaimageloader(src='images/btn-accept.png', sizingmethod='crop');
+ filter: progid:dximagetransform.microsoft.alphaimageloader(src='../umbraco_client/installer/images/btn-accept.png', sizingmethod='crop');
}
.mini-tabset li.btn-yes a span{
background:url(../images/none.gif);
cursor:pointer;
- filter: progid:dximagetransform.microsoft.alphaimageloader(src='images/btn-yes.png', sizingmethod='crop');
+ filter: progid:dximagetransform.microsoft.alphaimageloader(src='../umbraco_client/installer/images/btn-yes.png', sizingmethod='crop');
}
.mini-tabset li.btn-no a span{
background:url(../images/none.gif);
cursor:pointer;
- filter: progid:dximagetransform.microsoft.alphaimageloader(src='images/btn-no.png', sizingmethod='crop');
+ filter: progid:dximagetransform.microsoft.alphaimageloader(src='../umbraco_client/installer/images/btn-no.png', sizingmethod='crop');
}
.selectArea a.selectButton{
background:url(../images/none.gif);
cursor:pointer;
- filter: progid:dximagetransform.microsoft.alphaimageloader(src='images/select-button.png', sizingmethod='crop');
+ filter: progid:dximagetransform.microsoft.alphaimageloader(src='../umbraco_client/installer/images/select-button.png', sizingmethod='crop');
}
.selectArea .left{
background:url(../images/none.gif);
- filter: progid:dximagetransform.microsoft.alphaimageloader(src='images/select-left.png', sizingmethod='crop');
+ filter: progid:dximagetransform.microsoft.alphaimageloader(src='../umbraco_client/installer/images/select-left.png', sizingmethod='crop');
}
.selectArea .center{
background:url(../images/none.gif);
- filter: progid:dximagetransform.microsoft.alphaimageloader(src='images/select-center.png', sizingmethod='scale');
+ filter: progid:dximagetransform.microsoft.alphaimageloader(src='../umbraco_client/installer/images/select-center.png', sizingmethod='scale');
}
.instruction-hold .row span{
background:url(../images/none.gif);
- filter: progid:dximagetransform.microsoft.alphaimageloader(src='images/bg-inp.png', sizingmethod='crop');
+ filter: progid:dximagetransform.microsoft.alphaimageloader(src='../umbraco_client/installer/images/bg-inp.png', sizingmethod='crop');
}
.btn-continue span{
background:url(../images/none.gif);
cursor:pointer;
- filter: progid:dximagetransform.microsoft.alphaimageloader(src='images/btn-continue.png', sizingmethod='crop');
+ filter: progid:dximagetransform.microsoft.alphaimageloader(src='../umbraco_client/installer/images/btn-continue.png', sizingmethod='crop');
}
.instruction-hold .error span{
background:url(../images/none.gif);
- filter: progid:dximagetransform.microsoft.alphaimageloader(src='images/bg-inp-error.png', sizingmethod='crop');
+ filter: progid:dximagetransform.microsoft.alphaimageloader(src='../umbraco_client/installer/images/bg-inp-error.png', sizingmethod='crop');
}
.validaing{
background:url(../images/none.gif);
- filter: progid:dximagetransform.microsoft.alphaimageloader(src='images/ico-validaing.png', sizingmethod='crop');
+ filter: progid:dximagetransform.microsoft.alphaimageloader(src='../umbraco_client/installer/images/ico-validaing.png', sizingmethod='crop');
}
.invalidaing{
background:url(../images/none.gif);
- filter: progid:dximagetransform.microsoft.alphaimageloader(src='images/ico-invalidaing.png', sizingmethod='crop');
+ filter: progid:dximagetransform.microsoft.alphaimageloader(src='../umbraco_client/installer/images/ico-invalidaing.png', sizingmethod='crop');
}
.drop-hold .t{
background:url(../images/none.gif);
- filter: progid:dximagetransform.microsoft.alphaimageloader(src='images/bg-drop-t.png', sizingmethod='crop');
+ filter: progid:dximagetransform.microsoft.alphaimageloader(src='../umbraco_client/installer/images/bg-drop-t.png', sizingmethod='crop');
}
.drop-hold .b{
background:url(../images/none.gif);
- filter: progid:dximagetransform.microsoft.alphaimageloader(src='images/bg-drop-b.png', sizingmethod='crop');
+ filter: progid:dximagetransform.microsoft.alphaimageloader(src='../umbraco_client/installer/images/bg-drop-b.png', sizingmethod='crop');
}
.add-nav ul li.hover em{
background:url(../images/none.gif);
- filter: progid:dximagetransform.microsoft.alphaimageloader(src='images/bul3.png', sizingmethod='crop');
+ filter: progid:dximagetransform.microsoft.alphaimageloader(src='../umbraco_client/installer/images/bul3.png', sizingmethod='crop');
}
.gallery .btn-prev span{
background:url(../images/none.gif);
cursor:pointer;
- filter: progid:dximagetransform.microsoft.alphaimageloader(src='images/btn-prev.png', sizingmethod='crop');
+ filter: progid:dximagetransform.microsoft.alphaimageloader(src='../umbraco_client/installer/images/btn-prev.png', sizingmethod='crop');
}
.gallery .btn-next span{
background:url(../images/none.gif);
cursor:pointer;
- filter: progid:dximagetransform.microsoft.alphaimageloader(src='images/btn-next.png', sizingmethod='crop');
+ filter: progid:dximagetransform.microsoft.alphaimageloader(src='../umbraco_client/installer/images/btn-next.png', sizingmethod='crop');
}
.gal-drop .btn-preview span{
background:url(../images/none.gif);
cursor:pointer;
- filter: progid:dximagetransform.microsoft.alphaimageloader(src='images/btn-preview.png', sizingmethod='crop');
+ filter: progid:dximagetransform.microsoft.alphaimageloader(src='../umbraco_client/installer/images/btn-preview.png', sizingmethod='crop');
}
.gal-drop .btn-install-gal span{
background:url(../images/none.gif);
cursor:pointer;
- filter: progid:dximagetransform.microsoft.alphaimageloader(src='images/btn-install-gal.png', sizingmethod='crop');
+ filter: progid:dximagetransform.microsoft.alphaimageloader(src='../umbraco_client/installer/images/btn-install-gal.png', sizingmethod='crop');
}
.paging ul li a{
background:url(../images/none.gif);
cursor:pointer;
- filter: progid:dximagetransform.microsoft.alphaimageloader(src='images/bg-paging.png', sizingmethod='crop');
+ filter: progid:dximagetransform.microsoft.alphaimageloader(src='../umbraco_client/installer/images/bg-paging.png', sizingmethod='crop');
}
.paging ul li a:hover,
.paging ul li.active a{
background:url(../images/none.gif);
cursor:pointer;
- filter: progid:dximagetransform.microsoft.alphaimageloader(src='images/bg-paging-h.png', sizingmethod='crop');
+ filter: progid:dximagetransform.microsoft.alphaimageloader(src='../umbraco_client/installer/images/bg-paging-h.png', sizingmethod='crop');
}
.lightbox .t{
background:url(../images/none.gif);
- filter: progid:dximagetransform.microsoft.alphaimageloader(src='images/bg-lightbox-t.png', sizingmethod='crop');
+ filter: progid:dximagetransform.microsoft.alphaimageloader(src='../umbraco_client/installer/images/bg-lightbox-t.png', sizingmethod='crop');
}
.lightbox .b{
background:url(../images/none.gif);
- filter: progid:dximagetransform.microsoft.alphaimageloader(src='images/bg-lightbox-b.png', sizingmethod='crop');
+ filter: progid:dximagetransform.microsoft.alphaimageloader(src='../umbraco_client/installer/images/bg-lightbox-b.png', sizingmethod='crop');
}
.lightbox .btn-install{
background:url(../images/none.gif);
cursor:pointer;
- filter: progid:dximagetransform.microsoft.alphaimageloader(src='images/btn-install.png', sizingmethod='crop');
+ filter: progid:dximagetransform.microsoft.alphaimageloader(src='../umbraco_client/installer/images/btn-install.png', sizingmethod='crop');
}
.lightbox .btn-install:hover{
background:url(../images/none.gif);
cursor:pointer;
- filter: progid:dximagetransform.microsoft.alphaimageloader(src='images/btn-install-hover.png', sizingmethod='crop');
+ filter: progid:dximagetransform.microsoft.alphaimageloader(src='../umbraco_client/installer/images/btn-install-hover.png', sizingmethod='crop');
}
.lightbox .btn-close{
background:url(../images/none.gif);
cursor:pointer;
- filter: progid:dximagetransform.microsoft.alphaimageloader(src='images/btn-close.png', sizingmethod='crop');
+ filter: progid:dximagetransform.microsoft.alphaimageloader(src='../umbraco_client/installer/images/btn-close.png', sizingmethod='crop');
}
.btn-web li.btn-set a span{
background:url(../images/none.gif);
cursor:pointer;
- filter: progid:dximagetransform.microsoft.alphaimageloader(src='images/btn-set.png', sizingmethod='crop');
+ filter: progid:dximagetransform.microsoft.alphaimageloader(src='../umbraco_client/installer/images/btn-set.png', sizingmethod='crop');
}
.btn-web li.btn-preview-web a span{
background:url(../images/none.gif);
cursor:pointer;
- filter: progid:dximagetransform.microsoft.alphaimageloader(src='images/btn-preview-web.png', sizingmethod='crop');
+ filter: progid:dximagetransform.microsoft.alphaimageloader(src='../umbraco_client/installer/images/btn-preview-web.png', sizingmethod='crop');
}
.threcol .t{
background:url(../images/none.gif);
- filter: progid:dximagetransform.microsoft.alphaimageloader(src='images/sep1.png', sizingmethod='scale');
+ filter: progid:dximagetransform.microsoft.alphaimageloader(src='../umbraco_client/installer/images/sep1.png', sizingmethod='scale');
}
.gallery .box {
filter: none !important;
@@ -154,19 +154,19 @@
.btn-box .btn-install span {
background:url(../images/none.gif);
cursor:pointer;
- filter: progid:dximagetransform.microsoft.alphaimageloader(src='images/btn-install.png', sizingmethod='crop');
+ filter: progid:dximagetransform.microsoft.alphaimageloader(src='../umbraco_client/installer/images/btn-install.png', sizingmethod='crop');
}
.ui-selectmenu-status {
background:url(../images/none.gif);
- filter: progid:dximagetransform.microsoft.alphaimageloader(src='images/select-left-2.png', sizingmethod='crop');
+ filter: progid:dximagetransform.microsoft.alphaimageloader(src='../umbraco_client/installer/images/select-left-2.png', sizingmethod='crop');
}
.ui-state-default .ui-icon {
cursor: pointer;
background:url(../images/none.gif);
- filter: progid:dximagetransform.microsoft.alphaimageloader(src='images/select-button.png', sizingmethod='crop');
+ filter: progid:dximagetransform.microsoft.alphaimageloader(src='../umbraco_client/installer/images/select-button.png', sizingmethod='crop');
}
.btn-box .btn-create span {
background:url(../images/none.gif);
cursor:pointer;
- filter: progid:dximagetransform.microsoft.alphaimageloader(src='images/btn-create.png', sizingmethod='crop');
+ filter: progid:dximagetransform.microsoft.alphaimageloader(src='../umbraco_client/installer/images/btn-create.png', sizingmethod='crop');
}
\ No newline at end of file
diff --git a/umbraco/presentation/umbraco_client/ui/jquery.js b/umbraco/presentation/umbraco_client/ui/jquery.js
index c941a5f7a9..8f3ca2e2da 100644
--- a/umbraco/presentation/umbraco_client/ui/jquery.js
+++ b/umbraco/presentation/umbraco_client/ui/jquery.js
@@ -1,5 +1,5 @@
/*!
- * jQuery JavaScript Library v1.4.3
+ * jQuery JavaScript Library v1.4.4
* http://jquery.com/
*
* Copyright 2010, John Resig
@@ -11,156 +11,157 @@
* Copyright 2010, The Dojo Foundation
* Released under the MIT, BSD, and GPL Licenses.
*
- * Date: Thu Oct 14 23:10:06 2010 -0400
+ * Date: Thu Nov 11 19:04:53 2010 -0500
*/
-(function(E,A){function U(){return false}function ba(){return true}function ja(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function Ga(a){var b,d,e=[],f=[],h,k,l,n,s,v,B,D;k=c.data(this,this.nodeType?"events":"__events__");if(typeof k==="function")k=k.events;if(!(a.liveFired===this||!k||!k.live||a.button&&a.type==="click")){if(a.namespace)D=RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)");a.liveFired=this;var H=k.live.slice(0);for(n=0;nd)break;a.currentTarget=f.elem;a.data=f.handleObj.data;
-a.handleObj=f.handleObj;D=f.handleObj.origHandler.apply(f.elem,arguments);if(D===false||a.isPropagationStopped()){d=f.level;if(D===false)b=false}}return b}}function Y(a,b){return(a&&a!=="*"?a+".":"")+b.replace(Ha,"`").replace(Ia,"&")}function ka(a,b,d){if(c.isFunction(b))return c.grep(a,function(f,h){return!!b.call(f,h,f)===d});else if(b.nodeType)return c.grep(a,function(f){return f===b===d});else if(typeof b==="string"){var e=c.grep(a,function(f){return f.nodeType===1});if(Ja.test(b))return c.filter(b,
-e,!d);else b=c.filter(b,e)}return c.grep(a,function(f){return c.inArray(f,b)>=0===d})}function la(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var e=c.data(a[d++]),f=c.data(this,e);if(e=e&&e.events){delete f.handle;f.events={};for(var h in e)for(var k in e[h])c.event.add(this,h,e[h][k],e[h][k].data)}}})}function Ka(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}
-function ma(a,b,d){var e=b==="width"?a.offsetWidth:a.offsetHeight;if(d==="border")return e;c.each(b==="width"?La:Ma,function(){d||(e-=parseFloat(c.css(a,"padding"+this))||0);if(d==="margin")e+=parseFloat(c.css(a,"margin"+this))||0;else e-=parseFloat(c.css(a,"border"+this+"Width"))||0});return e}function ca(a,b,d,e){if(c.isArray(b)&&b.length)c.each(b,function(f,h){d||Na.test(a)?e(a,h):ca(a+"["+(typeof h==="object"||c.isArray(h)?f:"")+"]",h,d,e)});else if(!d&&b!=null&&typeof b==="object")c.isEmptyObject(b)?
-e(a,""):c.each(b,function(f,h){ca(a+"["+f+"]",h,d,e)});else e(a,b)}function S(a,b){var d={};c.each(na.concat.apply([],na.slice(0,b)),function(){d[this]=a});return d}function oa(a){if(!da[a]){var b=c("<"+a+">").appendTo("body"),d=b.css("display");b.remove();if(d==="none"||d==="")d="block";da[a]=d}return da[a]}function ea(a){return c.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var u=E.document,c=function(){function a(){if(!b.isReady){try{u.documentElement.doScroll("left")}catch(i){setTimeout(a,
-1);return}b.ready()}}var b=function(i,r){return new b.fn.init(i,r)},d=E.jQuery,e=E.$,f,h=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,k=/\S/,l=/^\s+/,n=/\s+$/,s=/\W/,v=/\d/,B=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,D=/^[\],:{}\s]*$/,H=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,w=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,G=/(?:^|:|,)(?:\s*\[)+/g,M=/(webkit)[ \/]([\w.]+)/,g=/(opera)(?:.*version)?[ \/]([\w.]+)/,j=/(msie) ([\w.]+)/,o=/(mozilla)(?:.*? rv:([\w.]+))?/,m=navigator.userAgent,p=false,
-q=[],t,x=Object.prototype.toString,C=Object.prototype.hasOwnProperty,P=Array.prototype.push,N=Array.prototype.slice,R=String.prototype.trim,Q=Array.prototype.indexOf,L={};b.fn=b.prototype={init:function(i,r){var y,z,F;if(!i)return this;if(i.nodeType){this.context=this[0]=i;this.length=1;return this}if(i==="body"&&!r&&u.body){this.context=u;this[0]=u.body;this.selector="body";this.length=1;return this}if(typeof i==="string")if((y=h.exec(i))&&(y[1]||!r))if(y[1]){F=r?r.ownerDocument||r:u;if(z=B.exec(i))if(b.isPlainObject(r)){i=
-[u.createElement(z[1])];b.fn.attr.call(i,r,true)}else i=[F.createElement(z[1])];else{z=b.buildFragment([y[1]],[F]);i=(z.cacheable?z.fragment.cloneNode(true):z.fragment).childNodes}return b.merge(this,i)}else{if((z=u.getElementById(y[2]))&&z.parentNode){if(z.id!==y[2])return f.find(i);this.length=1;this[0]=z}this.context=u;this.selector=i;return this}else if(!r&&!s.test(i)){this.selector=i;this.context=u;i=u.getElementsByTagName(i);return b.merge(this,i)}else return!r||r.jquery?(r||f).find(i):b(r).find(i);
-else if(b.isFunction(i))return f.ready(i);if(i.selector!==A){this.selector=i.selector;this.context=i.context}return b.makeArray(i,this)},selector:"",jquery:"1.4.3",length:0,size:function(){return this.length},toArray:function(){return N.call(this,0)},get:function(i){return i==null?this.toArray():i<0?this.slice(i)[0]:this[i]},pushStack:function(i,r,y){var z=b();b.isArray(i)?P.apply(z,i):b.merge(z,i);z.prevObject=this;z.context=this.context;if(r==="find")z.selector=this.selector+(this.selector?" ":
-"")+y;else if(r)z.selector=this.selector+"."+r+"("+y+")";return z},each:function(i,r){return b.each(this,i,r)},ready:function(i){b.bindReady();if(b.isReady)i.call(u,b);else q&&q.push(i);return this},eq:function(i){return i===-1?this.slice(i):this.slice(i,+i+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(N.apply(this,arguments),"slice",N.call(arguments).join(","))},map:function(i){return this.pushStack(b.map(this,function(r,y){return i.call(r,
-y,r)}))},end:function(){return this.prevObject||b(null)},push:P,sort:[].sort,splice:[].splice};b.fn.init.prototype=b.fn;b.extend=b.fn.extend=function(){var i=arguments[0]||{},r=1,y=arguments.length,z=false,F,I,K,J,fa;if(typeof i==="boolean"){z=i;i=arguments[1]||{};r=2}if(typeof i!=="object"&&!b.isFunction(i))i={};if(y===r){i=this;--r}for(;r0)){if(q){for(var r=0;i=q[r++];)i.call(u,b);q=null}b.fn.triggerHandler&&b(u).triggerHandler("ready")}}},bindReady:function(){if(!p){p=true;if(u.readyState==="complete")return setTimeout(b.ready,
-1);if(u.addEventListener){u.addEventListener("DOMContentLoaded",t,false);E.addEventListener("load",b.ready,false)}else if(u.attachEvent){u.attachEvent("onreadystatechange",t);E.attachEvent("onload",b.ready);var i=false;try{i=E.frameElement==null}catch(r){}u.documentElement.doScroll&&i&&a()}}},isFunction:function(i){return b.type(i)==="function"},isArray:Array.isArray||function(i){return b.type(i)==="array"},isWindow:function(i){return i&&typeof i==="object"&&"setInterval"in i},isNaN:function(i){return i==
-null||!v.test(i)||isNaN(i)},type:function(i){return i==null?String(i):L[x.call(i)]||"object"},isPlainObject:function(i){if(!i||b.type(i)!=="object"||i.nodeType||b.isWindow(i))return false;if(i.constructor&&!C.call(i,"constructor")&&!C.call(i.constructor.prototype,"isPrototypeOf"))return false;for(var r in i);return r===A||C.call(i,r)},isEmptyObject:function(i){for(var r in i)return false;return true},error:function(i){throw i;},parseJSON:function(i){if(typeof i!=="string"||!i)return null;i=b.trim(i);
-if(D.test(i.replace(H,"@").replace(w,"]").replace(G,"")))return E.JSON&&E.JSON.parse?E.JSON.parse(i):(new Function("return "+i))();else b.error("Invalid JSON: "+i)},noop:function(){},globalEval:function(i){if(i&&k.test(i)){var r=u.getElementsByTagName("head")[0]||u.documentElement,y=u.createElement("script");y.type="text/javascript";if(b.support.scriptEval)y.appendChild(u.createTextNode(i));else y.text=i;r.insertBefore(y,r.firstChild);r.removeChild(y)}},nodeName:function(i,r){return i.nodeName&&i.nodeName.toUpperCase()===
-r.toUpperCase()},each:function(i,r,y){var z,F=0,I=i.length,K=I===A||b.isFunction(i);if(y)if(K)for(z in i){if(r.apply(i[z],y)===false)break}else for(;F