trusty-cms 3.1.8 → 3.1.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (215) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +2 -1
  3. data/Gemfile.lock +13 -9
  4. data/app/assets/images/admin/move_higher.png +0 -0
  5. data/app/assets/images/admin/move_lower.png +0 -0
  6. data/app/assets/images/admin/move_to_bottom.png +0 -0
  7. data/app/assets/images/admin/move_to_top.png +0 -0
  8. data/app/assets/images/admin/remove.png +0 -0
  9. data/app/assets/stylesheets/admin/_multi_site_main.scss +85 -0
  10. data/app/assets/stylesheets/admin/_site_chooser.scss +76 -0
  11. data/app/assets/stylesheets/admin/main.scss +3 -0
  12. data/app/controllers/admin/sites_controller.rb +14 -0
  13. data/app/helpers/scoped_helper.rb +19 -0
  14. data/app/helpers/sites_helper.rb +10 -0
  15. data/app/models/site.rb +86 -0
  16. data/app/models/snippet.rb +23 -0
  17. data/app/models/snippet_finder.rb +24 -0
  18. data/app/models/snippet_tags.rb +80 -0
  19. data/app/users/_choose_site.html.haml +8 -0
  20. data/app/views/admin/layouts/_choose_site.html.haml +8 -0
  21. data/app/views/admin/layouts/_site_chooser.html.haml +11 -0
  22. data/app/views/admin/sites/_form.haml +50 -0
  23. data/app/views/admin/sites/edit.haml +7 -0
  24. data/app/views/admin/sites/index.haml +43 -0
  25. data/app/views/admin/sites/new.haml +7 -0
  26. data/app/views/admin/snippets/_choose_site.html.haml +6 -0
  27. data/app/views/{snippets → admin/snippets}/_form.html.haml +0 -0
  28. data/app/views/{snippets → admin/snippets}/_popups.html.haml +0 -0
  29. data/app/views/{snippets → admin/snippets}/edit.html.haml +0 -0
  30. data/app/views/{snippets → admin/snippets}/index.html.haml +0 -0
  31. data/app/views/{snippets → admin/snippets}/new.html.haml +0 -0
  32. data/app/views/{snippets → admin/snippets}/remove.html.haml +0 -0
  33. data/app/views/admin/users/_choose_site.html.haml +8 -0
  34. data/config/application.rb +0 -2
  35. data/config/initializers/trusty_cms_config.rb +6 -0
  36. data/config/routes.rb +8 -0
  37. data/coverage/index.html +3837 -2759
  38. data/db/migrate/006_remove_user_login_index.rb +8 -0
  39. data/db/migrate/010_create_sites.rb +13 -0
  40. data/db/migrate/011_add_order_to_sites.rb +9 -0
  41. data/db/migrate/022_add_admin_fields_to_sites.rb +17 -0
  42. data/db/migrate/023_add_sites.rb +13 -0
  43. data/db/migrate/024_site_abbreviation.rb +9 -0
  44. data/db/migrate/025_recreate_non_unique_index_on_snippets_name.rb +11 -0
  45. data/db/migrate/026_add_site_id_to_pages.rb +24 -0
  46. data/db/migrate/027_add_base_domain_to_sites.rb +9 -0
  47. data/lib/trusty_cms.rb +1 -1
  48. data/spec/dummy/db/schema.rb +20 -2
  49. data/spec/dummy/log/test.log +44621 -0
  50. data/spec/dummy/node_modules/jquery/AUTHORS.txt +301 -0
  51. data/spec/dummy/node_modules/jquery/LICENSE.txt +36 -0
  52. data/spec/dummy/node_modules/jquery/README.md +67 -0
  53. data/spec/dummy/node_modules/jquery/bower.json +14 -0
  54. data/spec/dummy/node_modules/jquery/dist/core.js +476 -0
  55. data/spec/dummy/node_modules/jquery/dist/jquery.js +10253 -0
  56. data/spec/dummy/node_modules/jquery/dist/jquery.min.js +4 -0
  57. data/spec/dummy/node_modules/jquery/dist/jquery.min.map +1 -0
  58. data/spec/dummy/node_modules/jquery/dist/jquery.slim.js +8160 -0
  59. data/spec/dummy/node_modules/jquery/dist/jquery.slim.min.js +4 -0
  60. data/spec/dummy/node_modules/jquery/dist/jquery.slim.min.map +1 -0
  61. data/spec/dummy/node_modules/jquery/external/sizzle/LICENSE.txt +36 -0
  62. data/spec/dummy/node_modules/jquery/external/sizzle/dist/sizzle.js +2272 -0
  63. data/spec/dummy/node_modules/jquery/external/sizzle/dist/sizzle.min.js +3 -0
  64. data/spec/dummy/node_modules/jquery/external/sizzle/dist/sizzle.min.map +1 -0
  65. data/spec/dummy/node_modules/jquery/package.json +97 -0
  66. data/spec/dummy/node_modules/jquery/src/ajax/jsonp.js +102 -0
  67. data/spec/dummy/node_modules/jquery/src/ajax/load.js +76 -0
  68. data/spec/dummy/node_modules/jquery/src/ajax/parseXML.js +30 -0
  69. data/spec/dummy/node_modules/jquery/src/ajax/script.js +77 -0
  70. data/spec/dummy/node_modules/jquery/src/ajax/var/location.js +5 -0
  71. data/spec/dummy/node_modules/jquery/src/ajax/var/nonce.js +7 -0
  72. data/spec/dummy/node_modules/jquery/src/ajax/var/rquery.js +5 -0
  73. data/spec/dummy/node_modules/jquery/src/ajax/xhr.js +169 -0
  74. data/spec/dummy/node_modules/jquery/src/ajax.js +855 -0
  75. data/spec/dummy/node_modules/jquery/src/attributes/attr.js +141 -0
  76. data/spec/dummy/node_modules/jquery/src/attributes/classes.js +174 -0
  77. data/spec/dummy/node_modules/jquery/src/attributes/prop.js +143 -0
  78. data/spec/dummy/node_modules/jquery/src/attributes/support.js +33 -0
  79. data/spec/dummy/node_modules/jquery/src/attributes/val.js +190 -0
  80. data/spec/dummy/node_modules/jquery/src/attributes.js +13 -0
  81. data/spec/dummy/node_modules/jquery/src/callbacks.js +234 -0
  82. data/spec/dummy/node_modules/jquery/src/core/DOMEval.js +16 -0
  83. data/spec/dummy/node_modules/jquery/src/core/access.js +70 -0
  84. data/spec/dummy/node_modules/jquery/src/core/init.js +128 -0
  85. data/spec/dummy/node_modules/jquery/src/core/nodeName.js +13 -0
  86. data/spec/dummy/node_modules/jquery/src/core/parseHTML.js +65 -0
  87. data/spec/dummy/node_modules/jquery/src/core/ready-no-deferred.js +96 -0
  88. data/spec/dummy/node_modules/jquery/src/core/ready.js +86 -0
  89. data/spec/dummy/node_modules/jquery/src/core/readyException.js +13 -0
  90. data/spec/dummy/node_modules/jquery/src/core/stripAndCollapse.js +14 -0
  91. data/spec/dummy/node_modules/jquery/src/core/support.js +20 -0
  92. data/spec/dummy/node_modules/jquery/src/core/var/rsingleTag.js +6 -0
  93. data/spec/dummy/node_modules/jquery/src/core.js +476 -0
  94. data/spec/dummy/node_modules/jquery/src/css/addGetHookIf.js +26 -0
  95. data/spec/dummy/node_modules/jquery/src/css/adjustCSS.js +71 -0
  96. data/spec/dummy/node_modules/jquery/src/css/curCSS.js +65 -0
  97. data/spec/dummy/node_modules/jquery/src/css/hiddenVisibleSelectors.js +15 -0
  98. data/spec/dummy/node_modules/jquery/src/css/showHide.js +105 -0
  99. data/spec/dummy/node_modules/jquery/src/css/support.js +89 -0
  100. data/spec/dummy/node_modules/jquery/src/css/var/cssExpand.js +5 -0
  101. data/spec/dummy/node_modules/jquery/src/css/var/getStyles.js +17 -0
  102. data/spec/dummy/node_modules/jquery/src/css/var/isHiddenWithinTree.js +34 -0
  103. data/spec/dummy/node_modules/jquery/src/css/var/rmargin.js +5 -0
  104. data/spec/dummy/node_modules/jquery/src/css/var/rnumnonpx.js +7 -0
  105. data/spec/dummy/node_modules/jquery/src/css/var/swap.js +26 -0
  106. data/spec/dummy/node_modules/jquery/src/css.js +438 -0
  107. data/spec/dummy/node_modules/jquery/src/data/Data.js +161 -0
  108. data/spec/dummy/node_modules/jquery/src/data/var/acceptData.js +19 -0
  109. data/spec/dummy/node_modules/jquery/src/data/var/dataPriv.js +7 -0
  110. data/spec/dummy/node_modules/jquery/src/data/var/dataUser.js +7 -0
  111. data/spec/dummy/node_modules/jquery/src/data.js +179 -0
  112. data/spec/dummy/node_modules/jquery/src/deferred/exceptionHook.js +21 -0
  113. data/spec/dummy/node_modules/jquery/src/deferred.js +391 -0
  114. data/spec/dummy/node_modules/jquery/src/deprecated.js +40 -0
  115. data/spec/dummy/node_modules/jquery/src/dimensions.js +56 -0
  116. data/spec/dummy/node_modules/jquery/src/effects/Tween.js +123 -0
  117. data/spec/dummy/node_modules/jquery/src/effects/animatedSelector.js +15 -0
  118. data/spec/dummy/node_modules/jquery/src/effects.js +699 -0
  119. data/spec/dummy/node_modules/jquery/src/event/ajax.js +22 -0
  120. data/spec/dummy/node_modules/jquery/src/event/alias.js +29 -0
  121. data/spec/dummy/node_modules/jquery/src/event/focusin.js +55 -0
  122. data/spec/dummy/node_modules/jquery/src/event/support.js +11 -0
  123. data/spec/dummy/node_modules/jquery/src/event/trigger.js +185 -0
  124. data/spec/dummy/node_modules/jquery/src/event.js +746 -0
  125. data/spec/dummy/node_modules/jquery/src/exports/amd.js +26 -0
  126. data/spec/dummy/node_modules/jquery/src/exports/global.js +34 -0
  127. data/spec/dummy/node_modules/jquery/src/jquery.js +41 -0
  128. data/spec/dummy/node_modules/jquery/src/manipulation/_evalUrl.js +23 -0
  129. data/spec/dummy/node_modules/jquery/src/manipulation/buildFragment.js +104 -0
  130. data/spec/dummy/node_modules/jquery/src/manipulation/getAll.js +32 -0
  131. data/spec/dummy/node_modules/jquery/src/manipulation/setGlobalEval.js +22 -0
  132. data/spec/dummy/node_modules/jquery/src/manipulation/support.js +35 -0
  133. data/spec/dummy/node_modules/jquery/src/manipulation/var/rcheckableType.js +5 -0
  134. data/spec/dummy/node_modules/jquery/src/manipulation/var/rscriptType.js +5 -0
  135. data/spec/dummy/node_modules/jquery/src/manipulation/var/rtagName.js +5 -0
  136. data/spec/dummy/node_modules/jquery/src/manipulation/wrapMap.js +29 -0
  137. data/spec/dummy/node_modules/jquery/src/manipulation.js +488 -0
  138. data/spec/dummy/node_modules/jquery/src/offset.js +229 -0
  139. data/spec/dummy/node_modules/jquery/src/queue/delay.js +24 -0
  140. data/spec/dummy/node_modules/jquery/src/queue.js +145 -0
  141. data/spec/dummy/node_modules/jquery/src/selector-native.js +237 -0
  142. data/spec/dummy/node_modules/jquery/src/selector-sizzle.js +19 -0
  143. data/spec/dummy/node_modules/jquery/src/selector.js +3 -0
  144. data/spec/dummy/node_modules/jquery/src/serialize.js +130 -0
  145. data/spec/dummy/node_modules/jquery/src/traversing/findFilter.js +106 -0
  146. data/spec/dummy/node_modules/jquery/src/traversing/var/dir.js +22 -0
  147. data/spec/dummy/node_modules/jquery/src/traversing/var/rneedsContext.js +8 -0
  148. data/spec/dummy/node_modules/jquery/src/traversing/var/siblings.js +17 -0
  149. data/spec/dummy/node_modules/jquery/src/traversing.js +191 -0
  150. data/spec/dummy/node_modules/jquery/src/var/ObjectFunctionString.js +7 -0
  151. data/spec/dummy/node_modules/jquery/src/var/arr.js +5 -0
  152. data/spec/dummy/node_modules/jquery/src/var/class2type.js +6 -0
  153. data/spec/dummy/node_modules/jquery/src/var/concat.js +7 -0
  154. data/spec/dummy/node_modules/jquery/src/var/document.js +5 -0
  155. data/spec/dummy/node_modules/jquery/src/var/documentElement.js +7 -0
  156. data/spec/dummy/node_modules/jquery/src/var/fnToString.js +7 -0
  157. data/spec/dummy/node_modules/jquery/src/var/getProto.js +5 -0
  158. data/spec/dummy/node_modules/jquery/src/var/hasOwn.js +7 -0
  159. data/spec/dummy/node_modules/jquery/src/var/indexOf.js +7 -0
  160. data/spec/dummy/node_modules/jquery/src/var/pnum.js +5 -0
  161. data/spec/dummy/node_modules/jquery/src/var/push.js +7 -0
  162. data/spec/dummy/node_modules/jquery/src/var/rcssNum.js +9 -0
  163. data/spec/dummy/node_modules/jquery/src/var/rnothtmlwhite.js +8 -0
  164. data/spec/dummy/node_modules/jquery/src/var/slice.js +7 -0
  165. data/spec/dummy/node_modules/jquery/src/var/support.js +6 -0
  166. data/spec/dummy/node_modules/jquery/src/var/toString.js +7 -0
  167. data/spec/dummy/node_modules/jquery/src/wrap.js +77 -0
  168. data/spec/dummy/node_modules/jquery-ui-bundle/AUTHORS.txt +333 -0
  169. data/spec/dummy/node_modules/jquery-ui-bundle/LICENSE.txt +43 -0
  170. data/spec/dummy/node_modules/jquery-ui-bundle/external/jquery/jquery.js +11008 -0
  171. data/spec/dummy/node_modules/jquery-ui-bundle/images/ui-icons_444444_256x240.png +0 -0
  172. data/spec/dummy/node_modules/jquery-ui-bundle/images/ui-icons_555555_256x240.png +0 -0
  173. data/spec/dummy/node_modules/jquery-ui-bundle/images/ui-icons_777620_256x240.png +0 -0
  174. data/spec/dummy/node_modules/jquery-ui-bundle/images/ui-icons_777777_256x240.png +0 -0
  175. data/spec/dummy/node_modules/jquery-ui-bundle/images/ui-icons_cc0000_256x240.png +0 -0
  176. data/spec/dummy/node_modules/jquery-ui-bundle/images/ui-icons_ffffff_256x240.png +0 -0
  177. data/spec/dummy/node_modules/jquery-ui-bundle/index.html +559 -0
  178. data/spec/dummy/node_modules/jquery-ui-bundle/jquery-ui.css +1312 -0
  179. data/spec/dummy/node_modules/jquery-ui-bundle/jquery-ui.js +18706 -0
  180. data/spec/dummy/node_modules/jquery-ui-bundle/jquery-ui.min.css +7 -0
  181. data/spec/dummy/node_modules/jquery-ui-bundle/jquery-ui.min.js +13 -0
  182. data/spec/dummy/node_modules/jquery-ui-bundle/jquery-ui.structure.css +886 -0
  183. data/spec/dummy/node_modules/jquery-ui-bundle/jquery-ui.structure.min.css +5 -0
  184. data/spec/dummy/node_modules/jquery-ui-bundle/jquery-ui.theme.css +443 -0
  185. data/spec/dummy/node_modules/jquery-ui-bundle/jquery-ui.theme.min.css +5 -0
  186. data/spec/dummy/node_modules/jquery-ui-bundle/package.json +33 -0
  187. data/spec/dummy/node_modules/jquery-ujs/CONTRIBUTING.md +109 -0
  188. data/spec/dummy/node_modules/jquery-ujs/MIT-LICENSE +20 -0
  189. data/spec/dummy/node_modules/jquery-ujs/README.md +86 -0
  190. data/spec/dummy/node_modules/jquery-ujs/RELEASE.md +23 -0
  191. data/spec/dummy/node_modules/jquery-ujs/bower.json +19 -0
  192. data/spec/dummy/node_modules/jquery-ujs/package.json +26 -0
  193. data/spec/dummy/node_modules/jquery-ujs/src/rails.js +555 -0
  194. data/spec/dummy/tmp/cache/747/A70/TrustyCms%3A%3AConfig +0 -0
  195. data/spec/dummy/tmp/cache/85C/FA0/TrustyCms.cache_mtime +0 -0
  196. data/vendor/extensions/multi-site-extension/lib/multi_site/admin_ui.rb +45 -0
  197. data/vendor/extensions/multi-site-extension/lib/multi_site/application_controller_extensions.rb +40 -0
  198. data/vendor/extensions/multi-site-extension/lib/multi_site/application_controller_filter_extensions.rb +22 -0
  199. data/vendor/extensions/multi-site-extension/lib/multi_site/engine.rb +10 -0
  200. data/vendor/extensions/multi-site-extension/lib/multi_site/page_extensions.rb +81 -0
  201. data/vendor/extensions/multi-site-extension/lib/multi_site/pages_controller_extensions.rb +55 -0
  202. data/vendor/extensions/multi-site-extension/lib/multi_site/resource_controller_extensions.rb +42 -0
  203. data/vendor/extensions/multi-site-extension/lib/multi_site/route_extensions.rb +22 -0
  204. data/vendor/extensions/multi-site-extension/lib/multi_site/route_set_extensions.rb +17 -0
  205. data/vendor/extensions/multi-site-extension/lib/multi_site/scoped_model.rb +133 -0
  206. data/vendor/extensions/multi-site-extension/lib/multi_site/scoped_validation.rb +33 -0
  207. data/vendor/extensions/multi-site-extension/lib/multi_site/site_chooser_helper.rb +14 -0
  208. data/vendor/extensions/multi-site-extension/lib/multi_site/site_controller_extensions.rb +30 -0
  209. data/vendor/extensions/multi-site-extension/lib/tasks/multi_site_extension_tasks.rake +28 -0
  210. data/vendor/extensions/multi-site-extension/lib/tasks/scoped_admin_extension_tasks.rake +28 -0
  211. data/vendor/extensions/multi-site-extension/lib/trusty-multi-site-extension.rb +1 -0
  212. data/vendor/extensions/multi-site-extension/multi_site_extension.rb +61 -0
  213. data/vendor/extensions/snippets-extension/lib/trusty-snippets-extension.rb +0 -0
  214. data/vendor/extensions/snippets-extension/snippets_extension.rb +46 -0
  215. metadata +347 -8
@@ -0,0 +1,141 @@
1
+ define( [
2
+ "../core",
3
+ "../core/access",
4
+ "../core/nodeName",
5
+ "./support",
6
+ "../var/rnothtmlwhite",
7
+ "../selector"
8
+ ], function( jQuery, access, nodeName, support, rnothtmlwhite ) {
9
+
10
+ "use strict";
11
+
12
+ var boolHook,
13
+ attrHandle = jQuery.expr.attrHandle;
14
+
15
+ jQuery.fn.extend( {
16
+ attr: function( name, value ) {
17
+ return access( this, jQuery.attr, name, value, arguments.length > 1 );
18
+ },
19
+
20
+ removeAttr: function( name ) {
21
+ return this.each( function() {
22
+ jQuery.removeAttr( this, name );
23
+ } );
24
+ }
25
+ } );
26
+
27
+ jQuery.extend( {
28
+ attr: function( elem, name, value ) {
29
+ var ret, hooks,
30
+ nType = elem.nodeType;
31
+
32
+ // Don't get/set attributes on text, comment and attribute nodes
33
+ if ( nType === 3 || nType === 8 || nType === 2 ) {
34
+ return;
35
+ }
36
+
37
+ // Fallback to prop when attributes are not supported
38
+ if ( typeof elem.getAttribute === "undefined" ) {
39
+ return jQuery.prop( elem, name, value );
40
+ }
41
+
42
+ // Attribute hooks are determined by the lowercase version
43
+ // Grab necessary hook if one is defined
44
+ if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
45
+ hooks = jQuery.attrHooks[ name.toLowerCase() ] ||
46
+ ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );
47
+ }
48
+
49
+ if ( value !== undefined ) {
50
+ if ( value === null ) {
51
+ jQuery.removeAttr( elem, name );
52
+ return;
53
+ }
54
+
55
+ if ( hooks && "set" in hooks &&
56
+ ( ret = hooks.set( elem, value, name ) ) !== undefined ) {
57
+ return ret;
58
+ }
59
+
60
+ elem.setAttribute( name, value + "" );
61
+ return value;
62
+ }
63
+
64
+ if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
65
+ return ret;
66
+ }
67
+
68
+ ret = jQuery.find.attr( elem, name );
69
+
70
+ // Non-existent attributes return null, we normalize to undefined
71
+ return ret == null ? undefined : ret;
72
+ },
73
+
74
+ attrHooks: {
75
+ type: {
76
+ set: function( elem, value ) {
77
+ if ( !support.radioValue && value === "radio" &&
78
+ nodeName( elem, "input" ) ) {
79
+ var val = elem.value;
80
+ elem.setAttribute( "type", value );
81
+ if ( val ) {
82
+ elem.value = val;
83
+ }
84
+ return value;
85
+ }
86
+ }
87
+ }
88
+ },
89
+
90
+ removeAttr: function( elem, value ) {
91
+ var name,
92
+ i = 0,
93
+
94
+ // Attribute names can contain non-HTML whitespace characters
95
+ // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2
96
+ attrNames = value && value.match( rnothtmlwhite );
97
+
98
+ if ( attrNames && elem.nodeType === 1 ) {
99
+ while ( ( name = attrNames[ i++ ] ) ) {
100
+ elem.removeAttribute( name );
101
+ }
102
+ }
103
+ }
104
+ } );
105
+
106
+ // Hooks for boolean attributes
107
+ boolHook = {
108
+ set: function( elem, value, name ) {
109
+ if ( value === false ) {
110
+
111
+ // Remove boolean attributes when set to false
112
+ jQuery.removeAttr( elem, name );
113
+ } else {
114
+ elem.setAttribute( name, name );
115
+ }
116
+ return name;
117
+ }
118
+ };
119
+
120
+ jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
121
+ var getter = attrHandle[ name ] || jQuery.find.attr;
122
+
123
+ attrHandle[ name ] = function( elem, name, isXML ) {
124
+ var ret, handle,
125
+ lowercaseName = name.toLowerCase();
126
+
127
+ if ( !isXML ) {
128
+
129
+ // Avoid an infinite loop by temporarily removing this function from the getter
130
+ handle = attrHandle[ lowercaseName ];
131
+ attrHandle[ lowercaseName ] = ret;
132
+ ret = getter( elem, name, isXML ) != null ?
133
+ lowercaseName :
134
+ null;
135
+ attrHandle[ lowercaseName ] = handle;
136
+ }
137
+ return ret;
138
+ };
139
+ } );
140
+
141
+ } );
@@ -0,0 +1,174 @@
1
+ define( [
2
+ "../core",
3
+ "../core/stripAndCollapse",
4
+ "../var/rnothtmlwhite",
5
+ "../data/var/dataPriv",
6
+ "../core/init"
7
+ ], function( jQuery, stripAndCollapse, rnothtmlwhite, dataPriv ) {
8
+
9
+ "use strict";
10
+
11
+ function getClass( elem ) {
12
+ return elem.getAttribute && elem.getAttribute( "class" ) || "";
13
+ }
14
+
15
+ jQuery.fn.extend( {
16
+ addClass: function( value ) {
17
+ var classes, elem, cur, curValue, clazz, j, finalValue,
18
+ i = 0;
19
+
20
+ if ( jQuery.isFunction( value ) ) {
21
+ return this.each( function( j ) {
22
+ jQuery( this ).addClass( value.call( this, j, getClass( this ) ) );
23
+ } );
24
+ }
25
+
26
+ if ( typeof value === "string" && value ) {
27
+ classes = value.match( rnothtmlwhite ) || [];
28
+
29
+ while ( ( elem = this[ i++ ] ) ) {
30
+ curValue = getClass( elem );
31
+ cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
32
+
33
+ if ( cur ) {
34
+ j = 0;
35
+ while ( ( clazz = classes[ j++ ] ) ) {
36
+ if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
37
+ cur += clazz + " ";
38
+ }
39
+ }
40
+
41
+ // Only assign if different to avoid unneeded rendering.
42
+ finalValue = stripAndCollapse( cur );
43
+ if ( curValue !== finalValue ) {
44
+ elem.setAttribute( "class", finalValue );
45
+ }
46
+ }
47
+ }
48
+ }
49
+
50
+ return this;
51
+ },
52
+
53
+ removeClass: function( value ) {
54
+ var classes, elem, cur, curValue, clazz, j, finalValue,
55
+ i = 0;
56
+
57
+ if ( jQuery.isFunction( value ) ) {
58
+ return this.each( function( j ) {
59
+ jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );
60
+ } );
61
+ }
62
+
63
+ if ( !arguments.length ) {
64
+ return this.attr( "class", "" );
65
+ }
66
+
67
+ if ( typeof value === "string" && value ) {
68
+ classes = value.match( rnothtmlwhite ) || [];
69
+
70
+ while ( ( elem = this[ i++ ] ) ) {
71
+ curValue = getClass( elem );
72
+
73
+ // This expression is here for better compressibility (see addClass)
74
+ cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
75
+
76
+ if ( cur ) {
77
+ j = 0;
78
+ while ( ( clazz = classes[ j++ ] ) ) {
79
+
80
+ // Remove *all* instances
81
+ while ( cur.indexOf( " " + clazz + " " ) > -1 ) {
82
+ cur = cur.replace( " " + clazz + " ", " " );
83
+ }
84
+ }
85
+
86
+ // Only assign if different to avoid unneeded rendering.
87
+ finalValue = stripAndCollapse( cur );
88
+ if ( curValue !== finalValue ) {
89
+ elem.setAttribute( "class", finalValue );
90
+ }
91
+ }
92
+ }
93
+ }
94
+
95
+ return this;
96
+ },
97
+
98
+ toggleClass: function( value, stateVal ) {
99
+ var type = typeof value;
100
+
101
+ if ( typeof stateVal === "boolean" && type === "string" ) {
102
+ return stateVal ? this.addClass( value ) : this.removeClass( value );
103
+ }
104
+
105
+ if ( jQuery.isFunction( value ) ) {
106
+ return this.each( function( i ) {
107
+ jQuery( this ).toggleClass(
108
+ value.call( this, i, getClass( this ), stateVal ),
109
+ stateVal
110
+ );
111
+ } );
112
+ }
113
+
114
+ return this.each( function() {
115
+ var className, i, self, classNames;
116
+
117
+ if ( type === "string" ) {
118
+
119
+ // Toggle individual class names
120
+ i = 0;
121
+ self = jQuery( this );
122
+ classNames = value.match( rnothtmlwhite ) || [];
123
+
124
+ while ( ( className = classNames[ i++ ] ) ) {
125
+
126
+ // Check each className given, space separated list
127
+ if ( self.hasClass( className ) ) {
128
+ self.removeClass( className );
129
+ } else {
130
+ self.addClass( className );
131
+ }
132
+ }
133
+
134
+ // Toggle whole class name
135
+ } else if ( value === undefined || type === "boolean" ) {
136
+ className = getClass( this );
137
+ if ( className ) {
138
+
139
+ // Store className if set
140
+ dataPriv.set( this, "__className__", className );
141
+ }
142
+
143
+ // If the element has a class name or if we're passed `false`,
144
+ // then remove the whole classname (if there was one, the above saved it).
145
+ // Otherwise bring back whatever was previously saved (if anything),
146
+ // falling back to the empty string if nothing was stored.
147
+ if ( this.setAttribute ) {
148
+ this.setAttribute( "class",
149
+ className || value === false ?
150
+ "" :
151
+ dataPriv.get( this, "__className__" ) || ""
152
+ );
153
+ }
154
+ }
155
+ } );
156
+ },
157
+
158
+ hasClass: function( selector ) {
159
+ var className, elem,
160
+ i = 0;
161
+
162
+ className = " " + selector + " ";
163
+ while ( ( elem = this[ i++ ] ) ) {
164
+ if ( elem.nodeType === 1 &&
165
+ ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) {
166
+ return true;
167
+ }
168
+ }
169
+
170
+ return false;
171
+ }
172
+ } );
173
+
174
+ } );
@@ -0,0 +1,143 @@
1
+ define( [
2
+ "../core",
3
+ "../core/access",
4
+ "./support",
5
+ "../selector"
6
+ ], function( jQuery, access, support ) {
7
+
8
+ "use strict";
9
+
10
+ var rfocusable = /^(?:input|select|textarea|button)$/i,
11
+ rclickable = /^(?:a|area)$/i;
12
+
13
+ jQuery.fn.extend( {
14
+ prop: function( name, value ) {
15
+ return access( this, jQuery.prop, name, value, arguments.length > 1 );
16
+ },
17
+
18
+ removeProp: function( name ) {
19
+ return this.each( function() {
20
+ delete this[ jQuery.propFix[ name ] || name ];
21
+ } );
22
+ }
23
+ } );
24
+
25
+ jQuery.extend( {
26
+ prop: function( elem, name, value ) {
27
+ var ret, hooks,
28
+ nType = elem.nodeType;
29
+
30
+ // Don't get/set properties on text, comment and attribute nodes
31
+ if ( nType === 3 || nType === 8 || nType === 2 ) {
32
+ return;
33
+ }
34
+
35
+ if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
36
+
37
+ // Fix name and attach hooks
38
+ name = jQuery.propFix[ name ] || name;
39
+ hooks = jQuery.propHooks[ name ];
40
+ }
41
+
42
+ if ( value !== undefined ) {
43
+ if ( hooks && "set" in hooks &&
44
+ ( ret = hooks.set( elem, value, name ) ) !== undefined ) {
45
+ return ret;
46
+ }
47
+
48
+ return ( elem[ name ] = value );
49
+ }
50
+
51
+ if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
52
+ return ret;
53
+ }
54
+
55
+ return elem[ name ];
56
+ },
57
+
58
+ propHooks: {
59
+ tabIndex: {
60
+ get: function( elem ) {
61
+
62
+ // Support: IE <=9 - 11 only
63
+ // elem.tabIndex doesn't always return the
64
+ // correct value when it hasn't been explicitly set
65
+ // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
66
+ // Use proper attribute retrieval(#12072)
67
+ var tabindex = jQuery.find.attr( elem, "tabindex" );
68
+
69
+ if ( tabindex ) {
70
+ return parseInt( tabindex, 10 );
71
+ }
72
+
73
+ if (
74
+ rfocusable.test( elem.nodeName ) ||
75
+ rclickable.test( elem.nodeName ) &&
76
+ elem.href
77
+ ) {
78
+ return 0;
79
+ }
80
+
81
+ return -1;
82
+ }
83
+ }
84
+ },
85
+
86
+ propFix: {
87
+ "for": "htmlFor",
88
+ "class": "className"
89
+ }
90
+ } );
91
+
92
+ // Support: IE <=11 only
93
+ // Accessing the selectedIndex property
94
+ // forces the browser to respect setting selected
95
+ // on the option
96
+ // The getter ensures a default option is selected
97
+ // when in an optgroup
98
+ // eslint rule "no-unused-expressions" is disabled for this code
99
+ // since it considers such accessions noop
100
+ if ( !support.optSelected ) {
101
+ jQuery.propHooks.selected = {
102
+ get: function( elem ) {
103
+
104
+ /* eslint no-unused-expressions: "off" */
105
+
106
+ var parent = elem.parentNode;
107
+ if ( parent && parent.parentNode ) {
108
+ parent.parentNode.selectedIndex;
109
+ }
110
+ return null;
111
+ },
112
+ set: function( elem ) {
113
+
114
+ /* eslint no-unused-expressions: "off" */
115
+
116
+ var parent = elem.parentNode;
117
+ if ( parent ) {
118
+ parent.selectedIndex;
119
+
120
+ if ( parent.parentNode ) {
121
+ parent.parentNode.selectedIndex;
122
+ }
123
+ }
124
+ }
125
+ };
126
+ }
127
+
128
+ jQuery.each( [
129
+ "tabIndex",
130
+ "readOnly",
131
+ "maxLength",
132
+ "cellSpacing",
133
+ "cellPadding",
134
+ "rowSpan",
135
+ "colSpan",
136
+ "useMap",
137
+ "frameBorder",
138
+ "contentEditable"
139
+ ], function() {
140
+ jQuery.propFix[ this.toLowerCase() ] = this;
141
+ } );
142
+
143
+ } );
@@ -0,0 +1,33 @@
1
+ define( [
2
+ "../var/document",
3
+ "../var/support"
4
+ ], function( document, support ) {
5
+
6
+ "use strict";
7
+
8
+ ( function() {
9
+ var input = document.createElement( "input" ),
10
+ select = document.createElement( "select" ),
11
+ opt = select.appendChild( document.createElement( "option" ) );
12
+
13
+ input.type = "checkbox";
14
+
15
+ // Support: Android <=4.3 only
16
+ // Default value for a checkbox should be "on"
17
+ support.checkOn = input.value !== "";
18
+
19
+ // Support: IE <=11 only
20
+ // Must access selectedIndex to make default options select
21
+ support.optSelected = opt.selected;
22
+
23
+ // Support: IE <=11 only
24
+ // An input loses its value after becoming a radio
25
+ input = document.createElement( "input" );
26
+ input.value = "t";
27
+ input.type = "radio";
28
+ support.radioValue = input.value === "t";
29
+ } )();
30
+
31
+ return support;
32
+
33
+ } );
@@ -0,0 +1,190 @@
1
+ define( [
2
+ "../core",
3
+ "../core/stripAndCollapse",
4
+ "./support",
5
+ "../core/nodeName",
6
+
7
+ "../core/init"
8
+ ], function( jQuery, stripAndCollapse, support, nodeName ) {
9
+
10
+ "use strict";
11
+
12
+ var rreturn = /\r/g;
13
+
14
+ jQuery.fn.extend( {
15
+ val: function( value ) {
16
+ var hooks, ret, isFunction,
17
+ elem = this[ 0 ];
18
+
19
+ if ( !arguments.length ) {
20
+ if ( elem ) {
21
+ hooks = jQuery.valHooks[ elem.type ] ||
22
+ jQuery.valHooks[ elem.nodeName.toLowerCase() ];
23
+
24
+ if ( hooks &&
25
+ "get" in hooks &&
26
+ ( ret = hooks.get( elem, "value" ) ) !== undefined
27
+ ) {
28
+ return ret;
29
+ }
30
+
31
+ ret = elem.value;
32
+
33
+ // Handle most common string cases
34
+ if ( typeof ret === "string" ) {
35
+ return ret.replace( rreturn, "" );
36
+ }
37
+
38
+ // Handle cases where value is null/undef or number
39
+ return ret == null ? "" : ret;
40
+ }
41
+
42
+ return;
43
+ }
44
+
45
+ isFunction = jQuery.isFunction( value );
46
+
47
+ return this.each( function( i ) {
48
+ var val;
49
+
50
+ if ( this.nodeType !== 1 ) {
51
+ return;
52
+ }
53
+
54
+ if ( isFunction ) {
55
+ val = value.call( this, i, jQuery( this ).val() );
56
+ } else {
57
+ val = value;
58
+ }
59
+
60
+ // Treat null/undefined as ""; convert numbers to string
61
+ if ( val == null ) {
62
+ val = "";
63
+
64
+ } else if ( typeof val === "number" ) {
65
+ val += "";
66
+
67
+ } else if ( Array.isArray( val ) ) {
68
+ val = jQuery.map( val, function( value ) {
69
+ return value == null ? "" : value + "";
70
+ } );
71
+ }
72
+
73
+ hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
74
+
75
+ // If set returns undefined, fall back to normal setting
76
+ if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) {
77
+ this.value = val;
78
+ }
79
+ } );
80
+ }
81
+ } );
82
+
83
+ jQuery.extend( {
84
+ valHooks: {
85
+ option: {
86
+ get: function( elem ) {
87
+
88
+ var val = jQuery.find.attr( elem, "value" );
89
+ return val != null ?
90
+ val :
91
+
92
+ // Support: IE <=10 - 11 only
93
+ // option.text throws exceptions (#14686, #14858)
94
+ // Strip and collapse whitespace
95
+ // https://html.spec.whatwg.org/#strip-and-collapse-whitespace
96
+ stripAndCollapse( jQuery.text( elem ) );
97
+ }
98
+ },
99
+ select: {
100
+ get: function( elem ) {
101
+ var value, option, i,
102
+ options = elem.options,
103
+ index = elem.selectedIndex,
104
+ one = elem.type === "select-one",
105
+ values = one ? null : [],
106
+ max = one ? index + 1 : options.length;
107
+
108
+ if ( index < 0 ) {
109
+ i = max;
110
+
111
+ } else {
112
+ i = one ? index : 0;
113
+ }
114
+
115
+ // Loop through all the selected options
116
+ for ( ; i < max; i++ ) {
117
+ option = options[ i ];
118
+
119
+ // Support: IE <=9 only
120
+ // IE8-9 doesn't update selected after form reset (#2551)
121
+ if ( ( option.selected || i === index ) &&
122
+
123
+ // Don't return options that are disabled or in a disabled optgroup
124
+ !option.disabled &&
125
+ ( !option.parentNode.disabled ||
126
+ !nodeName( option.parentNode, "optgroup" ) ) ) {
127
+
128
+ // Get the specific value for the option
129
+ value = jQuery( option ).val();
130
+
131
+ // We don't need an array for one selects
132
+ if ( one ) {
133
+ return value;
134
+ }
135
+
136
+ // Multi-Selects return an array
137
+ values.push( value );
138
+ }
139
+ }
140
+
141
+ return values;
142
+ },
143
+
144
+ set: function( elem, value ) {
145
+ var optionSet, option,
146
+ options = elem.options,
147
+ values = jQuery.makeArray( value ),
148
+ i = options.length;
149
+
150
+ while ( i-- ) {
151
+ option = options[ i ];
152
+
153
+ /* eslint-disable no-cond-assign */
154
+
155
+ if ( option.selected =
156
+ jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1
157
+ ) {
158
+ optionSet = true;
159
+ }
160
+
161
+ /* eslint-enable no-cond-assign */
162
+ }
163
+
164
+ // Force browsers to behave consistently when non-matching value is set
165
+ if ( !optionSet ) {
166
+ elem.selectedIndex = -1;
167
+ }
168
+ return values;
169
+ }
170
+ }
171
+ }
172
+ } );
173
+
174
+ // Radios and checkboxes getter/setter
175
+ jQuery.each( [ "radio", "checkbox" ], function() {
176
+ jQuery.valHooks[ this ] = {
177
+ set: function( elem, value ) {
178
+ if ( Array.isArray( value ) ) {
179
+ return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );
180
+ }
181
+ }
182
+ };
183
+ if ( !support.checkOn ) {
184
+ jQuery.valHooks[ this ].get = function( elem ) {
185
+ return elem.getAttribute( "value" ) === null ? "on" : elem.value;
186
+ };
187
+ }
188
+ } );
189
+
190
+ } );
@@ -0,0 +1,13 @@
1
+ define( [
2
+ "./core",
3
+ "./attributes/attr",
4
+ "./attributes/prop",
5
+ "./attributes/classes",
6
+ "./attributes/val"
7
+ ], function( jQuery ) {
8
+
9
+ "use strict";
10
+
11
+ // Return jQuery for attributes-only inclusion
12
+ return jQuery;
13
+ } );