--HG--
branch : dev
This commit is contained in:
Renaud Paquay
2010-10-17 20:47:11 -07:00
194 changed files with 14544 additions and 10905 deletions

View File

@@ -15,7 +15,13 @@
</sectionGroup>
</configSections>
<appSettings/>
<appSettings>
<!--
This is a workaround. Theres a known issue that causes Forms Authentication to always redirect unauthenticated users
to ~/Account/Login, ignoring the forms authentication setting used in Web.config.
-->
<add key="autoFormsAuthentication" value="false" />
</appSettings>
<system.diagnostics configSource="Config\Diagnostics.config"/>
<system.web.webPages.razor>

View File

@@ -18,7 +18,7 @@ namespace Orchard.Specs.Bindings {
webApp.GivenIHaveACleanSiteWith(TableData(
new { extension = "module", names = "Orchard.Setup, Orchard.Modules, Orchard.Packaging, Orchard.Themes, Orchard.Widgets, Orchard.Users, Orchard.Roles, Orchard.Comments, Orchard.jQuery, Orchard.Tags, TinyMce" },
new { extension = "core", names = "Common, Dashboard, Feeds, HomePage, Navigation, Contents, ContentsLocation, PublishLater, Routable, Scheduling, Settings, Shapes, XmlRpc" },
new { extension = "theme", names = "SafeMode, Classic" }));
new { extension = "theme", names = "SafeMode, TheAdmin, TheThemeMachine" }));
webApp.WhenIGoTo("Setup");

View File

@@ -41,7 +41,7 @@ Scenario: Calling setup on a brand new install
| extension | names |
| module | Orchard.Setup, Orchard.Users, Orchard.Roles, Orchard.Comments, Orchard.Themes, Orchard.Modules, Orchard.Widgets, Orchard.jQuery, TinyMce |
| core | Common, Contents, ContentsLocation, Dashboard, Feeds, HomePage, Navigation, Routable, PublishLater, Scheduling, Settings, Shapes, XmlRpc |
| theme | SafeMode, Classic |
| theme | SafeMode, TheThemeMachine |
And I am on "/Setup"
When I fill in
| name | value |

View File

@@ -184,7 +184,7 @@ this.ScenarioSetup(scenarioInfo);
"ble, PublishLater, Scheduling, Settings, Shapes, XmlRpc"});
table4.AddRow(new string[] {
"theme",
"SafeMode, Classic"});
"SafeMode, TheThemeMachine"});
#line 40
testRunner.Given("I have a clean site with", ((string)(null)), table4);
#line 45

View File

@@ -48,8 +48,11 @@ namespace Orchard.Tests.Modules {
[TearDown]
public void Cleanup() {
_container.Dispose();
_session.Close();
if(_container != null)
_container.Dispose();
if(_session != null)
_session.Close();
}
public abstract void Register(ContainerBuilder builder);

View File

@@ -5,10 +5,15 @@ using Orchard.Utility.Extensions;
namespace Orchard.Tests.Utility.Extensions {
[TestFixture]
public class StringExtensionsTests {
[Test]
public void HtmlClassify_ValidReallySimpleClassNameReturnsSame() {
const string toClassify = "someclass";
Assert.That(toClassify.HtmlClassify(), Is.StringMatching(toClassify));
}
[Test]
public void HtmlClassify_ValidSimpleClassNameReturnsSame() {
const string toClassify = "some-class";
Assert.That(toClassify.HtmlClassify(), Is.StringMatching("some-class"));
Assert.That(toClassify.HtmlClassify(), Is.StringMatching(toClassify));
}
[Test]
public void HtmlClassify_SimpleStringReturnsSimpleClassName() {
@@ -26,6 +31,16 @@ namespace Orchard.Tests.Utility.Extensions {
Assert.That(toClassify.HtmlClassify(), Is.StringMatching(""));
}
[Test]
public void HtmlClassify_LowerCamelCasedStringReturnsLowerHyphenatedClassName() {
const string toClassify = "camelCased";
Assert.That(toClassify.HtmlClassify(), Is.StringMatching("camel-cased"));
}
[Test]
public void HtmlClassify_PascalCasedStringReturnsLowerHyphenatedClassName() {
const string toClassify = "PascalCased";
Assert.That(toClassify.HtmlClassify(), Is.StringMatching("pascal-cased"));
}
[Test]
public void OrDefault_ReturnsDefaultForNull() {
const string s = null;
var def = new LocalizedString("test");

View File

@@ -390,10 +390,10 @@
<Content Include="Dashboard\Views\Helper\Index.cshtml" />
<None Include="Common\Placement.info" />
<None Include="Contents\Placement.info" />
<None Include="Contents\Views\Content.ControlWrapper.cshtml" />
<Content Include="Contents\Views\Content.ControlWrapper.cshtml" />
<None Include="Localization\Placement.info" />
<None Include="PublishLater\Placement.info" />
<None Include="Routable\Views\Parts\RoutableTitle.cshtml" />
<Content Include="Routable\Views\Parts\RoutableTitle.cshtml" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />

View File

@@ -12,6 +12,7 @@ using Orchard.Settings;
using Orchard.UI;
using Orchard.UI.Resources;
using Orchard.UI.Zones;
using Orchard.Utility.Extensions;
// ReSharper disable InconsistentNaming
@@ -237,27 +238,29 @@ namespace Orchard.Core.Shapes {
IEnumerable<string> ItemClasses,
IDictionary<string, string> ItemAttributes) {
if (Items == null)
return;
var listTagName = string.IsNullOrEmpty(Tag) ? "ul" : Tag;
const string itemTagName = "li";
var listTag = GetTagBuilder(listTagName, Id, Classes, Attributes);
Output.Write(listTag.ToString(TagRenderMode.StartTag));
if (Items != null) {
var count = Items.Count();
var index = 0;
foreach (var item in Items) {
var itemTag = GetTagBuilder(itemTagName, null, ItemClasses, ItemAttributes);
if (index == 0)
itemTag.AddCssClass("first");
if (index == count - 1)
itemTag.AddCssClass("last");
Output.Write(itemTag.ToString(TagRenderMode.StartTag));
Output.Write(Display(item));
Output.Write(itemTag.ToString(TagRenderMode.EndTag));
++index;
}
var count = Items.Count();
var index = 0;
foreach (var item in Items) {
var itemTag = GetTagBuilder(itemTagName, null, ItemClasses, ItemAttributes);
if (index == 0)
itemTag.AddCssClass("first");
if (index == count - 1)
itemTag.AddCssClass("last");
Output.Write(itemTag.ToString(TagRenderMode.StartTag));
Output.Write(Display(item));
Output.Write(itemTag.ToString(TagRenderMode.EndTag));
++index;
}
Output.Write(listTag.ToString(TagRenderMode.EndTag));
}

View File

@@ -109,7 +109,6 @@
<Compile Include="Services\IBlogService.cs" />
<Compile Include="Services\XmlRpcHandler.cs" />
<Compile Include="RemoteBlogPublishingShapes.cs" />
<Compile Include="Shapes.cs" />
</ItemGroup>
<ItemGroup>
<Content Include="Content\Admin\images\draft.gif" />
@@ -162,16 +161,16 @@
<SubType>Designer</SubType>
</None>
<Content Include="Views\RemoteBlogPublishing.cshtml" />
<None Include="Views\Parts\Blogs.BlogArchives.cshtml" />
<None Include="Views\EditorTemplates\Parts\Blogs.RecentBlogPosts.cshtml" />
<None Include="Views\EditorTemplates\Parts\Blogs.BlogArchives.cshtml" />
<None Include="Views\Items\Content-Blog.DetailAdmin.cshtml" />
<None Include="Views\Items\Content-Blog.Editor.cshtml" />
<None Include="Views\Items\Content-BlogPost.Editor.cshtml" />
<None Include="Views\Items\Content-BlogPost.SummaryAdmin.cshtml" />
<None Include="Views\Parts\Blogs.BlogPost.List.cshtml" />
<None Include="Views\Parts\Blogs.Blog.Pager.cshtml" />
<None Include="Views\Parts\Blogs.RecentBlogPosts.cshtml" />
<Content Include="Views\Parts\Blogs.BlogArchives.cshtml" />
<Content Include="Views\EditorTemplates\Parts\Blogs.RecentBlogPosts.cshtml" />
<Content Include="Views\EditorTemplates\Parts\Blogs.BlogArchives.cshtml" />
<Content Include="Views\Items\Content-Blog.DetailAdmin.cshtml" />
<Content Include="Views\Items\Content-Blog.Editor.cshtml" />
<Content Include="Views\Items\Content-BlogPost.Editor.cshtml" />
<Content Include="Views\Items\Content-BlogPost.SummaryAdmin.cshtml" />
<Content Include="Views\Parts\Blogs.BlogPost.List.cshtml" />
<Content Include="Views\Parts\Blogs.Blog.Pager.cshtml" />
<Content Include="Views\Parts\Blogs.RecentBlogPosts.cshtml" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />

View File

@@ -1,22 +0,0 @@
//using Orchard.ContentManagement;
//using Orchard.DisplayManagement.Descriptors;
//namespace Orchard.Blogs {
// public class Shapes : IShapeTableProvider {
// public void Discover(ShapeTableBuilder builder) {
// builder.Describe("Items_Content__Blog")
// .OnCreated(created => {
// var blog = created.Shape;
// blog.Content.Add(created.New.Parts_Blogs_BlogPost_List(ContentPart: blog.ContentItem, ContentItems: blog.));
// })
// .OnDisplaying(displaying => {
// ContentItem contentItem = displaying.Shape.ContentItem;
// if (contentItem != null) {
// var zoneName = contentItem.As<WidgetPart>().Zone;
// displaying.ShapeMetadata.Alternates.Add("Items_Widget__" + contentItem.ContentType);
// displaying.ShapeMetadata.Alternates.Add("Items_Widget__" + zoneName);
// }
// });
// }
// }
//}

View File

@@ -1,5 +1,6 @@
@{
IEnumerable<object> blogPosts = Model.ContentItems;
Model.ContentItems.Classes.Add("content-items");
}
@Display(Model.ContentItems)
@if (blogPosts == null || blogPosts.Count() < 1) {

View File

@@ -108,9 +108,9 @@
<ItemGroup>
<Content Include="Views\DisplayTemplates\Parts\Experimental.ShowDebugLink.ascx" />
<Content Include="Views\DumpShapeTable.cshtml" />
<None Include="Views\HackScript.cshtml" />
<None Include="Views\HackStyle.cshtml" />
<None Include="Views\ThinBorder.cshtml" />
<Content Include="Views\HackScript.cshtml" />
<Content Include="Views\HackStyle.cshtml" />
<Content Include="Views\ThinBorder.cshtml" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Orchard\Orchard.Framework.csproj">

View File

@@ -76,7 +76,7 @@
</ItemGroup>
<ItemGroup>
<Content Include="Module.txt" />
<None Include="Views\DatabaseUpdate\Index.cshtml" />
<Content Include="Views\DatabaseUpdate\Index.cshtml" />
<Content Include="Web.config" />
<Content Include="Views\Web.config" />
</ItemGroup>

View File

@@ -109,21 +109,19 @@
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="Views\Admin\AddLayer.cshtml" />
<None Include="Views\Admin\AddWidget.cshtml" />
<None Include="Views\Admin\EditWidget.cshtml" />
<None Include="Views\Admin\EditLayer.cshtml">
<SubType>Designer</SubType>
</None>
<None Include="Views\Admin\Index.cshtml" />
<None Include="Views\Items\Widget.Edit.cshtml" />
<None Include="Views\Items\Widget.cshtml" />
<None Include="Views\Widget.ControlWrapper.cshtml" />
<None Include="Views\EditorTemplates\Parts\Widgets.WidgetPart.cshtml" />
<None Include="Views\EditorTemplates\Parts\Widgets.LayerPart.cshtml" />
<None Include="Views\EditorTemplates\Parts\Widgets.WidgetBagPart.cshtml" />
<Content Include="Views\Admin\AddLayer.cshtml" />
<Content Include="Views\Admin\AddWidget.cshtml" />
<Content Include="Views\Admin\EditWidget.cshtml" />
<Content Include="Views\Admin\EditLayer.cshtml" />
<Content Include="Views\Admin\Index.cshtml" />
<Content Include="Views\Items\Widget.Edit.cshtml" />
<Content Include="Views\Items\Widget.cshtml" />
<Content Include="Views\Widget.ControlWrapper.cshtml" />
<Content Include="Views\EditorTemplates\Parts\Widgets.WidgetPart.cshtml" />
<Content Include="Views\EditorTemplates\Parts\Widgets.LayerPart.cshtml" />
<Content Include="Views\EditorTemplates\Parts\Widgets.WidgetBagPart.cshtml" />
<Content Include="Views\Items\Content-WidgetPage.cshtml" />
<None Include="Views\Widget.Wrapper.cshtml" />
<Content Include="Views\Widget.Wrapper.cshtml" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />

View File

@@ -18,7 +18,7 @@ Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
This license, the Lesser General Public License, applies to some
specially designated software modules--typically libraries--of the
specially designated software packages--typically libraries--of the
Free Software Foundation and other authors who decide to use it. You
can use it too, but we suggest you first think carefully about whether
this license or the ordinary General Public License is the better

View File

@@ -1 +1 @@
(function(){tinymce.create("tinymce.plugins.AutoResizePlugin",{init:function(a,c){var d=this;if(a.getParam("fullscreen_is_enabled")){return}function b(){var h=a.getDoc(),e=h.body,j=h.documentElement,g=tinymce.DOM,i=d.autoresize_min_height,f;f=tinymce.isIE?e.scrollHeight:j.offsetHeight;if(f>d.autoresize_min_height){i=f}g.setStyle(g.get(a.id+"_ifr"),"height",i+"px");if(d.throbbing){a.setProgressState(false);a.setProgressState(true)}}d.editor=a;d.autoresize_min_height=a.getElement().offsetHeight;a.onInit.add(function(f,e){f.setProgressState(true);d.throbbing=true;f.getBody().style.overflowY="hidden"});a.onChange.add(b);a.onSetContent.add(b);a.onPaste.add(b);a.onKeyUp.add(b);a.onPostRender.add(b);a.onLoadContent.add(function(f,e){b();setTimeout(function(){b();f.setProgressState(false);d.throbbing=false},1250)});a.addCommand("mceAutoResize",b)},getInfo:function(){return{longname:"Auto Resize",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autoresize",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("autoresize",tinymce.plugins.AutoResizePlugin)})();
(function(){tinymce.create("tinymce.plugins.AutoResizePlugin",{init:function(a,c){var d=this;if(a.getParam("fullscreen_is_enabled")){return}function b(){var h=a.getDoc(),e=h.body,j=h.documentElement,g=tinymce.DOM,i=d.autoresize_min_height,f;f=tinymce.isIE?e.scrollHeight:j.offsetHeight;if(f>d.autoresize_min_height){i=f}g.setStyle(g.get(a.id+"_ifr"),"height",i+"px");if(d.throbbing){a.setProgressState(false);a.setProgressState(true)}}d.editor=a;d.autoresize_min_height=a.getElement().offsetHeight;a.onChange.add(b);a.onSetContent.add(b);a.onPaste.add(b);a.onKeyUp.add(b);a.onPostRender.add(b);if(a.getParam("autoresize_on_init",true)){a.onInit.add(function(f,e){f.setProgressState(true);d.throbbing=true;f.getBody().style.overflowY="hidden"});a.onLoadContent.add(function(f,e){b();setTimeout(function(){b();f.setProgressState(false);d.throbbing=false},1250)})}a.addCommand("mceAutoResize",b)},getInfo:function(){return{longname:"Auto Resize",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autoresize",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("autoresize",tinymce.plugins.AutoResizePlugin)})();

View File

@@ -1,8 +1,11 @@
/**
* $Id: editor_plugin_src.js 539 2008-01-14 19:08:58Z spocke $
* editor_plugin_src.js
*
* @author Moxiecode
* @copyright Copyright <20> 2004-2008, Moxiecode Systems AB, All rights reserved.
* Copyright 2009, Moxiecode Systems AB
* Released under LGPL License.
*
* License: http://tinymce.moxiecode.com/license
* Contributing: http://tinymce.moxiecode.com/contributing
*/
(function() {
@@ -56,16 +59,6 @@
// Define minimum height
t.autoresize_min_height = ed.getElement().offsetHeight;
// Things to do when the editor is ready
ed.onInit.add(function(ed, l) {
// Show throbber until content area is resized properly
ed.setProgressState(true);
t.throbbing = true;
// Hide scrollbars
ed.getBody().style.overflowY = "hidden";
});
// Add appropriate listeners for resizing content area
ed.onChange.add(resize);
ed.onSetContent.add(resize);
@@ -73,20 +66,32 @@
ed.onKeyUp.add(resize);
ed.onPostRender.add(resize);
ed.onLoadContent.add(function(ed, l) {
resize();
if (ed.getParam('autoresize_on_init', true)) {
// Things to do when the editor is ready
ed.onInit.add(function(ed, l) {
// Show throbber until content area is resized properly
ed.setProgressState(true);
t.throbbing = true;
// Because the content area resizes when its content CSS loads,
// and we can't easily add a listener to its onload event,
// we'll just trigger a resize after a short loading period
setTimeout(function() {
// Hide scrollbars
ed.getBody().style.overflowY = "hidden";
});
ed.onLoadContent.add(function(ed, l) {
resize();
// Disable throbber
ed.setProgressState(false);
t.throbbing = false;
}, 1250);
});
// Because the content area resizes when its content CSS loads,
// and we can't easily add a listener to its onload event,
// we'll just trigger a resize after a short loading period
setTimeout(function() {
resize();
// Disable throbber
ed.setProgressState(false);
t.throbbing = false;
}, 1250);
});
}
// Register the command so that it can be invoked by using tinyMCE.activeEditor.execCommand('mceExample');
ed.addCommand('mceAutoResize', resize);

View File

@@ -1 +1 @@
(function(){var a=tinymce.DOM;tinymce.create("tinymce.plugins.FullScreenPlugin",{init:function(c,d){var e=this,f={},b;e.editor=c;c.addCommand("mceFullScreen",function(){var h,i=a.doc.documentElement;if(c.getParam("fullscreen_is_enabled")){if(c.getParam("fullscreen_new_window")){closeFullscreen()}else{a.win.setTimeout(function(){tinymce.dom.Event.remove(a.win,"resize",e.resizeFunc);tinyMCE.get(c.getParam("fullscreen_editor_id")).setContent(c.getContent({format:"raw"}),{format:"raw"});tinyMCE.remove(c);a.remove("mce_fullscreen_container");i.style.overflow=c.getParam("fullscreen_html_overflow");a.setStyle(a.doc.body,"overflow",c.getParam("fullscreen_overflow"));a.win.scrollTo(c.getParam("fullscreen_scrollx"),c.getParam("fullscreen_scrolly"));tinyMCE.settings=tinyMCE.oldSettings},10)}return}if(c.getParam("fullscreen_new_window")){h=a.win.open(d+"/fullscreen.htm","mceFullScreenPopup","fullscreen=yes,menubar=no,toolbar=no,scrollbars=no,resizable=yes,left=0,top=0,width="+screen.availWidth+",height="+screen.availHeight);try{h.resizeTo(screen.availWidth,screen.availHeight)}catch(g){}}else{tinyMCE.oldSettings=tinyMCE.settings;f.fullscreen_overflow=a.getStyle(a.doc.body,"overflow",1)||"auto";f.fullscreen_html_overflow=a.getStyle(i,"overflow",1);b=a.getViewPort();f.fullscreen_scrollx=b.x;f.fullscreen_scrolly=b.y;if(tinymce.isOpera&&f.fullscreen_overflow=="visible"){f.fullscreen_overflow="auto"}if(tinymce.isIE&&f.fullscreen_overflow=="scroll"){f.fullscreen_overflow="auto"}if(tinymce.isIE&&(f.fullscreen_html_overflow=="visible"||f.fullscreen_html_overflow=="scroll")){f.fullscreen_html_overflow="auto"}if(f.fullscreen_overflow=="0px"){f.fullscreen_overflow=""}a.setStyle(a.doc.body,"overflow","hidden");i.style.overflow="hidden";b=a.getViewPort();a.win.scrollTo(0,0);if(tinymce.isIE){b.h-=1}n=a.add(a.doc.body,"div",{id:"mce_fullscreen_container",style:"position:"+(tinymce.isIE6||(tinymce.isIE&&!a.boxModel)?"absolute":"fixed")+";top:0;left:0;width:"+b.w+"px;height:"+b.h+"px;z-index:200000;"});a.add(n,"div",{id:"mce_fullscreen"});tinymce.each(c.settings,function(j,k){f[k]=j});f.id="mce_fullscreen";f.width=n.clientWidth;f.height=n.clientHeight-15;f.fullscreen_is_enabled=true;f.fullscreen_editor_id=c.id;f.theme_advanced_resizing=false;f.save_onsavecallback=function(){c.setContent(tinyMCE.get(f.id).getContent({format:"raw"}),{format:"raw"});c.execCommand("mceSave")};tinymce.each(c.getParam("fullscreen_settings"),function(l,j){f[j]=l});if(f.theme_advanced_toolbar_location==="external"){f.theme_advanced_toolbar_location="top"}e.fullscreenEditor=new tinymce.Editor("mce_fullscreen",f);e.fullscreenEditor.onInit.add(function(){e.fullscreenEditor.setContent(c.getContent());e.fullscreenEditor.focus()});e.fullscreenEditor.render();tinyMCE.add(e.fullscreenEditor);e.fullscreenElement=new tinymce.dom.Element("mce_fullscreen_container");e.fullscreenElement.update();e.resizeFunc=tinymce.dom.Event.add(a.win,"resize",function(){var j=tinymce.DOM.getViewPort();e.fullscreenEditor.theme.resizeTo(j.w,j.h)})}});c.addButton("fullscreen",{title:"fullscreen.desc",cmd:"mceFullScreen"});c.onNodeChange.add(function(h,g){g.setActive("fullscreen",h.getParam("fullscreen_is_enabled"))})},getInfo:function(){return{longname:"Fullscreen",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullscreen",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("fullscreen",tinymce.plugins.FullScreenPlugin)})();
(function(){var a=tinymce.DOM;tinymce.create("tinymce.plugins.FullScreenPlugin",{init:function(c,d){var e=this,f={},b;e.editor=c;c.addCommand("mceFullScreen",function(){var h,i=a.doc.documentElement;if(c.getParam("fullscreen_is_enabled")){if(c.getParam("fullscreen_new_window")){closeFullscreen()}else{a.win.setTimeout(function(){tinymce.dom.Event.remove(a.win,"resize",e.resizeFunc);tinyMCE.get(c.getParam("fullscreen_editor_id")).setContent(c.getContent({format:"raw"}),{format:"raw"});tinyMCE.remove(c);a.remove("mce_fullscreen_container");i.style.overflow=c.getParam("fullscreen_html_overflow");a.setStyle(a.doc.body,"overflow",c.getParam("fullscreen_overflow"));a.win.scrollTo(c.getParam("fullscreen_scrollx"),c.getParam("fullscreen_scrolly"));tinyMCE.settings=tinyMCE.oldSettings},10)}return}if(c.getParam("fullscreen_new_window")){h=a.win.open(d+"/fullscreen.htm","mceFullScreenPopup","fullscreen=yes,menubar=no,toolbar=no,scrollbars=no,resizable=yes,left=0,top=0,width="+screen.availWidth+",height="+screen.availHeight);try{h.resizeTo(screen.availWidth,screen.availHeight)}catch(g){}}else{tinyMCE.oldSettings=tinyMCE.settings;f.fullscreen_overflow=a.getStyle(a.doc.body,"overflow",1)||"auto";f.fullscreen_html_overflow=a.getStyle(i,"overflow",1);b=a.getViewPort();f.fullscreen_scrollx=b.x;f.fullscreen_scrolly=b.y;if(tinymce.isOpera&&f.fullscreen_overflow=="visible"){f.fullscreen_overflow="auto"}if(tinymce.isIE&&f.fullscreen_overflow=="scroll"){f.fullscreen_overflow="auto"}if(tinymce.isIE&&(f.fullscreen_html_overflow=="visible"||f.fullscreen_html_overflow=="scroll")){f.fullscreen_html_overflow="auto"}if(f.fullscreen_overflow=="0px"){f.fullscreen_overflow=""}a.setStyle(a.doc.body,"overflow","hidden");i.style.overflow="hidden";b=a.getViewPort();a.win.scrollTo(0,0);if(tinymce.isIE){b.h-=1}n=a.add(a.doc.body,"div",{id:"mce_fullscreen_container",style:"position:"+(tinymce.isIE6||(tinymce.isIE&&!a.boxModel)?"absolute":"fixed")+";top:0;left:0;width:"+b.w+"px;height:"+b.h+"px;z-index:200000;"});a.add(n,"div",{id:"mce_fullscreen"});tinymce.each(c.settings,function(j,k){f[k]=j});f.id="mce_fullscreen";f.width=n.clientWidth;f.height=n.clientHeight-15;f.fullscreen_is_enabled=true;f.fullscreen_editor_id=c.id;f.theme_advanced_resizing=false;f.save_onsavecallback=function(){c.setContent(tinyMCE.get(f.id).getContent({format:"raw"}),{format:"raw"});c.execCommand("mceSave")};tinymce.each(c.getParam("fullscreen_settings"),function(l,j){f[j]=l});if(f.theme_advanced_toolbar_location==="external"){f.theme_advanced_toolbar_location="top"}e.fullscreenEditor=new tinymce.Editor("mce_fullscreen",f);e.fullscreenEditor.onInit.add(function(){e.fullscreenEditor.setContent(c.getContent());e.fullscreenEditor.focus()});e.fullscreenEditor.render();e.fullscreenElement=new tinymce.dom.Element("mce_fullscreen_container");e.fullscreenElement.update();e.resizeFunc=tinymce.dom.Event.add(a.win,"resize",function(){var m=tinymce.DOM.getViewPort(),k=e.fullscreenEditor,j,l;j=k.dom.getSize(k.getContainer().firstChild);l=k.dom.getSize(k.getContainer().getElementsByTagName("iframe")[0]);k.theme.resizeTo(m.w-j.w+l.w,m.h-j.h+l.h)})}});c.addButton("fullscreen",{title:"fullscreen.desc",cmd:"mceFullScreen"});c.onNodeChange.add(function(h,g){g.setActive("fullscreen",h.getParam("fullscreen_is_enabled"))})},getInfo:function(){return{longname:"Fullscreen",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullscreen",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("fullscreen",tinymce.plugins.FullScreenPlugin)})();

View File

@@ -1,8 +1,11 @@
/**
* $Id: editor_plugin_src.js 923 2008-09-09 16:45:29Z spocke $
* editor_plugin_src.js
*
* @author Moxiecode
* @copyright Copyright <20> 2004-2008, Moxiecode Systems AB, All rights reserved.
* Copyright 2009, Moxiecode Systems AB
* Released under LGPL License.
*
* License: http://tinymce.moxiecode.com/license
* Contributing: http://tinymce.moxiecode.com/contributing
*/
(function() {
@@ -107,16 +110,19 @@
});
t.fullscreenEditor.render();
tinyMCE.add(t.fullscreenEditor);
t.fullscreenElement = new tinymce.dom.Element('mce_fullscreen_container');
t.fullscreenElement.update();
//document.body.overflow = 'hidden';
t.resizeFunc = tinymce.dom.Event.add(DOM.win, 'resize', function() {
var vp = tinymce.DOM.getViewPort();
var vp = tinymce.DOM.getViewPort(), fed = t.fullscreenEditor, outerSize, innerSize;
t.fullscreenEditor.theme.resizeTo(vp.w, vp.h);
// Get outer/inner size to get a delta size that can be used to calc the new iframe size
outerSize = fed.dom.getSize(fed.getContainer().firstChild);
innerSize = fed.dom.getSize(fed.getContainer().getElementsByTagName('iframe')[0]);
fed.theme.resizeTo(vp.w - outerSize.w + innerSize.w, vp.h - outerSize.h + innerSize.h);
});
}
});

View File

@@ -2,7 +2,6 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script type="text/javascript" src="../../tiny_mce.js"></script>
<script type="text/javascript">
function patchCallback(settings, key) {

View File

@@ -1 +1 @@
(function(){tinymce.create("tinymce.plugins.SearchReplacePlugin",{init:function(a,c){function b(d){a.windowManager.open({file:c+"/searchreplace.htm",width:420+parseInt(a.getLang("searchreplace.delta_width",0)),height:160+parseInt(a.getLang("searchreplace.delta_height",0)),inline:1,auto_focus:0},{mode:d,search_string:a.selection.getContent({format:"text"}),plugin_url:c})}a.addCommand("mceSearch",function(){b("search")});a.addCommand("mceReplace",function(){b("replace")});a.addButton("search",{title:"searchreplace.search_desc",cmd:"mceSearch"});a.addButton("replace",{title:"searchreplace.replace_desc",cmd:"mceReplace"});a.addShortcut("ctrl+f","searchreplace.search_desc","mceSearch")},getInfo:function(){return{longname:"Search/Replace",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/searchreplace",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("searchreplace",tinymce.plugins.SearchReplacePlugin)})();
(function(){tinymce.create("tinymce.plugins.SearchReplacePlugin",{init:function(a,c){function b(d){a.windowManager.open({file:c+"/searchreplace.htm",width:420+parseInt(a.getLang("searchreplace.delta_width",0)),height:170+parseInt(a.getLang("searchreplace.delta_height",0)),inline:1,auto_focus:0},{mode:d,search_string:a.selection.getContent({format:"text"}),plugin_url:c})}a.addCommand("mceSearch",function(){b("search")});a.addCommand("mceReplace",function(){b("replace")});a.addButton("search",{title:"searchreplace.search_desc",cmd:"mceSearch"});a.addButton("replace",{title:"searchreplace.replace_desc",cmd:"mceReplace"});a.addShortcut("ctrl+f","searchreplace.search_desc","mceSearch")},getInfo:function(){return{longname:"Search/Replace",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/searchreplace",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("searchreplace",tinymce.plugins.SearchReplacePlugin)})();

View File

@@ -1,8 +1,11 @@
/**
* $Id: editor_plugin_src.js 686 2008-03-09 18:13:49Z spocke $
* editor_plugin_src.js
*
* @author Moxiecode
* @copyright Copyright <20> 2004-2008, Moxiecode Systems AB, All rights reserved.
* Copyright 2009, Moxiecode Systems AB
* Released under LGPL License.
*
* License: http://tinymce.moxiecode.com/license
* Contributing: http://tinymce.moxiecode.com/contributing
*/
(function() {
@@ -12,7 +15,7 @@
ed.windowManager.open({
file : url + '/searchreplace.htm',
width : 420 + parseInt(ed.getLang('searchreplace.delta_width', 0)),
height : 160 + parseInt(ed.getLang('searchreplace.delta_height', 0)),
height : 170 + parseInt(ed.getLang('searchreplace.delta_height', 0)),
inline : 1,
auto_focus : 0
}, {

View File

@@ -42,6 +42,10 @@ var SearchReplaceDialog = {
ca = f[m + '_panel_casesensitivebox'].checked;
rs = f['replace_panel_replacestring'].value;
if (tinymce.isIE) {
r = ed.getDoc().selection.createRange();
}
if (s == '')
return;
@@ -75,6 +79,10 @@ var SearchReplaceDialog = {
r.select();
replace();
fo = 1;
if (b) {
r.moveEnd("character", -(rs.length)); // Otherwise will loop forever
}
}
tinyMCEPopup.storeSelection();
@@ -102,6 +110,10 @@ var SearchReplaceDialog = {
se.collapse(b);
r = se.getRng();
if (tinymce.isIE) {
r = ed.getDoc().selection.createRange();
}
// Whats the point
if (!s)
return;

View File

@@ -89,15 +89,10 @@
</div>
<div class="mceActionPanel">
<div style="float: left">
<input type="submit" id="insert" name="insert" value="{#searchreplace_dlg.findnext}" />
<input type="button" class="button" id="replaceBtn" name="replaceBtn" value="{#searchreplace_dlg.replace}" onclick="SearchReplaceDialog.searchNext('current');" />
<input type="button" class="button" id="replaceAllBtn" name="replaceAllBtn" value="{#searchreplace_dlg.replaceall}" onclick="SearchReplaceDialog.searchNext('all');" />
</div>
<div style="float: right">
<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
</div>
<input type="submit" id="insert" name="insert" value="{#searchreplace_dlg.findnext}" />
<input type="button" class="button" id="replaceBtn" name="replaceBtn" value="{#searchreplace_dlg.replace}" onclick="SearchReplaceDialog.searchNext('current');" />
<input type="button" class="button" id="replaceAllBtn" name="replaceAllBtn" value="{#searchreplace_dlg.replaceall}" onclick="SearchReplaceDialog.searchNext('all');" />
<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
</div>
</form>
</body>

View File

@@ -48,9 +48,7 @@
</div>
<div class="mceActionPanel">
<div style="float: right">
<input type="button" id="cancel" name="cancel" value="{#close}" onclick="tinyMCEPopup.close();" />
</div>
<input type="button" id="cancel" name="cancel" value="{#close}" onclick="tinyMCEPopup.close();" />
</div>
</body>
</html>

View File

@@ -18,13 +18,8 @@
</table>
<div class="mceActionPanel">
<div style="float: left">
<input type="submit" id="insert" name="insert" value="{#update}" />
</div>
<div style="float: right">
<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
</div>
<input type="submit" id="insert" name="insert" value="{#update}" />
<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
</div>
</form>
</body>

View File

@@ -2,7 +2,6 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>{#advanced_dlg.charmap_title}</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
<script type="text/javascript" src="js/charmap.js"></script>
</head>

View File

@@ -60,9 +60,7 @@
</div>
<div class="mceActionPanel">
<div style="float: left">
<input type="submit" id="insert" name="insert" value="{#apply}" />
</div>
<input type="submit" id="insert" name="insert" value="{#apply}" />
<div id="preview"></div>

File diff suppressed because one or more lines are too long

View File

@@ -1,8 +1,11 @@
/**
* $Id: editor_template_src.js 1045 2009-03-04 20:03:18Z spocke $
* editor_template_src.js
*
* @author Moxiecode
* @copyright Copyright <20> 2004-2008, Moxiecode Systems AB, All rights reserved.
* Copyright 2009, Moxiecode Systems AB
* Released under LGPL License.
*
* License: http://tinymce.moxiecode.com/license
* Contributing: http://tinymce.moxiecode.com/contributing
*/
(function(tinymce) {
@@ -97,11 +100,8 @@
if (k == v && v >= 1 && v <= 7) {
k = v + ' (' + t.sizes[v - 1] + 'pt)';
if (ed.settings.convert_fonts_to_spans) {
cl = s.font_size_classes[v - 1];
v = s.font_size_style_values[v - 1] || (t.sizes[v - 1] + 'pt');
}
cl = s.font_size_classes[v - 1];
v = s.font_size_style_values[v - 1] || (t.sizes[v - 1] + 'pt');
}
if (/^\s*\./.test(v))
@@ -121,10 +121,11 @@
// Init editor
ed.onInit.add(function() {
ed.onNodeChange.add(t._nodeChanged, t);
if (!ed.settings.readonly)
ed.onNodeChange.add(t._nodeChanged, t);
if (ed.settings.content_css !== false)
ed.dom.loadCSS(ed.baseURI.toAbsolute("themes/advanced/skins/" + ed.settings.skin + "/content.css"));
ed.dom.loadCSS(ed.baseURI.toAbsolute(url + "/skins/" + ed.settings.skin + "/content.css"));
});
ed.onSetProgressState.add(function(ed, b, ti) {
@@ -194,36 +195,93 @@
},
_importClasses : function(e) {
var ed = this.editor, c = ed.controlManager.get('styleselect');
var ed = this.editor, ctrl = ed.controlManager.get('styleselect');
if (c.getLength() == 0) {
each(ed.dom.getClasses(), function(o) {
c.add(o['class'], o['class']);
if (ctrl.getLength() == 0) {
each(ed.dom.getClasses(), function(o, idx) {
var name = 'style_' + idx;
ed.formatter.register(name, {
inline : 'span',
attributes : {'class' : o['class']},
selector : '*'
});
ctrl.add(o['class'], name);
});
}
},
_createStyleSelect : function(n) {
var t = this, ed = t.editor, cf = ed.controlManager, c = cf.createListBox('styleselect', {
var t = this, ed = t.editor, ctrlMan = ed.controlManager, ctrl;
// Setup style select box
ctrl = ctrlMan.createListBox('styleselect', {
title : 'advanced.style_select',
onselect : function(v) {
if (c.selectedValue === v) {
ed.execCommand('mceSetStyleInfo', 0, {command : 'removeformat'});
c.select();
return false;
} else
ed.execCommand('mceSetCSSClass', 0, v);
onselect : function(name) {
var matches, formatNames = [];
each(ctrl.items, function(item) {
formatNames.push(item.value);
});
ed.focus();
ed.undoManager.add();
// Toggle off the current format
matches = ed.formatter.matchAll(formatNames);
if (!name || matches[0] == name)
ed.formatter.remove(matches[0]);
else
ed.formatter.apply(name);
ed.undoManager.add();
ed.nodeChanged();
return false; // No auto select
}
});
if (c) {
each(ed.getParam('theme_advanced_styles', '', 'hash'), function(v, k) {
if (v)
c.add(t.editor.translate(k), v);
});
// Handle specified format
ed.onInit.add(function() {
var counter = 0, formats = ed.getParam('style_formats');
c.onPostRender.add(function(ed, n) {
if (!c.NativeListBox) {
if (formats) {
each(formats, function(fmt) {
var name, keys = 0;
each(fmt, function() {keys++;});
if (keys > 1) {
name = fmt.name = fmt.name || 'style_' + (counter++);
ed.formatter.register(name, fmt);
ctrl.add(fmt.title, name);
} else
ctrl.add(fmt.title);
});
} else {
each(ed.getParam('theme_advanced_styles', '', 'hash'), function(val, key) {
var name;
if (val) {
name = 'style_' + (counter++);
ed.formatter.register(name, {
inline : 'span',
classes : val,
selector : '*'
});
ctrl.add(t.editor.translate(key), name);
}
});
}
});
// Auto import classes if the ctrl box is empty
if (ctrl.getLength() == 0) {
ctrl.onPostRender.add(function(ed, n) {
if (!ctrl.NativeListBox) {
Event.add(n.id + '_text', 'focus', t._importClasses, t);
Event.add(n.id + '_text', 'mousedown', t._importClasses, t);
Event.add(n.id + '_open', 'focus', t._importClasses, t);
@@ -233,13 +291,33 @@
});
}
return c;
return ctrl;
},
_createFontSelect : function() {
var c, t = this, ed = t.editor;
c = ed.controlManager.createListBox('fontselect', {title : 'advanced.fontdefault', cmd : 'FontName'});
c = ed.controlManager.createListBox('fontselect', {
title : 'advanced.fontdefault',
onselect : function(v) {
var cur = c.items[c.selectedIndex];
if (!v && cur) {
ed.execCommand('FontName', false, cur.value);
return;
}
ed.execCommand('FontName', false, v);
// Fake selection, execCommand will fire a nodeChange and update the selection
c.select(function(sv) {
return v == sv;
});
return false; // No auto select
}
});
if (c) {
each(ed.getParam('theme_advanced_fonts', t.settings.theme_advanced_fonts, 'hash'), function(v, k) {
c.add(ed.translate(k), v, {style : v.indexOf('dings') == -1 ? 'font-family:' + v : ''});
@@ -253,16 +331,37 @@
var t = this, ed = t.editor, c, i = 0, cl = [];
c = ed.controlManager.createListBox('fontsizeselect', {title : 'advanced.font_size', onselect : function(v) {
if (v.fontSize)
ed.execCommand('FontSize', false, v.fontSize);
else {
each(t.settings.theme_advanced_font_sizes, function(v, k) {
if (v['class'])
cl.push(v['class']);
});
var cur = c.items[c.selectedIndex];
ed.editorCommands._applyInlineStyle('span', {'class' : v['class']}, {check_classes : cl});
if (!v && cur) {
cur = cur.value;
if (cur['class']) {
ed.formatter.toggle('fontsize_class', {value : cur['class']});
ed.undoManager.add();
ed.nodeChanged();
} else {
ed.execCommand('FontSize', false, cur.fontSize);
}
return;
}
if (v['class']) {
ed.focus();
ed.undoManager.add();
ed.formatter.toggle('fontsize_class', {value : v['class']});
ed.undoManager.add();
ed.nodeChanged();
} else
ed.execCommand('FontSize', false, v.fontSize);
// Fake selection, execCommand will fire a nodeChange and update the selection
c.select(function(sv) {
return v == sv;
});
return false; // No auto select
}});
if (c) {
@@ -472,8 +571,8 @@
this.resizeTo(e.clientWidth + dw, e.clientHeight + dh);
},
resizeTo : function(w, h) {
var ed = this.editor, s = ed.settings, e = DOM.get(ed.id + '_tbl'), ifr = DOM.get(ed.id + '_ifr'), dh;
resizeTo : function(w, h, store) {
var ed = this.editor, s = this.settings, e = DOM.get(ed.id + '_tbl'), ifr = DOM.get(ed.id + '_ifr');
// Boundery fix box
w = Math.max(s.theme_advanced_resizing_min_width || 100, w);
@@ -481,12 +580,28 @@
w = Math.min(s.theme_advanced_resizing_max_width || 0xFFFF, w);
h = Math.min(s.theme_advanced_resizing_max_height || 0xFFFF, h);
// Calc difference between iframe and container
dh = e.clientHeight - ifr.clientHeight;
// Resize iframe and container
DOM.setStyle(ifr, 'height', h - dh);
DOM.setStyles(e, {width : w, height : h});
DOM.setStyle(e, 'height', '');
DOM.setStyle(ifr, 'height', h);
if (s.theme_advanced_resize_horizontal) {
DOM.setStyle(e, 'width', '');
DOM.setStyle(ifr, 'width', w);
// Make sure that the size is never smaller than the over all ui
if (w < e.clientWidth) {
w = e.clientWidth;
DOM.setStyle(ifr, 'width', e.clientWidth);
}
}
// Store away the size
if (store && s.theme_advanced_resizing_use_cookie) {
Cookie.setHash("TinyMCE_" + ed.id + "_size", {
cw : w,
ch : h
});
}
},
destroy : function() {
@@ -700,99 +815,55 @@
if (!o)
return;
if (s.theme_advanced_resize_horizontal)
c.style.width = Math.max(10, o.cw) + 'px';
c.style.height = Math.max(10, o.ch) + 'px';
DOM.get(ed.id + '_ifr').style.height = Math.max(10, parseInt(o.ch) + t.deltaHeight) + 'px';
t.resizeTo(o.cw, o.ch);
});
}
ed.onPostRender.add(function() {
Event.add(ed.id + '_resize', 'click', function(e) {
e.preventDefault();
});
Event.add(ed.id + '_resize', 'mousedown', function(e) {
var c, p, w, h, n, pa;
var mouseMoveHandler1, mouseMoveHandler2,
mouseUpHandler1, mouseUpHandler2,
startX, startY, startWidth, startHeight, width, height, ifrElm;
// Measure container
c = DOM.get(ed.id + '_tbl');
w = c.clientWidth;
h = c.clientHeight;
function resizeOnMove(e) {
e.preventDefault();
miw = s.theme_advanced_resizing_min_width || 100;
mih = s.theme_advanced_resizing_min_height || 100;
maw = s.theme_advanced_resizing_max_width || 0xFFFF;
mah = s.theme_advanced_resizing_max_height || 0xFFFF;
width = startWidth + (e.screenX - startX);
height = startHeight + (e.screenY - startY);
// Setup placeholder
p = DOM.add(DOM.get(ed.id + '_parent'), 'div', {'class' : 'mcePlaceHolder'});
DOM.setStyles(p, {width : w, height : h});
// Replace with placeholder
DOM.hide(c);
DOM.show(p);
// Create internal resize obj
r = {
x : e.screenX,
y : e.screenY,
w : w,
h : h,
dx : null,
dy : null
t.resizeTo(width, height);
};
// Start listening
mf = Event.add(DOM.doc, 'mousemove', function(e) {
var w, h;
// Calc delta values
r.dx = e.screenX - r.x;
r.dy = e.screenY - r.y;
// Boundery fix box
w = Math.max(miw, r.w + r.dx);
h = Math.max(mih, r.h + r.dy);
w = Math.min(maw, w);
h = Math.min(mah, h);
// Resize placeholder
if (s.theme_advanced_resize_horizontal)
p.style.width = w + 'px';
p.style.height = h + 'px';
return Event.cancel(e);
});
me = Event.add(DOM.doc, 'mouseup', function(e) {
var ifr;
function endResize(e) {
// Stop listening
Event.remove(DOM.doc, 'mousemove', mf);
Event.remove(DOM.doc, 'mouseup', me);
Event.remove(DOM.doc, 'mousemove', mouseMoveHandler1);
Event.remove(ed.getDoc(), 'mousemove', mouseMoveHandler2);
Event.remove(DOM.doc, 'mouseup', mouseUpHandler1);
Event.remove(ed.getDoc(), 'mouseup', mouseUpHandler2);
c.style.display = '';
DOM.remove(p);
width = startWidth + (e.screenX - startX);
height = startHeight + (e.screenY - startY);
t.resizeTo(width, height, true);
};
if (r.dx === null)
return;
e.preventDefault();
ifr = DOM.get(ed.id + '_ifr');
// Get the current rect size
startX = e.screenX;
startY = e.screenY;
ifrElm = DOM.get(t.editor.id + '_ifr');
startWidth = width = ifrElm.clientWidth;
startHeight = height = ifrElm.clientHeight;
if (s.theme_advanced_resize_horizontal)
c.style.width = Math.max(10, r.w + r.dx) + 'px';
c.style.height = Math.max(10, r.h + r.dy) + 'px';
ifr.style.height = Math.max(10, ifr.clientHeight + r.dy) + 'px';
if (s.theme_advanced_resizing_use_cookie) {
Cookie.setHash("TinyMCE_" + ed.id + "_size", {
cw : r.w + r.dx,
ch : r.h + r.dy
});
}
});
return Event.cancel(e);
// Register envent handlers
mouseMoveHandler1 = Event.add(DOM.doc, 'mousemove', resizeOnMove);
mouseMoveHandler2 = Event.add(ed.getDoc(), 'mousemove', resizeOnMove);
mouseUpHandler1 = Event.add(DOM.doc, 'mouseup', endResize);
mouseUpHandler2 = Event.add(ed.getDoc(), 'mouseup', endResize);
});
});
}
@@ -801,22 +872,34 @@
n = tb = null;
},
_nodeChanged : function(ed, cm, n, co) {
var t = this, p, de = 0, v, c, s = t.settings, cl, fz, fn;
if (s.readonly)
return;
_nodeChanged : function(ed, cm, n, co, ob) {
var t = this, p, de = 0, v, c, s = t.settings, cl, fz, fn, formatNames, matches;
tinymce.each(t.stateControls, function(c) {
cm.setActive(c, ed.queryCommandState(t.controls[c][1]));
});
function getParent(name) {
var i, parents = ob.parents, func = name;
if (typeof(name) == 'string') {
func = function(node) {
return node.nodeName == name;
};
}
for (i = 0; i < parents.length; i++) {
if (func(parents[i]))
return parents[i];
}
};
cm.setActive('visualaid', ed.hasVisual);
cm.setDisabled('undo', !ed.undoManager.hasUndo() && !ed.typing);
cm.setDisabled('redo', !ed.undoManager.hasRedo());
cm.setDisabled('outdent', !ed.queryCommandState('Outdent'));
p = DOM.getParent(n, 'A');
p = getParent('A');
if (c = cm.get('link')) {
if (!p || !p.name) {
c.setDisabled(!p && co);
@@ -831,82 +914,78 @@
if (c = cm.get('anchor')) {
c.setActive(!!p && p.name);
if (tinymce.isWebKit) {
p = DOM.getParent(n, 'IMG');
c.setActive(!!p && DOM.getAttrib(p, 'mce_name') == 'a');
}
}
p = DOM.getParent(n, 'IMG');
p = getParent('IMG');
if (c = cm.get('image'))
c.setActive(!!p && n.className.indexOf('mceItem') == -1);
if (c = cm.get('styleselect')) {
if (n.className) {
t._importClasses();
c.select(n.className);
} else
c.select();
t._importClasses();
formatNames = [];
each(c.items, function(item) {
formatNames.push(item.value);
});
matches = ed.formatter.matchAll(formatNames);
c.select(matches[0]);
}
if (c = cm.get('formatselect')) {
p = DOM.getParent(n, DOM.isBlock);
p = getParent(DOM.isBlock);
if (p)
c.select(p.nodeName.toLowerCase());
}
if (ed.settings.convert_fonts_to_spans) {
ed.dom.getParent(n, function(n) {
if (n.nodeName === 'SPAN') {
if (!cl && n.className)
cl = n.className;
// Find out current fontSize, fontFamily and fontClass
getParent(function(n) {
if (n.nodeName === 'SPAN') {
if (!cl && n.className)
cl = n.className;
if (!fz && n.style.fontSize)
fz = n.style.fontSize;
if (!fz && n.style.fontSize)
fz = n.style.fontSize;
if (!fn && n.style.fontFamily)
fn = n.style.fontFamily.replace(/[\"\']+/g, '').replace(/^([^,]+).*/, '$1').toLowerCase();
}
if (!fn && n.style.fontFamily)
fn = n.style.fontFamily.replace(/[\"\']+/g, '').replace(/^([^,]+).*/, '$1').toLowerCase();
}
return false;
return false;
});
if (c = cm.get('fontselect')) {
c.select(function(v) {
return v.replace(/^([^,]+).*/, '$1').toLowerCase() == fn;
});
}
if (c = cm.get('fontselect')) {
c.select(function(v) {
return v.replace(/^([^,]+).*/, '$1').toLowerCase() == fn;
});
}
// Select font size
if (c = cm.get('fontsizeselect')) {
// Use computed style
if (s.theme_advanced_runtime_fontsize && !fz && !cl)
fz = ed.dom.getStyle(n, 'fontSize', true);
if (c = cm.get('fontsizeselect')) {
c.select(function(v) {
if (v.fontSize && v.fontSize === fz)
return true;
c.select(function(v) {
if (v.fontSize && v.fontSize === fz)
return true;
if (v['class'] && v['class'] === cl)
return true;
});
}
} else {
if (c = cm.get('fontselect'))
c.select(ed.queryCommandValue('FontName'));
if (c = cm.get('fontsizeselect')) {
v = ed.queryCommandValue('FontSize');
c.select(function(iv) {
return iv.fontSize == v;
});
}
if (v['class'] && v['class'] === cl)
return true;
});
}
if (s.theme_advanced_path && s.theme_advanced_statusbar_location) {
p = DOM.get(ed.id + '_path') || DOM.add(ed.id + '_path_row', 'span', {id : ed.id + '_path'});
DOM.setHTML(p, '');
ed.dom.getParent(n, function(n) {
getParent(function(n) {
var na = n.nodeName.toLowerCase(), u, pi, ti = '';
/*if (n.getAttribute('_mce_bogus'))
return;
*/
// Ignore non element and hidden elements
if (n.nodeType != 1 || n.nodeName === 'BR' || (DOM.hasClass(n, 'mceItemHidden') || DOM.hasClass(n, 'mceItemRemoved')))
return;
@@ -950,9 +1029,6 @@
break;
case 'font':
if (s.convert_fonts_to_spans)
na = 'span';
if (v = DOM.getAttrib(n, 'face'))
ti += 'font: ' + v + ' ';
@@ -975,9 +1051,9 @@
ti += 'id: ' + v + ' ';
if (v = n.className) {
v = v.replace(/(webkit-[\w\-]+|Apple-[\w\-]+|mceItem\w+|mceVisualAid)/g, '');
v = v.replace(/\b\s*(webkit|mce|Apple-)\w+\s*\b/g, '')
if (v && v.indexOf('mceItem') == -1) {
if (v) {
ti += 'class: ' + v + ' ';
if (DOM.isBlock(n) || na == 'img' || na == 'span')
@@ -1013,7 +1089,7 @@
var ed = this.editor;
ed.windowManager.open({
url : tinymce.baseURL + '/themes/advanced/anchor.htm',
url : this.url + '/anchor.htm',
width : 320 + parseInt(ed.getLang('advanced.anchor_delta_width', 0)),
height : 90 + parseInt(ed.getLang('advanced.anchor_delta_height', 0)),
inline : true
@@ -1026,7 +1102,7 @@
var ed = this.editor;
ed.windowManager.open({
url : tinymce.baseURL + '/themes/advanced/charmap.htm',
url : this.url + '/charmap.htm',
width : 550 + parseInt(ed.getLang('advanced.charmap_delta_width', 0)),
height : 250 + parseInt(ed.getLang('advanced.charmap_delta_height', 0)),
inline : true
@@ -1039,7 +1115,7 @@
var ed = this.editor;
ed.windowManager.open({
url : tinymce.baseURL + '/themes/advanced/about.htm',
url : this.url + '/about.htm',
width : 480,
height : 380,
inline : true
@@ -1054,7 +1130,7 @@
v = v || {};
ed.windowManager.open({
url : tinymce.baseURL + '/themes/advanced/color_picker.htm',
url : this.url + '/color_picker.htm',
width : 375 + parseInt(ed.getLang('advanced.colorpicker_delta_width', 0)),
height : 250 + parseInt(ed.getLang('advanced.colorpicker_delta_height', 0)),
close_previous : false,
@@ -1070,7 +1146,7 @@
var ed = this.editor;
ed.windowManager.open({
url : tinymce.baseURL + '/themes/advanced/source_editor.htm',
url : this.url + '/source_editor.htm',
width : parseInt(ed.getParam("theme_advanced_source_editor_width", 720)),
height : parseInt(ed.getParam("theme_advanced_source_editor_height", 580)),
inline : true,
@@ -1089,7 +1165,7 @@
return;
ed.windowManager.open({
url : tinymce.baseURL + '/themes/advanced/image.htm',
url : this.url + '/image.htm',
width : 355 + parseInt(ed.getLang('advanced.image_delta_width', 0)),
height : 275 + parseInt(ed.getLang('advanced.image_delta_height', 0)),
inline : true
@@ -1102,7 +1178,7 @@
var ed = this.editor;
ed.windowManager.open({
url : tinymce.baseURL + '/themes/advanced/link.htm',
url : this.url + '/link.htm',
width : 310 + parseInt(ed.getLang('advanced.link_delta_width', 0)),
height : 200 + parseInt(ed.getLang('advanced.link_delta_height', 0)),
inline : true

View File

@@ -72,13 +72,8 @@
</div>
<div class="mceActionPanel">
<div style="float: left">
<input type="submit" id="insert" name="insert" value="{#insert}" />
</div>
<div style="float: right">
<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
</div>
<input type="submit" id="insert" name="insert" value="{#insert}" />
<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
</div>
</form>
</body>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -5,7 +5,7 @@ var AnchorDialog = {
var action, elm, f = document.forms[0];
this.editor = ed;
elm = ed.dom.getParent(ed.selection.getNode(), 'A,IMG');
elm = ed.dom.getParent(ed.selection.getNode(), 'A');
v = ed.dom.getAttrib(elm, 'name');
if (v) {
@@ -17,18 +17,18 @@ var AnchorDialog = {
},
update : function() {
var ed = this.editor;
var ed = this.editor, elm, name = document.forms[0].anchorName.value;
tinyMCEPopup.restoreSelection();
if (this.action != 'update')
ed.selection.collapse(1);
// Webkit acts weird if empty inline element is inserted so we need to use a image instead
if (tinymce.isWebKit)
ed.execCommand('mceInsertContent', 0, ed.dom.createHTML('img', {mce_name : 'a', name : document.forms[0].anchorName.value, 'class' : 'mceItemAnchor'}));
elm = ed.dom.getParent(ed.selection.getNode(), 'A');
if (elm)
elm.name = name;
else
ed.execCommand('mceInsertContent', 0, ed.dom.createHTML('a', {name : document.forms[0].anchorName.value, 'class' : 'mceItemAnchor'}, ''));
ed.execCommand('mceInsertContent', 0, ed.dom.createHTML('a', {name : name, 'class' : 'mceItemAnchor'}, ''));
tinyMCEPopup.close();
}

View File

@@ -1,3 +1,13 @@
/**
* charmap.js
*
* Copyright 2009, Moxiecode Systems AB
* Released under LGPL License.
*
* License: http://tinymce.moxiecode.com/license
* Contributing: http://tinymce.moxiecode.com/contributing
*/
tinyMCEPopup.requireLangPack();
var charmap = [

View File

@@ -151,8 +151,8 @@ var ImageDialog = {
}
// Merge
st = tinyMCEPopup.dom.parseStyle(dom.serializeStyle(st));
this.styleVal = dom.serializeStyle(st);
st = tinyMCEPopup.dom.parseStyle(dom.serializeStyle(st), 'img');
this.styleVal = dom.serializeStyle(st, 'img');
}
},

View File

@@ -44,19 +44,13 @@ function toggleWordWrap(elm) {
setWrap('off');
}
var wHeight=0, wWidth=0, owHeight=0, owWidth=0;
function resizeInputs() {
var el = document.getElementById('htmlSource');
var vp = tinyMCEPopup.dom.getViewPort(window), el;
if (!tinymce.isIE) {
wHeight = self.innerHeight - 65;
wWidth = self.innerWidth - 16;
} else {
wHeight = document.body.clientHeight - 70;
wWidth = document.body.clientWidth - 16;
el = document.getElementById('htmlSource');
if (el) {
el.style.width = (vp.w - 20) + 'px';
el.style.height = (vp.h - 65) + 'px';
}
el.style.height = Math.abs(wHeight) + 'px';
el.style.width = Math.abs(wWidth) + 'px';
}

View File

@@ -50,13 +50,8 @@
</div>
<div class="mceActionPanel">
<div style="float: left">
<input type="submit" id="insert" name="insert" value="{#insert}" />
</div>
<div style="float: right">
<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
</div>
<input type="submit" id="insert" name="insert" value="{#insert}" />
<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
</div>
</form>
</body>

View File

@@ -8,8 +8,9 @@ h4 {font-size: 1em}
h5 {font-size: .83em}
h6 {font-size: .75em}
.mceItemTable, .mceItemTable td, .mceItemTable th, .mceItemTable caption, .mceItemVisualAid {border: 1px dashed #BBB;}
a.mceItemAnchor {width:12px; line-height:6px; overflow:hidden; padding-left:12px; background:url(img/items.gif) no-repeat bottom left;}
img.mceItemAnchor {width:12px; height:12px; background:url(img/items.gif) no-repeat;}
a.mceItemAnchor {display:inline-block; width:11px !important; height:11px !important; background:url(img/items.gif) no-repeat 0 0;}
span.mceItemNbsp {background: #DDD}
td.mceSelected, th.mceSelected {background-color:#3399ff !important}
img {border:0;}
table {cursor:default}
table td, table th {cursor:text}
@@ -17,7 +18,7 @@ ins {border-bottom:1px solid green; text-decoration: none; color:green}
del {color:red; text-decoration:line-through}
cite {border-bottom:1px dashed blue}
acronym {border-bottom:1px dotted #CCC; cursor:help}
abbr, html\:abbr {border-bottom:1px dashed #CCC; cursor:help}
abbr {border-bottom:1px dashed #CCC; cursor:help}
/* IE */
* html body {
@@ -30,3 +31,6 @@ scrollbar-highlight-color:#F0F0EE;
scrollbar-shadow-color:#F0F0EE;
scrollbar-track-color:#F5F5F5;
}
img:-moz-broken {-moz-force-broken-image-icon:1; width:24px; height:24px}
font[face=mceinline] {font-family:inherit !important}

View File

@@ -42,10 +42,11 @@ width:94px; height:26px;
background:url(img/buttons.png) 0 -26px;
cursor:pointer;
padding-bottom:2px;
float:left;
}
#insert {background:url(img/buttons.png) 0 -52px;}
#cancel {background:url(img/buttons.png) 0 0;}
#insert {background:url(img/buttons.png) 0 -52px}
#cancel {background:url(img/buttons.png) 0 0; float:right}
/* Browse */
a.pickcolor, a.browse {text-decoration:none}
@@ -113,4 +114,4 @@ h3 {font-size:14px;}
#colorpicker #namedcolors {width:150px;}
#colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;}
#colorpicker #colornamecontainer {margin-top:5px;}
#colorpicker #picker_panel fieldset {margin:auto;width:325px;}
#colorpicker #picker_panel fieldset {margin:auto;width:325px;}

View File

@@ -4,7 +4,7 @@
.defaultSkin table td {vertical-align:middle}
/* Containers */
.defaultSkin table {background:#F0F0EE}
.defaultSkin table {direction:ltr; background:#F0F0EE}
.defaultSkin iframe {display:block; background:#FFF}
.defaultSkin .mceToolbar {height:26px}
.defaultSkin .mceLeft {text-align:left}
@@ -24,7 +24,7 @@
.defaultSkin .mceIframeContainer {border-top:1px solid #CCC; border-bottom:1px solid #CCC}
.defaultSkin .mceStatusbar {font-family:'MS Sans Serif',sans-serif,Verdana,Arial; font-size:9pt; line-height:16px; overflow:visible; color:#000; display:block; height:20px}
.defaultSkin .mceStatusbar div {float:left; margin:2px}
.defaultSkin .mceStatusbar a.mceResize {display:block; float:right; background:url(../../img/icons.gif) -800px 0; width:20px; height:20px; cursor:se-resize}
.defaultSkin .mceStatusbar a.mceResize {display:block; float:right; background:url(../../img/icons.gif) -800px 0; width:20px; height:20px; cursor:se-resize; outline:0}
.defaultSkin .mceStatusbar a:hover {text-decoration:underline}
.defaultSkin table.mceToolbar {margin-left:3px}
.defaultSkin span.mceIcon, .defaultSkin img.mceIcon {display:block; width:20px; height:20px}
@@ -47,7 +47,6 @@
.defaultSkin .mceSeparator {display:block; background:url(../../img/icons.gif) -180px 0; width:2px; height:20px; margin:2px 2px 0 4px}
/* ListBox */
.defaultSkin .mceListBox {direction:ltr}
.defaultSkin .mceListBox, .defaultSkin .mceListBox a {display:block}
.defaultSkin .mceListBox .mceText {padding-left:4px; width:70px; text-align:left; border:1px solid #CCC; border-right:0; background:#FFF; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; height:20px; line-height:20px; overflow:hidden}
.defaultSkin .mceListBox .mceOpen {width:9px; height:20px; background:url(../../img/icons.gif) -741px 0; margin-right:2px; border:1px solid #CCC;}
@@ -63,7 +62,7 @@
.defaultSkin .mceSplitButton {width:32px; height:20px; direction:ltr}
.defaultSkin .mceSplitButton a, .defaultSkin .mceSplitButton span {height:20px; display:block}
.defaultSkin .mceSplitButton a.mceAction {width:20px; border:1px solid #F0F0EE; border-right:0;}
.defaultSkin .mceSplitButton span.mceAction {width:20px; background:url(../../img/icons.gif) 20px 20px;}
.defaultSkin .mceSplitButton span.mceAction {width:20px; background-image:url(../../img/icons.gif);}
.defaultSkin .mceSplitButton a.mceOpen {width:9px; background:url(../../img/icons.gif) -741px 0; border:1px solid #F0F0EE;}
.defaultSkin .mceSplitButton span.mceOpen {display:none}
.defaultSkin table.mceSplitButtonEnabled:hover a.mceAction, .defaultSkin .mceSplitButtonHover a.mceAction, .defaultSkin .mceSplitButtonSelected a.mceAction {border:1px solid #0A246A; border-right:0; background-color:#B2BBD0}
@@ -108,7 +107,6 @@
/* Progress,Resize */
.defaultSkin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; -ms-filter:'alpha(opacity=50)'; filter:alpha(opacity=50); background:#FFF}
.defaultSkin .mceProgress {position:absolute; left:0; top:0; z-index:1001; background:url(img/progress.gif) no-repeat; width:32px; height:32px; margin:-16px 0 0 -16px}
.defaultSkin .mcePlaceHolder {border:1px dotted gray}
/* Formats */
.defaultSkin .mce_formatPreview a {font-size:10px}
@@ -211,4 +209,5 @@
.defaultSkin span.mce_del {background-position:-940px -20px}
.defaultSkin span.mce_ins {background-position:-960px -20px}
.defaultSkin span.mce_pagebreak {background-position:0 -40px}
.defaultSkin .mce_spellchecker span.mceAction {background-position:-540px -20px}
.defaultSkin span.mce_restoredraft {background-position:-20px -40px}
.defaultSkin span.mce_spellchecker {background-position:-540px -20px}

View File

@@ -8,8 +8,9 @@ h4 {font-size: 1em}
h5 {font-size: .83em}
h6 {font-size: .75em}
.mceItemTable, .mceItemTable td, .mceItemTable th, .mceItemTable caption, .mceItemVisualAid {border: 1px dashed #BBB;}
a.mceItemAnchor {width:12px; line-height:6px; overflow:hidden; padding-left:12px; background:url(../default/img/items.gif) no-repeat bottom left;}
img.mceItemAnchor {width:12px; height:12px; background:url(../default/img/items.gif) no-repeat;}
a.mceItemAnchor {display:inline-block; width:11px !important; height:11px !important; background:url(../default/img/items.gif) no-repeat 0 0;}
span.mceItemNbsp {background: #DDD}
td.mceSelected, th.mceSelected {background-color:#3399ff !important}
img {border:0;}
table {cursor:default}
table td, table th {cursor:text}
@@ -17,7 +18,7 @@ ins {border-bottom:1px solid green; text-decoration: none; color:green}
del {color:red; text-decoration:line-through}
cite {border-bottom:1px dashed blue}
acronym {border-bottom:1px dotted #CCC; cursor:help}
abbr, html\:abbr {border-bottom:1px dashed #CCC; cursor:help}
abbr {border-bottom:1px dashed #CCC; cursor:help}
/* IE */
* html body {
@@ -30,3 +31,6 @@ scrollbar-highlight-color:#F0F0EE;
scrollbar-shadow-color:#F0F0EE;
scrollbar-track-color:#F5F5F5;
}
img:-moz-broken {-moz-force-broken-image-icon:1; width:24px; height:24px}
font[face=mceinline] {font-family:inherit !important}

View File

@@ -42,10 +42,11 @@ width:94px; height:26px;
background:url(../default/img/buttons.png) 0 -26px;
cursor:pointer;
padding-bottom:2px;
float:left;
}
#insert {background:url(../default/img/buttons.png) 0 -52px;}
#cancel {background:url(../default/img/buttons.png) 0 0;}
#insert {background:url(../default/img/buttons.png) 0 -52px}
#cancel {background:url(../default/img/buttons.png) 0 0; float:right}
/* Browse */
a.pickcolor, a.browse {text-decoration:none}

View File

@@ -21,7 +21,7 @@
.o2k7Skin .mceIframeContainer {border-top:1px solid #ABC6DD; border-bottom:1px solid #ABC6DD}
.o2k7Skin .mceStatusbar {display:block; font-family:'MS Sans Serif',sans-serif,Verdana,Arial; font-size:9pt; line-height:16px; overflow:visible; color:#000; height:20px}
.o2k7Skin .mceStatusbar div {float:left; padding:2px}
.o2k7Skin .mceStatusbar a.mceResize {display:block; float:right; background:url(../../img/icons.gif) -800px 0; width:20px; height:20px; cursor:se-resize}
.o2k7Skin .mceStatusbar a.mceResize {display:block; float:right; background:url(../../img/icons.gif) -800px 0; width:20px; height:20px; cursor:se-resize; outline:0}
.o2k7Skin .mceStatusbar a:hover {text-decoration:underline}
.o2k7Skin table.mceToolbar {margin-left:3px}
.o2k7Skin .mceToolbar .mceToolbarStart span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px; margin-left:3px;}
@@ -65,7 +65,7 @@
.o2k7Skin .mceSplitButton, .o2k7Skin .mceSplitButton a, .o2k7Skin .mceSplitButton span {display:block; height:22px}
.o2k7Skin .mceSplitButton {background:url(img/button_bg.png)}
.o2k7Skin .mceSplitButton a.mceAction {width:22px}
.o2k7Skin .mceSplitButton span.mceAction {width:22px; background:url(../../img/icons.gif) 20px 20px}
.o2k7Skin .mceSplitButton span.mceAction {width:22px; background-image:url(../../img/icons.gif)}
.o2k7Skin .mceSplitButton a.mceOpen {width:10px; background:url(img/button_bg.png) -44px 0}
.o2k7Skin .mceSplitButton span.mceOpen {display:none}
.o2k7Skin table.mceSplitButtonEnabled:hover a.mceAction, .o2k7Skin .mceSplitButtonHover a.mceAction, .o2k7Skin .mceSplitButtonSelected {background:url(img/button_bg.png) 0 -22px}
@@ -109,7 +109,6 @@
/* Progress,Resize */
.o2k7Skin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=50); background:#FFF}
.o2k7Skin .mceProgress {position:absolute; left:0; top:0; z-index:1001; background:url(../default/img/progress.gif) no-repeat; width:32px; height:32px; margin:-16px 0 0 -16px}
.o2k7Skin .mcePlaceHolder {border:1px dotted gray}
/* Formats */
.o2k7Skin .mce_formatPreview a {font-size:10px}
@@ -212,4 +211,5 @@
.o2k7Skin span.mce_del {background-position:-940px -20px}
.o2k7Skin span.mce_ins {background-position:-960px -20px}
.o2k7Skin span.mce_pagebreak {background-position:0 -40px}
.o2k7Skin .mce_spellchecker span.mceAction {background-position:-540px -20px}
.o2k7Skin span.mce_restoredraft {background-position:-20px -40px}
.o2k7Skin span.mce_spellchecker {background-position:-540px -20px}

View File

@@ -1,6 +1,5 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>{#advanced_dlg.code_title}</title>
<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
<script type="text/javascript" src="js/source_editor.js"></script>
@@ -18,13 +17,8 @@
<textarea name="htmlSource" id="htmlSource" rows="15" cols="100" style="width: 100%; height: 100%; font-family: 'Courier New',Courier,monospace; font-size: 12px;" dir="ltr" wrap="off" class="mceFocus"></textarea>
<div class="mceActionPanel">
<div style="float: left">
<input type="submit" name="insert" value="{#update}" id="insert" />
</div>
<div style="float: right">
<input type="button" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" id="cancel" />
</div>
<input type="submit" name="insert" value="{#update}" id="insert" />
<input type="button" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" id="cancel" />
</div>
</form>
</body>

View File

@@ -1,11 +1,11 @@
/**
* $Id: editor_template_src.js 920 2008-09-09 14:05:33Z spocke $
* editor_template_src.js
*
* This file is meant to showcase how to create a simple theme. The advanced
* theme is more suitable for production use.
* Copyright 2009, Moxiecode Systems AB
* Released under LGPL License.
*
* @author Moxiecode
* @copyright Copyright <20> 2004-2008, Moxiecode Systems AB, All rights reserved.
* License: http://tinymce.moxiecode.com/license
* Contributing: http://tinymce.moxiecode.com/contributing
*/
(function() {

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@@ -1,10 +1,11 @@
/**
* $Id: editable_selects.js 867 2008-06-09 20:33:40Z spocke $
* editable_selects.js
*
* Makes select boxes editable.
* Copyright 2009, Moxiecode Systems AB
* Released under LGPL License.
*
* @author Moxiecode
* @copyright Copyright <20> 2004-2008, Moxiecode Systems AB, All rights reserved.
* License: http://tinymce.moxiecode.com/license
* Contributing: http://tinymce.moxiecode.com/contributing
*/
var TinyMCE_EditableSelects = {

View File

@@ -1,10 +1,11 @@
/**
* $Id: form_utils.js 1184 2009-08-11 11:47:27Z spocke $
* form_utils.js
*
* Various form utilitiy functions.
* Copyright 2009, Moxiecode Systems AB
* Released under LGPL License.
*
* @author Moxiecode
* @copyright Copyright <20> 2004-2008, Moxiecode Systems AB, All rights reserved.
* License: http://tinymce.moxiecode.com/license
* Contributing: http://tinymce.moxiecode.com/contributing
*/
var themeBaseURL = tinyMCEPopup.editor.baseURI.toAbsolute('themes/' + tinyMCEPopup.getParam("theme"));

View File

@@ -1,10 +1,11 @@
/**
* $Id: mctabs.js 758 2008-03-30 13:53:29Z spocke $
* mctabs.js
*
* Moxiecode DHTML Tabs script.
* Copyright 2009, Moxiecode Systems AB
* Released under LGPL License.
*
* @author Moxiecode
* @copyright Copyright <20> 2004-2008, Moxiecode Systems AB, All rights reserved.
* License: http://tinymce.moxiecode.com/license
* Contributing: http://tinymce.moxiecode.com/contributing
*/
function MCTabs() {

View File

@@ -1,10 +1,11 @@
/**
* $Id: validate.js 758 2008-03-30 13:53:29Z spocke $
* validate.js
*
* Various form validation methods.
* Copyright 2009, Moxiecode Systems AB
* Released under LGPL License.
*
* @author Moxiecode
* @copyright Copyright <20> 2004-2008, Moxiecode Systems AB, All rights reserved.
* License: http://tinymce.moxiecode.com/license
* Contributing: http://tinymce.moxiecode.com/contributing
*/
/**

View File

@@ -5,7 +5,7 @@ using System.Runtime.InteropServices;
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("Orchard.Themes")]
[assembly: AssemblyTitle("Themes")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyProduct("Orchard")]

View File

@@ -9,8 +9,8 @@
<ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Orchard.Themes</RootNamespace>
<AssemblyName>Orchard.Themes</AssemblyName>
<RootNamespace>Themes</RootNamespace>
<AssemblyName>Themes</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<MvcBuildViews>false</MvcBuildViews>
<FileUpgradeFlags>
@@ -221,7 +221,7 @@
<Content Include="TheThemeMachine\Views\Items\BlogPost.cshtml">
<SubType>Designer</SubType>
</Content>
<None Include="TheThemeMachine\Views\Layout.cshtml" />
<Content Include="TheThemeMachine\Views\Layout.cshtml" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />

View File

@@ -88,7 +88,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Orchard.Migrations", "Orcha
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Themes", "Themes", "{74492CBC-7201-417E-BC29-28B4C25A58B0}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Orchard.Themes", "Orchard.Web\Themes\Orchard.Themes.csproj", "{CB70A642-8CEC-4DDE-8C9F-AD08900EC98D}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Themes", "Orchard.Web\Themes\Themes.csproj", "{CB70A642-8CEC-4DDE-8C9F-AD08900EC98D}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution

View File

@@ -1,185 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Html;
using System.Web.Routing;
using ClaySharp;
using Orchard.DisplayManagement;
namespace Orchard.Mvc.Html {
public class Shapes : IDependency {
public Shapes(IShapeFactory shapeFactory) {
New = shapeFactory;
}
dynamic New { get; set; }
[Shape]
public IHtmlString Link(dynamic Display, object Content, string Url, INamedEnumerable<object> Attributes) {
var a = new TagBuilder("a") {
InnerHtml = Display(Content).ToString()
};
a.MergeAttributes(Attributes.Named);
a.MergeAttribute("href", Url, true);
return Display(new HtmlString(a.ToString()));
}
[Shape]
public IHtmlString Image(dynamic Display, string Url, INamedEnumerable<object> Attributes) {
var img = new TagBuilder("img");
img.MergeAttributes(Attributes.Named);
img.MergeAttribute("src", Url, true);
return Display(new HtmlString(img.ToString(TagRenderMode.SelfClosing)));
}
[Shape]
public IHtmlString UnorderedList(dynamic Display, dynamic Shape, INamedEnumerable<object> Attributes) {
var ul = new TagBuilder("ul") {
InnerHtml = Combine(DisplayAll(Display, Shape, New.ListItem())).ToString()
};
ul.MergeAttributes(Attributes.Named);
return Display(new HtmlString(ul.ToString()));
}
[Shape]
public IHtmlString ListItem(dynamic Display, dynamic Shape, INamedEnumerable<object> Attributes) {
var li = new TagBuilder("li") {
InnerHtml = Display(Shape.Content).ToString()
};
li.MergeAttributes(Attributes.Named);
if (!string.IsNullOrWhiteSpace(Shape.Content.Name as string))
li.MergeAttribute("class", Shape.Content.Name); //, true); //need a merge value...
return Display(new HtmlString(li.ToString()));
}
#region form and company
[Shape]
public IHtmlString Form(dynamic Display, dynamic Shape, object Submit, INamedEnumerable<object> Attributes, HtmlHelper Html) {
var form = new TagBuilder("form") {
InnerHtml = Display(Shape.Fieldsets).ToString()
};
form.MergeAttributes(Attributes.Named);
form.MergeAttribute("method", "POST");
if (string.Equals(form.Attributes["method"], "POST", StringComparison.OrdinalIgnoreCase))
form.InnerHtml += Html.AntiForgeryTokenOrchard();
return Display(new HtmlString(form.ToString()));
}
[Shape]
public IHtmlString Fieldsets(dynamic Display, dynamic Shape) {
return Display(new HtmlString(Combine(DisplayAll(Display, Shape)).ToString()));
}
[Shape]
public IHtmlString Fieldset(dynamic Display, dynamic Shape, INamedEnumerable<object> Attributes) {
var fieldset = new TagBuilder("fieldset");
fieldset.MergeAttributes(Attributes.Named);
if (!string.IsNullOrWhiteSpace(Shape.Name as string))
fieldset.MergeAttribute("class", Shape.Name);
if (Shape.Count > 1) {
Shape.Metadata.Type = "UnorderedList";
fieldset.InnerHtml = Display(Shape).ToString();
}
else {
fieldset.InnerHtml = Combine(DisplayAll(Display, Shape)).ToString();
}
return Display(new HtmlString(fieldset.ToString()));
}
[Shape]
public IHtmlString FormButton(dynamic Display, dynamic Shape, INamedEnumerable<object> Attributes) {
var button = new TagBuilder("button") {
InnerHtml = Display(Shape.Text).ToString() //not caring about anything other than text at the moment
};
button.MergeAttributes(Attributes.Named);
return Display(new HtmlString(button.ToString()));
}
[Shape]
public IHtmlString FormSubmit(dynamic Display, dynamic Shape) {
Shape.Metadata.Type = "FormButton";
Shape.Attributes(new { type = "submit" });
return Display(Shape);
}
[Shape]
public IHtmlString Input(dynamic Display, dynamic Shape, INamedEnumerable<object> Attributes, HtmlHelper Html) {
var input = new TagBuilder("input");
input.MergeAttributes(Attributes.Named);
input.MergeAttribute("name", Shape.Name, true);
if (!string.IsNullOrWhiteSpace(Shape.Value as string))
input.MergeAttribute("value", Shape.Value, true);
return Display(
new HtmlString(input.ToString(TagRenderMode.SelfClosing)),
New.ValidationMessage().For(Shape));
}
[Shape]
public IHtmlString ValidationMessage(dynamic Display, dynamic For, HtmlHelper Html) {
return Display(Html.ValidationMessage(For.Name as string));
}
[Shape]
public IHtmlString Label(dynamic Display, dynamic Shape, INamedEnumerable<object> Attributes) {
var label = new TagBuilder("label") {
InnerHtml = Display(Shape.Text).ToString()
};
label.MergeAttributes(Attributes.Named);
return Display(new HtmlString(label.ToString()));
}
[Shape]
public IHtmlString Text(dynamic Shape) {
return new HtmlString(Shape.ToString());
}
[Shape]
public IHtmlString InputPassword(dynamic Display, dynamic Shape, INamedEnumerable<object> Attributes) {
Shape.Metadata.Type = "Input";
var attributes = new RouteValueDictionary(Attributes.Named);
attributes["type"] = "password";
Shape.Attributes(attributes);
return Display(
New.Label().Text(Shape.Text),
Shape);
}
[Shape]
public IHtmlString InputText(dynamic Display, dynamic Shape, INamedEnumerable<object> Attributes) {
Shape.Metadata.Type = "Input";
// could use a mergeattributes equiv if we go down this route
// also, Attributes.Named["type"] and equiv are NYI (INamedEnumerable is awesome but currently R/O)
var attributes = new RouteValueDictionary(Attributes.Named);
attributes["type"] = "text";
Shape.Attributes(attributes);
return Display(
New.Label().Text(Shape.Text),
Shape);
}
#endregion
static IHtmlString Combine(IEnumerable<IHtmlString> contents) {
return new HtmlString(contents.Aggregate("", (a, b) => a + b));
}
IEnumerable<IHtmlString> DisplayAll(dynamic Display, dynamic Shape) {
foreach (var item in Shape) {
yield return Display(item);
}
}
IEnumerable<IHtmlString> DisplayAll(dynamic Display, dynamic Shape, dynamic Wrapper) {
foreach (var item in Shape) {
yield return Display(Wrapper.Content(item));
}
}
}
}

View File

@@ -451,7 +451,6 @@
<Compile Include="Messaging\Services\IMessagingChannel.cs" />
<Compile Include="IWorkContextAccessor.cs" />
<Compile Include="WorkContextExtensions.cs" />
<Compile Include="Mvc\Html\Shapes.cs" />
<Compile Include="Mvc\ViewEngines\Razor\RazorCompilationEventsShim.cs" />
<Compile Include="Mvc\ViewEngines\Razor\RazorViewEngineProvider.cs" />
<Compile Include="Mvc\ViewEngines\Razor\WebViewPage.cs" />

View File

@@ -30,23 +30,24 @@ namespace Orchard.UI.Navigation {
var menuItems = _navigationManager.BuildMenu(menuName);
var menuShape = _shapeFactory.Menu().MenuName(menuName);
PopulateMenu(_shapeFactory, menuShape, menuItems);
PopulateMenu(_shapeFactory, menuShape, menuShape, menuItems);
workContext.Layout.Navigation.Add(menuShape);
}
private void PopulateMenu(dynamic shapeFactory, dynamic parentShape, IEnumerable<MenuItem> menuItems) {
private void PopulateMenu(dynamic shapeFactory, dynamic parentShape, dynamic menu, IEnumerable<MenuItem> menuItems) {
foreach (var menuItem in menuItems) {
var menuItemShape = shapeFactory.MenuItem()
.Text(menuItem.Text)
.Href(menuItem.Href)
.RouteValues(menuItem.RouteValues)
.Item(menuItem)
.Menu(shapeFactory)
.Menu(menu)
.Parent(parentShape);
if (menuItem.Items != null && menuItem.Items.Any()) {
PopulateMenu(shapeFactory, menuItemShape, menuItem.Items);
PopulateMenu(shapeFactory, menuItemShape, menu, menuItem.Items);
}
parentShape.Add(menuItemShape, menuItem.Position);

View File

@@ -4,7 +4,7 @@ using Orchard.Localization;
namespace Orchard.Utility.Extensions {
public static class StringExtensions {
private static readonly Regex humps = new Regex("[A-Z][^A-Z]*");
private static readonly Regex humps = new Regex("(?:^[a-zA-Z][^A-Z]*|[A-Z][^A-Z]*)");
public static string CamelFriendly(this string camel) {
if (camel == null)
return null;
@@ -29,7 +29,8 @@ namespace Orchard.Utility.Extensions {
}
public static string HtmlClassify(this string text) {
return Regex.Replace(text, @"[^a-zA-Z]+", m => m.Index == 0 ? "" : "-").ToLowerInvariant();
var friendlier = text.CamelFriendly();
return Regex.Replace(friendlier, @"[^a-zA-Z]+", m => m.Index == 0 ? "" : "-").ToLowerInvariant();
}
public static bool IsNullOrEmptyTrimmed(this string text) {