Minor fixes with tree pickers and support for Canvas.
Removal of AjaxControlToolkit from Canvas and custom non-used extenders. Refactored Canvas with new modal window lib, better jQuery and browser support. Minor CSS fixees. [TFS Changeset #64405]
This commit is contained in:
@@ -19,19 +19,9 @@ Umbraco.Sys.registerNamespace("Umbraco.Controls");
|
||||
return $("#" + this._itemIdValueClientID).val();
|
||||
},
|
||||
|
||||
LaunchPicker: function(e) {
|
||||
LaunchPicker: function() {
|
||||
var _this = this;
|
||||
UmbClientMgr.openModalWindow(this._itemPickerUrl, this._label, this._showHeader, this._width, this._height, 30, 0, ['#cancelbutton'], function(e) { _this.SaveSelection(e); });
|
||||
|
||||
var aBetterEventObject = jQuery.Event(e);
|
||||
// Now you can do what you want: (Cross-browser)
|
||||
aBetterEventObject.preventDefault()
|
||||
aBetterEventObject.isDefaultPrevented()
|
||||
aBetterEventObject.stopPropagation()
|
||||
aBetterEventObject.isPropagationStopped()
|
||||
aBetterEventObject.stopImmediatePropagation()
|
||||
aBetterEventObject.isImmediatePropagationStopped()
|
||||
return false;
|
||||
},
|
||||
|
||||
SaveSelection: function(e) {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<clientDependency isDebugMode="false" version="7">
|
||||
<clientDependency isDebugMode="false" version="8">
|
||||
<fileRegistration defaultProvider="PageHeaderProvider" fileDependencyExtensions="js,css" enableCompositeFiles="true">
|
||||
<providers>
|
||||
<add name="PageHeaderProvider" type="ClientDependency.Core.FileRegistration.Providers.PageHeaderProvider, ClientDependency.Core" />
|
||||
|
||||
@@ -447,10 +447,6 @@
|
||||
<DependentUpon>ContentTypeControlNew.ascx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="umbraco\controls\dualSelectBox.cs" />
|
||||
<Compile Include="umbraco\controls\Extenders\CustomDragDropDesigner.cs" />
|
||||
<Compile Include="umbraco\controls\Extenders\CustomDragDropExtender.cs" />
|
||||
<Compile Include="umbraco\controls\Extenders\CustomFloatingBehaviorDesigner.cs" />
|
||||
<Compile Include="umbraco\controls\Extenders\CustomFloatingBehaviorExtender.cs" />
|
||||
<Compile Include="umbraco\controls\GenericProperties\GenericProperty.ascx.cs">
|
||||
<DependentUpon>GenericProperty.ascx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
@@ -1486,8 +1482,6 @@
|
||||
<Content Include="web.config.SHOCKING.xslt" />
|
||||
<Content Include="web.config.UMBRACOTOSH.xslt" />
|
||||
<Content Include="umbraco\controls\ContentTypeControlNew.ascx" />
|
||||
<Content Include="umbraco\controls\Extenders\CustomDragDropBehavior.js" />
|
||||
<Content Include="umbraco\controls\Extenders\CustomFloatingBehavior.js" />
|
||||
<Content Include="umbraco\controls\GenericProperties\GenericProperty.ascx" />
|
||||
<Content Include="umbraco\create\DLRScripting.ascx" />
|
||||
<Content Include="umbraco\images\umbraco\developerRuby.gif" />
|
||||
|
||||
@@ -184,47 +184,33 @@ html {
|
||||
|
||||
/****************************************************************/
|
||||
|
||||
.modalBackground {
|
||||
background-color:Gray !important;
|
||||
filter:alpha(opacity=70) !important;
|
||||
opacity:0.7 !important;
|
||||
}
|
||||
|
||||
.modal {
|
||||
background-color: #fff !important;
|
||||
border:5px solid #CAC9C9 !important;
|
||||
font-family:Arial, Verdana !important;
|
||||
font-size: medium !important;
|
||||
padding:0px !important;
|
||||
width:500px !important;
|
||||
min-height: 250px !important;
|
||||
font-size: 11px !Important;
|
||||
}
|
||||
|
||||
.modaltitle {
|
||||
padding: 0px !important;
|
||||
margin: 0px !important;
|
||||
height: 14px !important;
|
||||
width: 493px !important;
|
||||
background-image: url(../../../umbraco_client/modal/modalGradiant.gif) !important;
|
||||
color: #378080 !important;
|
||||
border-bottom: 1px solid #CCCCCC !Important;
|
||||
}
|
||||
|
||||
.modalcontent {
|
||||
padding: 5px !important;
|
||||
}
|
||||
|
||||
.modal h1 {
|
||||
.umbModalBox h1
|
||||
{
|
||||
font-size: larger !important;
|
||||
}
|
||||
|
||||
.modal h2 {
|
||||
.umbModalBox h2
|
||||
{
|
||||
font-size: medium !important;
|
||||
}
|
||||
|
||||
.modalcontent label{padding-bottom: 2px !Important; display: block !Important; color: #999 !Important; }
|
||||
|
||||
.modal p {
|
||||
font-size: small !important;
|
||||
.umbModalBox label
|
||||
{
|
||||
padding-bottom: 2px !Important;
|
||||
display: block !Important;
|
||||
color: #666 !Important;
|
||||
font-family:Trebuchet MS,Lucida Grande,verdana,arial ! important;
|
||||
}
|
||||
|
||||
.umbModalBox p
|
||||
{
|
||||
font-size: 12px !important;
|
||||
font-family:Trebuchet MS,Lucida Grande,verdana,arial ! important;
|
||||
color:Black ! important;
|
||||
margin-bottom:5px;
|
||||
}
|
||||
|
||||
.umbModalBox p select
|
||||
{
|
||||
margin-bottom:10px ! important;
|
||||
}
|
||||
@@ -1,7 +1,6 @@
|
||||
using System;
|
||||
using System.Web.UI;
|
||||
using System.Web.UI.WebControls;
|
||||
//using AjaxControlToolkit;
|
||||
using umbraco.cms.businesslogic.web;
|
||||
using umbraco.presentation.LiveEditing.Controls;
|
||||
using Content = umbraco.cms.businesslogic.Content;
|
||||
@@ -11,20 +10,19 @@ using umbraco.IO;
|
||||
namespace umbraco.presentation.LiveEditing.Modules.CreateModule
|
||||
{
|
||||
[ClientDependency(200, ClientDependencyType.Javascript, "LiveEditing/Modules/CreateModule/CreateModule.js", "UmbracoRoot")]
|
||||
[ClientDependency(200, ClientDependencyType.Javascript, "modal/modal.js", "UmbracoClient")]
|
||||
[ClientDependency(200, ClientDependencyType.Css, "modal/style.css", "UmbracoClient")]
|
||||
public class CreateModule : BaseModule
|
||||
{
|
||||
//protected const string CreateModuleScriptFile = "{0}/LiveEditing/Modules/CreateModule/CreateModule.js";
|
||||
|
||||
protected ImageButton m_CreateButton = new ImageButton();
|
||||
|
||||
protected Panel m_CreateModal = new Panel();
|
||||
//protected ModalPopupExtender m_CreateModalExtender = new ModalPopupExtender();
|
||||
protected Panel m_CreateModal;
|
||||
|
||||
protected TextBox m_NameTextBox = new TextBox();
|
||||
protected DropDownList m_AllowedDocTypesDropdown = new DropDownList();
|
||||
protected TextBox m_NameTextBox;
|
||||
protected DropDownList m_AllowedDocTypesDropdown;
|
||||
|
||||
protected Button m_ConfirmCreateButton = new Button();
|
||||
protected Button m_CancelCreateButton = new Button();
|
||||
protected Button m_ConfirmCreateButton;
|
||||
protected Button m_CancelCreateButton;
|
||||
|
||||
public CreateModule(LiveEditingManager manager)
|
||||
: base(manager)
|
||||
@@ -40,25 +38,25 @@ namespace umbraco.presentation.LiveEditing.Modules.CreateModule
|
||||
{
|
||||
base.CreateChildControls();
|
||||
|
||||
Controls.Add(m_CreateButton);
|
||||
m_CreateButton.ID = "LeCreateButton";
|
||||
m_CreateButton.CssClass = "button";
|
||||
m_CreateButton.ToolTip = "Create";
|
||||
m_CreateButton.ImageUrl = String.Format("{0}/LiveEditing/Modules/CreateModule/create.png", SystemDirectories.Umbraco);
|
||||
m_CreateButton.Visible = UmbracoContext.Current.HasPermission(ActionNew.Instance.Letter);
|
||||
m_NameTextBox = new TextBox();
|
||||
m_NameTextBox.ID = "NewContentName";
|
||||
|
||||
Controls.Add(m_CreateModal);
|
||||
m_AllowedDocTypesDropdown = new DropDownList();
|
||||
m_AllowedDocTypesDropdown.ID = "AllowedDocTypes";
|
||||
|
||||
m_ConfirmCreateButton = new Button();
|
||||
m_ConfirmCreateButton.ID = "ConfirmCreateButton";
|
||||
|
||||
m_CancelCreateButton = new Button();
|
||||
m_CancelCreateButton.ID = "CancelCreateButton";
|
||||
|
||||
m_CreateModal = new Panel();
|
||||
m_CreateModal.ID = "LeCreateModal";
|
||||
m_CreateModal.CssClass = "modal";
|
||||
m_CreateModal.Width = 300;
|
||||
m_CreateModal.Attributes.Add("Style", "display: none");
|
||||
m_CreateModal.Attributes.Add("style", "display: none");
|
||||
|
||||
m_CreateModal.Controls.Add(new LiteralControl("<div class='modaltitle'>Create Page </div>"));
|
||||
m_CreateModal.Controls.Add(new LiteralControl("<div class='modalcontent'>"));
|
||||
|
||||
m_CreateModal.Controls.Add(new LiteralControl("<p><label>Name:</label>"));
|
||||
m_CreateModal.Controls.Add(new LiteralControl("<p><label>" + ui.GetText("name") + ":</label>"));
|
||||
m_CreateModal.Controls.Add(m_NameTextBox);
|
||||
m_CreateModal.Controls.Add(new LiteralControl("</p><p><label>Choose Document Type:</label>"));
|
||||
m_CreateModal.Controls.Add(new LiteralControl("</p><p><label>" + ui.GetText("choose") + " " + ui.GetText("documentType") + ":</label>"));
|
||||
m_CreateModal.Controls.Add(m_AllowedDocTypesDropdown);
|
||||
FillAllowedDoctypes();
|
||||
|
||||
@@ -68,25 +66,26 @@ namespace umbraco.presentation.LiveEditing.Modules.CreateModule
|
||||
m_CreateModal.Controls.Add(new LiteralControl(" "));
|
||||
m_CreateModal.Controls.Add(m_CancelCreateButton);
|
||||
|
||||
m_ConfirmCreateButton.Text = "Ok";
|
||||
m_ConfirmCreateButton.Text = ui.GetText("ok");
|
||||
m_ConfirmCreateButton.ID = "LeCreateModalConfirm";
|
||||
m_ConfirmCreateButton.CssClass = "modalbuton";
|
||||
m_ConfirmCreateButton.OnClientClick = "CreateModuleOk();";
|
||||
|
||||
m_CancelCreateButton.Text = "Cancel";
|
||||
m_CancelCreateButton.Text = ui.GetText("cancel");
|
||||
m_CancelCreateButton.CssClass = "modalbuton";
|
||||
|
||||
//Controls.Add(m_CreateModalExtender);
|
||||
//m_CreateModalExtender.ID = "ModalCreate";
|
||||
//m_CreateModalExtender.TargetControlID = m_CreateButton.ID;
|
||||
//m_CreateModalExtender.PopupControlID = m_CreateModal.ID;
|
||||
//m_CreateModalExtender.BackgroundCssClass = "modalBackground";
|
||||
//m_CreateModalExtender.OkControlID = m_ConfirmCreateButton.ID;
|
||||
//m_CreateModalExtender.CancelControlID = m_CancelCreateButton.ID;
|
||||
//m_CreateModalExtender.OnOkScript = string.Format("CreateModuleOk()");
|
||||
|
||||
m_CreateModal.Controls.Add(new LiteralControl("</div>"));
|
||||
|
||||
//ScriptManager.RegisterClientScriptInclude(this, GetType(), CreateModuleScriptFile, String.Format(CreateModuleScriptFile, umbraco.IO.SystemDirectories.Umbraco));
|
||||
Controls.Add(m_CreateModal);
|
||||
|
||||
m_CreateButton.ID = "LeCreateButton";
|
||||
m_CreateButton.CssClass = "button";
|
||||
m_CreateButton.ToolTip = ui.GetText("create");
|
||||
m_CreateButton.ImageUrl = String.Format("{0}/LiveEditing/Modules/CreateModule/create.png", SystemDirectories.Umbraco);
|
||||
m_CreateButton.Visible = UmbracoContext.Current.HasPermission(ActionNew.Instance.Letter);
|
||||
m_CreateButton.OnClientClick = "jQuery('#" + m_CreateModal.ClientID + @"').ModalWindowShow('" + ui.GetText("create") + "',true,300,200,50,0, ['.modalbuton'], null);return false;";
|
||||
|
||||
Controls.Add(m_CreateButton);
|
||||
}
|
||||
|
||||
private void FillAllowedDoctypes()
|
||||
@@ -128,13 +127,13 @@ namespace umbraco.presentation.LiveEditing.Modules.CreateModule
|
||||
{
|
||||
switch (e.Type)
|
||||
{
|
||||
case "createcontent":
|
||||
case "createcontent":
|
||||
int userid = BasePages.UmbracoEnsuredPage.GetUserId(BasePages.UmbracoEnsuredPage.umbracoUserContextID);
|
||||
DocumentType typeToCreate = new DocumentType(Convert.ToInt32(m_AllowedDocTypesDropdown.SelectedValue));
|
||||
Document newDoc = Document.MakeNew(m_NameTextBox.Text, typeToCreate, new global::umbraco.BusinessLogic.User(userid), (int)UmbracoContext.Current.PageId);
|
||||
newDoc.Publish(new global::umbraco.BusinessLogic.User(userid));
|
||||
library.PublishSingleNode(newDoc.Id);
|
||||
Page.Response.Redirect(library.NiceUrl(newDoc.Id));
|
||||
Page.Response.Redirect(library.NiceUrl(newDoc.Id), false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
using System;
|
||||
using System.Web.UI;
|
||||
using System.Web.UI.WebControls;
|
||||
using AjaxControlToolkit;
|
||||
using umbraco.cms.businesslogic.web;
|
||||
using umbraco.presentation.LiveEditing.Controls;
|
||||
using umbraco.BusinessLogic.Actions;
|
||||
@@ -9,24 +8,21 @@ using ClientDependency.Core;
|
||||
using umbraco.IO;
|
||||
namespace umbraco.presentation.LiveEditing.Modules.DeleteModule
|
||||
{
|
||||
[ClientDependency(200, ClientDependencyType.Javascript, "LiveEditing/Modules/DeleteModule/DeleteModule.js", "UmbracoRoot")]
|
||||
[ClientDependency(200, ClientDependencyType.Javascript, "LiveEditing/Modules/DeleteModule/DeleteModule.js", "UmbracoRoot")]
|
||||
public class DeleteModule : BaseModule
|
||||
{
|
||||
//protected const string DeleteModuleScriptFile = "{0}/LiveEditing/Modules/DeleteModule/DeleteModule.js";
|
||||
protected ImageButton m_DeleteButton;
|
||||
|
||||
protected ImageButton m_DeleteButton = new ImageButton();
|
||||
protected Panel m_DeleteModal;
|
||||
|
||||
protected Panel m_DeleteModal = new Panel();
|
||||
protected ModalPopupExtender m_DeleteModalExtender = new ModalPopupExtender();
|
||||
|
||||
protected Button m_ConfirmDeleteButton = new Button();
|
||||
protected Button m_CancelDeleteButton = new Button();
|
||||
protected Button m_ConfirmDeleteButton;
|
||||
protected Button m_CancelDeleteButton;
|
||||
|
||||
public DeleteModule(LiveEditingManager manager)
|
||||
: base(manager)
|
||||
{ }
|
||||
|
||||
protected override void OnInit(EventArgs e)
|
||||
|
||||
protected override void OnInit(EventArgs e)
|
||||
{
|
||||
base.OnInit(e);
|
||||
EnsureChildControls();
|
||||
@@ -36,48 +32,40 @@ namespace umbraco.presentation.LiveEditing.Modules.DeleteModule
|
||||
{
|
||||
base.CreateChildControls();
|
||||
|
||||
Controls.Add(m_DeleteButton);
|
||||
m_DeleteButton.ID = "LeDeleteButton";
|
||||
m_DeleteButton.CssClass = "button";
|
||||
m_DeleteButton.ToolTip = "Delete";
|
||||
m_DeleteButton.ImageUrl = String.Format("{0}/LiveEditing/Modules/DeleteModule/delete.png", SystemDirectories.Umbraco);
|
||||
m_DeleteButton.Visible = UmbracoContext.Current.HasPermission(ActionDelete.Instance.Letter);
|
||||
|
||||
Controls.Add(m_DeleteModal);
|
||||
m_DeleteModal = new Panel();
|
||||
m_DeleteModal.ID = "LeDeleteModal";
|
||||
m_DeleteModal.CssClass = "modal";
|
||||
m_DeleteModal.Width = 300;
|
||||
m_DeleteModal.Attributes.Add("Style", "display: none");
|
||||
|
||||
m_DeleteModal.Controls.Add(new LiteralControl("<div class='modaltitle'>Delete Page </div>"));
|
||||
m_DeleteModal.Controls.Add(new LiteralControl("<div class='modalcontent'><p>Are you sure you want to delete this page? </p>"));
|
||||
m_ConfirmDeleteButton = new Button();
|
||||
m_ConfirmDeleteButton.Text = ui.GetText("ok");
|
||||
m_ConfirmDeleteButton.ID = "LeDeleteModalConfirm";
|
||||
m_ConfirmDeleteButton.CssClass = "modalbuton";
|
||||
m_ConfirmDeleteButton.OnClientClick = "DeleteModuleOk();";
|
||||
|
||||
m_CancelDeleteButton = new Button();
|
||||
m_CancelDeleteButton.ID = "CancelDelete";
|
||||
m_CancelDeleteButton.Text = ui.GetText("cancel");
|
||||
m_CancelDeleteButton.CssClass = "modalbuton";
|
||||
|
||||
m_DeleteModal.Controls.Add(new LiteralControl("<p>" + ui.GetText("confirmdelete") + "</p>"));
|
||||
m_DeleteModal.Controls.Add(m_ConfirmDeleteButton);
|
||||
m_DeleteModal.Controls.Add(new LiteralControl(" "));
|
||||
m_DeleteModal.Controls.Add(m_CancelDeleteButton);
|
||||
|
||||
m_ConfirmDeleteButton.Text = "Ok";
|
||||
m_ConfirmDeleteButton.ID = "LeDeleteModalConfirm";
|
||||
m_ConfirmDeleteButton.CssClass = "modalbuton";
|
||||
|
||||
m_CancelDeleteButton.Text = "Cancel";
|
||||
m_CancelDeleteButton.CssClass = "modalbuton";
|
||||
|
||||
Controls.Add(m_DeleteModalExtender);
|
||||
m_DeleteModalExtender.ID = "ModalDelete";
|
||||
m_DeleteModalExtender.TargetControlID = m_DeleteButton.ID;
|
||||
m_DeleteModalExtender.PopupControlID = m_DeleteModal.ID;
|
||||
m_DeleteModalExtender.BackgroundCssClass = "modalBackground";
|
||||
m_DeleteModalExtender.OkControlID = m_ConfirmDeleteButton.ID;
|
||||
m_DeleteModalExtender.CancelControlID = m_CancelDeleteButton.ID;
|
||||
m_DeleteModalExtender.OnOkScript = string.Format("DeleteModuleOk()");
|
||||
Controls.Add(m_DeleteModal);
|
||||
|
||||
m_DeleteModal.Controls.Add(new LiteralControl("</div>"));
|
||||
m_DeleteButton = new ImageButton();
|
||||
m_DeleteButton.ID = "LeDeleteButton";
|
||||
m_DeleteButton.CssClass = "button";
|
||||
m_DeleteButton.ToolTip = ui.GetText("delete"); ;
|
||||
m_DeleteButton.ImageUrl = String.Format("{0}/LiveEditing/Modules/DeleteModule/delete.png", SystemDirectories.Umbraco);
|
||||
m_DeleteButton.Visible = UmbracoContext.Current.HasPermission(ActionDelete.Instance.Letter);
|
||||
m_DeleteButton.OnClientClick = "jQuery('#" + m_DeleteModal.ClientID + @"').ModalWindowShow('" + ui.GetText("delete") + "',true,300,200,50,0, ['.modalbuton'], null);return false;";
|
||||
|
||||
//ScriptManager.RegisterClientScriptInclude(this, GetType(), DeleteModuleScriptFile, String.Format(DeleteModuleScriptFile, umbraco.IO.SystemDirectories.Umbraco));
|
||||
Controls.Add(m_DeleteButton);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Handles the <c>MessageReceived</c> event of the manager.
|
||||
/// </summary>
|
||||
|
||||
@@ -14,12 +14,14 @@ umbraco.presentation.LiveEditing.ItemEditing = function() {
|
||||
this._editControl = null;
|
||||
this._submitControl = null;
|
||||
|
||||
var itemEditingInternal = this;
|
||||
var _this = this;
|
||||
Sys.Debug.trace("Constructor, before init load");
|
||||
if (jQuery.browser.msie && !this._inited) {
|
||||
itemEditingInternal.init();
|
||||
if (!this._inited) {
|
||||
_this.init();
|
||||
}
|
||||
Sys.Application.add_load(function() { itemEditingInternal.init() });
|
||||
Sys.Application.add_load(function() {
|
||||
_this.init();
|
||||
});
|
||||
Sys.Debug.trace("Constructor, after init load");
|
||||
|
||||
}
|
||||
@@ -35,9 +37,9 @@ umbraco.presentation.LiveEditing.ItemEditing.prototype = {
|
||||
|
||||
this.itemsEnable();
|
||||
|
||||
|
||||
LiveEditingToolbar.add_save(function(sender, args) { ItemEditing.delaySaveWhenEditing(args, "save"); });
|
||||
LiveEditingToolbar.add_saveAndPublish(function(sender, args) { ItemEditing.delaySaveWhenEditing(args, "saveAndPublish"); });
|
||||
var _this = this;
|
||||
LiveEditingToolbar.add_save(function(sender, args) { _this.delaySaveWhenEditing(args, "save"); });
|
||||
LiveEditingToolbar.add_saveAndPublish(function(sender, args) { _this.delaySaveWhenEditing(args, "saveAndPublish"); });
|
||||
|
||||
this._inited = true;
|
||||
Sys.Debug.trace("Live Editing - ItemEditing: Ready.");
|
||||
@@ -55,22 +57,22 @@ umbraco.presentation.LiveEditing.ItemEditing.prototype = {
|
||||
|
||||
this._activeItem = this._items[itemId];
|
||||
Sys.Debug.assert(this._activeItem != null, "Live Editing - ItemEditing: Could not find item with ID " + itemId + ".");
|
||||
this._editControl = this.getElementsByTagName("umbraco:control")[0];
|
||||
Sys.Debug.assert(this._editControl != null, "Live Editing - ItemEditing: Could not find the editor control.");
|
||||
this._activeItem.fadeIn();
|
||||
this.moveChildControls(this._editControl, this._activeItem);
|
||||
this._editControl = this.getElementsByTagName("umbraco:control");
|
||||
Sys.Debug.assert(this._editControl.length > 0, "Live Editing - ItemEditing: Could not find the editor control.");
|
||||
//this._activeItem.jItem.fadeIn();
|
||||
this.moveChildControls(this._editControl, this._activeItem.jItem);
|
||||
|
||||
// Only elements that are currently present, can cause item editing to stop.
|
||||
// This enables transparent use of dynamically created elements (such as context/dropdown menus)
|
||||
// as clicks on those elements will not trigger the stop edit signal.
|
||||
jQuery("*").each(function() { this._canStopEditing = true; });
|
||||
jQuery("*").each(function() { $(this).data("canStopEditing", true); });
|
||||
|
||||
// raise event
|
||||
var handler = this.get_events().getHandler("startEdit");
|
||||
if (handler)
|
||||
handler(this, Sys.EventArgs.Empty);
|
||||
|
||||
this.ignoreChildClicks(this._activeItem);
|
||||
this.ignoreChildClicks(this._activeItem.jItem);
|
||||
|
||||
LiveEditingToolbar.setDirty(true);
|
||||
},
|
||||
@@ -90,7 +92,7 @@ umbraco.presentation.LiveEditing.ItemEditing.prototype = {
|
||||
this._submitControl.click();
|
||||
|
||||
// hide control
|
||||
this._activeItem.fadeOut();
|
||||
//this._activeItem.jItem.fadeOut();
|
||||
this._activeItem = null;
|
||||
this._submitControl = null;
|
||||
this._editControl = null;
|
||||
@@ -126,12 +128,24 @@ umbraco.presentation.LiveEditing.ItemEditing.prototype = {
|
||||
var f = function() {
|
||||
Sys.Application.remove_load(f);
|
||||
setTimeout(function() {
|
||||
Sys.Debug.trace("Live Editing - Delayed Saving Changes to server");
|
||||
UmbracoCommunicator.SendClientMessage(type, "");
|
||||
}, 100);
|
||||
}
|
||||
Sys.Application.add_load(f);
|
||||
})();
|
||||
}
|
||||
else {
|
||||
Sys.Debug.trace("Live Editing - Saving Changes to server");
|
||||
if (!Sys.WebForms.PageRequestManager.getInstance().get_isInAsyncPostBack()) {
|
||||
UmbracoCommunicator.SendClientMessage(type, "");
|
||||
}
|
||||
else {
|
||||
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function() {
|
||||
UmbracoCommunicator.SendClientMessage(type, "");
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
// Enables Live Editing of items.
|
||||
@@ -140,84 +154,60 @@ umbraco.presentation.LiveEditing.ItemEditing.prototype = {
|
||||
Sys.Debug.trace(" Found " + items.length + " editable Umbraco item(s).");
|
||||
|
||||
// enhance items with edit functionality
|
||||
for (var i = 0; i < items.length; i++) {
|
||||
var item = items[i];
|
||||
this._items[item.getAttribute("itemId")] = item;
|
||||
this.itemsAddFunctionality(item);
|
||||
Sys.Debug.trace(" " + (i + 1) + ". " + item.toString() + " is Live Editing enabled.");
|
||||
}
|
||||
var _this = this;
|
||||
var i = 0;
|
||||
items.each(function() {
|
||||
var item = new umbraco.presentation.LiveEditing.activeItem($(this));
|
||||
_this._items[item.itemId] = item;
|
||||
Sys.Debug.trace(" " + (++i) + ". " + item.toString() + " is Live Editing enabled.");
|
||||
});
|
||||
// disable hyperlinks to make them clickable for Live Editing
|
||||
this.disableHyperlinks();
|
||||
|
||||
// add "stop editing" handler when clicking outside the item
|
||||
|
||||
var _this = this;
|
||||
jQuery(document).mousedown(function(event) {
|
||||
// the _canStopEditing property is set in startEdit
|
||||
if (ItemEditing._activeItem != null && event.target._canStopEditing) {
|
||||
if (!ItemEditing._activeItem.clicked)
|
||||
ItemEditing.stopEdit();
|
||||
Sys.Debug.trace("DOCUMENT CLICKED");
|
||||
// the canStopEditing property is set in startEdit
|
||||
if (_this._activeItem != null && $(event.target).data("canStopEditing")) {
|
||||
if (!_this._activeItem.clicked)
|
||||
_this.stopEdit();
|
||||
else
|
||||
ItemEditing._activeItem.clicked = false;
|
||||
_this._activeItem.clicked = false;
|
||||
}
|
||||
});
|
||||
jQuery("#LiveEditingToolbar").mousedown(function() {
|
||||
if (ItemEditing._activeItem != null)
|
||||
ItemEditing._activeItem.clicked = true;
|
||||
Sys.Debug.trace("TOOLBAR CLICKED");
|
||||
if (_this._activeItem != null)
|
||||
_this._activeItem.clicked = true;
|
||||
});
|
||||
},
|
||||
|
||||
// Adds Javascript functionality to an item.
|
||||
itemsAddFunctionality: function(item) {
|
||||
// add attributes to item
|
||||
item.itemId = item.getAttribute("itemId");
|
||||
item.nodeId = item.getAttribute("nodeId");
|
||||
item.fieldName = item.getAttribute("name");
|
||||
|
||||
Sys.Debug.assert(item.itemId != null && item.nodeId != null && item.fieldName != null,
|
||||
"Live Editing - ItemEditing: Necessary umbraco:iteminfo attributes not present.");
|
||||
|
||||
// add functions to item
|
||||
var itemPrototype = umbraco.presentation.LiveEditing.ItemFunctions.prototype;
|
||||
item.toString = itemPrototype.toString;
|
||||
item.activate = itemPrototype.activate;
|
||||
item.fadeIn = itemPrototype.fadeIn;
|
||||
item.fadeOut = itemPrototype.fadeOut;
|
||||
|
||||
// register events
|
||||
// note: this doesn't work in IE, there it is set server-side as an attribute
|
||||
item.onclick = umbraco.presentation.LiveEditing.ItemFunctions.prototype.click;
|
||||
|
||||
// disable hyperlinks to make them clickable for Live Editing
|
||||
this.disableHyperlinks(item);
|
||||
},
|
||||
|
||||
// Update items that have changed.
|
||||
updateItems: function() {
|
||||
var itemUpdates = this.getElementsByTagName("umbraco:itemupdate");
|
||||
Sys.Debug.trace("Live Editing - ItemEditing: " + itemUpdates.length + " item update(s).");
|
||||
|
||||
// find all item updates
|
||||
for (var i = 0; i < itemUpdates.length; i++) {
|
||||
var itemUpdate = itemUpdates[i];
|
||||
var itemId = itemUpdate.getAttribute("itemId");
|
||||
var item = this._items[itemId];
|
||||
var _this = this;
|
||||
itemUpdates.each(function() {
|
||||
var itemUpdate = $(this);
|
||||
var itemId = itemUpdate.attr("itemId");
|
||||
var item = _this._items[itemId];
|
||||
|
||||
if (item != null) {
|
||||
Sys.Debug.trace(" Updating " + item.toString() + ".");
|
||||
|
||||
// remove old children and add updates ones
|
||||
while (item.firstChild != null)
|
||||
item.removeChild(item.firstChild);
|
||||
while (itemUpdate.firstChild != null)
|
||||
item.appendChild(itemUpdate.firstChild);
|
||||
item.fadeIn();
|
||||
_this.moveChildControls(itemUpdate, item.jItem);
|
||||
//item.jItem.fadeIn();
|
||||
|
||||
// disable hyperlinks to make them clickable for Live Editing
|
||||
this.disableHyperlinks(item);
|
||||
_this.disableHyperlinks();
|
||||
}
|
||||
else {
|
||||
while (itemUpdate.firstChild != null)
|
||||
itemUpdate.removeChild(itemUpdate.firstChild);
|
||||
itemUpdate.html("");
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
// Update controls that have changed.
|
||||
@@ -227,139 +217,124 @@ umbraco.presentation.LiveEditing.ItemEditing.prototype = {
|
||||
Sys.Debug.trace("Live Editing - ItemEditing: " + controlUpdates.length + " control update(s).");
|
||||
|
||||
if (controlUpdates.length == 1) {
|
||||
if (this._activeItem != null && controlUpdates[0].firstChild != null) {
|
||||
if (this._activeItem != null && controlUpdates.children().length > 0) {
|
||||
Sys.Debug.trace("Live Editing - ItemEditing: updating edit control.");
|
||||
this.moveChildControls(controlUpdates[0], this._activeItem);
|
||||
this.ignoreChildClicks(this._activeItem);
|
||||
this.moveChildControls(controlUpdates, this._activeItem.jItem);
|
||||
this.ignoreChildClicks();
|
||||
}
|
||||
|
||||
this._submitControl = controlUpdates[0].nextSibling;
|
||||
Sys.Debug.assert(this._submitControl != null, "Live Editing - ItemEditing: Submit button not found.");
|
||||
this._submitControl = controlUpdates.next();
|
||||
Sys.Debug.assert(this._submitControl.length > 0, "Live Editing - ItemEditing: Submit button not found.");
|
||||
}
|
||||
},
|
||||
|
||||
// ignores clicks on child elements of the control
|
||||
ignoreChildClicks: function(control) {
|
||||
// all children set the clicked property to true on mousedown
|
||||
// to avoid editing being stopped because of the body mousedown trigger
|
||||
|
||||
for (var i = 0; i < this._activeItem.childNodes.length; i++) {
|
||||
try {
|
||||
$addHandler(ItemEditing._activeItem.childNodes[i], "mousedown", function() {
|
||||
if (ItemEditing._activeItem != null)
|
||||
ItemEditing._activeItem.clicked = true;
|
||||
});
|
||||
}
|
||||
// some items don't support the onmousedown property
|
||||
catch (e) { }
|
||||
}
|
||||
ignoreChildClicks: function() {
|
||||
var _this = this;
|
||||
this._activeItem.jItem.children().mousedown(function(e) {
|
||||
_this._activeItem.clicked = true;
|
||||
});
|
||||
},
|
||||
|
||||
// Moves the child controls from source into destination, overwriting existing elements.
|
||||
moveChildControls: function(source, dest) {
|
||||
// save source childs to temp
|
||||
while (dest.firstChild != null)
|
||||
dest.removeChild(dest.firstChild);
|
||||
// add original source fields to dest
|
||||
while (source.firstChild != null)
|
||||
dest.appendChild(source.firstChild);
|
||||
Sys.Debug.trace("Live Editing - Moving Child Controls");
|
||||
|
||||
//remove contents in the destination
|
||||
dest.html("");
|
||||
|
||||
//add the source to the destination
|
||||
dest.append(source.html());
|
||||
|
||||
//remove teh contents from the source
|
||||
source.html("");
|
||||
|
||||
},
|
||||
|
||||
// Gets a list of elements with the specified tagname.
|
||||
// Works with custom namespaces in IE as well.
|
||||
// Gets a list of elements with the specified tagname including namespaced ones
|
||||
getElementsByTagName: function(tagname) {
|
||||
var elements = document.getElementsByTagName(tagname);
|
||||
// if no elements are found, retry search without the namespace prefix
|
||||
if (elements.length == 0 && tagname.indexOf(":") > 0)
|
||||
elements = document.getElementsByTagName(tagname.substr(tagname.indexOf(":") + 1));
|
||||
return elements;
|
||||
var found = jQuery("body").find("*").filter(function(index) {
|
||||
if (this.nodeType != 3) {
|
||||
var nn = this.nodeName.toLowerCase();
|
||||
var ftn = tagname.toLowerCase();
|
||||
var ln = (ftn.indexOf(":") > 0 ? ftn.substr(ftn.indexOf(":") + 1) : ftn);
|
||||
return (nn == ftn
|
||||
|| (typeof this.scopeName != "undefined" && nn == ln && this.scopeName.toLowerCase() == ftn.substr(0, ftn.indexOf(":"))));
|
||||
}
|
||||
return false;
|
||||
});
|
||||
Sys.Debug.trace("found " + found.length + " elements with selector: " + tagname);
|
||||
return found;
|
||||
},
|
||||
|
||||
// Disables hyperlinks inside the specified element.
|
||||
disableHyperlinks: function(element) {
|
||||
var links = element.getElementsByTagName("a");
|
||||
for (var i = 0; i < links.length; i++)
|
||||
links[i].onclick = function() { return false; };
|
||||
disableHyperlinks: function() {
|
||||
jQuery("a").click(function() {
|
||||
return false;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
umbraco.presentation.LiveEditing.ItemEditing.registerClass("umbraco.presentation.LiveEditing.ItemEditing", Sys.Component);
|
||||
|
||||
|
||||
|
||||
/********************* Live Editing item member functions *********************/
|
||||
|
||||
// The ItemFunctions class contains a set of functions that will be added to umbraco:item elements.
|
||||
// This class will not be initialized.
|
||||
umbraco.presentation.LiveEditing.ItemFunctions = function() { };
|
||||
|
||||
umbraco.presentation.LiveEditing.ItemFunctions.prototype = {
|
||||
|
||||
// Returns a textual representation of an item.
|
||||
toString: function() {
|
||||
return "Item " + this.itemId + " (node " + this.nodeId + ": " + this.fieldName + ")";
|
||||
},
|
||||
|
||||
// Activates an item for editing.
|
||||
activate: function() {
|
||||
ItemEditing._items[this.itemId] = this;
|
||||
if (this != ItemEditing._activeItem) {
|
||||
Sys.Debug.trace("Live Editing - ItemEditing: " + this.toString() + " was activated.");
|
||||
if (!Sys.WebForms.PageRequestManager.getInstance().get_isInAsyncPostBack()) {
|
||||
UmbracoCommunicator.SendClientMessage("edititem", this.itemId);
|
||||
//an object to store the information for the active item
|
||||
umbraco.presentation.LiveEditing.activeItem = function(item) {
|
||||
//error checking
|
||||
if (item != null && item.length != 1) {
|
||||
return null;
|
||||
}
|
||||
//create the object with values, wire up events and return it
|
||||
var obj = {
|
||||
jItem: item,
|
||||
nodeId: item.attr("nodeId"),
|
||||
fieldName: item.attr("name"),
|
||||
itemId: item.attr("itemId"),
|
||||
clicked: false,
|
||||
toString: function() {
|
||||
return "Item " + this.itemId + " (node " + this.nodeId + ": " + this.fieldName + ")";
|
||||
},
|
||||
// Activates an item for editing.
|
||||
activate: function() {
|
||||
ItemEditing._items[this.itemId] = this;
|
||||
if (this != ItemEditing._activeItem) {
|
||||
Sys.Debug.trace("Live Editing - ItemEditing: " + this.toString() + " was activated.");
|
||||
if (!Sys.WebForms.PageRequestManager.getInstance().get_isInAsyncPostBack()) {
|
||||
UmbracoCommunicator.SendClientMessage("edititem", this.itemId);
|
||||
}
|
||||
else {
|
||||
var itemId = this.itemId;
|
||||
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function() {
|
||||
if (itemId != 0) {
|
||||
UmbracoCommunicator.SendClientMessage("edititem", itemId);
|
||||
itemId = 0;
|
||||
}
|
||||
});
|
||||
}
|
||||
//this.jItem.fadeOut();
|
||||
}
|
||||
},
|
||||
// Item click handler.
|
||||
onClick: function(e) {
|
||||
if (ItemEditing._activeItem != null && ItemEditing._activeItem.itemId == this.itemId) {
|
||||
Sys.Debug.trace("Live Editing - ItemEditing: " + this.toString() + " click ignored because it is already active.");
|
||||
}
|
||||
else {
|
||||
var itemId = this.itemId;
|
||||
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function() {
|
||||
if (itemId != 0) {
|
||||
UmbracoCommunicator.SendClientMessage("edititem", itemId);
|
||||
itemId = 0;
|
||||
}
|
||||
});
|
||||
}
|
||||
this.fadeOut();
|
||||
}
|
||||
},
|
||||
|
||||
// Item click handler.
|
||||
// Note: in IE, this is called through the onclick attribute.
|
||||
click: function(e) {
|
||||
if (ItemEditing._activeItem != null && ItemEditing._activeItem.itemId == this.itemId) {
|
||||
Sys.Debug.trace("Live Editing - ItemEditing: " + this.toString() + " click ignored because it is already active.");
|
||||
}
|
||||
else {
|
||||
Sys.Debug.trace("Live Editing - ItemEditing: " + this.toString() + " was clicked.");
|
||||
if (e) {
|
||||
Sys.Debug.trace("Live Editing - ItemEditing: " + this.toString() + " was clicked.");
|
||||
e.stopPropagation(); // disable click event propagation to parent elements
|
||||
this.activate();
|
||||
}
|
||||
else {
|
||||
// Internet Explorer specific code
|
||||
window.event.cancelBubble = true; // disable click event propagation to parent elements
|
||||
// find the iteminfo self-or-ancestor,
|
||||
// and restore the functionality that magically disappeared
|
||||
var element = window.event.srcElement;
|
||||
while (element.tagName != 'iteminfo')
|
||||
element = element.parentElement;
|
||||
ItemEditing.itemsAddFunctionality(element);
|
||||
element.activate();
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
// fades in the item
|
||||
fadeIn: function() {
|
||||
if (!jQuery.browser.msie)
|
||||
jQuery(this).stop().fadeTo(1, 0.0).fadeTo(500, 1);
|
||||
},
|
||||
|
||||
// fades out the item
|
||||
fadeOut: function() {
|
||||
if (!jQuery.browser.msie)
|
||||
jQuery(this).stop().fadeTo(1, 1.0).fadeTo(500, 1);
|
||||
}
|
||||
|
||||
//keep the scope on the click event method call
|
||||
obj.jItem.click(function(e) {
|
||||
obj.onClick.call(obj, e);
|
||||
});
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
|
||||
// global instance of the ItemEditing class
|
||||
function initializeGlobalItemEditing() {
|
||||
ItemEditing = new umbraco.presentation.LiveEditing.ItemEditing();
|
||||
|
||||
@@ -94,12 +94,7 @@ namespace umbraco.presentation.LiveEditing.Modules.ItemEditing
|
||||
}
|
||||
catch{}
|
||||
|
||||
// hook the click event with by attribute in IE,
|
||||
// as this is the only way to make it work using custom tags
|
||||
if (item.Page.Request.Browser.IsBrowser("IE"))
|
||||
{
|
||||
writer.AddAttribute("onclick", "umbraco.presentation.LiveEditing.ItemFunctions.prototype.click()");
|
||||
}
|
||||
|
||||
writer.RenderBeginTag(LiveEditingMarkerTag);
|
||||
}
|
||||
|
||||
|
||||
@@ -2,9 +2,7 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Web.UI;
|
||||
using System.Web.UI.WebControls;
|
||||
using AjaxControlToolkit;
|
||||
using umbraco.controls;
|
||||
using umbraco.presentation.controls.Extenders;
|
||||
using umbraco.presentation.LiveEditing.Controls;
|
||||
using umbraco.presentation.LiveEditing.Updates;
|
||||
using umbraco.presentation.templateControls;
|
||||
@@ -13,28 +11,33 @@ using ClientDependency.Core;
|
||||
using umbraco.IO;
|
||||
namespace umbraco.presentation.LiveEditing.Modules.MacroEditing
|
||||
{
|
||||
[ClientDependency(200, ClientDependencyType.Javascript, "LiveEditing/Modules/MacroModule/MacroModule.js", "UmbracoRoot")]
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// THIS MODULE HASN'T YET EVER BEEN INCLUDED IN UMBRACO.
|
||||
///
|
||||
/// SINCE AJAXCONTROLTOOLKIT IS REMOVED, THIS CLASS WILL NEED TO BE REFACTORED LIKE THE
|
||||
/// OTHER MODULES.
|
||||
///
|
||||
/// WHATEVER FUNCTIONALITY THAT WAS INTENDED FOR THIS MODULE WILL NEED TO BE FIGURED OUT
|
||||
/// BASED ON THE COMMENTED CODE ALREADY WRITTEN.
|
||||
///
|
||||
/// </summary>
|
||||
[ClientDependency(200, ClientDependencyType.Javascript, "LiveEditing/Modules/MacroModule/MacroModule.js", "UmbracoRoot")]
|
||||
public class MacroModule : BaseModule
|
||||
{
|
||||
//protected const string MacroModuleScriptFile = "{0}/LiveEditing/Modules/MacroModule/MacroModule.js";
|
||||
|
||||
private ImageButton m_MacroButton = new ImageButton();
|
||||
|
||||
private DropDownList m_MacroDropDown = new DropDownList();
|
||||
private DropDownList m_ContainerDropDown = new DropDownList();
|
||||
private List<Panel> containers = new List<Panel>();
|
||||
private Button m_AddMacroButton = new Button();
|
||||
|
||||
private Panel m_MacroModal = new Panel();
|
||||
|
||||
private Panel m_AddMacroStep2 = new Panel();
|
||||
|
||||
private macroParameterControl m_MacroParameter = new macroParameterControl();
|
||||
|
||||
private ModalPopupExtender m_MacroModalExtender = new ModalPopupExtender();
|
||||
//private ImageButton m_MacroButton = new ImageButton();
|
||||
//private DropDownList m_MacroDropDown = new DropDownList();
|
||||
//private DropDownList m_ContainerDropDown = new DropDownList();
|
||||
//private List<Panel> containers = new List<Panel>();
|
||||
//private Button m_AddMacroButton = new Button();
|
||||
//private Panel m_MacroModal = new Panel();
|
||||
//private Panel m_AddMacroStep2 = new Panel();
|
||||
//private macroParameterControl m_MacroParameter = new macroParameterControl();
|
||||
|
||||
public MacroModule(LiveEditingManager manager)
|
||||
: base (manager)
|
||||
: base(manager)
|
||||
{ }
|
||||
|
||||
protected override void OnInit(EventArgs e)
|
||||
@@ -52,144 +55,124 @@ namespace umbraco.presentation.LiveEditing.Modules.MacroEditing
|
||||
protected override void CreateChildControls()
|
||||
{
|
||||
base.CreateChildControls();
|
||||
|
||||
Controls.Add(m_MacroButton);
|
||||
m_MacroButton.ID = "LeMacroButton";
|
||||
m_MacroButton.CssClass = "button";
|
||||
m_MacroButton.ToolTip = "Insert macro";
|
||||
m_MacroButton.ImageUrl = String.Format("{0}/images/editor/insMacro.gif", SystemDirectories.Umbraco);
|
||||
|
||||
Controls.Add(m_MacroModal);
|
||||
m_MacroModal.ID = "LeMacroModal";
|
||||
m_MacroModal.CssClass = "modal";
|
||||
m_MacroModal.Width = 500;
|
||||
m_MacroModal.Attributes.Add("Style", "display: none");
|
||||
//Controls.Add(m_MacroButton);
|
||||
//m_MacroButton.ID = "LeMacroButton";
|
||||
//m_MacroButton.CssClass = "button";
|
||||
//m_MacroButton.ToolTip = "Insert macro";
|
||||
//m_MacroButton.ImageUrl = String.Format("{0}/images/editor/insMacro.gif", SystemDirectories.Umbraco);
|
||||
|
||||
m_MacroModal.Controls.Add(new LiteralControl("<div class='modaltitle'>Insert macro</div>"));
|
||||
m_MacroModal.Controls.Add(new LiteralControl("<div class='modalcontent'>"));
|
||||
//Controls.Add(m_MacroModal);
|
||||
//m_MacroModal.ID = "LeMacroModal";
|
||||
//m_MacroModal.CssClass = "modal";
|
||||
//m_MacroModal.Width = 500;
|
||||
//m_MacroModal.Attributes.Add("Style", "display: none");
|
||||
|
||||
//m_MacroModal.Controls.Add(new LiteralControl("<div class='modaltitle'>Insert macro</div>"));
|
||||
//m_MacroModal.Controls.Add(new LiteralControl("<div class='modalcontent'>"));
|
||||
|
||||
|
||||
m_MacroModal.Controls.Add(m_MacroDropDown);
|
||||
m_MacroDropDown.CssClass = "dropdown";
|
||||
m_MacroDropDown.Items.Clear();
|
||||
m_MacroDropDown.Items.Add(new ListItem("Choose macro", "0"));
|
||||
foreach (UM.Macro macro in UM.Macro.GetAll())
|
||||
{
|
||||
m_MacroDropDown.Items.Add(new ListItem(macro.Name, macro.Alias));
|
||||
}
|
||||
m_MacroDropDown.AutoPostBack = true;
|
||||
m_MacroDropDown.SelectedIndexChanged += new EventHandler(m_MacroDropDown_SelectedIndexChanged);
|
||||
//m_MacroModal.Controls.Add(m_MacroDropDown);
|
||||
//m_MacroDropDown.CssClass = "dropdown";
|
||||
//m_MacroDropDown.Items.Clear();
|
||||
//m_MacroDropDown.Items.Add(new ListItem("Choose macro", "0"));
|
||||
//foreach (UM.Macro macro in UM.Macro.GetAll())
|
||||
//{
|
||||
// m_MacroDropDown.Items.Add(new ListItem(macro.Name, macro.Alias));
|
||||
//}
|
||||
//m_MacroDropDown.AutoPostBack = true;
|
||||
//m_MacroDropDown.SelectedIndexChanged += new EventHandler(m_MacroDropDown_SelectedIndexChanged);
|
||||
|
||||
m_MacroModal.Controls.Add(new LiteralControl("<br/>"));
|
||||
//m_MacroModal.Controls.Add(new LiteralControl("<br/>"));
|
||||
|
||||
m_MacroModal.Controls.Add(m_ContainerDropDown);
|
||||
m_ContainerDropDown.CssClass = "dropdown";
|
||||
m_ContainerDropDown.Items.Clear();
|
||||
m_ContainerDropDown.Items.Add(new ListItem("Choose container", "0"));
|
||||
foreach (Control ctrl in Page.Controls)
|
||||
{
|
||||
FindMacroHolderPanels(ctrl);
|
||||
//m_MacroModal.Controls.Add(m_ContainerDropDown);
|
||||
//m_ContainerDropDown.CssClass = "dropdown";
|
||||
//m_ContainerDropDown.Items.Clear();
|
||||
//m_ContainerDropDown.Items.Add(new ListItem("Choose container", "0"));
|
||||
//foreach (Control ctrl in Page.Controls)
|
||||
//{
|
||||
// FindMacroHolderPanels(ctrl);
|
||||
|
||||
}
|
||||
//}
|
||||
|
||||
m_MacroModal.Controls.Add(new LiteralControl("<br/>"));
|
||||
m_MacroModal.Controls.Add(m_AddMacroButton);
|
||||
m_AddMacroButton.Text = "Add Macro";
|
||||
|
||||
m_AddMacroButton.Click += new EventHandler(m_AddMacroButton_Click);
|
||||
//m_MacroModal.Controls.Add(new LiteralControl("<br/>"));
|
||||
//m_MacroModal.Controls.Add(m_AddMacroButton);
|
||||
//m_AddMacroButton.Text = "Add Macro";
|
||||
|
||||
//m_AddMacroButton.Click += new EventHandler(m_AddMacroButton_Click);
|
||||
|
||||
|
||||
//m_MacroModal.Controls.Add(new LiteralControl("</div>"));
|
||||
|
||||
Controls.Add(m_MacroModalExtender);
|
||||
m_MacroModalExtender.ID = "ModalMacro";
|
||||
m_MacroModalExtender.TargetControlID = m_MacroButton.ID;
|
||||
m_MacroModalExtender.PopupControlID = m_MacroModal.ID;
|
||||
m_MacroModalExtender.BackgroundCssClass = "modalBackground";
|
||||
m_MacroModalExtender.OkControlID = m_AddMacroButton.ID;
|
||||
m_MacroModalExtender.OnOkScript = "okAddMacro()";
|
||||
|
||||
m_MacroModal.Controls.Add(new LiteralControl("</div>"));
|
||||
|
||||
//ScriptManager.RegisterClientScriptInclude(this, GetType(), MacroModuleScriptFile, String.Format(MacroModuleScriptFile, umbraco.IO.SystemDirectories.Umbraco));
|
||||
|
||||
|
||||
}
|
||||
|
||||
void m_MacroDropDown_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
m_MacroModal.Controls.Add(m_AddMacroStep2);
|
||||
//m_MacroModal.Controls.Add(m_AddMacroStep2);
|
||||
|
||||
m_AddMacroStep2.Controls.Add(new LiteralControl("<h2>Macro Properties</h2>"));
|
||||
//m_AddMacroStep2.Controls.Add(new LiteralControl("<h2>Macro Properties</h2>"));
|
||||
|
||||
m_MacroParameter.MacroAlias = m_MacroDropDown.SelectedValue;
|
||||
//m_MacroParameter.MacroAlias = m_MacroDropDown.SelectedValue;
|
||||
|
||||
//m_AddMacroStep2.Controls.Add(m_MacroParameter);
|
||||
|
||||
m_AddMacroStep2.Controls.Add(m_MacroParameter);
|
||||
|
||||
m_MacroModalExtender.Show();
|
||||
}
|
||||
|
||||
void m_AddMacroButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
containers.ForEach(delegate(Panel p)
|
||||
{
|
||||
if (p.ID == m_ContainerDropDown.SelectedItem.Value)
|
||||
{
|
||||
Macro macrotoadd = new Macro();
|
||||
macrotoadd.Alias = m_MacroDropDown.SelectedItem.Value;
|
||||
//containers.ForEach(delegate(Panel p)
|
||||
//{
|
||||
// if (p.ID == m_ContainerDropDown.SelectedItem.Value)
|
||||
// {
|
||||
// Macro macrotoadd = new Macro();
|
||||
// macrotoadd.Alias = m_MacroDropDown.SelectedItem.Value;
|
||||
|
||||
p.Controls.Add(new LiteralControl(string.Format(
|
||||
"<div id=\"DragDropContainer{0}\" class=\"widget\"><div id=\"DragDropHandle{0}\" class=\"widget_header\">handle</div>",
|
||||
macrotoadd.Alias + macrotoadd.ID)));
|
||||
p.Controls.Add(macrotoadd);
|
||||
p.Controls.Add(new LiteralControl("</div>"));
|
||||
((UpdatePanel)p.Parent.Parent).Update();
|
||||
// p.Controls.Add(new LiteralControl(string.Format(
|
||||
// "<div id=\"DragDropContainer{0}\" class=\"widget\"><div id=\"DragDropHandle{0}\" class=\"widget_header\">handle</div>",
|
||||
// macrotoadd.Alias + macrotoadd.ID)));
|
||||
// p.Controls.Add(macrotoadd);
|
||||
// p.Controls.Add(new LiteralControl("</div>"));
|
||||
// ((UpdatePanel)p.Parent.Parent).Update();
|
||||
|
||||
|
||||
TemplateUpdate update = new TemplateUpdate();
|
||||
LiveEditingContext.Updates.Add(update);
|
||||
}
|
||||
});
|
||||
|
||||
// TemplateUpdate update = new TemplateUpdate();
|
||||
// LiveEditingContext.Updates.Add(update);
|
||||
// }
|
||||
//});
|
||||
}
|
||||
|
||||
private void FindMacroHolderPanels(Control ctrl)
|
||||
{
|
||||
foreach (Control childControl in ctrl.Controls)
|
||||
{
|
||||
//foreach (Control childControl in ctrl.Controls)
|
||||
//{
|
||||
|
||||
if (childControl is Panel)
|
||||
{
|
||||
if (((Panel)childControl).CssClass == "macro_holder")
|
||||
{
|
||||
Panel holderPanel = (Panel)childControl;
|
||||
containers.Add(holderPanel);
|
||||
m_ContainerDropDown.Items.Add(new ListItem(childControl.ID, childControl.ID));
|
||||
// if (childControl is Panel)
|
||||
// {
|
||||
// if (((Panel)childControl).CssClass == "macro_holder")
|
||||
// {
|
||||
// Panel holderPanel = (Panel)childControl;
|
||||
// containers.Add(holderPanel);
|
||||
// m_ContainerDropDown.Items.Add(new ListItem(childControl.ID, childControl.ID));
|
||||
|
||||
((UpdatePanel)holderPanel.Parent.Parent).Triggers.Clear();
|
||||
AsyncPostBackTrigger apt = new AsyncPostBackTrigger();
|
||||
apt.ControlID = m_MacroButton.ID;
|
||||
apt.EventName = "Click";
|
||||
((UpdatePanel)holderPanel.Parent.Parent).Triggers.Add(apt);
|
||||
// ((UpdatePanel)holderPanel.Parent.Parent).Triggers.Clear();
|
||||
// AsyncPostBackTrigger apt = new AsyncPostBackTrigger();
|
||||
// apt.ControlID = m_MacroButton.ID;
|
||||
// apt.EventName = "Click";
|
||||
// ((UpdatePanel)holderPanel.Parent.Parent).Triggers.Add(apt);
|
||||
|
||||
childControl.Controls.Add(new LiteralControl(string.Format(
|
||||
"<div id=\"DropCue{0}\" class=\"widget_dropcue\"></div>",
|
||||
childControl.ID)));
|
||||
// childControl.Controls.Add(new LiteralControl(string.Format(
|
||||
// "<div id=\"DropCue{0}\" class=\"widget_dropcue\"></div>",
|
||||
// childControl.ID)));
|
||||
|
||||
CustomDragDropExtender extender = new CustomDragDropExtender();
|
||||
extender.TargetControlID = childControl.ID;
|
||||
extender.DragItemClass = "widget";
|
||||
extender.DragItemHandleClass = "widget_header";
|
||||
extender.DropCueID = string.Format("DropCue{0}", childControl.ID);
|
||||
extender.OnClientDrop = "MacroOnDrop";
|
||||
|
||||
// }
|
||||
// }
|
||||
|
||||
childControl.Controls.Add(extender);
|
||||
}
|
||||
}
|
||||
|
||||
if (childControl.HasControls())
|
||||
{
|
||||
FindMacroHolderPanels(childControl);
|
||||
}
|
||||
}
|
||||
// if (childControl.HasControls())
|
||||
// {
|
||||
// FindMacroHolderPanels(childControl);
|
||||
// }
|
||||
//}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
using System;
|
||||
using System.Web.UI;
|
||||
using System.Web.UI.WebControls;
|
||||
using AjaxControlToolkit;
|
||||
using umbraco.cms.businesslogic.web;
|
||||
using umbraco.presentation.LiveEditing.Controls;
|
||||
using umbraco.BusinessLogic.Actions;
|
||||
@@ -9,18 +8,15 @@ using ClientDependency.Core;
|
||||
using umbraco.IO;
|
||||
namespace umbraco.presentation.LiveEditing.Modules.UnpublishModule
|
||||
{
|
||||
[ClientDependency(200, ClientDependencyType.Javascript, "LiveEditing/Modules/UnpublishModule/UnpublishModule.js", "UmbracoRoot")]
|
||||
[ClientDependency(200, ClientDependencyType.Javascript, "LiveEditing/Modules/UnpublishModule/UnpublishModule.js", "UmbracoRoot")]
|
||||
public class UnpublishModule : BaseModule
|
||||
{
|
||||
//protected const string UnpublishModuleScriptFile = "{0}/LiveEditing/Modules/UnpublishModule/UnpublishModule.js";
|
||||
protected ImageButton m_UnpublishButton;
|
||||
|
||||
protected ImageButton m_UnpublishButton = new ImageButton();
|
||||
protected Panel m_UnpublishModal;
|
||||
|
||||
protected Panel m_UnpublishModal = new Panel();
|
||||
protected ModalPopupExtender m_UnpublishModalExtender = new ModalPopupExtender();
|
||||
|
||||
protected Button m_ConfirmDeleteButton = new Button();
|
||||
protected Button m_CancelDeleteButton = new Button();
|
||||
protected Button m_ConfirmUnpublishButton;
|
||||
protected Button m_CancelDeleteButton;
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="UnpublishModule"/> class.
|
||||
@@ -34,59 +30,51 @@ namespace umbraco.presentation.LiveEditing.Modules.UnpublishModule
|
||||
/// Raises the <see cref="E:System.Web.UI.Control.Init"/> event.
|
||||
/// </summary>
|
||||
/// <param name="e">An <see cref="T:System.EventArgs"/> object that contains the event data.</param>
|
||||
protected override void OnInit(EventArgs e)
|
||||
protected override void OnInit(EventArgs e)
|
||||
{
|
||||
base.OnInit(e);
|
||||
EnsureChildControls();
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Called by the ASP.NET page framework to notify server controls that use composition-based implementation to create any child controls they contain in preparation for posting back or rendering.
|
||||
/// </summary>
|
||||
/// <summary>
|
||||
/// Called by the ASP.NET page framework to notify server controls that use composition-based implementation to create any child controls they contain in preparation for posting back or rendering.
|
||||
/// </summary>
|
||||
protected override void CreateChildControls()
|
||||
{
|
||||
base.CreateChildControls();
|
||||
|
||||
Controls.Add(m_UnpublishButton);
|
||||
m_UnpublishModal = new Panel();
|
||||
m_UnpublishModal.ID = "LeUnpublishModal";
|
||||
m_UnpublishModal.Attributes.Add("Style", "display: none");
|
||||
|
||||
m_CancelDeleteButton = new Button();
|
||||
m_CancelDeleteButton.ID = "CancelUnpublish";
|
||||
m_CancelDeleteButton.Text = ui.GetText("cancel");
|
||||
m_CancelDeleteButton.CssClass = "modalbuton";
|
||||
|
||||
m_ConfirmUnpublishButton = new Button();
|
||||
m_ConfirmUnpublishButton.Text = ui.GetText("ok");
|
||||
m_ConfirmUnpublishButton.ID = "LeUnpublishModalConfirm";
|
||||
m_ConfirmUnpublishButton.CssClass = "modalbuton";
|
||||
m_ConfirmUnpublishButton.OnClientClick = "UnpublishModuleOk();";
|
||||
|
||||
m_UnpublishModal.Controls.Add(new LiteralControl("<p>" + ui.GetText("areyousure") + "</p>"));
|
||||
m_UnpublishModal.Controls.Add(m_ConfirmUnpublishButton);
|
||||
m_UnpublishModal.Controls.Add(new LiteralControl(" "));
|
||||
m_UnpublishModal.Controls.Add(m_CancelDeleteButton);
|
||||
|
||||
Controls.Add(m_UnpublishModal);
|
||||
|
||||
m_UnpublishButton = new ImageButton();
|
||||
m_UnpublishButton.ID = "LeUnpublishButton";
|
||||
m_UnpublishButton.CssClass = "button";
|
||||
m_UnpublishButton.ToolTip = "Unpublish";
|
||||
m_UnpublishButton.ImageUrl = String.Format("{0}/LiveEditing/Modules/UnpublishModule/unpublish.png", SystemDirectories.Umbraco);
|
||||
m_UnpublishButton.Visible = UmbracoContext.Current.HasPermission(ActionUnPublish.Instance.Letter);
|
||||
m_UnpublishButton.OnClientClick = "jQuery('#" + m_UnpublishModal.ClientID + @"').ModalWindowShow('" + ui.GetText("unPublish") + "',true,300,200,50,0, ['.modalbuton'], null);return false;";
|
||||
|
||||
Controls.Add(m_UnpublishModal);
|
||||
m_UnpublishModal.ID = "LeUnpublishModal";
|
||||
m_UnpublishModal.CssClass = "modal";
|
||||
m_UnpublishModal.Width = 300;
|
||||
m_UnpublishModal.Attributes.Add("Style", "display: none");
|
||||
|
||||
m_UnpublishModal.Controls.Add(new LiteralControl("<div class='modaltitle'>Unpublish Page </div>"));
|
||||
m_UnpublishModal.Controls.Add(new LiteralControl("<div class='modalcontent'><p>Are you sure you want to unpublish this page? </p>"));
|
||||
|
||||
m_UnpublishModal.Controls.Add(m_ConfirmDeleteButton);
|
||||
m_UnpublishModal.Controls.Add(new LiteralControl(" "));
|
||||
m_UnpublishModal.Controls.Add(m_CancelDeleteButton);
|
||||
|
||||
m_ConfirmDeleteButton.Text = "Ok";
|
||||
m_ConfirmDeleteButton.ID = "LeUnpublishModalConfirm";
|
||||
m_ConfirmDeleteButton.CssClass = "modalbuton";
|
||||
|
||||
m_CancelDeleteButton.Text = "Cancel";
|
||||
m_CancelDeleteButton.CssClass = "modalbuton";
|
||||
|
||||
Controls.Add(m_UnpublishModalExtender);
|
||||
m_UnpublishModalExtender.ID = "ModalUnpublish";
|
||||
m_UnpublishModalExtender.TargetControlID = m_UnpublishButton.ID;
|
||||
m_UnpublishModalExtender.PopupControlID = m_UnpublishModal.ID;
|
||||
m_UnpublishModalExtender.BackgroundCssClass = "modalBackground";
|
||||
m_UnpublishModalExtender.OkControlID = m_ConfirmDeleteButton.ID;
|
||||
m_UnpublishModalExtender.CancelControlID = m_CancelDeleteButton.ID;
|
||||
m_UnpublishModalExtender.OnOkScript = string.Format("UnpublishModuleOk()");
|
||||
|
||||
m_UnpublishModal.Controls.Add(new LiteralControl("</div>"));
|
||||
|
||||
//ScriptManager.RegisterClientScriptInclude(this, GetType(), UnpublishModuleScriptFile, String.Format(UnpublishModuleScriptFile, umbraco.IO.SystemDirectories.Umbraco));
|
||||
Controls.Add(m_UnpublishButton);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,312 +0,0 @@
|
||||
Type.registerNamespace('umbraco.presentation.umbraco.controls.Extenders');
|
||||
|
||||
|
||||
umbraco.presentation.umbraco.controls.Extenders.CustomDragDropBehavior = function(element) {
|
||||
|
||||
umbraco.presentation.umbraco.controls.Extenders.CustomDragDropBehavior.initializeBase(this, [element]);
|
||||
|
||||
this._DragItemClassValue = null;
|
||||
this._DragItemHandleClassValue = null;
|
||||
this._DropCueIDValue = null;
|
||||
this._dropCue = null;
|
||||
this._floatingBehaviors = [];
|
||||
}
|
||||
|
||||
umbraco.presentation.umbraco.controls.Extenders.CustomDragDropBehavior.prototype = {
|
||||
|
||||
initialize : function() {
|
||||
// Register ourselves as a drop target.
|
||||
AjaxControlToolkit.DragDropManager.registerDropTarget(this);
|
||||
//Sys.Preview.UI.DragDropManager.registerDropTarget(this);
|
||||
|
||||
// Initialize drag behavior after a while
|
||||
window.setTimeout( Function.createDelegate( this, this._initializeDraggableItems ), 500 );
|
||||
|
||||
this._dropCue = $get(this.get_DropCueID());
|
||||
},
|
||||
|
||||
dispose : function() {
|
||||
AjaxControlToolkit.DragDropManager.unregisterDropTarget(this);
|
||||
//Sys.Preview.UI.DragDropManager.unregisterDropTarget(this);
|
||||
|
||||
this._clearFloatingBehaviors();
|
||||
|
||||
umbraco.presentation.umbraco.controls.Extenders.CustomDragDropBehavior.callBaseMethod(this, 'dispose');
|
||||
},
|
||||
|
||||
add_onDrop : function(handler) {
|
||||
this.get_events().addHandler("onDrop", handler);
|
||||
},
|
||||
|
||||
remove_onDrop : function(handler) {
|
||||
this.get_events().removeHandler("onDrop", handler);
|
||||
},
|
||||
|
||||
// onDrop property maps to onDrop event
|
||||
get_onDrop : function() {
|
||||
return this.get_events().getHandler("onDrop");
|
||||
},
|
||||
|
||||
set_onDrop : function(value) {
|
||||
if (value && (0 < value.length)) {
|
||||
var func = CommonToolkitScripts.resolveFunction(value);
|
||||
if (func) {
|
||||
this.add_onDrop(func);
|
||||
} else {
|
||||
throw Error.argumentType('value', typeof(value), 'Function', 'resize handler not a function, function name, or function text.');
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
_raiseEvent : function( eventName, eventArgs ) {
|
||||
var handler = this.get_events().getHandler(eventName);
|
||||
if( handler ) {
|
||||
if( !eventArgs ) eventArgs = Sys.EventArgs.Empty;
|
||||
handler(this, eventArgs);
|
||||
}
|
||||
},
|
||||
|
||||
_clearFloatingBehaviors : function()
|
||||
{
|
||||
while( this._floatingBehaviors.length > 0 )
|
||||
{
|
||||
var behavior = this._floatingBehaviors.pop();
|
||||
behavior.dispose();
|
||||
}
|
||||
},
|
||||
|
||||
_findChildByClass : function(item, className)
|
||||
{
|
||||
// First check all immediate child items
|
||||
var child = item.firstChild;
|
||||
while( child != null )
|
||||
{
|
||||
if( child.className == className ) return child;
|
||||
child = child.nextSibling;
|
||||
}
|
||||
|
||||
// Not found, recursively check all child items
|
||||
child = item.firstChild;
|
||||
while( child != null )
|
||||
{
|
||||
var found = this._findChildByClass( child, className );
|
||||
if( found != null ) return found;
|
||||
child = child.nextSibling;
|
||||
}
|
||||
},
|
||||
|
||||
// Find all items with the drag item class and make each item
|
||||
// draggable
|
||||
_initializeDraggableItems : function()
|
||||
{
|
||||
this._clearFloatingBehaviors();
|
||||
|
||||
var el = this.get_element();
|
||||
|
||||
var child = el.firstChild;
|
||||
while( child != null )
|
||||
{
|
||||
if( child.className == this._DragItemClassValue && child != this._dropCue)
|
||||
{
|
||||
var handle = this._findChildByClass(child, this._DragItemHandleClassValue);
|
||||
if( handle )
|
||||
{
|
||||
var handleId = handle.id;
|
||||
var behaviorId = child.id + "_WidgetFloatingBehavior";
|
||||
|
||||
// make the item draggable by adding floating behaviour to it
|
||||
var floatingBehavior = $create(umbraco.presentation.umbraco.controls.Extenders.CustomFloatingBehavior,
|
||||
{"DragHandleID":handleId, "id":behaviorId, "name": behaviorId}, {}, {}, child);
|
||||
|
||||
Array.add( this._floatingBehaviors, floatingBehavior );
|
||||
}
|
||||
}
|
||||
child = child.nextSibling;
|
||||
}
|
||||
},
|
||||
|
||||
get_DragItemClass : function()
|
||||
{
|
||||
return this._DragItemClassValue;
|
||||
},
|
||||
|
||||
set_DragItemClass : function(value)
|
||||
{
|
||||
this._DragItemClassValue = value;
|
||||
},
|
||||
|
||||
get_DropCueID : function()
|
||||
{
|
||||
return this._DropCueIDValue;
|
||||
},
|
||||
|
||||
set_DropCueID : function(value)
|
||||
{
|
||||
this._DropCueIDValue = value;
|
||||
},
|
||||
|
||||
get_DragItemHandleClass : function()
|
||||
{
|
||||
return this._DragItemHandleClassValue;
|
||||
},
|
||||
|
||||
set_DragItemHandleClass : function(value)
|
||||
{
|
||||
this._DragItemHandleClassValue = value;
|
||||
},
|
||||
|
||||
getDescriptor : function() {
|
||||
var td = umbraco.presentation.umbraco.controls.Extenders.CustomDragDropBehavior.callBaseMethod(this, 'getDescriptor');
|
||||
return td;
|
||||
},
|
||||
|
||||
// IDropTarget members.
|
||||
get_dropTargetElement : function() {
|
||||
return this.get_element();
|
||||
},
|
||||
|
||||
drop : function(dragMode, type, data) {
|
||||
this._hideDropCue(data);
|
||||
this._placeItem(data);
|
||||
},
|
||||
|
||||
canDrop : function(dragMode, dataType) {
|
||||
return true;
|
||||
},
|
||||
|
||||
onDragEnterTarget : function(dragMode, type, data) {
|
||||
this._showDropCue(data);
|
||||
},
|
||||
|
||||
onDragLeaveTarget : function(dragMode, type, data) {
|
||||
this._hideDropCue(data);
|
||||
},
|
||||
|
||||
onDragInTarget : function(dragMode, type, data) {
|
||||
this._repositionDropCue(data);
|
||||
},
|
||||
|
||||
_findItemAt : function(x,y, item)
|
||||
{
|
||||
var el = this.get_element();
|
||||
|
||||
var child = el.firstChild;
|
||||
while( child != null )
|
||||
{
|
||||
if( child.className == this._DragItemClassValue && child != this._dropCue && child != item )
|
||||
{
|
||||
var pos = Sys.UI.DomElement.getLocation(child);
|
||||
|
||||
if( y <= pos.y )
|
||||
{
|
||||
return child;
|
||||
}
|
||||
}
|
||||
child = child.nextSibling;
|
||||
}
|
||||
|
||||
return null;
|
||||
},
|
||||
|
||||
_showDropCue : function(data)
|
||||
{
|
||||
this._repositionDropCue(data);
|
||||
|
||||
this._dropCue.style.display = "block";
|
||||
this._dropCue.style.visibility = "visible";
|
||||
|
||||
var bounds = Sys.UI.DomElement.getBounds(data.item);
|
||||
|
||||
if( this._dropCue.style.height == "" )
|
||||
this._dropCue.style.height = bounds.height.toString() + "px";
|
||||
|
||||
},
|
||||
|
||||
_hideDropCue : function(data)
|
||||
{
|
||||
this._dropCue.style.display = "none";
|
||||
this._dropCue.style.visibility = "hidden";
|
||||
},
|
||||
|
||||
_repositionDropCue : function(data)
|
||||
{
|
||||
var location = Sys.UI.DomElement.getLocation(data.item);
|
||||
var nearestChild = this._findItemAt(location.x, location.y, data.item);
|
||||
|
||||
var el = this.get_element();
|
||||
|
||||
if( null == nearestChild )
|
||||
{
|
||||
if( el.lastChild != this._dropCue )
|
||||
{
|
||||
el.removeChild(this._dropCue);
|
||||
el.appendChild(this._dropCue);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if( nearestChild.previousSibling != this._dropCue )
|
||||
{
|
||||
el.removeChild(this._dropCue);
|
||||
el.insertBefore(this._dropCue, nearestChild);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
_placeItem : function(data)
|
||||
{
|
||||
var el = this.get_element();
|
||||
|
||||
data.item.parentNode.removeChild( data.item );
|
||||
el.insertBefore( data.item, this._dropCue );
|
||||
|
||||
// Find the position of the dropped item
|
||||
var position = 0;
|
||||
var item = el.firstChild;
|
||||
while( item != data.item )
|
||||
{
|
||||
if( item.className == this._DragItemClassValue ) position++;
|
||||
item = item.nextSibling;
|
||||
}
|
||||
this._raiseDropEvent( /* Container */ el, /* droped item */ data.item, /* position */ position );
|
||||
},
|
||||
|
||||
|
||||
_raiseDropEvent : function( container, droppedItem, position )
|
||||
{
|
||||
this._raiseEvent( "onDrop", new umbraco.presentation.umbraco.controls.Extenders.DropEventArgs(container, droppedItem, position) );
|
||||
}
|
||||
}
|
||||
|
||||
umbraco.presentation.umbraco.controls.Extenders.CustomDragDropBehavior.registerClass('umbraco.presentation.umbraco.controls.Extenders.CustomDragDropBehavior',
|
||||
AjaxControlToolkit.BehaviorBase,
|
||||
AjaxControlToolkit.IDragSource,
|
||||
AjaxControlToolkit.IDropTarget,
|
||||
/*Sys.UI.Behavior,
|
||||
Sys.Preview.UI.IDragSource,
|
||||
Sys.Preview.UI.IDropTarget,*/
|
||||
Sys.IDisposable);
|
||||
|
||||
|
||||
umbraco.presentation.umbraco.controls.Extenders.DropEventArgs = function(container, droppedItem, position) {
|
||||
umbraco.presentation.umbraco.controls.Extenders.DropEventArgs.initializeBase(this);
|
||||
|
||||
this._container = container;
|
||||
this._droppedItem = droppedItem;
|
||||
this._position = position;
|
||||
}
|
||||
|
||||
umbraco.presentation.umbraco.controls.Extenders.DropEventArgs.prototype = {
|
||||
get_container : function() {
|
||||
return this._container;
|
||||
},
|
||||
get_droppedItem : function() {
|
||||
return this._droppedItem;
|
||||
},
|
||||
get_position : function() {
|
||||
return this._position;
|
||||
}
|
||||
}
|
||||
|
||||
umbraco.presentation.umbraco.controls.Extenders.DropEventArgs.registerClass("umbraco.presentation.umbraco.controls.Extenders.DropEventArgs", Sys.EventArgs);
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
using AjaxControlToolkit.Design;
|
||||
|
||||
namespace umbraco.presentation.controls.Extenders
|
||||
{
|
||||
class CustomDragDropDesigner : ExtenderControlBaseDesigner<CustomDragDropExtender>
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -1,78 +0,0 @@
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Web.UI;
|
||||
using System.Web.UI.WebControls;
|
||||
using AjaxControlToolkit;
|
||||
|
||||
[assembly: WebResource("umbraco.presentation.umbraco.controls.Extenders.CustomDragDropBehavior.js", "text/javascript")]
|
||||
|
||||
namespace umbraco.presentation.controls.Extenders
|
||||
{
|
||||
[Designer(typeof(CustomDragDropDesigner))]
|
||||
[ClientScriptResource("umbraco.presentation.umbraco.controls.Extenders.CustomDragDropBehavior", "umbraco.presentation.umbraco.controls.Extenders.CustomDragDropBehavior.js")]
|
||||
[TargetControlType(typeof(WebControl))]
|
||||
[RequiredScript(typeof(CommonToolkitScripts))]
|
||||
[RequiredScript(typeof(TimerScript))]
|
||||
//[RequiredScript(typeof(FloatingBehaviorScript))]
|
||||
[RequiredScript(typeof(DragDropScripts))]
|
||||
[RequiredScript(typeof(DragPanelExtender))]
|
||||
[RequiredScript(typeof(CustomFloatingBehaviorScript))]
|
||||
public class CustomDragDropExtender : ExtenderControlBase
|
||||
{
|
||||
[ExtenderControlProperty]
|
||||
public string DragItemClass
|
||||
{
|
||||
get
|
||||
{
|
||||
return GetPropertyValue<String>("DragItemClass", string.Empty);
|
||||
}
|
||||
set
|
||||
{
|
||||
SetPropertyValue<String>("DragItemClass", value);
|
||||
}
|
||||
}
|
||||
|
||||
[ExtenderControlProperty]
|
||||
public string DragItemHandleClass
|
||||
{
|
||||
get
|
||||
{
|
||||
return GetPropertyValue<String>("DragItemHandleClass", string.Empty);
|
||||
}
|
||||
set
|
||||
{
|
||||
SetPropertyValue<String>("DragItemHandleClass", value);
|
||||
}
|
||||
}
|
||||
|
||||
[ExtenderControlProperty]
|
||||
[IDReferenceProperty(typeof(WebControl))]
|
||||
public string DropCueID
|
||||
{
|
||||
get
|
||||
{
|
||||
return GetPropertyValue<String>("DropCueID", string.Empty);
|
||||
}
|
||||
set
|
||||
{
|
||||
SetPropertyValue<String>("DropCueID", value);
|
||||
}
|
||||
}
|
||||
|
||||
[ExtenderControlProperty()]
|
||||
[DefaultValue("")]
|
||||
[ClientPropertyName("onDrop")]
|
||||
public string OnClientDrop
|
||||
{
|
||||
get
|
||||
{
|
||||
return GetPropertyValue<String>("OnClientDrop", string.Empty);
|
||||
}
|
||||
set
|
||||
{
|
||||
SetPropertyValue<String>("OnClientDrop", value);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,171 +0,0 @@
|
||||
Type.registerNamespace('umbraco.presentation.umbraco.controls.Extenders');
|
||||
|
||||
umbraco.presentation.umbraco.controls.Extenders.CustomFloatingBehavior = function(element) {
|
||||
umbraco.presentation.umbraco.controls.Extenders.CustomFloatingBehavior.initializeBase(this,[element]);
|
||||
|
||||
var _handle;
|
||||
var _location;
|
||||
var _dragStartLocation;
|
||||
var _DragHandleIDValue;
|
||||
|
||||
var _mouseDownHandler = Function.createDelegate(this, mouseDownHandler);
|
||||
|
||||
this.get_DragHandleID = function()
|
||||
{
|
||||
return this._DragHandleIDValue;
|
||||
}
|
||||
|
||||
this.set_DragHandleID = function(value)
|
||||
{
|
||||
this._DragHandleIDValue = value;
|
||||
}
|
||||
|
||||
this.add_move = function(handler) {
|
||||
this.get_events().addHandler('move', handler);
|
||||
}
|
||||
|
||||
this.remove_move = function(handler) {
|
||||
this.get_events().removeHandler('move', handler);
|
||||
}
|
||||
|
||||
this.get_handle = function() {
|
||||
return _handle;
|
||||
}
|
||||
this.set_handle = function(value) {
|
||||
if (_handle != null) {
|
||||
$removeHandler(_handle, "mousedown", _mouseDownHandler);
|
||||
}
|
||||
|
||||
_handle = value;
|
||||
$addHandler(_handle, "mousedown", _mouseDownHandler);
|
||||
}
|
||||
|
||||
this.get_location = function() {
|
||||
return _location;
|
||||
}
|
||||
this.set_location = function(value) {
|
||||
if (_location != value) {
|
||||
_location = value;
|
||||
if (this.get_isInitialized()) {
|
||||
|
||||
Sys.UI.DomElement.setLocation(this.get_element(), _location.x, _location.y);
|
||||
}
|
||||
this.raisePropertyChanged('location');
|
||||
}
|
||||
}
|
||||
|
||||
this.initialize = function() {
|
||||
umbraco.presentation.umbraco.controls.Extenders.CustomFloatingBehavior.callBaseMethod(this, 'initialize');
|
||||
|
||||
// Set the handle and initialize dragging
|
||||
this.set_handle( $get( this.get_DragHandleID() ) );
|
||||
}
|
||||
|
||||
this.dispose = function() {
|
||||
if (_handle && _mouseDownHandler) {
|
||||
$removeHandler(_handle, "mousedown", _mouseDownHandler);
|
||||
}
|
||||
_mouseDownHandler = null;
|
||||
umbraco.presentation.umbraco.controls.Extenders.CustomFloatingBehavior.callBaseMethod(this, 'dispose');
|
||||
}
|
||||
|
||||
this.checkCanDrag = function(element) {
|
||||
var undraggableTagNames = ["input", "button", "select", "textarea", "label"];
|
||||
var tagName = element.tagName;
|
||||
|
||||
if ((tagName.toLowerCase() == "a") && (element.href != null) && (element.href.length > 0)) {
|
||||
return false;
|
||||
}
|
||||
if (Array.indexOf(undraggableTagNames, tagName.toLowerCase()) > -1) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
function mouseDownHandler(ev) {
|
||||
window._event = ev;
|
||||
var el = this.get_element();
|
||||
|
||||
if (!this.checkCanDrag(ev.target)) return;
|
||||
|
||||
// Get the location before making the element absolute
|
||||
_location = Sys.UI.DomElement.getLocation(el);
|
||||
|
||||
// Make the element absolute
|
||||
el.style.width = el.offsetWidth + "px";
|
||||
el.style.height = el.offsetHeight + "px";
|
||||
Sys.UI.DomElement.setLocation(el, _location.x, _location.y);
|
||||
|
||||
_dragStartLocation = Sys.UI.DomElement.getLocation(el);
|
||||
|
||||
ev.preventDefault();
|
||||
|
||||
this.startDragDrop(el);
|
||||
|
||||
// Hack for restoring position to static
|
||||
el.originalPosition = "static";
|
||||
el.originalZIndex = el.style.zIndex;
|
||||
el.style.zIndex = "60000";
|
||||
}
|
||||
|
||||
// Type get_dataType()
|
||||
this.get_dragDataType = function() {
|
||||
return "_CustomFloatingItem";
|
||||
}
|
||||
|
||||
// Object get_data(Context)
|
||||
this.getDragData = function(context) {
|
||||
return { item : this.get_element(), handle : this.get_handle() } ;
|
||||
}
|
||||
|
||||
// DragMode get_dragMode()
|
||||
this.get_dragMode = function() {
|
||||
//return Sys.Preview.UI.DragMode.Move;
|
||||
return AjaxControlToolkit.DragMode.Move;
|
||||
}
|
||||
|
||||
// void onDragStart()
|
||||
this.onDragStart = function() { }
|
||||
|
||||
// void onDrag()
|
||||
this.onDrag = function() { }
|
||||
|
||||
// void onDragEnd(Canceled)
|
||||
this.onDragEnd = function(canceled) {
|
||||
if (!canceled) {
|
||||
var handler = this.get_events().getHandler('move');
|
||||
if(handler) {
|
||||
var cancelArgs = new Sys.CancelEventArgs();
|
||||
handler(this, cancelArgs);
|
||||
canceled = cancelArgs.get_cancel();
|
||||
}
|
||||
}
|
||||
|
||||
var el = this.get_element();
|
||||
el.style.width = el.style.height = el.style.left = el.style.top = "";
|
||||
el.style.zIndex = el.originalZIndex;
|
||||
}
|
||||
|
||||
this.startDragDrop = function(dragVisual) {
|
||||
AjaxControlToolkit.DragDropManager.startDragDrop(this, dragVisual, null);
|
||||
//Sys.Preview.UI.DragDropManager.startDragDrop(this, dragVisual, null);
|
||||
}
|
||||
|
||||
this.get_dropTargetElement = function() {
|
||||
return document.body;
|
||||
}
|
||||
|
||||
this.canDrop = function(dragMode, dataType, data) {
|
||||
return (dataType == "_CustomFloatingItem");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
umbraco.presentation.umbraco.controls.Extenders.CustomFloatingBehavior.registerClass('umbraco.presentation.umbraco.controls.Extenders.CustomFloatingBehavior',
|
||||
//Sys.UI.Behavior,
|
||||
//Sys.Preview.UI.IDragSource,
|
||||
AjaxControlToolkit.BehaviorBase,
|
||||
AjaxControlToolkit.IDragSource,
|
||||
Sys.IDisposable);
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
using AjaxControlToolkit;
|
||||
using AjaxControlToolkit.Design;
|
||||
|
||||
namespace umbraco.presentation.controls.Extenders
|
||||
{
|
||||
class CustomFloatingBehaviorDesigner : ExtenderControlBaseDesigner<CustomFloatingBehaviorExtender>
|
||||
{
|
||||
}
|
||||
|
||||
[ClientScriptResource(null, "umbraco.presentation.umbraco.controls.Extenders.CustomFloatingBehavior.js")]
|
||||
public static class CustomFloatingBehaviorScript
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -1,31 +0,0 @@
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Web.UI;
|
||||
using System.Web.UI.WebControls;
|
||||
using AjaxControlToolkit;
|
||||
|
||||
[assembly: WebResource("umbraco.presentation.umbraco.controls.Extenders.CustomFloatingBehavior.js", "text/javascript")]
|
||||
|
||||
namespace umbraco.presentation.controls.Extenders
|
||||
{
|
||||
[Designer(typeof(CustomFloatingBehaviorDesigner))]
|
||||
[ClientScriptResource("umbraco.presentation.umbraco.controls.Extenders.CustomFloatingBehavior", "umbraco.presentation.umbraco.controls.Extenders.CustomFloatingBehavior.js")]
|
||||
[TargetControlType(typeof(WebControl))]
|
||||
[RequiredScript(typeof(DragDropScripts))]
|
||||
public class CustomFloatingBehaviorExtender : ExtenderControlBase
|
||||
{
|
||||
[ExtenderControlProperty]
|
||||
[IDReferenceProperty(typeof(WebControl))]
|
||||
public string DragHandleID
|
||||
{
|
||||
get
|
||||
{
|
||||
return GetPropertyValue<String>("DragHandleID", string.Empty);
|
||||
}
|
||||
set
|
||||
{
|
||||
SetPropertyValue<String>("DragHandleID", value);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -45,7 +45,7 @@
|
||||
<cc1:Pane ID="pane_chooseNode" runat="server" Style="overflow: auto; height: 250px;">
|
||||
<umbraco:TreeControl runat="server" ID="JTree" App='<%#umbraco.helper.Request("app") %>'
|
||||
IsDialog="true" DialogMode="id" ShowContextMenu="false" FunctionToCall="dialogHandler"
|
||||
Height="250"></umbraco:TreeControl>
|
||||
Height="230"></umbraco:TreeControl>
|
||||
</cc1:Pane>
|
||||
<asp:Panel runat="server" ID="panel_buttons">
|
||||
<cc1:Feedback runat="server" ID="PageNameHolder" type="notice" Style="margin-top: 10px;"
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
function uploadHandler(e) {
|
||||
dialogHandler(e.id);
|
||||
//get the tree object for the chooser and refresh
|
||||
var tree = jQuery("#treeContainer").UmbracoTreeAPI();
|
||||
var tree = jQuery("#<%=DialogTree.ClientID%>").UmbracoTreeAPI();
|
||||
tree.refreshTree();
|
||||
}
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
<input type="hidden" id="copyTo" name="copyTo" />
|
||||
<cc1:Feedback ID="feedback" runat="server" />
|
||||
<cc1:Pane ID="pane_form" runat="server" Visible="false">
|
||||
<cc1:PropertyPanel runat="server" Style="overflow: auto; height: 200px;">
|
||||
<cc1:PropertyPanel runat="server" Style="overflow: auto; height: 220px;">
|
||||
<umbraco:TreeControl runat="server" ID="JTree" App='<%#umbraco.helper.Request("app") %>'
|
||||
IsDialog="true" DialogMode="id" ShowContextMenu="false" FunctionToCall="dialogHandler"
|
||||
Height="200"></umbraco:TreeControl>
|
||||
|
||||
@@ -64,7 +64,7 @@ Umbraco.Sys.registerNamespace("Umbraco.Controls");
|
||||
$.fn.UmbracoTreeAPI = function() {
|
||||
/// <summary>exposes the Umbraco Tree api for the selected object</summary>
|
||||
if ($(this).length != 1) {
|
||||
throw "UmbracoTreeAPI selector requires that there be exactly one control selected";
|
||||
throw "UmbracoTreeAPI selector requires that there be exactly one control selected, this selector returns " + $(this).length;
|
||||
};
|
||||
// check if there's an api stored for the id of the object specified, if there's not
|
||||
// check if the first child is a div and if that has the api specified
|
||||
|
||||
@@ -13,13 +13,64 @@ Umbraco.Sys.registerNamespace("Umbraco.Controls");
|
||||
return $(this).data("ModalWindowAPI") == null ? null : $(this).data("ModalWindowAPI");
|
||||
};
|
||||
|
||||
$.fn.ModalWindowShow = function(name, showHeader, width, height, top, leftOffset, closeTriggers, onCloseCallback) {
|
||||
return $(this).each(function() {
|
||||
//check if the modal exists already
|
||||
if ($(this).closest(".umbModalBox").length) {
|
||||
var api = $(this).closest(".umbModalBox").ModalWindowAPI();
|
||||
api._obj.jqmShow(); //since it exist, just re-show it
|
||||
}
|
||||
else {
|
||||
var modal = Umbraco.Controls.ModalWindow();
|
||||
modal.show(this, name, showHeader, width, height, top, leftOffset, closeTriggers, onCloseCallback);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
Umbraco.Controls.ModalWindow = function() {
|
||||
/// <summary>Modal window class, when open is called, it will create a temporary html element to attach the window to</summary>
|
||||
return {
|
||||
_wId: Umbraco.Utils.generateRandom().toString().replace(".", ""), //the modal window ID that will be assigned
|
||||
_obj: null, //the jquery element for the modal window
|
||||
_rVal: null, //a return value specified when closing that gets passed to the onCloseCallback method
|
||||
|
||||
show: function(selector, name, showHeader, width, height, top, leftOffset, closeTriggers, onCloseCallback) {
|
||||
//check if the modal elems exist
|
||||
if (!this._modalElemsExist()) {
|
||||
this._createModalElems(false, selector);
|
||||
}
|
||||
|
||||
this._open(name, showHeader,
|
||||
width, height, top, leftOffset,
|
||||
closeTriggers, onCloseCallback,
|
||||
function(h) {
|
||||
//insert the content
|
||||
var umbModal = $(h.w);
|
||||
var umbModalContent = $(".umbModalBoxContent", umbModal);
|
||||
umbModalContent.append($(selector));
|
||||
$(selector).show();
|
||||
});
|
||||
},
|
||||
open: function(url, name, showHeader, width, height, top, leftOffset, closeTriggers, onCloseCallback) {
|
||||
//check if the modal elems exist
|
||||
if (!this._modalElemsExist()) {
|
||||
this._createModalElems(true);
|
||||
}
|
||||
var _this = this;
|
||||
this._open(name, showHeader,
|
||||
width, height, top, leftOffset,
|
||||
closeTriggers, onCloseCallback,
|
||||
function(h) {
|
||||
//get the iframe, and set the url
|
||||
var umbModal = $(h.w);
|
||||
var umbModalContent = $("iframe", umbModal);
|
||||
umbModalContent.html('').attr('src', _this._getUniqueUrl(url));
|
||||
umbModalContent.width(width);
|
||||
umbModalContent.height(showHeader ? height - 30 : height);
|
||||
umbModalContent.show();
|
||||
});
|
||||
},
|
||||
_open: function(name, showHeader, width, height, top, leftOffset, closeTriggers, onCloseCallback, onCreate) {
|
||||
/// <summary>Opens a modal window</summary>
|
||||
/// <param name="top">Optional</param>
|
||||
/// <param name="leftOffset">Optional</param>
|
||||
@@ -35,21 +86,12 @@ Umbraco.Sys.registerNamespace("Umbraco.Controls");
|
||||
/// outVal = the value passed to the close window method that was used to close the window (if it was specified)
|
||||
/// <returns>The generated jquery object bound to the modal window</returns>
|
||||
|
||||
//check if the modal elems exist
|
||||
if (!this._modalElemsExist()) {
|
||||
this._createModalElems();
|
||||
}
|
||||
|
||||
var _this = this;
|
||||
|
||||
this._obj.jqm({
|
||||
|
||||
onShow: function(h) {
|
||||
var umbModal = $(h.w);
|
||||
var umbModalContent = $("iframe", umbModal);
|
||||
|
||||
umbModalContent.width(width);
|
||||
umbModalContent.height(showHeader ? height - 30 : height);
|
||||
|
||||
//remove the header if it shouldn't be shown
|
||||
if (!showHeader) {
|
||||
@@ -80,10 +122,11 @@ Umbraco.Sys.registerNamespace("Umbraco.Controls");
|
||||
umbModal.css("left", newLeft);
|
||||
}
|
||||
|
||||
umbModalContent.html('').attr('src', _this._getUniqueUrl(url));
|
||||
|
||||
umbModal.show();
|
||||
umbModalContent.show();
|
||||
|
||||
if (typeof onCreate == "function") {
|
||||
onCreate.call(_this, h)
|
||||
}
|
||||
|
||||
$(document).keyup(function(event) {
|
||||
if (event.keyCode == 27 && umbModal.css("display") == "block") {
|
||||
@@ -99,17 +142,22 @@ Umbraco.Sys.registerNamespace("Umbraco.Controls");
|
||||
},
|
||||
onHide: function(h) {
|
||||
var umbModal = $(h.w);
|
||||
var umbModalContent = $("iframe", umbModal);
|
||||
var umbModalContent = $(".umbModalBoxContent", umbModal);
|
||||
var iframe = umbModalContent.find("iframe");
|
||||
if (typeof onCloseCallback == "function") {
|
||||
//call the callback if specified, pass the jquery content object as a param and the output value array
|
||||
var e = { modalContent: umbModalContent, outVal: _this._rVal };
|
||||
//pass the iframe if there is one
|
||||
var e = { modalContent: iframe.length > 0 ? iframe : umbModalContent, outVal: _this._rVal };
|
||||
onCloseCallback.call(_this, e);
|
||||
}
|
||||
h.w.hide();
|
||||
h.o.remove();
|
||||
umbModalContent.hide();
|
||||
umbModalContent.html('').attr('src', '');
|
||||
_this.close();
|
||||
//remove any iframes that might be in there
|
||||
if (iframe.length > 0) {
|
||||
umbModalContent.hide();
|
||||
umbModalContent.html('').attr('src', '');
|
||||
_this.close();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -127,35 +175,53 @@ Umbraco.Sys.registerNamespace("Umbraco.Controls");
|
||||
this._obj.remove();
|
||||
return false;
|
||||
},
|
||||
_createModalElems: function() {
|
||||
_createModalElems: function(withIFrame, selector) {
|
||||
/// <summary>This will create the html elements required for the modal overlay if they do not already exist in the DOM</summary>
|
||||
|
||||
var overlayHtml = "<div id=\"" + this._wId + "_modal\" class=\"umbModalBox\">" +
|
||||
"<div class=\"umbModalBoxHeader\"></div><a href=\"#\" class=\"umbracModalBoxClose jqmClose\">×</a>" +
|
||||
"<div class=\"umbModalBoxContent\"><iframe frameborder=\"0\" class=\"umbModalBoxIframe\" src=\"\"></iframe></div>" +
|
||||
"</div>";
|
||||
|
||||
this._obj = $(overlayHtml).appendTo("body");
|
||||
var overlayHtml = this._getOverlayHtml(withIFrame);
|
||||
//create the modal dialog in the root if no selector, otherwise create at parent
|
||||
//of selector
|
||||
if (!selector) {
|
||||
this._obj = $(overlayHtml).appendTo("body");
|
||||
}
|
||||
else {
|
||||
this._obj = $(overlayHtml).appendTo($(selector).parent());
|
||||
}
|
||||
|
||||
var _this = this;
|
||||
if ($.fn.draggable) this._obj.draggable({
|
||||
cursor: 'move',
|
||||
distance: 5,
|
||||
iframeFix: true,
|
||||
helper: function(event) {
|
||||
var o = $(this).clone();
|
||||
o.children().remove();
|
||||
o.css("border-width", "1px");
|
||||
return o;
|
||||
},
|
||||
start: function(event, ui) {
|
||||
ui.helper.css("z-index", 20000);
|
||||
},
|
||||
stop: function(event, ui) {
|
||||
_this._obj.css("top", ui.absolutePosition.top);
|
||||
_this._obj.css("left", ui.absolutePosition.left);
|
||||
}
|
||||
});
|
||||
if ($.fn.draggable) {
|
||||
this._obj.draggable({
|
||||
cursor: 'move',
|
||||
distance: 5,
|
||||
iframeFix: withIFrame,
|
||||
helper: function(event) {
|
||||
var o = $(this).clone();
|
||||
o.children().remove();
|
||||
o.css("border-width", "1px");
|
||||
return o;
|
||||
},
|
||||
start: function(event, ui) {
|
||||
ui.helper.css("z-index", 20000);
|
||||
},
|
||||
stop: function(event, ui) {
|
||||
_this._obj.css("top", ui.absolutePosition.top);
|
||||
_this._obj.css("left", ui.absolutePosition.left);
|
||||
}
|
||||
});
|
||||
}
|
||||
else {
|
||||
this._obj.find(".umbModalBoxHeader").css("cursor", "default"); //remove the move cursor if we can't move
|
||||
}
|
||||
},
|
||||
_getOverlayHtml: function(withIFrame) {
|
||||
var overlayHtml = "<div id=\"" + this._wId + "_modal\" class=\"umbModalBox\">" +
|
||||
"<div class=\"umbModalBoxHeader\"></div><a href=\"#\" class=\"umbracModalBoxClose jqmClose\">×</a>" +
|
||||
"<div class=\"umbModalBoxContent\">";
|
||||
if (withIFrame) {
|
||||
overlayHtml += "<iframe frameborder=\"0\" class=\"umbModalBoxIframe\" src=\"\"></iframe>";
|
||||
}
|
||||
overlayHtml += "</div></div>";
|
||||
return overlayHtml;
|
||||
},
|
||||
_modalElemsExist: function() {
|
||||
return ($("#" + this._wId + "_modal").length > 0);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* TODO: Change these to classes to support many modal boxes */
|
||||
|
||||
#umbModalBox,
|
||||
.umbModalBox {
|
||||
div#umbModalBox,
|
||||
div.umbModalBox {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
border: 5px #a3a3a3 solid;
|
||||
@@ -9,36 +9,37 @@
|
||||
text-align: left;
|
||||
z-index: 10000;
|
||||
display: none;
|
||||
background: #fff;
|
||||
background: #fff ! important;
|
||||
font: bold 100% "Lucida Grande", Arial, sans-serif;
|
||||
}
|
||||
|
||||
#umbModalBox.loaded,
|
||||
.umbModalBox.loaded
|
||||
{
|
||||
div#umbModalBox.loaded,
|
||||
div.umbModalBox.loaded
|
||||
{
|
||||
background-image: none;
|
||||
}
|
||||
|
||||
.jqmOverlay {background: url(modalBackground.gif)}
|
||||
|
||||
#umbModalBoxHeader,
|
||||
.umbModalBoxHeader {
|
||||
div#umbModalBoxHeader,
|
||||
div.umbModalBoxHeader {
|
||||
margin: 0;
|
||||
text-shadow: #FFF 0 1px 0;
|
||||
text-shadow: #FFF 0 1px 0;
|
||||
padding: .5em 2em .5em .75em;
|
||||
margin: 0;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
#umbModalBoxContent,
|
||||
.umbModalBoxContent {
|
||||
div#umbModalBoxContent,
|
||||
div.umbModalBoxContent {
|
||||
padding: 0px;
|
||||
overflow: hidden;
|
||||
height: 100%;
|
||||
/*height: 100%;*/
|
||||
background: #fff ! important;
|
||||
}
|
||||
|
||||
#umbracModalBoxClose,
|
||||
.umbracModalBoxClose {
|
||||
a#umbracModalBoxClose,
|
||||
a.umbracModalBoxClose {
|
||||
display: block;
|
||||
position: absolute;
|
||||
right: 5px; top: 2px;
|
||||
@@ -48,19 +49,19 @@
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
#umbModalBoxContent,
|
||||
.umbModalBoxContent {border-top: 1px solid #F9F9F9; }
|
||||
div#umbModalBoxContent,
|
||||
div.umbModalBoxContent {border-top: 1px solid #F9F9F9; }
|
||||
|
||||
#umbModalBoxHeader,
|
||||
.umbModalBoxHeader {
|
||||
background: url(modalGradiant.gif) repeat-x bottom #fff;
|
||||
div#umbModalBoxHeader,
|
||||
div.umbModalBoxHeader {
|
||||
background: url(modalGradiant.gif) repeat-x bottom #fff ! important;
|
||||
border-bottom: 1px solid #CCC;
|
||||
color: #378080;
|
||||
cursor:move;
|
||||
}
|
||||
|
||||
#umbracModalBoxClose,
|
||||
.umbracModalBoxClose { color: #777 }
|
||||
div#umbracModalBoxClose,
|
||||
div.umbracModalBoxClose { color: #777 }
|
||||
|
||||
#umbracModalBoxClose:hover,
|
||||
.umbracModalBoxClose:hover { color: #000 }
|
||||
div#umbracModalBoxClose:hover,
|
||||
div.umbracModalBoxClose:hover { color: #000 }
|
||||
Reference in New Issue
Block a user