Merge branch 'temp8-bye-umbraco_client' of https://github.com/umbraco/Umbraco-CMS into temp8-bye-umbraco_client

This commit is contained in:
Mads Rasmussen
2018-08-02 17:10:06 +02:00
8 changed files with 0 additions and 589 deletions

View File

@@ -180,14 +180,6 @@
<Compile Include="Umbraco\Dialogs\ChangeDocType.aspx.designer.cs">
<DependentUpon>ChangeDocType.aspx</DependentUpon>
</Compile>
<Compile Include="Umbraco\dialogs\Sort.aspx.cs">
<DependentUpon>sort.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Umbraco\dialogs\Sort.aspx.designer.cs">
<DependentUpon>sort.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Umbraco\Masterpages\Default.Master.cs">
<DependentUpon>default.Master</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
@@ -348,8 +340,6 @@
<Content Include="Umbraco\Dialogs\ChangeDocType.aspx">
<SubType>ASPXCodeBehind</SubType>
</Content>
<Content Include="Umbraco_Client\Dialogs\SortDialog.css" />
<Content Include="Umbraco_client\Dialogs\SortDialog.js" />
<Content Include="Umbraco_Client\Tablesorting\img\asc.gif" />
<Content Include="Umbraco_Client\Tablesorting\img\desc.gif" />
<Content Include="Umbraco_Client\Tablesorting\jquery.tablesorter.min.js" />
@@ -487,7 +477,6 @@
<SubType>Form</SubType>
</Content>
<Content Include="Umbraco\Settings\EditDictionaryItem.aspx" />
<Content Include="Umbraco\Dialogs\sort.aspx" />
<Content Include="Umbraco\treeInit.aspx" />
<!--<Content Include="Umbraco\users\PermissionEditor.aspx" />-->
<Content Include="Umbraco\Webservices\ajax.js" />

View File

@@ -1,11 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace Umbraco.Web.UI.Umbraco.Dialogs
{
public partial class Sort : global::umbraco.cms.presentation.sort
{
}
}

View File

@@ -1,33 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Umbraco.Web.UI.Umbraco.Dialogs {
public partial class Sort {
/// <summary>
/// CssInclude1 control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::ClientDependency.Core.Controls.CssInclude CssInclude1;
/// <summary>
/// JsInclude3 control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::ClientDependency.Core.Controls.JsInclude JsInclude3;
}
}

View File

@@ -1,86 +0,0 @@
<%@ Page Language="c#" MasterPageFile="../masterpages/umbracoDialog.Master" CodeBehind="sort.aspx.cs" AutoEventWireup="True" Inherits="Umbraco.Web.UI.Umbraco.Dialogs.Sort" %>
<%@ Import Namespace="System.Globalization" %>
<%@ Import Namespace="Umbraco.Core.IO" %>
<%@ Import Namespace="Umbraco.Web" %>
<%@ Register TagPrefix="umb" Namespace="ClientDependency.Core.Controls" Assembly="ClientDependency.Core" %>
<%@ Register TagPrefix="cc1" Namespace="Umbraco.Web._Legacy.Controls" Assembly="Umbraco.Web" %>
<asp:Content ContentPlaceHolderID="head" runat="server">
<umb:CssInclude ID="CssInclude1" runat="server" FilePath="Dialogs/SortDialog.css" PathNameAlias="UmbracoClient"></umb:CssInclude>
</asp:Content>
<asp:Content ContentPlaceHolderID="body" runat="server">
<umb:JsInclude ID="JsInclude3" runat="server" FilePath="Dialogs/SortDialog.js" PathNameAlias="UmbracoClient" />
<umb:JsInclude ID="JsInclude1" runat="server" FilePath="tablesorting/jquery.tablesorter.min.js" PathNameAlias="UmbracoClient" />
<umb:JsInclude ID="JsInclude2" runat="server" FilePath="tablesorting/tableDragAndDrop.js" PathNameAlias="UmbracoClient" />
<div class="umb-dialog-body">
<cc1:Pane runat="server">
<div id="loading" style="display: none; margin-bottom: 35px;">
<div class="notice">
<p><%= Services.TextService.Localize("sort/sortPleaseWait") %></p>
</div>
<div class="umb-loader-wrapper">
<cc1:ProgressBar ID="prog1" runat="server" Title="sorting.." />
</div>
</div>
<div id="sortingDone" style="display: none;" class="success">
<p>
<asp:Literal runat="server" ID="sortDone"></asp:Literal>
</p>
<p>
<a href="#" onclick="UmbClientMgr.closeModalWindow()"><%= Services.TextService.Localize("defaultdialogs/closeThisWindow")%></a>
</p>
</div>
<div id="sortArea">
<p class="help">
<%= Services.TextService.Localize("sort/sortHelp") %>
</p>
<div id="sortableFrame">
<table id="sortableNodes">
<thead>
<tr>
<th style="width: 100%"><%= Services.TextService.Localize("general/name") %></th>
<th class="nowrap" style="display: <%= HideDateColumn ? "none" : "table-cell" %>;"><%= Services.TextService.Localize("sort/sortCreationDate") %></th>
<th class="nowrap"><%= Services.TextService.Localize("sort/sortOrder") %></th>
</tr>
</thead>
<tbody>
<asp:Literal ID="lt_nodes" runat="server" />
</tbody>
</table>
</div>
</div>
</cc1:Pane>
</div>
<div class="umb-dialog-footer btn-toolbar umb-btn-toolbar">
<a id="closeWindowButton" href="#" class="btn btn-link"><%=Services.TextService.Localize("general/cancel")%></a>
<input id="submitButton" type="button" class="btn btn-primary" value="<%=Services.TextService.Localize("save") %>" />
</div>
<script type="text/javascript">
jQuery(document).ready(function () {
var sortDialog = new Umbraco.Dialogs.SortDialog({
submitButton: jQuery("#submitButton"),
closeWindowButton: jQuery("#closeWindowButton"),
dateTimeFormat: "<%=CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern%> <%=CultureInfo.CurrentCulture.DateTimeFormat.ShortTimePattern%>",
currentId: "<%=Request.CleanForXss("ID")%>",
serviceUrl: "<%= IOHelper.ResolveUrl(SystemDirectories.Umbraco)%>/WebServices/NodeSorter.asmx/UpdateSortOrder?app=<%=Request.CleanForXss("app")%>"
});
sortDialog.init();
});
</script>
</asp:Content>

View File

@@ -1,58 +0,0 @@
#sortableFrame
{
height: auto;
overflow: auto;
}
#sortableNodes
{
padding: 4px;
display: block;
border-spacing:0;
border-collapse:collapse;
}
#sortableNodes thead tr th
{
border-bottom: 1px solid #ccc;
padding: 4px;
padding-right: 25px;
background-image: url(../tableSorting/img/bg.gif);
cursor: pointer;
font-weight: bold;
background-repeat: no-repeat;
background-position: center right;
}
#sortableNodes thead tr th.headerSortDown
{
background-image: url(../tableSorting/img/desc.gif);
}
#sortableNodes thead tr th.headerSortUp
{
background-image: url(../tableSorting/img/asc.gif);
}
#sortableNodes tbody tr td
{
border-bottom: 1px solid #efefef;
}
#sortableNodes td
{
padding: 4px;
cursor: move;
}
tr.tDnD_whileDrag, tr.tDnD_whileDrag td
{
background: #dcecf3;
border-color: #a8d8eb !Important;
margin-top: 20px;
}
#sortableNodes .nowrap
{
white-space: nowrap;
}

View File

@@ -1,122 +0,0 @@
Umbraco.Sys.registerNamespace("Umbraco.Dialogs");
(function ($) {
Umbraco.Dialogs.SortDialog = base2.Base.extend({
//private methods/variables
_opts: null,
_setupTableSorter: function () {
//adds a custom sorter to the tablesorter based on the current cultures date/time format
$.tablesorter.addParser({
// use a unique id
id: 'cultureDateParser',
is: function() {
//don't auto-detect this parser
return false;
},
format: function(s, table) {
var c = table.config;
s = s.replace(/\-/g, "/");
//all of these basically transform the string into year-month-day since that
//is what JS understands when creating a Date object
if (c.dateFormat.indexOf("dd/MM/yyyy") == 0 || c.dateFormat.indexOf("dd-MM-yyyy") == 0 || c.dateFormat.indexOf("dd.MM.yyyy") == 0) {
s = s.replace(/(\d{1,2})[\/\-\.](\d{1,2})[\/\-\.](\d{4})/, "$3-$2-$1");
}
else if (c.dateFormat.indexOf("dd/MM/yy") == 0 || c.dateFormat.indexOf("dd-MM-yy") == 0 || c.dateFormat.indexOf("dd.MM.yy") == 0) {
s = s.replace(/(\d{1,2})[\/\-\.](\d{1,2})[\/\-\.](\d{2})/, "$3-$2-$1");
}
else if (c.dateFormat.indexOf("MM/dd/yyyy") == 0 || c.dateFormat.indexOf("MM-dd-yyyy") == 0) {
s = s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{4})/, "$3-$1-$2");
}
else if (c.dateFormat.indexOf("MM/dd/yy") == 0 || c.dateFormat.indexOf("MM-dd-yy") == 0) {
s = s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{2})/, "$3-$1-$2");
}
return $.tablesorter.formatFloat(new Date(s).getTime());
},
// set the type to either numeric or text (text uses a natural sort function
// so it will work for everything, but numeric is faster for numbers
type: 'numeric'
});
},
_saveSort: function() {
var rows = $('#sortableNodes tbody tr');
var sortOrder = "";
$.each(rows, function () {
sortOrder += $(this).attr("id").replace("node_", "") + ",";
});
$("#sortingDone").hide();
$("#sortArea").hide();
$("#loading").show();
var self = this;
$.ajax({
type: "POST",
url: self._opts.serviceUrl,
data: '{ "ParentId": "' + self._opts.currentId + '", "SortOrder": "' + sortOrder + '"}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
self._showConfirm();
}
});
},
_showConfirm: function () {
$(".umb-dialog-footer").hide();
$("#loading").hide();
$("#sortingDone").show();
UmbClientMgr.mainTree().reloadActionNode();
},
// Constructor
constructor: function (opts) {
// Merge options with default
this._opts = $.extend({
// Default options go here
}, opts);
this._setupTableSorter();
},
//public methods/variables
init: function () {
var self = this;
//create the sorter
$("#sortableNodes").tablesorter({
dateFormat: self._opts.dateTimeFormat,
headers: {
0: { sorter: "text" },
1: { sorter: "cultureDateParser" }, //ensure to set our custom parser here
2: { sorter: "numeric" }
}
});
//setup the drag/drop sorting
$("#sortableNodes").tableDnD({ containment: $("#sortableFrame") });
//wire up the submit button
self._opts.submitButton.click(function() {
this.disabled = true;
self._saveSort();
});
//wire up the close button
self._opts.closeWindowButton.click(function () {
UmbClientMgr.closeModalWindow();
});
},
});
})(jQuery);

View File

@@ -1130,9 +1130,6 @@
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="umbraco.presentation\MacroCacheContent.cs" />
<Compile Include="umbraco.presentation\umbraco\dialogs\sort.aspx.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="umbraco.presentation\umbraco\masterpages\default.Master.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>

View File

@@ -1,265 +0,0 @@
using System;
using System.Linq;
using Umbraco.Core;
using Umbraco.Core.Services;
using Umbraco.Web;
using System.Web.UI;
using System.Collections.Generic;
using Umbraco.Web.Composing;
using Umbraco.Web.UI.Pages;
using Umbraco.Core.Exceptions;
using Umbraco.Core.Models;
using Umbraco.Web._Legacy.Actions;
namespace umbraco.cms.presentation
{
/// <summary>
/// Summary description for sort.
/// </summary>
public partial class sort : UmbracoEnsuredPage
{
/// <summary>
/// The Parent Id being sorted
/// </summary>
protected int? ParentIdAsInt { get; private set; }
protected string ParentIdAsString { get; private set; }
private readonly List<SortableNode> _nodes = new List<SortableNode>();
protected bool HideDateColumn
{
set { ViewState["HideDateColumn"] = value; }
get { return ViewState["HideDateColumn"] == null ? false : (bool) ViewState["HideDateColumn"]; }
}
protected override void OnInit(EventArgs e)
{
CurrentApp = Request.GetItemAsString("app");
ParentIdAsString = Request.GetItemAsString("ID");
int parentId;
if (int.TryParse(ParentIdAsString, out parentId))
{
ParentIdAsInt = parentId;
if (CurrentApp == Constants.Applications.Content || CurrentApp == Constants.Applications.Media)
{
CheckPathAndPermissions(
ParentIdAsInt.Value,
CurrentApp == Constants.Applications.Content ? UmbracoObjectTypes.Document : UmbracoObjectTypes.Media,
ActionSort.Instance);
}
}
base.OnInit(e);
}
protected void Page_Load(object sender, EventArgs e)
{
sortDone.Text = Services.TextService.Localize("sort/sortDone");
}
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
ScriptManager.GetCurrent(Page).Services.Add(new ServiceReference("../webservices/nodesorter.asmx"));
ScriptManager.GetCurrent(Page).Services.Add(new ServiceReference("../webservices/legacyAjaxCalls.asmx"));
var app = Request.GetItemAsString("app");
var icon = "../images/umbraco/doc.gif";
if (ParentIdAsInt.HasValue)
{
if (app == Constants.Applications.Media)
{
icon = "../images/umbraco/mediaPhoto.gif";
var mediaService = Current.Services.MediaService;
if (ParentIdAsInt.Value == -1)
{
foreach (var child in mediaService.GetRootMedia().ToList().OrderBy(x => x.SortOrder))
_nodes.Add(CreateNode(child.Id.ToInvariantString(), child.SortOrder, child.Name, child.CreateDate, icon));
}
else
{
var children = mediaService.GetChildren(ParentIdAsInt.Value);
foreach (var child in children.OrderBy(x => x.SortOrder))
_nodes.Add(CreateNode(child.Id.ToInvariantString(), child.SortOrder, child.Name, child.CreateDate, icon));
}
}
if (app == Constants.Applications.Content)
{
var contentService = Current.Services.ContentService;
if (ParentIdAsInt.Value == -1)
{
foreach (var child in contentService.GetRootContent().ToList().OrderBy(x => x.SortOrder))
_nodes.Add(CreateNode(child.Id.ToInvariantString(), child.SortOrder, child.Name, child.CreateDate, icon));
}
else
{
var children = contentService.GetChildren(ParentIdAsInt.Value);
foreach (var child in children)
_nodes.Add(CreateNode(child.Id.ToInvariantString(), child.SortOrder, child.Name, child.CreateDate, icon));
}
}
bindNodesToList(string.Empty);
}
else
{
// hack for stylesheet, used to sort stylesheet properties
if (app == Constants.Applications.Settings)
{
icon = "../images/umbraco/settingCss.gif";
HideDateColumn = true;
var stylesheetName = ParentIdAsString;
if (stylesheetName.IsNullOrWhiteSpace())throw new NullReferenceException("No Id passed in to editor");
var stylesheet = Services.FileService.GetStylesheetByName(stylesheetName.EnsureEndsWith(".css"));
if (stylesheet == null) throw new InvalidOperationException("No stylesheet found by name " + stylesheetName);
var sort = 0;
foreach (var child in stylesheet.Properties)
{
_nodes.Add(CreateNode(child.Name, sort, child.Name, DateTime.Now, icon));
sort++;
}
bindNodesToList(string.Empty);
}
}
}
public void bindNodesToList(string sortBy)
{
if (string.IsNullOrEmpty(sortBy) == false)
{
switch (sortBy)
{
case "nodeName":
_nodes.Sort(new nodeNameCompare());
break;
case "createDate":
_nodes.Sort(new createDateCompare());
break;
}
}
foreach (var n in _nodes)
lt_nodes.Text += string.Format(
"<tr id='node_{0}'><td>{1}</td><td class='nowrap' style='display:{5};'>{2} {3}</td><td style='text-align: center;'>{4}</td></tr>",
n.id, n.Name, n.createDate.ToShortDateString(), n.createDate.ToShortTimeString(), n.sortOrder, HideDateColumn ? "none" : "table-cell");
}
private static SortableNode CreateNode(string id, int sortOrder, string name, DateTime createDateTime, string icon)
{
var node = new SortableNode
{
id = id,
sortOrder = sortOrder,
Name = name,
icon = icon,
createDate = createDateTime
};
return node;
}
public class SortableNode
{
public string id;
public int sortOrder;
public string Name;
public string icon;
public DateTime createDate;
}
/// <summary>
/// JsInclude1 control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::ClientDependency.Core.Controls.JsInclude JsInclude1;
/// <summary>
/// JsInclude2 control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::ClientDependency.Core.Controls.JsInclude JsInclude2;
/// <summary>
/// prog1 control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::Umbraco.Web._Legacy.Controls.ProgressBar prog1;
/// <summary>
/// sortDone control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Literal sortDone;
/// <summary>
/// sortPane control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::Umbraco.Web._Legacy.Controls.Pane sortPane;
/// <summary>
/// lt_nodes control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Literal lt_nodes;
}
public class nodeNameCompare : IComparer<sort.SortableNode>
{
#region IComparer<CMSNode> Members
public int Compare(sort.SortableNode x, sort.SortableNode y)
{
var returnValue = String.Compare(x.Name, y.Name, StringComparison.Ordinal);
return returnValue;
}
#endregion
}
public class createDateCompare : IComparer<sort.SortableNode>
{
#region IComparer<CMSNode> Members
public int Compare(sort.SortableNode x, sort.SortableNode y)
{
var returnValue = x.createDate.CompareTo(y.createDate);
return returnValue;
}
#endregion
}
}