mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2026-02-09 09:16:41 +08:00
Merge
--HG-- branch : dev
This commit is contained in:
@@ -88,9 +88,9 @@ Features:
|
||||
Assert.That(enabledFeatures.Count(), Is.EqualTo(0));
|
||||
moduleRecipeHandler.ExecuteRecipeStep(recipeContext);
|
||||
|
||||
enabledFeatures = featureManager.GetEnabledFeatures();
|
||||
Assert.That(enabledFeatures.FirstOrDefault(feature => feature.Id.Equals("SuperWiki")), Is.Not.Null);
|
||||
Assert.That(enabledFeatures.Count(), Is.EqualTo(1));
|
||||
|
||||
var availableFeatures = featureManager.GetAvailableFeatures().Where(x => x.Id == "SuperWiki").FirstOrDefault();
|
||||
Assert.That(availableFeatures.Id, Is.EqualTo("SuperWiki"));
|
||||
Assert.That(recipeContext.Executed, Is.True);
|
||||
}
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
}
|
||||
</tbody>
|
||||
</table>
|
||||
<fieldset class="actions"><button type="submit" class="primaryAction">@T("Update All")</button></fieldset>
|
||||
<fieldset class="actions"><button type="submit" class="button">@T("Update All")</button></fieldset>
|
||||
}
|
||||
|
||||
<h2>@T("Add New Item")</h2>
|
||||
|
||||
@@ -8,9 +8,9 @@
|
||||
<label for="OnAdminMenu" class="forcheckbox">@T("Show on admin menu")</label>
|
||||
<div data-controllerid="OnAdminMenu" class="">
|
||||
<label for="AdminMenuText">@T("Menu text")</label>
|
||||
@Html.TextBoxFor(m => m.AdminMenuText, new { @class = "large text" })
|
||||
@Html.TextBoxFor(m => m.AdminMenuText, new { @class = "text-box single-line" })
|
||||
|
||||
<label for="AdminMenuPosition">@T("Position")</label>
|
||||
@Html.TextBoxFor(m => m.AdminMenuPosition)
|
||||
@Html.TextBoxFor(m => m.AdminMenuPosition, new { @class = "text-box single-line" })
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
@@ -8,6 +8,6 @@
|
||||
<label for="OnMainMenu" class="forcheckbox">@T("Show on main menu")</label>
|
||||
<div data-controllerid="OnMainMenu" class="">
|
||||
<label for="MenuText">@T("Menu text")</label>
|
||||
@Html.TextBoxFor(m => m.MenuText, new { @class = "large text" })
|
||||
@Html.TextBoxFor(m => m.MenuText, new { @class = "text-box single-line" })
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
Style.Require("ContentTypesAdmin");
|
||||
Layout.Title = T("Add Parts To \"{0}\"", Model.Type.DisplayName).ToString();
|
||||
}
|
||||
|
||||
@T("Choose the Parts to add to this Content Type. The <b>Common</b> part should be included in most types. It gives the items an owner as well as a creation, publication and last modification date stamps. In addition to the Common part, adding the <b>Containable</b> part makes it possible to add content items of this type to a <b>List</b>.")
|
||||
@using (Html.BeginFormAntiForgeryPost()) {
|
||||
@Html.ValidationSummary()
|
||||
<fieldset>
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
using System.IO;
|
||||
using System.Web.Mvc;
|
||||
using Orchard.FileSystems.WebSite;
|
||||
using Orchard.Localization;
|
||||
using Orchard.Security;
|
||||
using Orchard.Mvc.Extensions;
|
||||
using Orchard.Themes;
|
||||
|
||||
namespace Orchard.DesignerTools.Controllers
|
||||
{
|
||||
[Themed]
|
||||
public class AlternateController : Controller {
|
||||
private readonly IWebSiteFolder _webSiteFolder;
|
||||
private readonly IThemeManager _themeManager;
|
||||
|
||||
public AlternateController(IOrchardServices orchardServices, IWebSiteFolder webSiteFolder, IThemeManager themeManager) {
|
||||
_webSiteFolder = webSiteFolder;
|
||||
_themeManager = themeManager;
|
||||
Services = orchardServices;
|
||||
}
|
||||
|
||||
public IOrchardServices Services { get; set; }
|
||||
public Localizer T { get; set; }
|
||||
|
||||
public ActionResult Create(string template, string alternate, string returnUrl) {
|
||||
if (!Services.Authorizer.Authorize(StandardPermissions.SiteOwner, T("Not authorized to create templates")) && !Request.IsLocal)
|
||||
return new HttpUnauthorizedResult();
|
||||
|
||||
alternate = alternate.Replace("__", "-").Replace("_", ".");
|
||||
|
||||
var currentTheme = _themeManager.GetRequestTheme(Request.RequestContext);
|
||||
var alternateFilename = Server.MapPath(Path.Combine(currentTheme.Location, currentTheme.Id, "Views", alternate));
|
||||
|
||||
// use same extension as template, or ".cshtml" if it's a code template))
|
||||
if (_webSiteFolder.FileExists(template)) {
|
||||
alternateFilename += Path.GetExtension(template);
|
||||
|
||||
using (var stream = System.IO.File.Create(alternateFilename)) {
|
||||
_webSiteFolder.CopyFileTo(template, stream);
|
||||
}
|
||||
}
|
||||
else {
|
||||
alternateFilename += ".cshtml";
|
||||
using (System.IO.File.Create(alternateFilename)) {}
|
||||
}
|
||||
|
||||
return this.RedirectLocal(returnUrl);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -100,6 +100,7 @@
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Controllers\AlternateController.cs" />
|
||||
<Compile Include="Services\ObjectDumper.cs" />
|
||||
<Compile Include="Services\ShapeTracingFactory.cs" />
|
||||
<Compile Include="Services\UrlAlternatesFactory.cs" />
|
||||
@@ -108,7 +109,6 @@
|
||||
<Content Include="Views\ShapeTracingWrapper.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="Controllers\" />
|
||||
<Folder Include="Models\" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
(function ($) {
|
||||
jQuery(document).ready(function ($) {
|
||||
$(function () {
|
||||
// append the shape tracing window container at the end of the document
|
||||
$('<div id="shape-tracing-container"> ' +
|
||||
@@ -292,10 +292,10 @@
|
||||
|
||||
// add the expand/collapse logic to the shape model
|
||||
// var glyph = $('<span class="expando-glyph-container closed"><span class="expando-glyph"></span>​</span>');
|
||||
shapeTracingWindowContent.find('.model li:has(ul)').prepend(glyph);
|
||||
shapeTracingWindowContent.find('li:has(ul)').prepend(glyph);
|
||||
|
||||
// collapse all sub uls
|
||||
shapeTracingWindowContent.find('.model ul ul').toggle(false);
|
||||
shapeTracingWindowContent.find('ul ul').toggle(false);
|
||||
|
||||
// tabs events
|
||||
shapeTracingWindowContent.find('.shape-tracing-tabs > li').click(function () {
|
||||
@@ -318,6 +318,11 @@
|
||||
enableCodeMirror(panel);
|
||||
});
|
||||
|
||||
// template link opens template tab
|
||||
shapeTracingWindowContent.find('.sgd-t a').click(function () {
|
||||
$(this).parents('.shape-tracing-meta').find('.shape-tracing-tabs > .template').click()
|
||||
});
|
||||
|
||||
// activates codemirror on specific textareas
|
||||
var enableCodeMirror = function (target) {
|
||||
// if there is a script, and colorization is not enabled yet, turn it on
|
||||
@@ -400,4 +405,4 @@
|
||||
return node;
|
||||
}
|
||||
|
||||
})(jQuery);
|
||||
});
|
||||
|
||||
@@ -37,20 +37,23 @@ namespace Orchard.DesignerTools.Services {
|
||||
}
|
||||
|
||||
_parents.Push(o);
|
||||
// starts a new container
|
||||
_node.Add(_node = new XElement("li"));
|
||||
try {
|
||||
// starts a new container
|
||||
_node.Add(_node = new XElement("li"));
|
||||
|
||||
if(o == null) {
|
||||
DumpValue(null, name);
|
||||
if (o == null) {
|
||||
DumpValue(null, name);
|
||||
}
|
||||
else if (o.GetType().IsValueType || o is string) {
|
||||
DumpValue(o, name);
|
||||
}
|
||||
else {
|
||||
DumpObject(o, name);
|
||||
}
|
||||
}
|
||||
else if (o.GetType().IsValueType || o is string) {
|
||||
DumpValue(o, name);
|
||||
finally {
|
||||
_parents.Pop();
|
||||
}
|
||||
else {
|
||||
DumpObject(o, name);
|
||||
}
|
||||
|
||||
_parents.Pop();
|
||||
|
||||
if(_node.DescendantNodes().Count() == 0) {
|
||||
_node.Remove();
|
||||
@@ -116,16 +119,28 @@ namespace Orchard.DesignerTools.Services {
|
||||
continue;
|
||||
}
|
||||
|
||||
// process ContentItem.Parts specifically
|
||||
if (o is ContentItem && member.Name == "Parts") {
|
||||
foreach (var part in ((ContentItem)o).Parts) {
|
||||
Dump(part, part.PartDefinition.Name);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
// process ContentPart.Fields specifically
|
||||
if (o is ContentPart && member.Name == "Fields") {
|
||||
foreach (var field in ((ContentPart)o).Fields) {
|
||||
Dump(field, field.Name);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
try {
|
||||
DumpMember(o, member);
|
||||
}
|
||||
catch {
|
||||
}
|
||||
}
|
||||
|
||||
if (o is ContentItem) {
|
||||
foreach(var part in ((ContentItem)o).Parts) {
|
||||
Dump(part, part.PartDefinition.Name);
|
||||
// ignore members which can't be rendered
|
||||
}
|
||||
}
|
||||
|
||||
@@ -239,7 +254,7 @@ namespace Orchard.DesignerTools.Services {
|
||||
var genericArguments = String.Join(", ", type.GetGenericArguments().Select(t => FormatType((Type)t)).ToArray());
|
||||
return String.Format("{0}<{1}>", type.Name.Substring(0, type.Name.IndexOf('`')), genericArguments);
|
||||
}
|
||||
|
||||
|
||||
return type.Name;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Web.Routing;
|
||||
using System.Xml;
|
||||
using Orchard.DisplayManagement.Descriptors;
|
||||
@@ -96,11 +97,27 @@ namespace Orchard.DesignerTools.Services {
|
||||
context.Shape._Dump = sw.ToString();
|
||||
}
|
||||
|
||||
shape._Definition = descriptor.BindingSource;
|
||||
shape.Template = null;
|
||||
foreach (var extension in new[] { ".cshtml", ".aspx" }) {
|
||||
foreach (var alternate in shapeMetadata.Alternates.Reverse()) {
|
||||
var alternateFilename = currentTheme.Location + "/" + currentTheme.Id + "/Views/" + alternate.Replace("__", "-").Replace("_", ".") + extension;
|
||||
if (_webSiteFolder.FileExists(alternateFilename)) {
|
||||
shape.Template = alternateFilename;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(shape.Template == null) {
|
||||
shape.Template = descriptor.BindingSource;
|
||||
}
|
||||
|
||||
if(shape.Template == null) {
|
||||
shape.Template = descriptor.Bindings.Values.FirstOrDefault().BindingSource;
|
||||
}
|
||||
|
||||
try {
|
||||
if (_webSiteFolder.FileExists(descriptor.BindingSource)) {
|
||||
shape._DefinitionContent = _webSiteFolder.ReadFile(descriptor.BindingSource);
|
||||
if (_webSiteFolder.FileExists(shape.Template)) {
|
||||
shape.TemplateContent = _webSiteFolder.ReadFile(shape.Template);
|
||||
}
|
||||
}
|
||||
catch {
|
||||
|
||||
@@ -252,4 +252,13 @@
|
||||
|
||||
#shape-tracing-window-content .shape-tracing-breadcrumb {
|
||||
margin: 3px 0px;
|
||||
}
|
||||
|
||||
button.create-template, background-image :hover {
|
||||
padding:0;
|
||||
margin:0;
|
||||
background-color:transparent;
|
||||
background-image:none;
|
||||
border:0;
|
||||
display:inline;
|
||||
}
|
||||
@@ -1,4 +1,6 @@
|
||||
@functions {
|
||||
@using Orchard.Utility.Extensions;
|
||||
|
||||
@functions {
|
||||
string FormatShapeFilename(string type, string themeId) {
|
||||
return "~/Themes/" + themeId + "/Views/" + type.Replace("__", "-").Replace("_", ".") + ".cshtml";
|
||||
}
|
||||
@@ -13,25 +15,53 @@
|
||||
return regex.Replace(htmlContent, System.Environment.NewLine);
|
||||
}
|
||||
}
|
||||
|
||||
<div class="shape-tracing-meta" shape-id-meta="@Model.ShapeId" style="display:none">
|
||||
<ul class="shape-tracing-tabs">
|
||||
<li class="shape selected first"><a href="#">Shape</a></li>
|
||||
<li class="model middle"><a href="#">Model</a></li>
|
||||
<li class="placement middle"><a href="#">Placement</a></li>
|
||||
<li class="templates middle"><a href="#">Templates</a></li>
|
||||
<li class="source middle"><a href="#">Source</a></li>
|
||||
<li class="template middle"><a href="#">Template</a></li>
|
||||
<li class="html last"><a href="#">HTML</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="shape-tracing-meta-content">
|
||||
<div class="shape grid-display">
|
||||
<ul class="properties">
|
||||
<li><div class="name">Shape</div><div class="value">@Model.ShapeType</div></li>
|
||||
<li><div class="name">Definition</div><div class="value">@Model.Definition</div></li>
|
||||
<li><div class="name">Display Type</div><div class="value">@(String.IsNullOrEmpty((string)Model.DisplayType) ? T("n/a").Text : Model.DisplayType.ToString())</div></li>
|
||||
<li><div class="name">Position</div><div class="value">@(String.IsNullOrEmpty((string)Model.Position) ? T("n/a").Text : Model.Position.ToString())</div></li>
|
||||
<li><div class="name">Placement Source</div><div class="value">@(String.IsNullOrEmpty((string)Model.PlacementSource) ? T("n/a").Text : Model.PlacementSource.ToString())</div></li>
|
||||
<li class="sgd-s"><div class="name">Shape</div><div class="value">@Model.ShapeType</div></li>
|
||||
<li class="sgd-t"><div class="name">Template</div><div class="value"><a href="#">@Model.Template</a></div></li>
|
||||
<li class="sgd-d"><div class="name">Display Type</div><div class="value">@(String.IsNullOrEmpty((string)Model.DisplayType) ? T("n/a").Text : Model.DisplayType.ToString())</div></li>
|
||||
<li class="sgd-po"><div class="name">Position</div><div class="value">@(String.IsNullOrEmpty((string)Model.Position) ? T("n/a").Text : Model.Position.ToString())</div></li>
|
||||
<li class="sgd-pl"><div class="name">Placement</div><div class="value">@(String.IsNullOrEmpty((string)Model.PlacementSource) ? T("n/a").Text : Model.PlacementSource.ToString())</div></li>
|
||||
<li class="sgd-a"><div class="name">Alternates (@Model.Alternates.Count)</div>
|
||||
<div class="value"> </div>
|
||||
<ul>
|
||||
@foreach (var alternate in Model.Alternates) {
|
||||
var formatted = @FormatShapeFilename(alternate, WorkContext.CurrentTheme.Id);
|
||||
<li>
|
||||
<div class="name">
|
||||
@using (Html.BeginFormAntiForgeryPost(Url.Action("Create", "Alternate", new { Area = "Orchard.DesignerTools" }), FormMethod.Post, new { @class = "inline link" })) {
|
||||
@Html.Hidden("Alternate", (string)alternate)
|
||||
@Html.Hidden("Template", (string)Model.Template)
|
||||
@Html.Hidden("ReturnUrl", Context.Request.RawUrl)
|
||||
<button type="submit" class="create-template">@T("Create").Text</button>
|
||||
}
|
||||
</div>
|
||||
<div class="value">@formatted</div>
|
||||
</li>
|
||||
}
|
||||
</ul>
|
||||
</li>
|
||||
<li class="sgd-w"><div class="name">Wrappers (@Model.Wrappers.Count)</div>
|
||||
<div class="value"> </div>
|
||||
<ul>
|
||||
@foreach (var wrapper in Model.Wrappers) {
|
||||
if (wrapper != "ShapeTracing_Wrapper") {
|
||||
var formatted = @FormatShapeFilename(wrapper, WorkContext.CurrentTheme.Id);
|
||||
<li><div class="name"> </div><div class="value">@formatted</div></li>
|
||||
}
|
||||
}
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -45,27 +75,17 @@
|
||||
<textarea id="placement-@Model.ShapeId" name="placement-@Model.ShapeId">@Model.PlacementContent</textarea>
|
||||
</div>
|
||||
|
||||
<div class="templates" style="display:none">
|
||||
<div class="alternates">
|
||||
<span>Alternates</span>
|
||||
@foreach(var alternate in Model.Alternates) {
|
||||
var formatted = @FormatShapeFilename(alternate, WorkContext.CurrentTheme.Id);
|
||||
<div>@formatted</div>
|
||||
<div class="template" style="display:none">
|
||||
<div class="shape-tracing-breadcrumb">@Model.Template</div>
|
||||
@if (String.IsNullOrWhiteSpace((string)Model.TemplateContent)) {
|
||||
if (!String.IsNullOrWhiteSpace((string)Model.Template)) {
|
||||
@T("Content not available as coming from source code.")
|
||||
}
|
||||
</div>
|
||||
<div class="wrappers">
|
||||
<span >Wrappers</span>
|
||||
@foreach(var wrapper in Model.Wrappers) {
|
||||
if(wrapper != "ShapeTracing_Wrapper") {
|
||||
var formatted = @FormatShapeFilename(wrapper, WorkContext.CurrentTheme.Id);
|
||||
<div>@formatted</div>
|
||||
}
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="source" style="display:none">
|
||||
<textarea id="source-@Model.ShapeId" name="source-@Model.ShapeId">@Model.DefinitionContent</textarea>
|
||||
}
|
||||
else {
|
||||
<textarea id="template-@Model.ShapeId" name="template-@Model.ShapeId">@Model.TemplateContent</textarea>
|
||||
}
|
||||
|
||||
</div>
|
||||
|
||||
<div class="html" style="display:none">
|
||||
|
||||
@@ -26,8 +26,8 @@
|
||||
Layout.Zones["Tail"].Add(
|
||||
New.ShapeTracingMeta(
|
||||
ShapeType: Model.Metadata.Type,
|
||||
Definition: Model._Definition,
|
||||
DefinitionContent: Model._DefinitionContent,
|
||||
Template: Model.Template,
|
||||
TemplateContent: Model.TemplateContent,
|
||||
DisplayType: Model.Metadata.DisplayType,
|
||||
Position: Model.Metadata.Position,
|
||||
PlacementSource: Model.Metadata.PlacementSource,
|
||||
|
||||
@@ -77,9 +77,9 @@ namespace Lists.Controllers {
|
||||
model.ContainerDisplayName = container.ContentType;
|
||||
}
|
||||
|
||||
var query = GetListContentItemQuery(model);
|
||||
var query = GetListContentItemQuery(model.ContainerId.Value, model.FilterByContentType, model.Options.OrderBy);
|
||||
if (query == null) {
|
||||
return new HttpNotFoundResult();
|
||||
return HttpNotFound();
|
||||
}
|
||||
|
||||
model.Options.FilterOptions = GetContainableTypes()
|
||||
@@ -110,19 +110,22 @@ namespace Lists.Controllers {
|
||||
return View((object)viewModel);
|
||||
}
|
||||
|
||||
private IContentQuery<ContainablePart> GetListContentItemQuery(ListContentsViewModel model) {
|
||||
var query = _contentManager.Query<ContainablePart>(VersionOptions.Latest);
|
||||
private IContentQuery<ContentItem> GetListContentItemQuery(int containerId, string contentType, ContentsOrder orderBy) {
|
||||
var query = _contentManager.Query(VersionOptions.Latest, GetContainableTypes().Select(ctd => ctd.Name).ToArray());
|
||||
|
||||
if (!string.IsNullOrEmpty(model.FilterByContentType)) {
|
||||
var contentTypeDefinition = _contentDefinitionManager.GetTypeDefinition(model.FilterByContentType);
|
||||
if (!string.IsNullOrEmpty(contentType)) {
|
||||
var contentTypeDefinition = _contentDefinitionManager.GetTypeDefinition(contentType);
|
||||
if (contentTypeDefinition == null) {
|
||||
return null;
|
||||
}
|
||||
query = query.ForType(model.FilterByContentType);
|
||||
query = query.ForType(contentType);
|
||||
}
|
||||
query = query.Join<CommonPartRecord>().Where(cr => cr.Container.Id == model.ContainerId);
|
||||
|
||||
switch (model.Options.OrderBy) {
|
||||
query = containerId == 0
|
||||
? query.Join<CommonPartRecord>().Where(cr => cr.Container == null)
|
||||
: query.Join<CommonPartRecord>().Where(cr => cr.Container.Id == containerId);
|
||||
|
||||
switch (orderBy) {
|
||||
case ContentsOrder.Modified:
|
||||
query = query.OrderByDescending<CommonPartRecord, DateTime?>(cr => cr.ModifiedUtc);
|
||||
break;
|
||||
@@ -207,32 +210,9 @@ namespace Lists.Controllers {
|
||||
}
|
||||
}
|
||||
|
||||
var query = _contentManager.Query<ContainablePart>(VersionOptions.Latest);
|
||||
|
||||
if (!string.IsNullOrEmpty(model.FilterByContentType)) {
|
||||
var contentTypeDefinition = _contentDefinitionManager.GetTypeDefinition(model.FilterByContentType);
|
||||
if (contentTypeDefinition == null) {
|
||||
return HttpNotFound();
|
||||
}
|
||||
query = query.ForType(model.FilterByContentType);
|
||||
}
|
||||
if (model.SourceContainerId == 0) {
|
||||
query = query.Join<CommonPartRecord>().Where(cr => cr.Container == null);
|
||||
}
|
||||
else {
|
||||
query = query.Join<CommonPartRecord>().Where(cr => cr.Container.Id == model.SourceContainerId);
|
||||
}
|
||||
|
||||
switch (model.OrderBy) {
|
||||
case ContentsOrder.Modified:
|
||||
query = query.OrderByDescending<CommonPartRecord, DateTime?>(cr => cr.ModifiedUtc);
|
||||
break;
|
||||
case ContentsOrder.Published:
|
||||
query = query.OrderByDescending<CommonPartRecord, DateTime?>(cr => cr.PublishedUtc);
|
||||
break;
|
||||
case ContentsOrder.Created:
|
||||
query = query.OrderByDescending<CommonPartRecord, DateTime?>(cr => cr.CreatedUtc);
|
||||
break;
|
||||
var query = GetListContentItemQuery(model.SourceContainerId, model.FilterByContentType, model.OrderBy);
|
||||
if (query == null) {
|
||||
return HttpNotFound();
|
||||
}
|
||||
|
||||
model.SelectedFilter = model.FilterByContentType;
|
||||
|
||||
@@ -281,7 +281,7 @@ namespace Orchard.Media.Controllers {
|
||||
|
||||
// Rename
|
||||
if (!String.Equals(viewModel.Name, input["NewName"], StringComparison.OrdinalIgnoreCase)) {
|
||||
_mediaService.RenameFile(viewModel.Name, input["NewName"], viewModel.MediaPath);
|
||||
_mediaService.RenameFile(viewModel.MediaPath, viewModel.Name, input["NewName"]);
|
||||
viewModelName = input["NewName"];
|
||||
}
|
||||
|
||||
|
||||
@@ -143,7 +143,7 @@ namespace Orchard.Media.Services {
|
||||
throw new ArgumentException(T("New file name {0} is not allowed", newFileName).ToString());
|
||||
}
|
||||
|
||||
_storageProvider.RenameFile(_storageProvider.Combine(folderPath, currentFileName), _storageProvider.Combine(Path.GetDirectoryName(folderPath), newFileName));
|
||||
_storageProvider.RenameFile(_storageProvider.Combine(folderPath, currentFileName), _storageProvider.Combine(folderPath, newFileName));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
.breadCrumbs {
|
||||
float:left;
|
||||
margin:-2em 0 0;
|
||||
margin:0 0 16px 0;
|
||||
}
|
||||
.folderProperties {
|
||||
float:right;
|
||||
margin:-5em 0 0;
|
||||
margin:0 0 16px 0;
|
||||
}
|
||||
.previewImage {
|
||||
max-height:640px;
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
@using (Html.BeginFormAntiForgeryPost(Url.Action("Index", "Admin"))) {
|
||||
<fieldset class="search-actions">
|
||||
<input type="text" id="searchText" name="@Html.NameOf(m => m.Options.SearchText)" value="@Model.Options.SearchText" />
|
||||
<input type="text" id="searchText" class="text-box single-line" name="@Html.NameOf(m => m.Options.SearchText)" value="@Model.Options.SearchText" />
|
||||
|
||||
<button type="submit">@T("Search").ToString()</button>
|
||||
</fieldset>
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
</fieldset>
|
||||
|
||||
<fieldset class="search-actions">
|
||||
<input type="text" id="searchText" name="@Html.NameOf(m => m.Options.SearchText)" value="@Model.Options.SearchText" />
|
||||
<input type="text" id="searchText" class="text-box single-line" name="@Html.NameOf(m => m.Options.SearchText)" value="@Model.Options.SearchText" />
|
||||
|
||||
<button type="submit">@T("Search")</button>
|
||||
</fieldset>
|
||||
|
||||
@@ -85,16 +85,7 @@ namespace Orchard.Recipes.RecipeHandlers {
|
||||
|
||||
if (packagingEntry != null) {
|
||||
_packageManager.Install(packagingEntry.PackageId, packagingEntry.Version, packagingSource.FeedUrl, HostingEnvironment.MapPath("~/"));
|
||||
foreach (var features in
|
||||
from extensionDescriptor in _extensionManager.AvailableExtensions()
|
||||
where extensionDescriptor.Name.Equals(packagingEntry.Title, StringComparison.OrdinalIgnoreCase)
|
||||
select extensionDescriptor.Features.Select(f => f.Name).ToArray()) {
|
||||
|
||||
_featureManager.EnableFeatures(features);
|
||||
_dataMigrationManager.Update(features);
|
||||
|
||||
installed = true;
|
||||
}
|
||||
installed = true;
|
||||
}
|
||||
|
||||
if (!installed) {
|
||||
|
||||
@@ -124,7 +124,7 @@ body {
|
||||
h1,h2,h3,h4,h5,h6 { font-weight: normal;}
|
||||
|
||||
h1 { font-size: 1.769em; }
|
||||
h2 { font-size: 1.538em; }
|
||||
h2 { font-size: 1.308em; }
|
||||
h3 { font-size: 1.231em; }
|
||||
h4 { font-size: 1.154em; }
|
||||
h5 { font-size: 1.077em; }
|
||||
@@ -144,42 +144,6 @@ h4 img, h5 img, h6 img {
|
||||
strong {font-weight:600;}
|
||||
.smallText {font-size:1em; line-height:1.4em;}
|
||||
|
||||
|
||||
/* Layout
|
||||
|
||||
number of columns: 24; actual width: 946; column width: 26; gutter width:14
|
||||
|
||||
| 24| 23| 22| 21| 20| 19| 18| 17| 16| 15| 14| 13| 12| 11| 10| 9| 8| 7| 6| 5| 4| 3| 2
|
||||
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
.5g| 0.759| 0.793| 0.829| 0.870| 0.914| 0.963| 1.017| 1.079| 1.148| 1.226| 1.316| 1.420| 1.542| 1.687| 1.862| 2.077| 2.349| 2.703| 3.182| 3.867| 4.930| 6.796| 10.938
|
||||
24|100.000| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---
|
||||
23| 95.770|100.000| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---
|
||||
22| 91.540| 95.583|100.000| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---
|
||||
21| 87.310| 91.166| 95.379|100.000| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---
|
||||
20| 83.080| 86.750| 90.758| 95.155|100.000| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---
|
||||
19| 78.850| 82.333| 86.137| 90.311| 94.909|100.000| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---
|
||||
18| 74.620| 77.916| 81.517| 85.466| 89.817| 94.635|100.000| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---
|
||||
17| 70.390| 73.499| 76.896| 80.621| 84.726| 89.271| 94.331|100.000| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---
|
||||
16| 66.161| 69.083| 72.275| 75.776| 79.634| 83.906| 88.663| 93.991|100.000| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---
|
||||
15| 61.931| 64.666| 67.654| 70.932| 74.543| 78.542| 82.994| 87.982| 93.607|100.000| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---
|
||||
14| 57.701| 60.249| 63.033| 66.087| 69.452| 73.177| 77.326| 81.972| 87.213| 93.170|100.000| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---
|
||||
13| 53.471| 55.832| 58.412| 61.242| 64.360| 67.813| 71.657| 75.963| 80.820| 86.340| 92.669|100.000| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---
|
||||
12| 49.241| 51.416| 53.791| 56.398| 59.269| 62.448| 65.988| 69.954| 74.426| 79.510| 85.338| 92.089|100.000| ---| ---| ---| ---| ---| ---| ---| ---| ---| ---
|
||||
11| 45.011| 46.999| 49.171| 51.553| 54.178| 57.084| 60.320| 63.945| 68.033| 72.680| 78.008| 84.178| 91.410|100.000| ---| ---| ---| ---| ---| ---| ---| ---| ---
|
||||
10| 40.781| 42.582| 44.550| 46.708| 49.086| 51.719| 54.651| 57.935| 61.639| 65.849| 70.677| 76.268| 82.819| 90.602|100.000| ---| ---| ---| ---| ---| ---| ---| ---
|
||||
9| 36.551| 38.165| 39.929| 41.863| 43.995| 46.355| 48.983| 51.926| 55.246| 59.019| 63.346| 68.357| 74.229| 81.205| 89.628|100.000| ---| ---| ---| ---| ---| ---| ---
|
||||
8| 32.321| 33.749| 35.308| 37.019| 38.903| 40.990| 43.314| 45.917| 48.852| 52.189| 56.015| 60.446| 65.639| 71.807| 79.255| 88.427|100.000| ---| ---| ---| ---| ---| ---
|
||||
7| 28.091| 29.332| 30.687| 32.174| 33.812| 35.626| 37.645| 39.908| 42.459| 45.359| 48.684| 52.535| 57.048| 62.410| 68.883| 76.855| 86.913|100.000| ---| ---| ---| ---| ---
|
||||
6| 23.861| 24.915| 26.066| 27.329| 28.721| 30.261| 31.977| 33.898| 36.066| 38.529| 41.353| 44.625| 48.458| 53.012| 58.511| 65.282| 73.826| 84.942|100.000| ---| ---| ---| ---
|
||||
5| 19.631| 20.498| 21.445| 22.484| 23.629| 24.897| 26.308| 27.889| 29.672| 31.699| 34.023| 36.714| 39.868| 43.614| 48.138| 53.709| 60.738| 69.884| 82.273|100.000| ---| ---| ---
|
||||
4| 15.401| 16.082| 16.825| 17.640| 18.538| 19.532| 20.640| 21.880| 23.279| 24.869| 26.692| 28.803| 31.278| 34.217| 37.766| 42.136| 47.651| 54.826| 64.545| 78.453|100.000| ---| ---
|
||||
3| 11.171| 11.665| 12.204| 12.795| 13.446| 14.168| 14.971| 15.871| 16.885| 18.039| 19.361| 20.892| 22.687| 24.819| 27.394| 30.564| 34.564| 39.768| 46.818| 56.906| 72.535|100.000| ---
|
||||
2| 6.941| 7.248| 7.583| 7.950| 8.355| 8.803| 9.302| 9.861| 10.492| 11.208| 12.030| 12.982| 14.097| 15.422| 17.021| 18.991| 21.477| 24.710| 29.091| 35.359| 45.070| 62.136|100.000
|
||||
1| 2.711| 2.831| 2.962| 3.106| 3.264| 3.439| 3.634| 3.852| 4.098| 4.378| 4.699| 5.071| 5.507| 6.024| 6.649| 7.418| 8.389| 9.653| 11.364| 13.812| 17.606| 24.272| 39.063
|
||||
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
| 24| 23| 22| 21| 20| 19| 18| 17| 16| 15| 14| 13| 12| 11| 10| 9| 8| 7| 6| 5| 4| 3| 2
|
||||
|
||||
----------------------------------------------------------*/
|
||||
#header, #footer {
|
||||
width:100%;
|
||||
}
|
||||
@@ -565,6 +529,14 @@ fieldset { padding:0em; margin: 0 0 0em 0; border: 0px solid #dbdbdb; }
|
||||
label { font-weight:normal; display:block; padding: 0 0 0.3em 0; }
|
||||
label.forcheckbox { margin:0 0 0 .4em; display:inline; }
|
||||
|
||||
|
||||
/*label { color: #747874;
|
||||
display: block;
|
||||
font-size: 12px;
|
||||
font-weight:bold;
|
||||
padding: 0 0 2px;
|
||||
}*/
|
||||
|
||||
form.inline, form.inline fieldset { /* todo: (heskew) need something other than .inline ... */
|
||||
display:inline;
|
||||
}
|
||||
@@ -608,10 +580,12 @@ select, textarea, input.text, input.textMedium, input.text-box {
|
||||
padding:3px;
|
||||
border:1px solid #bdbcbc;
|
||||
font-family:inherit;
|
||||
font-size:inherit;
|
||||
}
|
||||
input.text, input.textMedium, input.text-box {
|
||||
line-height:1.2em;
|
||||
}
|
||||
/*Are we using the two classes below?*/
|
||||
input.text-small {
|
||||
width:4em;
|
||||
}
|
||||
@@ -696,9 +670,8 @@ button.remove:focus::-moz-focus-inner, .remove.button:focus::-moz-focus-inner {
|
||||
|
||||
/*----In ie the first couplet sets the alpha value so 00=transparent and ff=opaque)----*/
|
||||
filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#fff5f5f5', endColorstr='#ffd9d9d9');
|
||||
background: -webkit-gradient(linear, 0 0, 0 100%, from(rgba(245, 245, 245, 1.0)), to (rgba(217, 217, 217, 1.0)));
|
||||
background: -webkit-gradient(linear, 0 0, 0 100%, from(rgba(245, 245, 245, 1.0)), to(rgba(217, 217, 217, 1.0)));
|
||||
background: -moz-linear-gradient(top, rgba(245, 245, 245, 1.0), rgba(217, 217, 217, 1.0));
|
||||
|
||||
|
||||
-webkit-border-radius: 2px;
|
||||
-moz-border-radius: 2px;
|
||||
@@ -732,7 +705,7 @@ button, .button, a.button {
|
||||
|
||||
/*----In ie the first couplet sets the alpha value so 00=transparent and ff=opaque)----*/
|
||||
filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#ff9bb36c', endColorstr='#ff809f43');
|
||||
background: -webkit-gradient(linear, 0 0, 0 100%, from(rgba(110, 127, 69, 1.0)), rgba((106, 123, 66, 1.0)));
|
||||
background: -webkit-gradient(linear, 0 0, 0 100%, from(rgba(155, 179, 108, 1.0)), to(rgba(128, 159, 67, 1.0)));
|
||||
background: -moz-linear-gradient(top, rgba(155, 179, 108, 1.0), rgba(128, 159, 67, 1.0));
|
||||
|
||||
|
||||
@@ -753,8 +726,8 @@ button:hover, .button:hover, a.button:hover {
|
||||
background: #809f43;
|
||||
|
||||
/*CSS3 properties*/
|
||||
filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#ff6e7f45', endColorstr='#ff6a7b42');
|
||||
background: -webkit-gradient(linear, 0 0, 0 100%, from(rgba(110, 127, 69, 1.0)), rgba((106, 123, 66, 1.0)));
|
||||
filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#ff6e7f45', endColorstr='#ff6a7b42');
|
||||
background: -webkit-gradient(linear, 0 0, 0 100%, from(rgba(110, 127, 69, 1.0)), to(rgba(106, 123, 66, 1.0)));
|
||||
background: -moz-linear-gradient(top, rgba(110, 127, 69, 1.0), rgba(106, 123, 66, 1.0));
|
||||
}
|
||||
|
||||
@@ -767,7 +740,7 @@ button:active, .buton:active, a.button:active {
|
||||
/*CSS3 properties*/
|
||||
text-shadow: rgba(0,0,0,.5) 0px 0px 1px;
|
||||
filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#ff9bb36c', endColorstr='#ff809f43');
|
||||
background: -webkit-gradient(linear, 0 0, 0 100%, from(rgba(110, 127, 69, 1.0)), rgba((106, 123, 66, 1.0)));
|
||||
background: -webkit-gradient(linear, 0 0, 0 100%, from(rgba(155, 179, 108, 1.0)), to(rgba(128, 159, 67, 1.0)));
|
||||
background: -moz-linear-gradient(top, rgba(155, 179, 108, 1.0), rgba(128, 159, 67, 1.0));
|
||||
}
|
||||
button:focus::-moz-focus-inner, .button:focus::-moz-focus-inner {
|
||||
@@ -799,10 +772,11 @@ button.link {
|
||||
text-align:right;
|
||||
}
|
||||
.item-properties.actions {
|
||||
margin-bottom:.5em;
|
||||
/*margin-bottom:.5em;
|
||||
margin-top:-5em;
|
||||
overflow:hidden;
|
||||
padding:1px;
|
||||
padding:1px;*/
|
||||
float:right;
|
||||
}
|
||||
.contentItems .actions li {
|
||||
background:inherit;
|
||||
@@ -874,7 +848,6 @@ table.items tbody {
|
||||
}
|
||||
table.items thead, table.items th {
|
||||
background:#f5f5f5;
|
||||
font-weight:700;
|
||||
overflow:hidden;
|
||||
text-align:left;
|
||||
white-space:nowrap;
|
||||
@@ -978,11 +951,7 @@ table.items th, table.items td {
|
||||
/* Pager
|
||||
***************************************************************/
|
||||
|
||||
.pager-footer {
|
||||
width: 500px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
.pager-footer { width: 500px; }
|
||||
.page-size-options {
|
||||
float: left;
|
||||
padding-right: 40px;
|
||||
@@ -1006,7 +975,7 @@ html.dyn #submit-pager, html.dyn .apply-bulk-actions-auto { display:none; }
|
||||
text-shadow: rgba(0,0,0,.2) 0px 0px 1px;
|
||||
/*In ie the first couplet sets the alpha value so 00=transparent and ff=opaque)*/
|
||||
filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr='#fff5f5f5', endColorstr='#ffd9d9d9');
|
||||
background: -webkit-gradient(linear, 0 0, 0 100%, from(rgba(245, 245, 245, 1.0)), rgba((217, 217, 217, 1.0)));
|
||||
background: -webkit-gradient(linear, 0 0, 0 100%, from(rgba(245, 245, 245, 1.0)), to(rgba(217, 217, 217, 1.0)));
|
||||
background: -moz-linear-gradient(top, rgba(245, 245, 245, 1.0), rgba(217, 217, 217, 1.0));
|
||||
|
||||
box-shadow: inset 0px 0px 1px rgba(255, 255, 255, 1.0), 1px 1px 1px rgba(102, 102, 102, 0.1);
|
||||
|
||||
Reference in New Issue
Block a user