Error executing template "/Designs/PLC/Paragraph/UnsubscribeNewsLetterParagraph.cshtml"
System.ArgumentNullException: Value cannot be null.
Parameter name: s
at System.Convert.FromBase64String(String s)
at CompiledRazorTemplates.Dynamic.RazorEngine_db36f30f13d04663ab8ccebbfa10ebd5.Execute() in E:\website\PLCMalaysia\Solution\Files\Templates\Designs\PLC\Paragraph\UnsubscribeNewsLetterParagraph.cshtml:line 76
at RazorEngine.Templating.TemplateBase.RazorEngine.Templating.ITemplate.Run(ExecuteContext context, TextWriter reader)
at RazorEngine.Templating.RazorEngineService.RunCompile(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass16_0.b__0(TextWriter writer)
at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter)
at Dynamicweb.Rendering.Template.RenderRazorTemplate()
1 @using System.Web;
2 @using System.Text;
3
4 @{
5 init();
6 }
7
8 @functions {
9 private int columnsWritten { get; set; }
10 private int columns { get; set; }
11
12 public void init()
13 {
14 columnsWritten = Dynamicweb.Core.Converter.ToInt32(System.Web.HttpContext.Current.Items["currentColumns"]);
15 columns = GetInteger("Item.Width");
16 System.Web.HttpContext.Current.Items["currentColumns"] = columnsWritten + GetInteger("Item.Width");
17 }
18
19 public void Fluid()
20 {
21 columnsWritten = Dynamicweb.Core.Converter.ToInt32(System.Web.HttpContext.Current.Items["currentColumns"]);
22 columns = 12;
23 System.Web.HttpContext.Current.Items["currentColumns"] = columnsWritten + 12;
24 }
25
26 public string ColumnClass()
27 {
28 if (GetString("Item.WidthMobile") == "hide"){
29 return "col-md-" + GetString("Item.Width") + " hidden-xs";
30 } else {
31 return "col-md-" + GetString("Item.Width") + " col-xs-" + GetString("Item.WidthMobile");
32 }
33 }
34
35 public string NewRow()
36 {
37 if (columns + columnsWritten > 12)
38 {
39 System.Web.HttpContext.Current.Items["currentColumns"] = columns;
40 return "</div><div class='clearfix'></div><div class=\"grid\">";
41 }
42 else
43 {
44 return string.Empty;
45 }
46
47 }
48 }
49 @NewRow()
50
51
52 @{
53 string requestUrl = "http://" + GetGlobalValue("Global:Request.Host");
54 Dynamicweb.Security.UserManagement.User user = new Dynamicweb.Security.UserManagement.User();
55 /* BEGIN cheating to hide "username" query parameter value. PLC would like to hide user email address. PLC should not request to hide and DW should not implement this way. */
56 try
57 {
58 string usernameParamValue = Convert.ToString(System.Web.HttpContext.Current.Request["username"]);
59 string counterParamValue = Convert.ToString(System.Web.HttpContext.Current.Request["usernamecounter"]);
60 if(!string.IsNullOrEmpty(usernameParamValue) && string.IsNullOrEmpty(counterParamValue) && usernameParamValue.Contains("@"))
61 {
62 byte[] usernameByte = Encoding.UTF8.GetBytes(usernameParamValue);
63 string usernameBase64 = Convert.ToBase64String(usernameByte);
64 string customParam = "username=" + usernameBase64 + "&usernamecounter=" + DateTime.Now.ToString("MMhhddmmyyyyss");
65 string currentPageUrl = "/default.aspx?Id=" + GetString("Global.PageId");
66 string redirectUrl = currentPageUrl + "&" + customParam;
67 System.Web.HttpContext.Current.Response.Redirect(redirectUrl);
68 }
69 } catch { /* nothing can do. */ }
70 /* END cheating to hide "username" query parameter value. PLC would like to hide user email address */
71
72 HttpRequest quest = System.Web.HttpContext.Current.Request;
73 //string Queryusername = quest.QueryString["username"];
74 //string queryUserId = quest.QueryString["userid"];
75
76 var userNameBytes = System.Convert.FromBase64String(quest.QueryString["username"]);
77 var Queryusername = System.Text.Encoding.UTF8.GetString(userNameBytes);
78 user = Dynamicweb.Security.UserManagement.User.GetUserByUserName(Queryusername);
79 if (user == null)
80 {
81 var userIdBytes = System.Convert.FromBase64String(quest.QueryString["userid"]);
82 var queryUserId = System.Text.Encoding.UTF8.GetString(userIdBytes);
83 user = Dynamicweb.Security.UserManagement.User.GetUserByID(Convert.ToInt32(queryUserId));
84 }
85
86
87 if (user != null)
88 {
89 user.EmailAllowed = false;
90 user.RemoveFromGroup(1841);
91 user.Save();
92 }
93 else
94 {
95 //System.Web.HttpContext.Current.Response.Redirect("Default.aspx?ID=8794");
96 }
97 }
98
99 <div class="@ColumnClass()">
100
101 @if (GetString("Item.Order") == "title-first" || GetString("Item.Order") == "")
102 {
103 @RenderHeading()
104 @RenderSubHeading()
105 @RenderImage()
106 @RenderText()
107 @RenderModule()
108 @RenderButton()
109 }
110
111 @if (GetString("Item.Order") == "image-first")
112 {
113
114 @RenderImage()
115 @RenderSubHeading()
116 @RenderHeading()
117 @RenderText()
118 @RenderModule()
119 @RenderButton()
120 }
121
122 @if (GetString("Item.Order") == "title-sub-first")
123 {
124 @RenderHeading()
125 @RenderSubHeading()
126 @RenderImage()
127 @RenderText()
128 @RenderModule()
129 @RenderButton()
130 }
131
132 @if (GetString("Item.Order") == "icon-xs")
133 {
134 <div class="col-md-2">
135 @RenderImage()
136 </div>
137 <div class="col-md-10">
138 @RenderHeading()
139 @RenderSubHeading()
140 @RenderText()
141 @RenderModule()
142 @RenderButton()
143 </div>
144 }
145
146 @if (GetString("Item.Order") == "icon-sm")
147 {
148 <div class="col-md-3">
149 @RenderImage()
150 </div>
151 <div class="col-md-9">
152 @RenderHeading()
153 @RenderSubHeading()
154 @RenderText()
155 @RenderModule()
156 @RenderButton()
157 </div>
158 }
159
160 @if (GetString("Item.Order") == "icon-md")
161 {
162 <div class="col-md-4">
163 @RenderImage()
164 </div>
165 <div class="col-md-8">
166 @RenderHeading()
167 @RenderSubHeading()
168 @RenderText()
169 @RenderModule()
170 @RenderButton()
171 </div>
172 }
173
174 </div>
175
176
177 @helper RenderHeading()
178 {
179 if (GetBoolean("Item.ShowTitle") != false)
180 {
181 if (!string.IsNullOrEmpty(GetString("Item.Title")))
182 {
183 <h2 id="paragraphid" style="margin-left:20px;">@GetString("Item.Title") </h2>
184 }
185 }
186 }
187
188 @helper RenderButton()
189 {
190 var Url = GetString("Item.Link");
191
192 if (!string.IsNullOrEmpty(Url) && !string.IsNullOrEmpty(GetString("Item.LinkText")))
193 {
194 if (Url.Contains("http"))
195 {
196 <text>
197 <p style="float:none !important; margin-bottom:30px !important; text-align:center !important; width: 110% !important;">
198 <a href="@GetString("Item.Link")" target="_blank" class="btn btn-dw-primary">@GetString("Item.LinkText")</a>
199 </p>
200 </text>
201 }
202 else if (Url.Contains("/"))
203 {
204 <text>
205 <p style="float:none !important; margin-bottom:30px !important; text-align:center !important; width: 110% !important;">
206 <a href="@GetString("Item.Link")" class="btn btn-dw-primary" download>@GetString("Item.LinkText")</a>
207 </p>
208 </text>
209 }
210 else
211 {
212 <text>
213 <p style="float:none !important; margin-bottom:30px !important; text-align:center !important; width: 110% !important;">
214 <a href="@GetString("Item.Link")" class="btn btn-dw-primary" style="margin-left: -40px;">@GetString("Item.LinkText")</a>
215 </p>
216 </text>
217 }
218 }
219 }
220
221 @helper RenderSubHeading()
222 {
223 if (!string.IsNullOrEmpty(GetString("Item.Subtitle")))
224 {
225 <h3 style="margin-left:20px;">
226 @GetString("Item.Subtitle")
227 </h3>
228 }
229 }
230
231 @helper RenderText()
232 {
233 if (!string.IsNullOrWhiteSpace(GetString("Item.Text")))
234 {
235
236 <div class="figure" style="margin: -23px 0 -20px 0px;">
237 @GetString("Item.Text")
238 </div>
239 }
240 }
241
242 @helper RenderModule()
243 {
244 @GetString("ParagraphModule")
245 }
246
247 @helper RenderImage()
248 {
249 if (!string.IsNullOrEmpty(GetString("Item.Image")))
250 {
251 var image = System.Web.HttpContext.Current.Server.UrlEncode(GetString("Item.Image"));
252
253 <!-- Choosing the smallest possible width that will work with responsive sizes -->
254 string optimizedwidth = "1280";
255
256 switch (GetString("Item.Width"))
257 {
258 case "12":
259 optimizedwidth = "1280";
260 break;
261 case "9":
262 optimizedwidth = "960";
263 break;
264 case "6":
265 optimizedwidth = "722";
266 break;
267 case "3":
268 optimizedwidth = "722";
269 break;
270 case "8":
271 optimizedwidth = "960";
272 break;
273 case "4":
274 optimizedwidth = "722";
275 break;
276 }
277
278 string optimizedheight = ((Convert.ToInt32(optimizedwidth) / 16) * 9).ToString();
279
280 if (GetString("Item.ImageStyle") == "ball")
281 {
282 optimizedwidth = "500";
283 optimizedheight = "500";
284 }
285
286
287 if (string.IsNullOrEmpty(GetString("Item.Link")))
288 {
289 <div class="img-responsive dw-std-image" style="padding-bottom: 15px;">
290 <img class="content-image img-responsive" width="@optimizedwidth" height="@optimizedheight" style="@GetImageBorderCss()" src="/Admin/Public/GetImage.ashx?width=@optimizedwidth&height=@optimizedheight&crop=7&Compression=75&image=@image" alt='@GetString("Item.Title")' />
291 </div>
292 }
293 else
294 {
295 <a href="@GetString("Item.Link")">
296 <div class="img-responsive dw-std-image" style="padding-bottom: 15px;">
297 <img class="content-image img-responsive" width="@optimizedwidth" height="@optimizedheight" style="@GetImageBorderCss()" src="/Admin/Public/GetImage.ashx?width=@optimizedwidth&height=@optimizedheight&crop=7&Compression=75&image=@image" alt='@GetString("Item.Title")' />
298 </div>
299 </a>
300 }
301 }
302 }
303
304 @functions {
305 private string GetImageBorderCss()
306 {
307 if (GetString("Item.ImageStyle") == "cover")
308 {
309 return "padding: 8px";
310 }
311 else if (GetString("Item.ImageStyle") == "cover-border")
312 {
313 return "padding: 4px; border: 1px solid #e1e1e1; border-radius: 0px !important";
314 }
315 else if (GetString("Item.ImageStyle") == "frame")
316 {
317 return "padding: 6px; border: 1px solid #e1e1e1; border-radius: 0px !important";
318 }
319 else if (GetString("Item.ImageStyle") == "rounded")
320 {
321 return "border-radius: 8px !important";
322 }
323 else if (GetString("Item.ImageStyle") == "ball")
324 {
325 return "border-radius: 1000px !important";
326 }
327 else if (GetString("Item.ImageStyle") == "shadow")
328 {
329 return "box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.2)";
330 }
331 else
332 {
333 return string.Empty;
334 }
335 }
336 }