mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-15 19:54:57 +08:00
Merge
--HG-- branch : dev
This commit is contained in:
@@ -23,10 +23,10 @@ namespace Orchard.Core.Common.Controllers {
|
||||
var model = new BodyDisplayViewModel { BodyAspect = part, Text = BbcodeReplace(part.Text) };
|
||||
|
||||
return Combined(
|
||||
Services.Authorizer.Authorize(Permissions.ChangeOwner) ? ContentPartTemplate(model, "Parts/ManageWrapperPre").Location("primary", "5") : null,
|
||||
Services.Authorizer.Authorize(Permissions.ChangeOwner) ? ContentPartTemplate(model, "Parts/Manage").Location("primary", "5") : null,
|
||||
Services.Authorizer.Authorize(Permissions.ChangeOwner) ? ContentPartTemplate(model, "Parts/Common.Body.ManageWrapperPre").Location("primary", "5") : null,
|
||||
Services.Authorizer.Authorize(Permissions.ChangeOwner) ? ContentPartTemplate(model, "Parts/Common.Body.Manage").Location("primary", "5") : null,
|
||||
ContentPartTemplate(model, TemplateName, Prefix).LongestMatch(displayType, "Summary", "SummaryAdmin").Location("primary", "5"),
|
||||
Services.Authorizer.Authorize(Permissions.ChangeOwner) ? ContentPartTemplate(model, "Parts/ManageWrapperPost").Location("primary", "5") : null);
|
||||
Services.Authorizer.Authorize(Permissions.ChangeOwner) ? ContentPartTemplate(model, "Parts/Common.Body.ManageWrapperPost").Location("primary", "5") : null);
|
||||
}
|
||||
|
||||
protected override DriverResult Editor(BodyAspect part) {
|
||||
|
@@ -6,6 +6,7 @@ using Orchard.Logging;
|
||||
using Orchard.Mvc.ViewModels;
|
||||
using Orchard.Services;
|
||||
using Orchard.Settings;
|
||||
using Orchard.Themes;
|
||||
|
||||
namespace Orchard.Core.HomePage.Controllers {
|
||||
[HandleError]
|
||||
@@ -20,30 +21,33 @@ namespace Orchard.Core.HomePage.Controllers {
|
||||
public ILogger Logger { get; set; }
|
||||
protected virtual ISite CurrentSite { get; [UsedImplicitly] private set; }
|
||||
|
||||
[Themed]
|
||||
public ActionResult Index() {
|
||||
try {
|
||||
string homepage = CurrentSite.HomePage;
|
||||
var homepage = CurrentSite.HomePage;
|
||||
if (String.IsNullOrEmpty(homepage)) {
|
||||
return View(new BaseViewModel());
|
||||
}
|
||||
|
||||
string[] homePageParameters = homepage.Split(';');
|
||||
var homePageParameters = homepage.Split(';');
|
||||
if (homePageParameters.Length != 2) {
|
||||
return View(new BaseViewModel());
|
||||
}
|
||||
string providerName = homePageParameters[0];
|
||||
int item = Int32.Parse(homePageParameters[1]);
|
||||
var providerName = homePageParameters[0];
|
||||
var item = Int32.Parse(homePageParameters[1]);
|
||||
|
||||
foreach (var provider in _homePageProviders) {
|
||||
if (String.Equals(provider.GetProviderName(), providerName)) {
|
||||
ActionResult result = provider.GetHomePage(item);
|
||||
if (result is ViewResultBase) {
|
||||
ViewResultBase resultBase = result as ViewResultBase;
|
||||
ViewData.Model = resultBase.ViewData.Model;
|
||||
resultBase.ViewData = ViewData;
|
||||
}
|
||||
return result;
|
||||
if (!string.Equals(provider.GetProviderName(), providerName))
|
||||
continue;
|
||||
|
||||
var result = provider.GetHomePage(item);
|
||||
if (result is ViewResultBase) {
|
||||
var resultBase = result as ViewResultBase;
|
||||
ViewData.Model = resultBase.ViewData.Model;
|
||||
resultBase.ViewData = ViewData;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
return View(new BaseViewModel());
|
||||
|
@@ -226,11 +226,12 @@
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Common\Views\DisplayTemplates\Parts\Common.Body.Summary.ascx" />
|
||||
<Content Include="Common\Views\DisplayTemplates\Parts\ManageWrapperPost.ascx" />
|
||||
<Content Include="Common\Views\DisplayTemplates\Parts\ManageWrapperPre.ascx" />
|
||||
<Content Include="Common\Views\DisplayTemplates\Parts\Manage.ascx" />
|
||||
<Content Include="Common\Views\DisplayTemplates\Parts\Common.Body.ManageWrapperPost.ascx" />
|
||||
<Content Include="Common\Views\DisplayTemplates\Parts\Common.Body.ManageWrapperPre.ascx" />
|
||||
<Content Include="Common\Views\DisplayTemplates\Parts\Common.Body.Manage.ascx" />
|
||||
<Content Include="Dashboard\Views\Web.config" />
|
||||
<Content Include="Themes\Styles\special.css" />
|
||||
<Content Include="Themes\Views\NotFound.ascx" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="Scheduling\Controllers\" />
|
||||
|
4
src/Orchard.Web/Core/Themes/Views/NotFound.ascx
Normal file
4
src/Orchard.Web/Core/Themes/Views/NotFound.ascx
Normal file
@@ -0,0 +1,4 @@
|
||||
<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl<object>" %>
|
||||
<%@ Import Namespace="Orchard.Mvc.ViewModels"%>
|
||||
<h1><%=Html.TitleForPage(T("Not found").ToString()) %></h1>
|
||||
<p>TODO: (erikpo) Add friendly message here</p>
|
@@ -1,6 +1,5 @@
|
||||
using System.Web.Mvc;
|
||||
using Orchard.Blogs.Models;
|
||||
using Orchard.Mvc.Extensions;
|
||||
|
||||
namespace Orchard.Blogs.Extensions {
|
||||
public static class UrlHelperExtensions {
|
||||
@@ -21,7 +20,7 @@ namespace Orchard.Blogs.Extensions {
|
||||
}
|
||||
|
||||
public static string BlogRsd(this UrlHelper urlHelper, string blogSlug) {
|
||||
return urlHelper.AbsoluteAction(() => urlHelper.Action("Rsd", "Blog", new { blogSlug, area = "Orchard.Blogs" }));
|
||||
return urlHelper.Action("Rsd", "Blog", new { blogSlug, area = "Orchard.Blogs" });
|
||||
}
|
||||
|
||||
public static string BlogArchiveYear(this UrlHelper urlHelper, string blogSlug, int year) {
|
||||
|
@@ -195,7 +195,7 @@ namespace Orchard.Pages.Controllers {
|
||||
_pageService.Publish(model.Page.Item);
|
||||
Services.Notifier.Information(T("Page has been published"));
|
||||
if (model.PromoteToHomePage) {
|
||||
CurrentSite.HomePage = "PagesHomePageProvider;" + model.Page.Item.Id;
|
||||
CurrentSite.HomePage = "PageHomePageProvider;" + model.Page.Item.Id;
|
||||
}
|
||||
break;
|
||||
case "PublishLater":
|
||||
|
@@ -77,7 +77,7 @@
|
||||
<Compile Include="Security\Authorization.cs" />
|
||||
<Compile Include="Services\IPageService.cs" />
|
||||
<Compile Include="Services\PageService.cs" />
|
||||
<Compile Include="Services\PagesHomePageProvider.cs" />
|
||||
<Compile Include="Services\PageHomePageProvider.cs" />
|
||||
<Compile Include="Services\SlugConstraint.cs">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
|
@@ -1,16 +1,15 @@
|
||||
using System.Web.Mvc;
|
||||
using Orchard.Localization;
|
||||
using Orchard.Mvc.Results;
|
||||
using Orchard.Pages.Models;
|
||||
using Orchard.Pages.ViewModels;
|
||||
using Orchard.Services;
|
||||
|
||||
namespace Orchard.Pages.Services {
|
||||
public class PagesHomePageProvider : IHomePageProvider {
|
||||
public class PageHomePageProvider : IHomePageProvider {
|
||||
private readonly IPageService _pageService;
|
||||
private readonly ISlugConstraint _slugConstraint;
|
||||
|
||||
public PagesHomePageProvider(IOrchardServices services, IPageService pageService, ISlugConstraint slugConstraint) {
|
||||
public PageHomePageProvider(IOrchardServices services, IPageService pageService, ISlugConstraint slugConstraint) {
|
||||
Services = services;
|
||||
_slugConstraint = slugConstraint;
|
||||
_pageService = pageService;
|
||||
@@ -23,11 +22,14 @@ namespace Orchard.Pages.Services {
|
||||
#region Implementation of IHomePageProvider
|
||||
|
||||
public string GetProviderName() {
|
||||
return "PagesHomePageProvider";
|
||||
return "PageHomePageProvider";
|
||||
}
|
||||
|
||||
public ActionResult GetHomePage(int itemId) {
|
||||
Page page = _pageService.Get(itemId);
|
||||
var page = _pageService.Get(itemId);
|
||||
if (page == null)
|
||||
return new NotFoundResult();
|
||||
|
||||
var correctedSlug = _slugConstraint.LookupPublishedSlug(page.Slug);
|
||||
if (correctedSlug == null)
|
||||
return new NotFoundResult();
|
@@ -103,14 +103,14 @@ namespace Orchard.Setup.Controllers {
|
||||
var contentManager = finiteEnvironment.Resolve<IContentManager>();
|
||||
|
||||
// create home page as a CMS page
|
||||
var page = contentManager.Create("page");
|
||||
var page = contentManager.Create("page", VersionOptions.Draft);
|
||||
page.As<BodyAspect>().Text = "<p>Welcome to Orchard!</p><p>Congratulations, you've successfully set-up your Orchard site.</p><p>This is the home page of your new site. We've taken the liberty to write here about a few things you could look at next in order to get familiar with the application. Once you feel confident you don't need this anymore, just click <a href=\"Admin/Pages/Edit/3\">Edit</a> to go into edit mode and replace this with whatever you want on your home page to make it your own.</p><p>One thing you could do (but you don't have to) is go into <a href=\"Admin/Settings\">Manage Settings</a> (follow the <a href=\"Admin\">Admin</a> link and then look for it under \"Settings\" in the menu on the left) and check that everything is configured the way you want.</p><p>You probably want to make the site your own. One of the ways you can do that is by clicking <a href=\"Admin/Themes\">Manage Themes</a> in the admin menu. A theme is a packaged look and feel that affects the whole site. We have installed a few themes already, but you'll also be able to browse through an online gallery of themes created by other users of Orchard.</p><p>Next, you can start playing with the content types that we installed. For example, go ahead and click <a href=\"Admin/Pages/Create\">Add New Page</a> in the admin menu and create an \"about\" page. Then, add it to the navigation menu by going to <a href=\"Admin/Navigation\">Manage Menu</a>. You can also click <a href=\"Admin/Blogs/Create\">Add New Blog</a> and start posting by clicking \"Add New Post\".</p><p>Finally, Orchard has been designed to be extended. It comes with a few built-in modules such as pages and blogs or themes. You can install new themes by going to <a href=\"Admin/Themes\">Manage Themes</a> and clicking <a href=\"Admin/Themes/Install\">Install a new Theme</a>. Like for themes, modules are created by other users of Orchard just like you so if you feel up to it, please <a href=\"http://www.orchardproject.net/\">consider participating</a>.</p><p>--The Orchard Crew</p>";
|
||||
page.As<RoutableAspect>().Slug = "home";
|
||||
page.As<RoutableAspect>().Title = T("Home").ToString();
|
||||
page.As<HasComments>().CommentsShown = false;
|
||||
page.As<CommonAspect>().Owner = user;
|
||||
contentManager.Publish(page);
|
||||
siteSettings.Record.HomePage = "PagesHomePageProvider;" + page.Id;
|
||||
siteSettings.Record.HomePage = "PageHomePageProvider;" + page.Id;
|
||||
|
||||
// add a menu item for the shiny new home page
|
||||
var menuItem = contentManager.Create("menuitem");
|
||||
|
@@ -0,0 +1,36 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" >
|
||||
<head>
|
||||
<title>{#addmedia_dlg.title}</title>
|
||||
<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
|
||||
<script type="text/javascript" src="js/addmedia.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<form action="/Admin/Media/Add" enctype="multipart/form-data" method="post">
|
||||
<div class="tabs">
|
||||
<ul>
|
||||
<li id="general_tab" class="current"><span><a href="#general_tab">{#addmedia_dlg.title}</a></span></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="panel_wrapper">
|
||||
<table border="0" cellpadding="4" cellspacing="0">
|
||||
<tr>
|
||||
<td class="nowrap"><label for="pageTitle">{#addmedia_dlg.path_label}</label></td>
|
||||
<td><input id="MediaItemPath" name="MediaItemPath" type="file" class="text" value="Browse" size="64"/></td>
|
||||
</tr>
|
||||
</table>
|
||||
<input type="hidden" id="FolderName" name="FolderName" value="foo" />
|
||||
<input type="hidden" id="MediaPath" name="MediaPath" value="foo" />
|
||||
</div>
|
||||
<div class="mceActionPanel">
|
||||
<div style="float:left">
|
||||
<input name="__RequestVerificationToken" type="hidden" value="7lDAM51YOmke7sRNx/GFjVMKaPf8QZNh7qZiEdQyNQXKKbw1DYehU/g6jNcAx6I3OGD/KDuaNlmyNIeQ/69CFpDizom9bROgo5keYyj+HcAKHtjQTRV5kNJm6SztNLwO" />
|
||||
<input type="submit" name="insert" value="{#insert}" id="insert" />
|
||||
</div>
|
||||
<div style="float:right">
|
||||
<input type="button" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" id="cancel" />
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
@@ -0,0 +1,68 @@
|
||||
(function() {
|
||||
// Load plugin specific language pack
|
||||
tinymce.PluginManager.requireLangPack('dlg');
|
||||
|
||||
tinymce.create('tinymce.plugins.Orchard.AddMedia', {
|
||||
/**
|
||||
* Initializes the plugin, this will be executed after the plugin has been created.
|
||||
* This call is done before the editor instance has finished it's initialization so use the onInit event
|
||||
* of the editor instance to intercept that event.
|
||||
*
|
||||
* @param {tinymce.Editor} ed Editor instance that the plugin is initialized in.
|
||||
* @param {string} url Absolute URL to where the plugin is located.
|
||||
*/
|
||||
init: function(ed, url) {
|
||||
// Register the command so that it can be invoked by using tinyMCE.activeEditor.execCommand('mceExample');
|
||||
ed.addCommand('mceAddMedia', function() {
|
||||
ed.windowManager.open({
|
||||
file: url + '/addmedia.htm',
|
||||
width: 480 + parseInt(ed.getLang('addmedia.delta_width', 0)),
|
||||
height: 110 + parseInt(ed.getLang('addmedia.delta_height', 0)),
|
||||
inline: 1
|
||||
}, {
|
||||
plugin_url: url, // Plugin absolute URL
|
||||
});
|
||||
});
|
||||
|
||||
// Register example button
|
||||
ed.addButton('addmedia', {
|
||||
title: 'addmedia_desc',
|
||||
cmd: 'mceAddMedia',
|
||||
image: url + '/img/picture_add.png'
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* Creates control instances based in the incomming name. This method is normally not
|
||||
* needed since the addButton method of the tinymce.Editor class is a more easy way of adding buttons
|
||||
* but you sometimes need to create more complex controls like listboxes, split buttons etc then this
|
||||
* method can be used to create those.
|
||||
*
|
||||
* @param {String} n Name of the control to create.
|
||||
* @param {tinymce.ControlManager} cm Control manager to use inorder to create new control.
|
||||
* @return {tinymce.ui.Control} New control instance or null if no control was created.
|
||||
*/
|
||||
createControl: function(n, cm) {
|
||||
return null;
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns information about the plugin as a name/value array.
|
||||
* The current keys are longname, author, authorurl, infourl and version.
|
||||
*
|
||||
* @return {Object} Name/value array containing information about the plugin.
|
||||
*/
|
||||
getInfo: function() {
|
||||
return {
|
||||
longname: 'Orchard AddMedia Plugin',
|
||||
author: 'Nathan Heskew',
|
||||
authorurl: 'http://orchardproject.net',
|
||||
infourl: 'http://orchardproject.net',
|
||||
version: '0.1'
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
// Register plugin
|
||||
tinymce.PluginManager.add('addmedia', tinymce.plugins.Orchard.AddMedia);
|
||||
})();
|
Binary file not shown.
After Width: | Height: | Size: 750 B |
@@ -0,0 +1 @@
|
||||
tinyMCEPopup.requireLangPack();
|
@@ -0,0 +1,4 @@
|
||||
tinyMCE.addI18n('en.addmedia_dlg',{
|
||||
title:"Add Media",
|
||||
path_label:"Media File Path"
|
||||
});
|
@@ -135,6 +135,17 @@
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Scripts\plugins\addmedia\addmedia.htm" />
|
||||
<Content Include="Scripts\plugins\addmedia\editor_plugin.js" />
|
||||
<Content Include="Scripts\plugins\addmedia\img\picture_add.png" />
|
||||
<Content Include="Scripts\plugins\addmedia\js\addmedia.js" />
|
||||
<Content Include="Scripts\plugins\addmedia\langs\en_dlg.js" />
|
||||
<Content Include="Scripts\plugins\searchreplace\css\searchreplace.css" />
|
||||
<Content Include="Scripts\plugins\searchreplace\editor_plugin.js" />
|
||||
<Content Include="Scripts\plugins\searchreplace\editor_plugin_src.js" />
|
||||
<Content Include="Scripts\plugins\searchreplace\js\searchreplace.js" />
|
||||
<Content Include="Scripts\plugins\searchreplace\langs\en_dlg.js" />
|
||||
<Content Include="Scripts\plugins\searchreplace\searchreplace.htm" />
|
||||
<Content Include="Web.config" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
|
@@ -7,10 +7,10 @@
|
||||
theme: "advanced",
|
||||
mode: "specific_textareas",
|
||||
editor_selector: "html",
|
||||
plugins: "fullscreen,autoresize,searchreplace",
|
||||
plugins: "fullscreen,autoresize,searchreplace,addmedia",
|
||||
theme_advanced_toolbar_location: "top",
|
||||
theme_advanced_toolbar_align: "left",
|
||||
theme_advanced_buttons1: "search,replace,|,cut,copy,paste,|,undo,redo,|,image,|,link,unlink,charmap,emoticon,codeblock,|,bold,italic,|,numlist,bullist,formatselect,|,code,fullscreen",
|
||||
theme_advanced_buttons1: "search,replace,|,cut,copy,paste,|,undo,redo,|,image,addmedia,|,link,unlink,charmap,emoticon,codeblock,|,bold,italic,|,numlist,bullist,formatselect,|,code,fullscreen",
|
||||
theme_advanced_buttons2: "",
|
||||
theme_advanced_buttons3: ""
|
||||
});
|
||||
|
@@ -53,7 +53,7 @@ namespace Orchard.Mvc.ViewEngines {
|
||||
|
||||
|
||||
var modules = _extensionManager.ActiveExtensions()
|
||||
.Where(x => x.Descriptor.ExtensionType == "Module" || x.Descriptor.ExtensionType == "Area");
|
||||
.Where(x => x.Descriptor.ExtensionType == "Module");
|
||||
|
||||
var moduleLocations = modules.Select(x => Path.Combine(x.Descriptor.Location, x.Descriptor.Name));
|
||||
var moduleViewEngines = _viewEngineProviders
|
||||
|
Reference in New Issue
Block a user