root / snf-cyclades-app / synnefo / ui / static / snf / js / invitations.js @ c16d0b2c
History | View | Annotate | Download (5.5 kB)
1 | 00469232 | Kostas Papadimitriou | // Copyright 2011 GRNET S.A. All rights reserved.
|
---|---|---|---|
2 | 00469232 | Kostas Papadimitriou | //
|
3 | 00469232 | Kostas Papadimitriou | // Redistribution and use in source and binary forms, with or
|
4 | 00469232 | Kostas Papadimitriou | // without modification, are permitted provided that the following
|
5 | 00469232 | Kostas Papadimitriou | // conditions are met:
|
6 | 00469232 | Kostas Papadimitriou | //
|
7 | 00469232 | Kostas Papadimitriou | // 1. Redistributions of source code must retain the above
|
8 | 00469232 | Kostas Papadimitriou | // copyright notice, this list of conditions and the following
|
9 | 00469232 | Kostas Papadimitriou | // disclaimer.
|
10 | 00469232 | Kostas Papadimitriou | //
|
11 | 00469232 | Kostas Papadimitriou | // 2. Redistributions in binary form must reproduce the above
|
12 | 00469232 | Kostas Papadimitriou | // copyright notice, this list of conditions and the following
|
13 | 00469232 | Kostas Papadimitriou | // disclaimer in the documentation and/or other materials
|
14 | 00469232 | Kostas Papadimitriou | // provided with the distribution.
|
15 | 00469232 | Kostas Papadimitriou | //
|
16 | 00469232 | Kostas Papadimitriou | // THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
|
17 | 00469232 | Kostas Papadimitriou | // OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
18 | 00469232 | Kostas Papadimitriou | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
19 | 00469232 | Kostas Papadimitriou | // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
|
20 | 00469232 | Kostas Papadimitriou | // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
21 | 00469232 | Kostas Papadimitriou | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
22 | 00469232 | Kostas Papadimitriou | // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
23 | 00469232 | Kostas Papadimitriou | // USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
24 | 00469232 | Kostas Papadimitriou | // AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
25 | 00469232 | Kostas Papadimitriou | // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
26 | 00469232 | Kostas Papadimitriou | // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
27 | 00469232 | Kostas Papadimitriou | // POSSIBILITY OF SUCH DAMAGE.
|
28 | 00469232 | Kostas Papadimitriou | //
|
29 | 00469232 | Kostas Papadimitriou | // The views and conclusions contained in the software and
|
30 | 00469232 | Kostas Papadimitriou | // documentation are those of the authors and should not be
|
31 | 00469232 | Kostas Papadimitriou | // interpreted as representing official policies, either expressed
|
32 | 00469232 | Kostas Papadimitriou | // or implied, of GRNET S.A.
|
33 | 00469232 | Kostas Papadimitriou | //
|
34 | 00469232 | Kostas Papadimitriou | |
35 | 19e01943 | Kostas Papadimitriou | /*
|
36 | 19e01943 | Kostas Papadimitriou | * jQuery dynamicField plugin
|
37 | 19e01943 | Kostas Papadimitriou | * Copyright 2009, Matt Quackenbush (http://www.quackfuzed.com/)
|
38 | 19e01943 | Kostas Papadimitriou | *
|
39 | 19e01943 | Kostas Papadimitriou | * Find usage demos at http://www.quackfuzed.com/demos/jQuery/dynamicField/index.cfm)
|
40 | 19e01943 | Kostas Papadimitriou | *
|
41 | 19e01943 | Kostas Papadimitriou | * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
|
42 | 19e01943 | Kostas Papadimitriou | * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
|
43 | 19e01943 | Kostas Papadimitriou | *
|
44 | 19e01943 | Kostas Papadimitriou | * Version: 1.0
|
45 | 19e01943 | Kostas Papadimitriou | * Date: 8/13/2009
|
46 | 19e01943 | Kostas Papadimitriou | */
|
47 | 19e01943 | Kostas Papadimitriou | ;(function($) { |
48 | 19e01943 | Kostas Papadimitriou | $.fn.dynamicField = function(options) { |
49 | 19e01943 | Kostas Papadimitriou | if ( $(this).attr("id") == undefined ) { |
50 | 848e6d10 | Kostas Papadimitriou | throw "The dynamicField plugin could not be initialized.\n\nPlease check the selector."; |
51 | 19e01943 | Kostas Papadimitriou | return $; |
52 | 19e01943 | Kostas Papadimitriou | } |
53 | 19e01943 | Kostas Papadimitriou | |
54 | 19e01943 | Kostas Papadimitriou | var f = $(this); |
55 | 19e01943 | Kostas Papadimitriou | |
56 | 19e01943 | Kostas Papadimitriou | var settings = $.extend({ |
57 | 19e01943 | Kostas Papadimitriou | maxFields: 5, |
58 | 45f5ab9c | Kostas Papadimitriou | removeImgSrc: "/static/invitations/cross.png", |
59 | 45f5ab9c | Kostas Papadimitriou | spacerImgSrc: "/static/invitations/spacer.gif", |
60 | 19e01943 | Kostas Papadimitriou | addTriggerClass: "add-field-trigger", |
61 | 19e01943 | Kostas Papadimitriou | removeImgClass: "remove-field-trigger", |
62 | 19e01943 | Kostas Papadimitriou | hideClass: "hide", |
63 | 19e01943 | Kostas Papadimitriou | cloneContainerId: f.attr("id").replace(/^(.+)([_-][0-9]+)$/,"$1"), |
64 | 19e01943 | Kostas Papadimitriou | rowContainerClass: f.attr("class"), |
65 | 19e01943 | Kostas Papadimitriou | labelText: f.children("label") |
66 | 19e01943 | Kostas Papadimitriou | .html(), |
67 | 19e01943 | Kostas Papadimitriou | baseName: f.children("input") |
68 | 19e01943 | Kostas Papadimitriou | .attr("name")
|
69 | 19e01943 | Kostas Papadimitriou | .replace(/^(.+[_-])([0-9]+)$/,"$1"), |
70 | 19e01943 | Kostas Papadimitriou | baseNames: baseNames(),
|
71 | 19e01943 | Kostas Papadimitriou | addContainerId: "add-" + f.children("input") |
72 | 19e01943 | Kostas Papadimitriou | .attr("name")
|
73 | 19e01943 | Kostas Papadimitriou | .replace(/^(.+)([_-][0-9]+)$/,"$1") |
74 | 19e01943 | Kostas Papadimitriou | .replace(/_/g,"-") + "-container" |
75 | 19e01943 | Kostas Papadimitriou | },options); |
76 | 19e01943 | Kostas Papadimitriou | |
77 | 19e01943 | Kostas Papadimitriou | var getFields = function() { |
78 | 19e01943 | Kostas Papadimitriou | return $("div." + settings.rowContainerClass); |
79 | 19e01943 | Kostas Papadimitriou | }; |
80 | 19e01943 | Kostas Papadimitriou | |
81 | 19e01943 | Kostas Papadimitriou | function baseNames() { |
82 | 19e01943 | Kostas Papadimitriou | var names = new Array(); |
83 | 19e01943 | Kostas Papadimitriou | $.each(f.children("input"), function(index, child){ |
84 | 19e01943 | Kostas Papadimitriou | var name = child.name.replace(/^(.+[_-])([0-9]+)$/,"$1") |
85 | 19e01943 | Kostas Papadimitriou | names.push(name); |
86 | 19e01943 | Kostas Papadimitriou | }); |
87 | 19e01943 | Kostas Papadimitriou | return names;
|
88 | 19e01943 | Kostas Papadimitriou | } |
89 | 19e01943 | Kostas Papadimitriou | |
90 | 19e01943 | Kostas Papadimitriou | // handle hide/show, etc
|
91 | 19e01943 | Kostas Papadimitriou | var addRemoveBtnCk = function() { |
92 | 19e01943 | Kostas Papadimitriou | var fields = getFields();
|
93 | 19e01943 | Kostas Papadimitriou | var len = fields.length;
|
94 | 19e01943 | Kostas Papadimitriou | |
95 | 19e01943 | Kostas Papadimitriou | fields.each(function(i,elem) {
|
96 | 19e01943 | Kostas Papadimitriou | $(elem)
|
97 | 19e01943 | Kostas Papadimitriou | .children("img")
|
98 | 19e01943 | Kostas Papadimitriou | .attr({ |
99 | 19e01943 | Kostas Papadimitriou | "src":(len == 1) ? settings.spacerImgSrc : settings.removeImgSrc, |
100 | 19e01943 | Kostas Papadimitriou | "class":(len == 1) ? "" : settings.removeImgClass |
101 | 19e01943 | Kostas Papadimitriou | }); |
102 | 19e01943 | Kostas Papadimitriou | }); |
103 | 19e01943 | Kostas Papadimitriou | |
104 | 19e01943 | Kostas Papadimitriou | if ( len > (settings.maxFields-1) ) { |
105 | 19e01943 | Kostas Papadimitriou | $("div#" + settings.addContainerId).addClass(settings.hideClass); |
106 | 19e01943 | Kostas Papadimitriou | } else {
|
107 | 19e01943 | Kostas Papadimitriou | $("div#" + settings.addContainerId).removeClass(settings.hideClass); |
108 | 19e01943 | Kostas Papadimitriou | } |
109 | 19e01943 | Kostas Papadimitriou | }; |
110 | 19e01943 | Kostas Papadimitriou | |
111 | 19e01943 | Kostas Papadimitriou | // handle field removal
|
112 | 19e01943 | Kostas Papadimitriou | $("img." + settings.removeImgClass).live("click",function() { |
113 | 19e01943 | Kostas Papadimitriou | // remove the selected row
|
114 | 19e01943 | Kostas Papadimitriou | $(this).parent("div." + settings.rowContainerClass).remove(); |
115 | 19e01943 | Kostas Papadimitriou | |
116 | 19e01943 | Kostas Papadimitriou | // rebrand the remaining fields sequentially
|
117 | 19e01943 | Kostas Papadimitriou | getFields().each(function(i,elem) {
|
118 | 19e01943 | Kostas Papadimitriou | var pos = new Number(i+1); |
119 | 19e01943 | Kostas Papadimitriou | var d = $(elem) |
120 | 19e01943 | Kostas Papadimitriou | .attr("id",settings.cloneContainerId + "-" + pos); |
121 | f2141829 | Kostas Papadimitriou | |
122 | 19e01943 | Kostas Papadimitriou | d.children("label")
|
123 | 19e01943 | Kostas Papadimitriou | .attr("for",settings.baseName + pos)
|
124 | 19e01943 | Kostas Papadimitriou | .html((pos > 1) ? "" : settings.labelText); |
125 | 19e01943 | Kostas Papadimitriou | |
126 | f2141829 | Kostas Papadimitriou | names = settings.baseNames; |
127 | f2141829 | Kostas Papadimitriou | d.children("input").each(function(i){ |
128 | f2141829 | Kostas Papadimitriou | $(this).attr({ |
129 | f2141829 | Kostas Papadimitriou | "id": names[i] + pos,
|
130 | f2141829 | Kostas Papadimitriou | "name": names[i] + pos
|
131 | f2141829 | Kostas Papadimitriou | }); |
132 | f2141829 | Kostas Papadimitriou | }); |
133 | 19e01943 | Kostas Papadimitriou | }); |
134 | 19e01943 | Kostas Papadimitriou | |
135 | 19e01943 | Kostas Papadimitriou | addRemoveBtnCk(); |
136 | 19e01943 | Kostas Papadimitriou | }); |
137 | 19e01943 | Kostas Papadimitriou | |
138 | 19e01943 | Kostas Papadimitriou | // handle field add
|
139 | 19e01943 | Kostas Papadimitriou | $("div#" + settings.addContainerId + " span." + settings.addTriggerClass).click(function() { |
140 | 19e01943 | Kostas Papadimitriou | var len = getFields().length;
|
141 | 19e01943 | Kostas Papadimitriou | var pos = new Number(len+1); |
142 | 19e01943 | Kostas Papadimitriou | var newDiv = $("<div/>") |
143 | 19e01943 | Kostas Papadimitriou | .attr("id",settings.cloneContainerId + "-" + pos) |
144 | 19e01943 | Kostas Papadimitriou | .addClass(settings.rowContainerClass); |
145 | 19e01943 | Kostas Papadimitriou | |
146 | 19e01943 | Kostas Papadimitriou | $.each(settings.baseNames, function(index, name) { |
147 | 19e01943 | Kostas Papadimitriou | |
148 | 19e01943 | Kostas Papadimitriou | var input = $("<input/>").attr({ |
149 | 19e01943 | Kostas Papadimitriou | "id":name + pos,
|
150 | 19e01943 | Kostas Papadimitriou | "name":name + pos,
|
151 | 19e01943 | Kostas Papadimitriou | "value":"" |
152 | 19e01943 | Kostas Papadimitriou | }); |
153 | 19e01943 | Kostas Papadimitriou | newDiv.append(input); |
154 | 19e01943 | Kostas Papadimitriou | }); |
155 | 19e01943 | Kostas Papadimitriou | newDiv.append($("<img>").attr("src",settings.removeImgSrc)); |
156 | 19e01943 | Kostas Papadimitriou | |
157 | 19e01943 | Kostas Papadimitriou | if ( len > 0 ) { |
158 | 19e01943 | Kostas Papadimitriou | $("div#" + settings.cloneContainerId + "-" + len).after(newDiv); |
159 | 19e01943 | Kostas Papadimitriou | } else {
|
160 | 19e01943 | Kostas Papadimitriou | $("div#" + settings.addContainerId).before(newDiv); |
161 | 19e01943 | Kostas Papadimitriou | } |
162 | 19e01943 | Kostas Papadimitriou | |
163 | 19e01943 | Kostas Papadimitriou | addRemoveBtnCk(); |
164 | 19e01943 | Kostas Papadimitriou | }); |
165 | 19e01943 | Kostas Papadimitriou | }; |
166 | 19e01943 | Kostas Papadimitriou | })(jQuery); |