Add WebCms

This commit is contained in:
2016-11-07 12:56:17 -05:00
parent dfe92218f4
commit 15911f33c0
2750 changed files with 365672 additions and 133 deletions
@@ -0,0 +1,49 @@
<%@ Control Language="C#" AutoEventWireup="True" CodeBehind="ImageViewer.ascx.cs" Inherits="Umbraco.Web.UI.Umbraco.Controls.Images.ImageViewer" %>
<%@ Import Namespace="Umbraco.Core.IO" %>
<%@ Register TagPrefix="umb" Namespace="ClientDependency.Core.Controls" Assembly="ClientDependency.Core" %>
<umb:JsInclude ID="JsInclude1" runat="server" FilePath="controls/Images/ImageViewer.js" PathNameAlias="UmbracoRoot" />
<div id="<%# ClientID %>" class="imageViewer" >
<asp:MultiView ID="MultiView" runat="server">
<asp:View ID="Basic" runat="server">
<img src="<%#MediaItemThumbnailPath%>" alt="<%#AltText%>" border="0" class='<%#ImageFound ? "" : "noimage" %>' />
</asp:View>
<asp:View ID="ImageLink" runat="server">
<a href="<%#MediaItemPath%>" title="<%#AltText%>" target="<%#LinkTarget%>">
<img src="<%#MediaItemThumbnailPath%>" alt="<%#AltText%>" border="0" class='<%#ImageFound ? "" : "noimage" %>' />
</a>
</asp:View>
<asp:View ID="ThumbnailPreview" runat="server">
<div class="bgImage"
style="width: 105px; height: 105px; background: #fff center center no-repeat;border: 1px solid #ccc; background-image: url('<%#MediaItemThumbnailPath.Replace(" ", "%20")%>');">
</div>
</asp:View>
</asp:MultiView>
<%--Register the javascript callback method if any.--%>
<script type="text/javascript">
<%#string.IsNullOrEmpty(ClientCallbackMethod) ? "" : ClientCallbackMethod + "('" + MediaItemPath + "','" + AltText + "','" + FileWidth + "','" + FileHeight + "');" %>
</script>
</div>
<%--Ensure that the client API is registered for the image.--%>
<script type="text/javascript">
var opts = {
umbPath: "<%# IOHelper.ResolveUrl(SystemDirectories.Umbraco) %>",
style: "<%#ViewerStyle.ToString()%>",
linkTarget: "<%#LinkTarget%>"
};
if (jQuery.isReady) {
//because this may be rendered with AJAX, the doc may already be ready! so just wire it up.
jQuery("#<%# ClientID %>").UmbracoImageViewer(opts);
}
else {
jQuery(document).ready(function () {
jQuery("#<%# ClientID %>").UmbracoImageViewer(opts);
});
}
</script>
@@ -0,0 +1,133 @@
/// <reference path="/umbraco_client/Application/NamespaceManager.js" />
/// <reference path="/umbraco_client/ui/jquery.js" />
Umbraco.Sys.registerNamespace("Umbraco.Controls");
(function($) {
//jQuery plugin for Umbraco image viewer control
$.fn.UmbracoImageViewer = function(opts) {
//all options must be specified
var conf = $.extend({
style: false,
linkTarget: "_blank",
umbPath: ""
}, opts);
return this.each(function() {
new Umbraco.Controls.ImageViewer().init($(this), conf);
});
}
$.fn.UmbracoImageViewerAPI = function() {
/// <summary>exposes the Umbraco Image Viewer api for the selected object</summary>
//if there's more than item in the selector, throw exception
if ($(this).length != 1) {
throw "UmbracoImageViewerAPI selector requires that there be exactly one control selected";
};
return Umbraco.Controls.ImageViewer.inst[$(this).attr("id")] || null;
};
Umbraco.Controls.ImageViewer = function() {
return {
_cntr: ++Umbraco.Controls.ImageViewer.cntr,
_containerId: null,
_context: null,
_serviceUrl: "",
_umbPath: "",
_style: false,
_linkTarget: "",
init: function(jItem, opts) {
//this is stored so that we search the current document/iframe for this object
//when calling _getContainer. Before this was not required but for some reason inside the
//TinyMCE popup, when doing an ajax call, the context is lost to the jquery item!
this._context = jItem.get(0).ownerDocument;
//store a reference to this api by the id and the counter
Umbraco.Controls.ImageViewer.inst[this._cntr] = this;
if (!jItem.attr("id")) jItem.attr("id", "UmbImageViewer_" + this._cntr);
Umbraco.Controls.ImageViewer.inst[jItem.attr("id")] = Umbraco.Controls.ImageViewer.inst[this._cntr];
this._containerId = jItem.attr("id");
this._umbPath = opts.umbPath;
this._serviceUrl = this._umbPath + "/controls/Images/ImageViewerUpdater.asmx";
this._style = opts.style;
this._linkTarget = opts.linkTarget;
},
updateImage: function(mediaId, callback) {
/// <summary>Updates the image to show the mediaId parameter using AJAX</summary>
this._showThrobber();
var _this = this;
$.ajax({
type: "POST",
url: _this._serviceUrl + "/UpdateImage",
data: '{ "mediaId": ' + parseInt(mediaId) + ', "style": "' + _this._style + '", "linkTarget": "' + _this._linkTarget + '"}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
var rHtml = $("<div>").append(msg.d.html); //get the full html response wrapped in temp div
_this._updateImageFromAjax(rHtml);
if (typeof callback == "function") {
//build the parameters to pass back to the callback method
var params = {
hasImage: _this._getContainer().find("img.noimage").length == 0,
mediaId: msg.d.mediaId,
width: msg.d.width,
height: msg.d.height,
url: msg.d.url,
alt: msg.d.alt
};
//call the callback method
callback.call(_this, params);
}
}
});
},
showImage: function(path) {
/// <summary>This will force the image to show the path passed in </summary>
if (this._style != "ThumbnailPreview") {
this._getContainer().find("img").attr("src", path);
}
else {
c = this._getContainer().find(".bgImage");
c.css("background-image", "url('" + path + "')");
}
},
_getContainer: function() {
return $("#" + this._containerId, this._context);
},
_updateImageFromAjax: function(rHtml) {
this._getContainer().html(rHtml.find(".imageViewer").html()); //replace the html with the inner html of the image viewer response
},
_showThrobber: function() {
var c = null;
if (this._style != "ThumbnailPreview") {
c = this._getContainer().find("img");
c.attr("src", this._umbPath + "/images/throbber.gif");
c.css("margin-top", ((c.height() - 15) / 2) + "px");
c.css("margin-left", ((c.width() - 15) / 2) + "px");
}
else {
c = this._getContainer().find(".bgImage");
c.css("background-image", "");
c.html("<img id='throbber'/>");
var img = c.find("img");
img.attr("src", this._umbPath + "/images/throbber.gif");
img.css("margin-top", "45px");
img.css("margin-left", "45px");
}
}
}
}
// instance manager
Umbraco.Controls.ImageViewer.cntr = 0;
Umbraco.Controls.ImageViewer.inst = {};
})(jQuery);
@@ -0,0 +1 @@
<%@ WebService Language="C#" CodeBehind="ImageViewerUpdater.asmx.cs" Class="umbraco.controls.Images.ImageViewerUpdater" %>
@@ -0,0 +1,28 @@
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="UploadMediaImage.ascx.cs"
Inherits="umbraco.controls.Images.UploadMediaImage" %>
<%@ Register TagPrefix="cc1" Namespace="umbraco.uicontrols" Assembly="controls" %>
<%@ Register TagPrefix="umb" Namespace="ClientDependency.Core.Controls" Assembly="ClientDependency.Core" %>
<%@ Register TagPrefix="ctl" Namespace="umbraco.controls" Assembly="umbraco" %>
<umb:JsInclude ID="JsInclude1" runat="server" FilePath="controls/Images/UploadMediaImage.js" PathNameAlias="UmbracoRoot" />
<script type="text/javascript">
var uploader_<%=this.ClientID%> = new Umbraco.Controls.UploadMediaImage("<%=TextBoxTitle.ClientID%>", "<%=SubmitButton.ClientID%>", "<%=((Control)UploadField.DataEditor).ClientID%>");
</script>
<cc1:pane id="pane_upload" runat="server">
<cc1:PropertyPanel ID="pp_name" runat="server" Text="Name">
<asp:TextBox id="TextBoxTitle" runat="server"></asp:TextBox>
</cc1:PropertyPanel>
<cc1:PropertyPanel ID="pp_file" runat="server" Text="File">
<asp:PlaceHolder id="UploadControl" runat="server"></asp:PlaceHolder>
</cc1:PropertyPanel>
<cc1:PropertyPanel ID="pp_target" runat="server" Text="Save at...">
<ctl:ContentPicker runat="server" ID="MediaPickerControl" AppAlias="media" TreeAlias="media"
ModalHeight="200" ShowDelete="false" ShowHeader="false" Text='<%#umbraco.BasePages.BasePage.Current.getUser().StartMediaId.ToString()%>' />
</cc1:PropertyPanel>
<cc1:PropertyPanel ID="pp_button" runat="server" Text=" ">
<asp:Button id="SubmitButton" runat="server" Text='<%#umbraco.ui.Text("save")%>' Enabled="false" OnClick="SubmitButton_Click"></asp:Button>
</cc1:PropertyPanel>
</cc1:pane>
<cc1:feedback id="feedback" runat="server" />
@@ -0,0 +1,52 @@
/// <reference path="/umbraco_client/Application/NamespaceManager.js" />
Umbraco.Sys.registerNamespace("Umbraco.Controls");
(function($) {
Umbraco.Controls.UploadMediaImage = function(txtBoxTitleID, btnID, uploadFileID) {
return {
_txtBoxTitleID: txtBoxTitleID,
_btnID: btnID,
_uplaodFileID: uploadFileID,
validateImage: function() {
// Disable save button
var imageTypes = ",jpeg,jpg,gif,bmp,png,tiff,tif,";
var tb_title = document.getElementById(this._txtBoxTitleID);
var bt_submit = $("#" + this._btnID);
var tb_image = document.getElementById(this._uplaodFileID);
bt_submit.attr("disabled","disabled").css("color", "gray");
var imageName = tb_image.value;
if (imageName.length > 0) {
var extension = imageName.substring(imageName.lastIndexOf(".") + 1, imageName.length);
if (imageTypes.indexOf(',' + extension.toLowerCase() + ',') > -1) {
bt_submit.removeAttr("disabled").css("color", "#000");
if (tb_title.value == "") {
var curName = imageName.substring(imageName.lastIndexOf("\\") + 1, imageName.length).replace("." + extension, "");
var curNameLength = curName.length;
var friendlyName = "";
for (var i = 0; i < curNameLength; i++) {
currentChar = curName.substring(i, i + 1);
if (friendlyName.length == 0)
currentChar = currentChar.toUpperCase();
if (i < curNameLength - 1 && friendlyName != '' && curName.substring(i - 1, i) == ' ')
currentChar = currentChar.toUpperCase();
else if (currentChar != " " && i < curNameLength - 1 && friendlyName != ''
&& curName.substring(i-1, i).toUpperCase() != curName.substring(i-1, i)
&& currentChar.toUpperCase() == currentChar)
friendlyName += " ";
friendlyName += currentChar;
}
tb_title.value = friendlyName;
}
}
}
}
};
}
})(jQuery);
+2
View File
@@ -0,0 +1,2 @@
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ProgressBar.ascx.cs" Inherits="umbraco.presentation.umbraco.controls.ProgressBar" %>
<img src='<%#Umbraco.Core.IO.SystemDirectories.UmbracoClient%>/images/progressBar.gif' id="ImgBar" alt='<%#umbraco.ui.Text("publish", "inProgress")%>' /><br />
@@ -0,0 +1 @@
<%@ WebService language="C#" class="umbraco.controls.Tree.CustomTreeService" %>
@@ -0,0 +1,59 @@
<%@ Control Language="C#" AutoEventWireup="true" Inherits="umbraco.controls.Tree.TreeControl" %>
<%@ Register TagPrefix="umb" Namespace="ClientDependency.Core.Controls" Assembly="ClientDependency.Core" %>
<%@ Register TagPrefix="umbClient" Namespace="Umbraco.Web.UI.Bundles" Assembly="umbraco" %>
<umb:CssInclude ID="CssInclude2" runat="server" FilePath="Tree/treeIcons.css" PathNameAlias="UmbracoClient" Priority="10" />
<umb:CssInclude ID="CssInclude3" runat="server" FilePath="Tree/menuIcons.css" PathNameAlias="UmbracoClient" Priority="11" />
<umb:CssInclude ID="CssInclude1" runat="server" FilePath="Tree/Themes/umbraco/style.css" PathNameAlias="UmbracoClient" Priority="12" />
<umbClient:JsApplicationLib ID="JsUmbracoApplicationLib1" runat="server"/>
<umbClient:JsJQueryCore ID="JsJQueryCore1" runat="server"/>
<umbClient:JsJQueryPlugins ID="JsJQueryPlugins1" runat="server"/>
<umbClient:JsUmbracoTree runat="server"/>
<script type="text/javascript">
jQuery(document).ready(function() {
var ctxMenu = <%#GetJSONContextMenu() %>;
var app = "<%#App%>";
var showContext = <%#ShowContextMenu.ToString().ToLower()%>;
var isDialog = <%#IsDialog.ToString().ToLower()%>;
var dialogMode = "<%#DialogMode.ToString()%>";
var treeType = "<%#TreeType%>";
var functionToCall = "<%#FunctionToCall%>";
var nodeKey = "<%#NodeKey%>";
//create the javascript tree
jQuery("#<%=ClientID%>").UmbracoTree({
doNotInit: <%#ManualInitialization.ToString().ToLower()%>,
jsonFullMenu: ctxMenu,
appActions: UmbClientMgr.appActions(),
deletingText: '<%=umbraco.ui.GetText("deleting")%>',
app: app,
showContext: showContext,
isDialog: isDialog,
dialogMode: dialogMode,
treeType: treeType,
functionToCall : functionToCall,
nodeKey : nodeKey,
treeMode: "<%#Mode.ToString().ToLower()%>",
dataUrl: "<%#global::Umbraco.Core.IO.IOHelper.ResolveUrl(global::Umbraco.Core.IO.SystemDirectories.Umbraco)%>/webservices/TreeDataService.ashx",
serviceUrl: "<%#global::Umbraco.Core.IO.IOHelper.ResolveUrl(global::Umbraco.Core.IO.SystemDirectories.Umbraco)%>/webservices/TreeClientService.asmx/GetInitAppTreeData"});
<%if(string.IsNullOrEmpty(SelectedNodePath) == false) {%>
setTimeout(function() {
treeApi = jQuery("#<%=ClientID%>").UmbracoTreeAPI();
treeApi.syncTree('<%=SelectedNodePath%>', true, true);
}, 500);
<% } %>
<%#GetLegacyIActionJavascript()%>
});
</script>
<div runat="server" id="TreeContainer">
<div id="<%=ClientID%>" class="<%#Mode.ToString().ToLower()%>">
</div>
</div>
@@ -0,0 +1,133 @@
<%@ Control Language="C#" AutoEventWireup="True" CodeBehind="passwordChanger.ascx.cs" Inherits="Umbraco.Web.UI.Umbraco.Controls.PasswordChanger" %>
<script type="text/javascript">
(function ($) {
Umbraco.Sys.registerNamespace("Umbraco.Controls");
var enablePassRetrieval = <%=Provider.EnablePasswordRetrieval.ToString().ToLower()%>;
Umbraco.Controls.PasswordChanger = {
toggle: function (e) {
if (!$("#umbPasswordChanger").is(":visible")) {
this.togglePasswordInputValidators(true);
$(e).closest(".umb-el-wrap").replaceWith($("#umbPasswordChanger"));
$("#umbPasswordChanger").show();
$("#<%=IsChangingPasswordField.ClientID%>").val("true");
$(e).hide();
}
},
togglePasswordInputValidators: function(enable) {
if (enable) {
ValidatorEnable(document.getElementById('<%=NewPasswordRequiredValidator.ClientID %>'), true);
ValidatorEnable(document.getElementById('<%=ConfirmPasswordValidator.ClientID %>'), true);
ValidatorEnable(document.getElementById('<%=NewPasswordLengthValidator.ClientID %>'), true);
if (!enablePassRetrieval) {
var currPassVal = document.getElementById('<%=CurrentPasswordValidator.ClientID %>');
if (currPassVal) {
ValidatorEnable(currPassVal, true);
}
}
}
else {
var currPassVal = document.getElementById('<%=CurrentPasswordValidator.ClientID %>');
if (currPassVal) {
ValidatorEnable(currPassVal, false);
}
ValidatorEnable(document.getElementById('<%=ConfirmPasswordValidator.ClientID %>'), false);
ValidatorEnable(document.getElementById('<%=NewPasswordRequiredValidator.ClientID %>'), false);
ValidatorEnable(document.getElementById('<%=NewPasswordLengthValidator.ClientID %>'), false);
}
},
toggleReset: function(isChecked) {
if (isChecked) {
$("#passwordInputArea").hide();
this.togglePasswordInputValidators(false);
}
else {
$("#passwordInputArea").show();
this.togglePasswordInputValidators(true);
}
}
};
$(document).ready(function () {
$("#changePasswordButton").click(function() {
Umbraco.Controls.PasswordChanger.toggle(this);
});
$("#<%=ResetPasswordCheckBox.ClientID%>").change(function () {
Umbraco.Controls.PasswordChanger.toggleReset(
$("#<%=ResetPasswordCheckBox.ClientID%>").is(":checked"));
});
});
})(jQuery);
</script>
<a href="#" id="changePasswordButton"><%= umbraco.ui.Text("user", "changePassword") %></a><br />
<div class="propertyItem" id="umbPasswordChanger" style="display: none;">
<asp:HiddenField runat="server" ID="IsChangingPasswordField" Value="false" />
<asp:PlaceHolder runat="server" ID="ResetPlaceHolder" Visible="<%#Provider.EnablePasswordReset %>">
<div class="umb-el-wrap">
<label class="control-label" for="<%=ResetPasswordCheckBox.ClientID %>"><%=umbraco.ui.GetText("user", "resetPassword")%></label>
<div class="controls controls-row">
<asp:CheckBox runat="server" ID="ResetPasswordCheckBox" />
</div>
</div>
</asp:PlaceHolder>
<div id="passwordInputArea">
<asp:PlaceHolder runat="server" ID="CurrentPasswordPlaceHolder" Visible="<%#ShowOldPassword %>">
<div class="umb-el-wrap ">
<label class="control-label" for="<%=umbPasswordChanger_passwordCurrent.ClientID %>"><%=umbraco.ui.GetText("user", "passwordCurrent")%></label>
<div class="controls controls-row">
<asp:TextBox ID="umbPasswordChanger_passwordCurrent" autocomplete="off" AutoCompleteType="None" TextMode="password" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="CurrentPasswordValidator" Enabled="False" runat="server"
Display="Dynamic"
ControlToValidate="umbPasswordChanger_passwordCurrent"
ErrorMessage="*" />
</div>
</div>
</asp:PlaceHolder>
<div class="umb-el-wrap ">
<label class="control-label" for="<%=umbPasswordChanger_passwordNew.ClientID %>"><%=umbraco.ui.GetText("user", "newPassword")%></label>
<div class="controls controls-row">
<asp:TextBox ID="umbPasswordChanger_passwordNew" autocomplete="off" AutoCompleteType="None" TextMode="password" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="NewPasswordRequiredValidator" Enabled="False" runat="server"
Display="Dynamic"
ControlToValidate="umbPasswordChanger_passwordNew"
ErrorMessage="*" />
<asp:RegularExpressionValidator ID="NewPasswordLengthValidator" runat="server"
Display="Dynamic"
ControlToValidate="umbPasswordChanger_passwordNew"
ErrorMessage='<%# "Minimum " + Provider.MinRequiredPasswordLength + " characters" %>'
ValidationExpression='<%# ".{" + Provider.MinRequiredPasswordLength + "}.*" %>' />
</div>
</div>
<div class="umb-el-wrap ">
<label class="control-label" for="<%=umbPasswordChanger_passwordNewConfirm.ClientID %>"><%=umbraco.ui.GetText("user", "confirmNewPassword")%></label>
<div class="controls controls-row">
<asp:TextBox ID="umbPasswordChanger_passwordNewConfirm" autocomplete="off" AutoCompleteType="None" TextMode="password" runat="server"></asp:TextBox>
<asp:CompareValidator ID="ConfirmPasswordValidator" runat="server" Enabled="False"
Display="Dynamic"
ErrorMessage="Passwords must match"
ControlToValidate="umbPasswordChanger_passwordNew"
ControlToCompare="umbPasswordChanger_passwordNewConfirm"
Operator="Equal" />
</div>
</div>
</div>
</div>
<div id="Div1" runat="server" class="alert alert-success" style="margin-top: 10px; width: 300px;" visible="<%# string.IsNullOrWhiteSpace(ChangingPasswordModel.GeneratedPassword) == false %>">
<p style="text-align: center">
Password has been reset to<br />
<br />
<strong><%# ChangingPasswordModel.GeneratedPassword %></strong>
</p>
</div>