Skip to content

Commit f1da192

Browse files
authored
Merge pull request #62 from mattbrailsford/feature/querystring
Fixes #45: Adds querystring support
2 parents e82e758 + d219dd8 commit f1da192

File tree

6 files changed

+46
-6
lines changed

6 files changed

+46
-6
lines changed

src/RJP.MultiUrlPicker.Web.UI/MultiUrlPicker.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<umb-node-preview icon="link.icon"
66
name="link.name"
77
published="link.published"
8-
description="link.url"
8+
description="link.url + (link.querystring ? link.querystring : '')"
99
sortable="!ctrl.sortableOptions.disabled"
1010
allow-remove="true"
1111
allow-open="true"

src/RJP.MultiUrlPicker.Web.UI/MultiUrlPicker.js

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
id: link.isMedia ? null : link.id,
5858
udi: link.isMedia ? null : link.udi,
5959
url: link.url,
60+
querystring: link.querystring,
6061
target: link.target
6162
} : null
6263

@@ -65,6 +66,7 @@
6566
view: 'linkpicker',
6667
currentTarget: target,
6768
show: true,
69+
querystring: true,
6870
submit: function (model) {
6971
if (model.target.url) {
7072
if (link) {
@@ -80,14 +82,16 @@
8082
link.name = model.target.name || model.target.url
8183
link.target = model.target.target
8284
link.url = model.target.url
85+
link.querystring = model.target.querystring
8386
} else {
8487
link = {
8588
id: model.target.id,
8689
isMedia: model.target.isMedia,
8790
name: model.target.name || model.target.url,
8891
target: model.target.target,
8992
udi: model.target.udi,
90-
url: model.target.url
93+
url: model.target.url,
94+
querystring: model.target.querystring
9195
}
9296
this.renderModel.push(link)
9397
}
@@ -115,6 +119,27 @@
115119
}
116120
}
117121

118-
angular.module('umbraco')
119-
.controller('RJP.MultiUrlPickerController', MultiUrlPickerController)
122+
angular.module('umbraco').controller('RJP.MultiUrlPickerController', MultiUrlPickerController)
123+
124+
function mupHttpProvider($httpProvider) {
125+
126+
$httpProvider.interceptors.push(function ($q) {
127+
return {
128+
'response': function (response) {
129+
if (response.config.url.indexOf("views/common/overlays/linkpicker/linkpicker.html") !== -1) {
130+
// Inject the querystring field
131+
var $markup = $(response.data);
132+
var $urlField = $markup.find("[label=\"@defaultdialogs_urlLinkPicker\"]");
133+
$urlField.after("<umb-control-group label='Query String' ng-if='model.querystring'><input type='text' placeholder='Query String' class='umb-editor umb-textstring' ng-model='model.target.querystring'/></umb-control-group>");
134+
response.data = $markup[0];
135+
}
136+
return response;
137+
}
138+
};
139+
});
140+
141+
}
142+
143+
angular.module("umbraco.services").config(['$httpProvider', mupHttpProvider]);
144+
120145
})()

src/RJP.MultiUrlPicker/Models/Link.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,12 @@ public string Url
109109
if (string.IsNullOrEmpty(_url))
110110
{
111111
_url = PublishedContent?.Url ?? _linkItem.Value<string>("url");
112+
113+
var qs = _linkItem.Value<string>("querystring");
114+
if (!string.IsNullOrWhiteSpace(qs))
115+
{
116+
_url += qs;
117+
}
112118
}
113119
return _url;
114120
}

src/RJP.MultiUrlPicker/Models/LinkDisplay.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,5 +30,8 @@ internal class LinkDisplay
3030

3131
[DataMember(Name = "url")]
3232
public string Url { get; set; }
33+
34+
[DataMember(Name = "querystring")]
35+
public string Querystring { get; set; }
3336
}
3437
}

src/RJP.MultiUrlPicker/Models/LinkDto.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@ internal class LinkDto
2828
[DataMember(Name = "url")]
2929
public string Url { get; set; }
3030

31+
[DataMember(Name = "querystring")]
32+
public string Querystring { get; set; }
33+
3134
internal bool Published { get; set; }
3235
}
3336
}

src/RJP.MultiUrlPicker/MultiUrlPickerPropertyEditor.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,7 @@ public override object ConvertDbToEditor(Property property, PropertyType propert
216216
Published = published,
217217
Udi = udi,
218218
Url = url,
219+
Querystring = dto.Querystring
219220
});
220221
}
221222
else
@@ -226,7 +227,8 @@ public override object ConvertDbToEditor(Property property, PropertyType propert
226227
Name = dto.Name,
227228
Published = true,
228229
Target = dto.Target,
229-
Url = dto.Url
230+
Url = dto.Url,
231+
Querystring = dto.Querystring
230232
});
231233
}
232234
}
@@ -258,7 +260,8 @@ from link in JsonConvert.DeserializeObject<List<LinkDisplay>>(value)
258260
Name = link.Name,
259261
Target = link.Target,
260262
Udi = link.Udi,
261-
Url = link.Udi == null ? link.Url : null // only save the url for external links
263+
Url = link.Udi == null ? link.Url : null, // only save the url for external links
264+
Querystring = link.Querystring
262265
},
263266
new JsonSerializerSettings
264267
{

0 commit comments

Comments
 (0)