-
Notifications
You must be signed in to change notification settings - Fork 6
/
samlmeta.plugin.contact.js
116 lines (99 loc) · 3.65 KB
/
samlmeta.plugin.contact.js
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
(function($) {
var UI = {
"clearContacts": function() {
$("div#contact > div.content").empty();
},
"addContact": function(contact) {
var randID = Math.floor(Math.random() * 10000 1000);
var contactHTML = '<fieldset><legend>Contact</legend>'
'<div>'
'<label for="contact-' randID '-type">Contact type: </label>'
'<select name="contact-' randID '-type-name" id="contact-' randID '-type">';
var contactType, checked;
for (contactType in SAMLmetaJS.Constants.contactTypes) {
if (SAMLmetaJS.Constants.contactTypes.hasOwnProperty(contactType)) {
checked = '';
if (contact.contactType === contactType) {
checked = ' selected="selected" ';
}
contactHTML = '<option value="' contactType '" ' checked '>'
SAMLmetaJS.Constants.contactTypes[contactType]
'</option>';
}
}
contactHTML = '</select>'
'</div>'
'<div class="contactfield">'
'<label for="contact-' randID '-givenname">Given name: </label>'
'<input type="text" name="contact-' randID '-givenname-name" id="contact-' randID '-givenname" value="' (contact.givenName || '') '" />'
'</div>'
'<div class="contactfield">'
'<label for="contact-' randID '-surname">Surname: </label>'
'<input type="text" name="contact-' randID '-givenname-name" id="contact-' randID '-surname" value="' (contact.surName || '') '" />'
'</div>'
'<div class="contactfield">'
'<label for="contact-' randID '-email">E-mail: </label>'
'<input type="text" name="contact-' randID '-email-name" id="contact-' randID '-email" value="' (contact.emailAddress || '') '" />'
'</div>'
'<button style="display: block; clear: both" class="remove">Remove</button>'
'</fieldset>';
$(contactHTML).appendTo("div#contact > div.content").find('button.remove').click( function(e) {
e.preventDefault();
$(e.target).closest('fieldset').remove();
});
}
};
SAMLmetaJS.plugins.contact = {
tabClick: function (handler) {
handler($("a[href='#contact']"));
},
addTab: function (pluginTabs) {
pluginTabs.list.push('<li><a href="#contact">Contacts</a></li>');
pluginTabs.content.push(
'<div id="contact">'
'<div class="content"></div>'
'<div><button class="addcontact">Add new contact</button></div>'
'</div>'
);
},
setUp: function () {
$("div#contact button.addcontact").click(function(e) {
e.preventDefault();
UI.addContact({});
});
},
fromXML: function (entitydescriptor) {
var i;
// Clear contacts
UI.clearContacts();
// Add existing contacts (from XML)
if (entitydescriptor.contacts) {
for (i = 0; i < entitydescriptor.contacts.length; i ) {
UI.addContact(entitydescriptor.contacts[i]);
}
}
},
toXML: function (entitydescriptor) {
$('div#contact fieldset').each(function (index, element) {
var newContact = {};
newContact.contactType = $(element).find('select').val();
newContact.givenName = $(element).find('input').eq(0).attr('value');
newContact.surName = $(element).find('input').eq(1).attr('value');
newContact.emailAddress = $(element).find('input').eq(2).attr('value');
if (newContact.emailAddress.trim) {
newContact.emailAddress = newContact.emailAddress.trim();
}
if (newContact.emailAddress.indexOf('mailto:') < 0) {
newContact.emailAddress = 'mailto:' newContact.emailAddress;
}
if (!entitydescriptor.contacts) {
entitydescriptor.contacts = [];
}
entitydescriptor.contacts.push(newContact);
});
},
validate: function () {
return true;
}
};
}(jQuery));