This repository was archived by the owner on Feb 26, 2022. It is now read-only.
Repository navigation
Expand file tree
/
Copy pathIT_DataEditor.cs
More file actions
138 lines (121 loc) · 5.47 KB
/
Copy pathIT_DataEditor.cs
File metadata and controls
138 lines (121 loc) · 5.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using uComponents.Core;
using uComponents.DataTypes.Shared.Extensions;
using umbraco.cms.businesslogic.datatype;
using umbraco.editorControls;
[assembly: WebResource("uComponents.DataTypes.IncrementalTextBox.Styles.IncrementalTextBox.css", Constants.MediaTypeNames.Text.Css, PerformSubstitution = true)]
[assembly: WebResource("uComponents.DataTypes.IncrementalTextBox.Scripts.jquery.increment.js", Constants.MediaTypeNames.Application.JavaScript)]
[assembly: WebResource("uComponents.DataTypes.IncrementalTextBox.Images.down.png", Constants.MediaTypeNames.Image.Png)]
[assembly: WebResource("uComponents.DataTypes.IncrementalTextBox.Images.up.png", Constants.MediaTypeNames.Image.Png)]
namespace uComponents.DataTypes.IncrementalTextBox
{
/// <summary>
/// The DataEditor for the IncrementalTextBox data-type.
/// </summary>
[ClientDependency.Core.ClientDependency(ClientDependency.Core.ClientDependencyType.Javascript, "ui/jquery.alphanumeric.js", "UmbracoClient")]
public class IT_DataEditor : CompositeControl
{
/// <summary>
/// The TextBox control for the value.
/// </summary>
protected TextBox TextBoxValue;
/// <summary>
/// Gets or sets the m_prevalues.
/// </summary>
/// <value>The m_prevalues.</value>
public IT_PrevalueEditor m_prevalues { get; set; }
/// <summary>
/// Gets or sets the text.
/// </summary>
/// <value>The text.</value>
public string Text
{
get
{
return this.TextBoxValue.Text;
}
set
{
if (this.TextBoxValue == null)
{
this.TextBoxValue = new TextBox();
this.TextBoxValue.ID = this.ID + "TextBox";
}
this.TextBoxValue.Text = value;
}
}
/// <summary>
/// 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)
{
base.OnInit(e);
this.EnsureChildControls();
}
/// <summary>
/// Raises the <see cref="E:System.Web.UI.Control.Load"/> event.
/// </summary>
/// <param name="e">The <see cref="T:System.EventArgs"/> object that contains the event data.</param>
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
// get the urls for the embedded resources
this.RegisterEmbeddedClientResource("uComponents.DataTypes.IncrementalTextBox.Scripts.jquery.increment.js", ClientDependencyType.Javascript);
this.RegisterEmbeddedClientResource("uComponents.DataTypes.IncrementalTextBox.Styles.IncrementalTextBox.css", ClientDependencyType.Css);
}
/// <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();
this.EnsureChildControls();
this.Controls.Add(TextBoxValue);
}
/// <summary>
/// Writes the <see cref="T:System.Web.UI.WebControls.CompositeControl"/> content to the specified <see cref="T:System.Web.UI.HtmlTextWriter"/> object, for display on the client.
/// </summary>
/// <param name="writer">An <see cref="T:System.Web.UI.HtmlTextWriter"/> that represents the output stream to render HTML content on the client.</param>
protected override void Render(HtmlTextWriter writer)
{
TextBoxValue.RenderControl(writer);
writer.AddAttribute("onclick", "{0}_increment()".Replace("{0}", TextBoxValue.ClientID));
writer.AddAttribute(HtmlTextWriterAttribute.Class, "IncrementTextBoxUp");
writer.RenderBeginTag(HtmlTextWriterTag.Div);
writer.RenderEndTag();
writer.AddAttribute("onclick", "{0}_decrement()".Replace("{0}", TextBoxValue.ClientID));
writer.AddAttribute(HtmlTextWriterAttribute.Class,"IncrementTextBoxDown" );
writer.RenderBeginTag(HtmlTextWriterTag.Div);
writer.RenderEndTag();
string javascript = @"
<script type='text/javascript'>
jQuery('#{0}').numeric();
function {0}_increment() {
var value = parseInt(jQuery('#{0}').val()) + {3};
if ( value < {1} ) {
jQuery('#{0}').val({1} + {3});
} else if ( value <= {2} ) {
jQuery('#{0}').increment({3});
} else if ( value > {2} ) {
jQuery('#{0}').val({2});
}
}
function {0}_decrement() {
var value = parseInt(jQuery('#{0}').val()) - {3};
if ( value >= {2} ) {
jQuery('#{0}').val({2} - {3});
} else if ( value >= {1} && value <= {2} ) {
jQuery('#{0}').decrement(-{3});
} else {
jQuery('#{0}').val({1});
}
}
</script>
".Replace("{0}", TextBoxValue.ClientID).Replace("{1}", m_prevalues.MinValue.ToString()).Replace("{2}", m_prevalues.MaxValue.ToString()).Replace("{3}",m_prevalues.IncrementValue.ToString());
writer.WriteLine(javascript);
}
}
}