This commit is contained in:
Shannon Deminick
2012-10-08 21:55:16 +05:00
8 changed files with 223 additions and 111 deletions
-1
View File
@@ -1149,7 +1149,6 @@
<Content Include="umbraco\images\editor\insRazorMacro.png" />
<Content Include="umbraco_client\Application\JQuery\jquery.hotkeys.js" />
<Content Include="umbraco_client\MaskedInput\jquery.maskedinput-1.3.min.js" />
<Content Include="umbraco_client\splitbutton\jquery.splitbutton.js" />
<Content Include="umbraco_client\splitbutton\images\splitbutton_hover.png" />
<Content Include="umbraco_client\splitbutton\images\splitbutton_downarrow.png" />
<Content Include="umbraco_client\splitbutton\splitbutton.css" />
@@ -11,60 +11,113 @@
padding-top: 0px !important;</style>
<script type="text/javascript">
function doSubmit()
{
var tagString = '<' + document.forms[0].<%= tagName.ClientID %>.value;
// hent feltnavne
var field = document.forms[0].field.value;
if (field != '')
tagString += ' field="' + field + '"';
var useIfEmpty = document.forms[0].useIfEmpty.value;
if (useIfEmpty != '')
tagString += ' useIfEmpty="' + useIfEmpty + '"';
var alternativeText = document.forms[0].alternativeText.value;
if (alternativeText != '')
tagString += ' textIfEmpty="' + alternativeText + '"';
var insertTextBefore = document.forms[0].insertTextBefore.value;
if (insertTextBefore != '')
tagString += ' insertTextBefore="' + insertTextBefore.replace(/\"/gi,"&quot;").replace(/\</gi,"&lt;").replace(/\>/gi,"&gt;") + '"';
var insertTextAfter = document.forms[0].insertTextAfter.value;
if (insertTextAfter != '')
tagString += ' insertTextAfter="' + insertTextAfter.replace(/\"/gi,"&quot;").replace(/\</gi,"&lt;").replace(/\>/gi,"&gt;") + '"';
if (document.forms[0].formatAsDate[1].checked)
tagString += ' formatAsDateWithTime="true" formatAsDateWithTimeSeparator="' + document.forms[0].formatAsDateWithTimeSeparator.value + '"';
else if(document.forms[0].formatAsDate[0].checked)
tagString += ' formatAsDate="true"';
function doSubmit() {
//find out if this is an MVC View.
var url = window.location.href;
var isMVCView = url.indexOf('mvcView=') != -1;
var tagString = "";
if (document.forms[0].toCase[1].checked)
tagString += ' case="' + document.forms[0].toCase[1].value + '"';
else if (document.forms[0].toCase[2].checked)
tagString += ' case="' + document.forms[0].toCase[2].value + '"';
//get the form
var fieldForm = document.forms[0];
//formfields
var field = fieldForm.field.value;
var useIfEmpty = fieldForm.useIfEmpty.value;
var alternativeText = fieldForm.alternativeText.value;
var insertTextBefore = fieldForm.insertTextBefore.value;
var insertTextAfter = fieldForm.insertTextAfter.value;
if(isMVCView) {
tagString = "@Umbraco.Field(\"" + field + "\"";
if (useIfEmpty != '')
tagString += ", altFieldAlias: \"" + useIfEmpty + "\"";
if (alternativeText != '')
tagString += ", altText: \"" + alternativeText + "\"";
if (document.forms[0].recursive.checked)
tagString += ' recursive="true"';
if (document.forms[0].urlEncode[1].checked)
tagString += ' urlEncode="true"';
else if (document.forms[0].urlEncode[2].checked)
tagString += ' htmlEncode="true"';
if (document.forms[0].stripParagraph.checked)
tagString += ' stripParagraph="true"';
if (fieldForm.recursive.checked)
tagString += ", recursive: true";
if (document.forms[0].convertLineBreaks.checked)
tagString += ' convertLineBreaks="true"';
tagString += " runat=\"server\" />";
if (insertTextBefore != '')
tagString += ", insertBefore: \"" + insertTextBefore.replace(/\"/gi, "&quot;").replace(/\</gi, "&lt;").replace(/\>/gi, "&gt;") + "\"";
UmbClientMgr.contentFrame().focus();
if (insertTextAfter != "")
tagString += ", insertAfter: \"" + insertTextAfter.replace(/\"/gi, "&quot;").replace(/\</gi, "&lt;").replace(/\>/gi, "&gt;") + "\"";
if (fieldForm.formatAsDate[1].checked)
tagString += ", formatAsDateWithTime: true, formatAsDateWithTimeSeparator: \"" + fieldForm.formatAsDateWithTimeSeparator.value + "\"";
else if (fieldForm.formatAsDate[0].checked)
tagString += ", formatAsDate: true";
if (fieldForm.toCase[1].checked)
tagString += ", casing: RenderFieldCaseType.Lower";
else if(fieldForm.toCase[2].checked)
tagString += ", casing: RenderFieldCaseType.Upper";
if (fieldForm.urlEncode[1].checked)
tagString += ", encoding: RenderFieldEncodingType.Url";
else if (fieldForm.urlEncode[2].checked)
tagString += ", encoding: RenderFieldEncodingType.Html";
if (fieldForm.convertLineBreaks.checked)
tagString += ", convertLineBreaks: true";
if (fieldForm.stripParagraph.checked)
tagString += ", removeParagraphTags: true";
tagString += ")";
}
else
{
tagString = '<' + fieldForm.<%= tagName.ClientID %>.value;
if (field != '')
tagString += ' field="' + field + '"';
if (useIfEmpty != '')
tagString += ' useIfEmpty="' + useIfEmpty + '"';
if (alternativeText != '')
tagString += ' textIfEmpty="' + alternativeText + '"';
if (insertTextBefore != '')
tagString += ' insertTextBefore="' + insertTextBefore.replace(/\"/gi, "&quot;").replace(/\</gi, "&lt;").replace(/\>/gi, "&gt;") + '"';
if (insertTextAfter != '')
tagString += ' insertTextAfter="' + insertTextAfter.replace(/\"/gi, "&quot;").replace(/\</gi, "&lt;").replace(/\>/gi, "&gt;") + '"';
if (fieldForm.formatAsDate[1].checked)
tagString += ' formatAsDateWithTime="true" formatAsDateWithTimeSeparator="' + document.forms[0].formatAsDateWithTimeSeparator.value + '"';
else if (fieldForm.formatAsDate[0].checked)
tagString += ' formatAsDate="true"';
if (fieldForm.toCase[1].checked)
tagString += ' case="' + fieldForm.toCase[1].value + '"';
else if (fieldForm.toCase[2].checked)
tagString += ' case="' + fieldForm.toCase[2].value + '"';
if (fieldForm.recursive.checked)
tagString += ' recursive="true"';
if (fieldForm.urlEncode[1].checked)
tagString += ' urlEncode="true"';
else if (fieldForm.urlEncode[2].checked)
tagString += ' htmlEncode="true"';
if (fieldForm.stripParagraph.checked)
tagString += ' stripParagraph="true"';
if (fieldForm.convertLineBreaks.checked)
tagString += ' convertLineBreaks="true"';
tagString += " runat=\"server\" />";
}
UmbClientMgr.contentFrame().focus();
UmbClientMgr.contentFrame().UmbEditor.Insert(tagString, '', '<%=umbraco.helper.Request("objectId")%>');
UmbClientMgr.closeModalWindow();
}
@@ -4,15 +4,60 @@
<%@ Register TagPrefix="cc1" Namespace="umbraco.uicontrols" Assembly="controls" %>
<%@ Register TagPrefix="umb" Namespace="ClientDependency.Core.Controls" Assembly="ClientDependency.Core" %>
<asp:Content ContentPlaceHolderID="head" runat="server">
<umb:CssInclude ID="CssInclude1" runat="server" FilePath="splitbutton/splitbutton.css"
PathNameAlias="UmbracoClient" />
<umb:JsInclude ID="JsInclude" runat="server" FilePath="splitbutton/jquery.splitbutton.js"
PathNameAlias="UmbracoClient" Priority="1" />
<style>
#codeTemplateMenu , #macroMenu
{
position: absolute;
top: 60px;
left:250px;
background-color: #ddd;
padding: 5px;
display: none;
max-height: 400px;
overflow-y: scroll;
}
#macroMenu {
left:110px;
}
.codeTemplate, .macro {
padding-left: 5px;
padding-top: 3px;
cursor: pointer;
}
.codeTemplate:hover, .macro:hover {
background-color: #eee;
}
</style>
<script language="javascript" type="text/javascript">
jQuery(document).ready(function() {
//macro split button
jQuery('#sbMacro').splitbutton({menu:'#macroMenu'});
jQuery("#splitButtonMacro").appendTo("#splitButtonMacroPlaceHolder");
jQuery("#selectMacro")
.click(function() {
jQuery("#macroMenu").toggle();
});
jQuery("#macroMenu").hover(
function() { jQuery("#macroMenu").show(); },
function() { jQuery("#macroMenu").hide(); }
);
jQuery("#selectRazor")
.click(function() {
jQuery("#codeTemplateMenu").toggle();
});
jQuery("#codeTemplateMenu").hover(
function() { jQuery("#codeTemplateMenu").show(); },
function() { jQuery("#codeTemplateMenu").hide(); }
);
jQuery(".macro").click(function(){
var alias = jQuery(this).attr("rel");
if(jQuery(this).attr("params") == "1")
@@ -24,10 +69,10 @@
insertMacro(alias);
}
});
applySplitButtonOverflow('mcontainer','innerc','macroMenu','.macro', 'showMoreMacros');
//razor macro split button
jQuery('#sb').splitbutton({menu:'#codeTemplateMenu'});
// jQuery('#sb').splitbutton({menu:'#codeTemplateMenu'});
jQuery("#splitButton").appendTo("#splitButtonPlaceHolder");
jQuery(".codeTemplate").click(function(){
@@ -185,12 +230,12 @@
</cc1:PropertyPanel>
</cc1:Pane>
</cc1:UmbracoPanel>
<div id="splitButton" style="display: inline; height: 23px; vertical-align: top;">
<a href="javascript:insertCodeBlock();" id="sb" class="sbLink">
<img alt="Insert Inline Razor Macro" src="../images/editor/insRazorMacro.png" title="Insert Inline Razor Macro"
style="vertical-align: top;">
</a>
<a href="#" id="sb" class="sbLink l-btn l-btn-plain"><span class="l-btn-left"><span class="l-btn-text"><img alt="Insert Inline Razor Macro" src="../images/editor/insRazorMacro.png" title="Insert Inline Razor Macro" style="vertical-align: top;" onclick="javascript:insertCodeBlock();">
<span class="s-btn-downarrow" id="selectRazor">&nbsp;</span></span></span></a>
</div>
<div id="codeTemplateMenu" style="width: 285px;">
<asp:Repeater ID="rpt_codeTemplates" runat="server">
<ItemTemplate>
@@ -200,11 +245,10 @@
</ItemTemplate>
</asp:Repeater>
</div>
<div id="splitButtonMacro" style="display: inline; height: 23px; vertical-align: top;">
<a href="javascript:openMacroModal();" id="sbMacro" class="sbLink">
<img alt="Insert Macro" src="../images/editor/insMacroSB.png" title="Insert Macro"
style="vertical-align: top;">
</a>
<a href="#" id="sbMacro" class="sbLink l-btn l-btn-plain"><span class="l-btn-left"><span class="l-btn-text"><img alt="Insert Macro" src="../images/editor/insMacroSB.png" title="Insert Macro" style="vertical-align: top;" onclick="javascript:openMacroModal();">
<span class="s-btn-downarrow" id="selectMacro">&nbsp;</span></span></span></a>
</div>
<div id="macroMenu" style="width: 285px">
<asp:Repeater ID="rpt_macros" runat="server">
@@ -36,11 +36,12 @@
var templateCode = UmbEditor.GetCode();
var newValue = templateDropDown.options[templateDropDown.selectedIndex].id;
var layoutDefRegex = new RegExp("(@{[\\s\\S]*?Layout\\s*?=\\s*?\")[^\"]*?(\";[\\s\\S]*?})", "gi");
var layoutDefRegex = new RegExp("(@{[\\s\\S]*?Layout\\s*?=\\s*?)(\"[^\"]*?\"|null)(;[\\s\\S]*?})", "gi");
if(newValue != undefined && newValue != "") {
if (layoutDefRegex.test(templateCode)) {
// Declaration exists, so just update it
templateCode = templateCode.replace(layoutDefRegex, "$1" + newValue + "$2");
templateCode = templateCode.replace(layoutDefRegex, "$1\"" + newValue + "\"$3");
} else {
// Declaration doesn't exist, so prepend to start of doc
//TODO: Maybe insert at the cursor position, rather than just at the top of the doc?
@@ -49,7 +50,7 @@
} else {
if (layoutDefRegex.test(templateCode)) {
// Declaration exists, so just update it
templateCode = templateCode.replace(layoutDefRegex, "$1$2");
templateCode = templateCode.replace(layoutDefRegex, "$1null$3");
}
}
@@ -55,12 +55,17 @@ namespace Umbraco.Web.UI.Umbraco.Settings.Views
if (t.Id == _template.Id) continue;
var li = new ListItem(t.Text, t.Id.ToString());
li.Attributes.Add("id", t.Alias.Replace(" ", ""));
li.Attributes.Add("id", t.Alias.Replace(" ", "") + ".cshtml");
MasterTemplate.Items.Add(li);
}
if (t.Id == _template.MasterTemplate)
selectedTemplate = t.Alias.Replace(" ", "");
MasterTemplate.Items.Add(li);
try
{
if (_template.MasterTemplate > 0)
MasterTemplate.SelectedValue = _template.MasterTemplate.ToString();
}
catch (Exception ex)
{
}
MasterTemplate.SelectedValue = selectedTemplate;
@@ -104,7 +109,7 @@ namespace Umbraco.Web.UI.Umbraco.Settings.Views
umbField.OnClickCommand =
ClientTools.Scripts.OpenModalWindow(
IOHelper.ResolveUrl(SystemDirectories.Umbraco) + "/dialogs/umbracoField.aspx?objectId=" +
editorSource.ClientID + "&tagName=UMBRACOGETDATA", ui.Text("template", "insertPageField"), 640, 550);
editorSource.ClientID + "&tagName=UMBRACOGETDATA&mvcView=true", ui.Text("template", "insertPageField"), 640, 550);
umbField.AltText = ui.Text("template", "insertPageField");
@@ -114,7 +119,7 @@ namespace Umbraco.Web.UI.Umbraco.Settings.Views
umbDictionary.OnClickCommand =
ClientTools.Scripts.OpenModalWindow(
IOHelper.ResolveUrl(SystemDirectories.Umbraco) + "/dialogs/umbracoField.aspx?objectId=" +
editorSource.ClientID + "&tagName=UMBRACOGETDICTIONARY", ui.Text("template", "insertDictionaryItem"),
editorSource.ClientID + "&tagName=UMBRACOGETDICTIONARY&mvcView=true", ui.Text("template", "insertDictionaryItem"),
640, 550);
umbDictionary.AltText = "Insert umbraco dictionary item";
+37 -18
View File
@@ -129,22 +129,30 @@ namespace Umbraco.Web
/// <param name="removeParagraphTags"></param>
/// <param name="casing"></param>
/// <param name="encoding"></param>
/// <param name="formatString"></param>
/// <param name="formatAsDate"></param>
/// <param name="formatAsDateWithTime"></param>
/// <param name="formatAsDateWithTimeSeparator"></param>
//// <param name="formatString"></param>
/// <returns></returns>
public IHtmlString Field(string fieldAlias,
string altFieldAlias = "", string altText = "", string insertBefore = "", string insertAfter = "",
bool recursive = false, bool convertLineBreaks = false, bool removeParagraphTags = false,
RenderFieldCaseType casing = RenderFieldCaseType.Unchanged,
RenderFieldEncodingType encoding = RenderFieldEncodingType.Unchanged,
string formatString = "")
RenderFieldEncodingType encoding = RenderFieldEncodingType.Unchanged,
bool formatAsDate = false,
bool formatAsDateWithTime = false,
string formatAsDateWithTimeSeparator = "")
//TODO: commented out until as it is not implemented by umbraco:item yet
//,string formatString = "")
{
if (_currentPage == null)
{
throw new InvalidOperationException("Cannot call this method when not rendering a front-end document");
}
return Field(_currentPage, fieldAlias, altFieldAlias,
altText, insertBefore, insertAfter, recursive, convertLineBreaks, removeParagraphTags,
casing, encoding, formatString);
return Field(_currentPage, fieldAlias, altFieldAlias,
altText, insertBefore, insertAfter, recursive, convertLineBreaks, removeParagraphTags,
casing, encoding, formatAsDate, formatAsDateWithTime, formatAsDateWithTimeSeparator); // formatString);
}
/// <summary>
@@ -160,15 +168,23 @@ namespace Umbraco.Web
/// <param name="convertLineBreaks"></param>
/// <param name="removeParagraphTags"></param>
/// <param name="casing"></param>
/// <param name="encoding"></param>
/// <param name="formatString"></param>
/// <param name="encoding"></param>
/// <param name="formatAsDate"></param>
/// <param name="formatAsDateWithTime"></param>
/// <param name="formatAsDateWithTimeSeparator"></param>
//// <param name="formatString"></param>
/// <returns></returns>
public IHtmlString Field(IPublishedContent currentPage, string fieldAlias,
string altFieldAlias = "", string altText = "", string insertBefore = "", string insertAfter = "",
bool recursive = false, bool convertLineBreaks = false, bool removeParagraphTags = false,
RenderFieldCaseType casing = RenderFieldCaseType.Unchanged,
RenderFieldEncodingType encoding = RenderFieldEncodingType.Unchanged,
string formatString = "")
RenderFieldEncodingType encoding = RenderFieldEncodingType.Unchanged,
bool formatAsDate = false,
bool formatAsDateWithTime = false,
string formatAsDateWithTimeSeparator = "")
//TODO: commented out until as it is not implemented by umbraco:item yet
//,string formatString = "")
{
Mandate.ParameterNotNull(currentPage, "currentPage");
Mandate.ParameterNotNullOrEmpty(fieldAlias, "fieldAlias");
@@ -179,26 +195,29 @@ namespace Umbraco.Web
{
{"field", fieldAlias},
{"recursive", recursive.ToString().ToLowerInvariant()},
{"useIfEmpty", altFieldAlias},
{"textIfEmpty", altText},
{"stripParagraph", removeParagraphTags.ToString().ToLowerInvariant()},
{"useifempty", altFieldAlias},
{"textifempty", altText},
{"stripparagraph", removeParagraphTags.ToString().ToLowerInvariant()},
{
"case", casing == RenderFieldCaseType.Lower ? "lower"
: casing == RenderFieldCaseType.Upper ? "upper"
: casing == RenderFieldCaseType.Title ? "title"
: string.Empty
},
{"insertTextBefore", insertBefore},
{"insertTextAfter", insertAfter},
{"convertLineBreaks", convertLineBreaks.ToString().ToLowerInvariant()}
{"inserttextbefore", insertBefore},
{"inserttextafter", insertAfter},
{"convertlinebreaks", convertLineBreaks.ToString().ToLowerInvariant()},
{"formatasdate", formatAsDate.ToString().ToLowerInvariant()},
{"formatasdatewithtime", formatAsDateWithTime.ToString().ToLowerInvariant()},
{"formatasdatewithtimeseparator", formatAsDateWithTimeSeparator}
};
switch (encoding)
{
case RenderFieldEncodingType.Url:
attributes.Add("urlEncode", "true");
attributes.Add("urlencode", "true");
break;
case RenderFieldEncodingType.Html:
attributes.Add("htmlEncode", "true");
attributes.Add("htmlencode", "true");
break;
case RenderFieldEncodingType.Unchanged:
default:
@@ -36,12 +36,7 @@ namespace umbraco
protected override void CreateRootNode(ref XmlTreeNode rootNode)
{
if (!Umbraco.Core.Configuration.UmbracoSettings.EnableMvcSupport)
rootNode.NodeType = "init" + TreeAlias;
else
rootNode.NodeType = "initviews";
rootNode.NodeType = "init" + TreeAlias;
rootNode.NodeID = "init";
}
@@ -50,19 +50,7 @@ namespace umbraco.cms.presentation.settings
if (t.Id != _template.Id)
{
var li = new ListItem(t.Text, t.Id.ToString());
li.Attributes.Add("id", t.Alias.Replace(" ", ""));
if (t.Id == _template.MasterTemplate)
{
try
{
li.Selected = true;
}
catch
{
}
}
MasterTemplate.Items.Add(li);
}
}
@@ -71,6 +59,14 @@ namespace umbraco.cms.presentation.settings
AliasTxt.Text = _template.Alias;
editorSource.Text = _template.Design;
try
{
if (_template.MasterTemplate > 0)
MasterTemplate.SelectedValue = _template.MasterTemplate.ToString();
}
catch (Exception ex)
{
}
ClientTools
.SetActiveTreeType(TreeDefinitionCollection.Instance.FindTree<loadTemplates>().Tree.Alias)