cytoplasm 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (181) hide show
  1. data/MIT-LICENSE +20 -0
  2. data/README.rdoc +3 -0
  3. data/Rakefile +38 -0
  4. data/app/assets/images/cytoplasm/triangle-medium-circle-1.png +0 -0
  5. data/app/assets/images/cytoplasm/triangle-medium-circle-2.png +0 -0
  6. data/app/assets/images/cytoplasm/triangle-medium-circle-3.png +0 -0
  7. data/app/assets/images/cytoplasm/triangle-medium-circle-4.png +0 -0
  8. data/app/assets/javascripts/cytoplasm/cytoAjax.js.erb +53 -0
  9. data/app/assets/javascripts/cytoplasm/cytoColorPicker.js.erb +204 -0
  10. data/app/assets/javascripts/cytoplasm/cytoRadio.js.erb +210 -0
  11. data/app/assets/javascripts/cytoplasm/cytoSelect.js.erb +414 -0
  12. data/app/assets/javascripts/cytoplasm/cytoSlider.js.erb +170 -0
  13. data/app/assets/javascripts/cytoplasm/cytoTable.js.erb +48 -0
  14. data/app/assets/javascripts/cytoplasm/cytoUpload.js.erb +200 -0
  15. data/app/assets/javascripts/cytoplasm/cytoplasm.js.erb +220 -0
  16. data/app/assets/javascripts/cytoplasm/jquery.ba-throttle-debounce.min.js +9 -0
  17. data/app/assets/javascripts/cytoplasm/jquery.color.js +663 -0
  18. data/app/assets/javascripts/cytoplasm/less-1.3.1.min.js +9 -0
  19. data/app/assets/stylesheets/cytoplasm/cytoplasm.less +113 -0
  20. data/app/controllers/cytoplasm/fonts_controller.rb +46 -0
  21. data/app/controllers/cytoplasm/settings_controller.rb +34 -0
  22. data/app/views/cytoplasm/settings/edit.html.erb +529 -0
  23. data/app/views/cytoplasm/settings/index.html.erb +18 -0
  24. data/config/routes.rb +6 -0
  25. data/lib/cytoplasm.rb +317 -0
  26. data/lib/cytoplasm/ajax.rb +34 -0
  27. data/lib/cytoplasm/railtie.rb +12 -0
  28. data/lib/cytoplasm/version.rb +3 -0
  29. data/lib/tasks/cytoplasm_tasks.rake +4 -0
  30. data/test/cytoplasm_test.rb +7 -0
  31. data/test/dummy/README.rdoc +261 -0
  32. data/test/dummy/Rakefile +7 -0
  33. data/test/dummy/app/assets/javascripts/about.js +2 -0
  34. data/test/dummy/app/assets/javascripts/application.js +15 -0
  35. data/test/dummy/app/assets/javascripts/demos.js +2 -0
  36. data/test/dummy/app/assets/javascripts/docs.js +2 -0
  37. data/test/dummy/app/assets/javascripts/downloads.js +2 -0
  38. data/test/dummy/app/assets/javascripts/home.js +2 -0
  39. data/test/dummy/app/assets/stylesheets/about.css +4 -0
  40. data/test/dummy/app/assets/stylesheets/application.css +13 -0
  41. data/test/dummy/app/assets/stylesheets/demos.css +4 -0
  42. data/test/dummy/app/assets/stylesheets/docs.css +4 -0
  43. data/test/dummy/app/assets/stylesheets/downloads.css +4 -0
  44. data/test/dummy/app/assets/stylesheets/home.css +4 -0
  45. data/test/dummy/app/controllers/about_controller.rb +4 -0
  46. data/test/dummy/app/controllers/application_controller.rb +3 -0
  47. data/test/dummy/app/controllers/demos_controller.rb +4 -0
  48. data/test/dummy/app/controllers/docs_controller.rb +5 -0
  49. data/test/dummy/app/controllers/downloads_controller.rb +4 -0
  50. data/test/dummy/app/controllers/home_controller.rb +7 -0
  51. data/test/dummy/app/helpers/about_helper.rb +2 -0
  52. data/test/dummy/app/helpers/application_helper.rb +2 -0
  53. data/test/dummy/app/helpers/demos_helper.rb +2 -0
  54. data/test/dummy/app/helpers/docs_helper.rb +2 -0
  55. data/test/dummy/app/helpers/downloads_helper.rb +2 -0
  56. data/test/dummy/app/helpers/home_helper.rb +2 -0
  57. data/test/dummy/app/views/about/index.html.erb +2 -0
  58. data/test/dummy/app/views/demos/index.html.erb +15 -0
  59. data/test/dummy/app/views/docs/index.html.erb +15 -0
  60. data/test/dummy/app/views/downloads/index.html.erb +60 -0
  61. data/test/dummy/app/views/home/index.html.erb +74 -0
  62. data/test/dummy/app/views/layouts/application.html.erb +30 -0
  63. data/test/dummy/config.ru +4 -0
  64. data/test/dummy/config/application.rb +59 -0
  65. data/test/dummy/config/boot.rb +10 -0
  66. data/test/dummy/config/database.yml +25 -0
  67. data/test/dummy/config/environment.rb +5 -0
  68. data/test/dummy/config/environments/development.rb +37 -0
  69. data/test/dummy/config/environments/production.rb +67 -0
  70. data/test/dummy/config/environments/test.rb +37 -0
  71. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  72. data/test/dummy/config/initializers/cytoplasm.vars.yml +4 -0
  73. data/test/dummy/config/initializers/inflections.rb +15 -0
  74. data/test/dummy/config/initializers/mime_types.rb +5 -0
  75. data/test/dummy/config/initializers/secret_token.rb +7 -0
  76. data/test/dummy/config/initializers/session_store.rb +8 -0
  77. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  78. data/test/dummy/config/locales/en.yml +5 -0
  79. data/test/dummy/config/routes.rb +65 -0
  80. data/test/dummy/db/development.sqlite3 +0 -0
  81. data/test/dummy/db/test.sqlite3 +0 -0
  82. data/test/dummy/log/development.log +178434 -0
  83. data/test/dummy/log/production.log +4 -0
  84. data/test/dummy/log/test.log +43 -0
  85. data/test/dummy/public/404.html +26 -0
  86. data/test/dummy/public/422.html +26 -0
  87. data/test/dummy/public/500.html +25 -0
  88. data/test/dummy/public/cytoplasm/cytoplasm.vars.less +36 -0
  89. data/test/dummy/public/favicon.ico +0 -0
  90. data/test/dummy/script/rails +6 -0
  91. data/test/dummy/test/functional/about_controller_test.rb +9 -0
  92. data/test/dummy/test/functional/demos_controller_test.rb +9 -0
  93. data/test/dummy/test/functional/docs_controller_test.rb +7 -0
  94. data/test/dummy/test/functional/downloads_controller_test.rb +9 -0
  95. data/test/dummy/test/functional/home_controller_test.rb +9 -0
  96. data/test/dummy/test/unit/helpers/about_helper_test.rb +4 -0
  97. data/test/dummy/test/unit/helpers/demos_helper_test.rb +4 -0
  98. data/test/dummy/test/unit/helpers/docs_helper_test.rb +4 -0
  99. data/test/dummy/test/unit/helpers/downloads_helper_test.rb +4 -0
  100. data/test/dummy/test/unit/helpers/home_helper_test.rb +4 -0
  101. data/test/dummy/tmp/cache/assets/C23/A50/sprockets%2F1011830ce123d00a75be4330f2721412 +0 -0
  102. data/test/dummy/tmp/cache/assets/C2E/4E0/sprockets%2F5b29288e435665a224409e7d76530c95 +0 -0
  103. data/test/dummy/tmp/cache/assets/C75/590/sprockets%2Fc3abe8a0059292e1e3818278c0434027 +0 -0
  104. data/test/dummy/tmp/cache/assets/C77/C20/sprockets%2F165a39476f3fa731c0af49432141049c +0 -0
  105. data/test/dummy/tmp/cache/assets/C87/580/sprockets%2Fd904f7e82971fdde744127c702222195 +0 -0
  106. data/test/dummy/tmp/cache/assets/C8F/0F0/sprockets%2F369f11075c8c5f939359cb5cb0569281 +0 -0
  107. data/test/dummy/tmp/cache/assets/CA0/B40/sprockets%2F26961c657dc345435242accb433d260a +0 -0
  108. data/test/dummy/tmp/cache/assets/CA3/4B0/sprockets%2Fb78b7754bf248ba091802070be5c1630 +0 -0
  109. data/test/dummy/tmp/cache/assets/CA7/8F0/sprockets%2F901b96894219d63a767e8898f73d4ce7 +0 -0
  110. data/test/dummy/tmp/cache/assets/CAC/280/sprockets%2F408a235a236b0a3aa1302733211db5ba +0 -0
  111. data/test/dummy/tmp/cache/assets/CAE/FD0/sprockets%2F3bb22e4d409072c2278c1771893ec19e +0 -0
  112. data/test/dummy/tmp/cache/assets/CB2/AD0/sprockets%2F0c26131d87e0691ba9904e46ff5820b9 +0 -0
  113. data/test/dummy/tmp/cache/assets/CB8/330/sprockets%2F8d9120752c9f38f7a5e164395e5d0c04 +0 -0
  114. data/test/dummy/tmp/cache/assets/CBA/320/sprockets%2Fa34641007e856c6bd67567e2ac8668c4 +0 -0
  115. data/test/dummy/tmp/cache/assets/CCE/F60/sprockets%2F37d1a6c1a8d398c4404b1b00076912fd +0 -0
  116. data/test/dummy/tmp/cache/assets/CD7/990/sprockets%2F55411442048c5a69b45be06da29ee62c +0 -0
  117. data/test/dummy/tmp/cache/assets/CD8/370/sprockets%2F357970feca3ac29060c1e3861e2c0953 +0 -0
  118. data/test/dummy/tmp/cache/assets/CD8/900/sprockets%2Fc68606f026190266d8099ada290bbaa4 +0 -0
  119. data/test/dummy/tmp/cache/assets/CDF/870/sprockets%2Fb878faf942403e313a5b103e5d80488e +0 -0
  120. data/test/dummy/tmp/cache/assets/CE1/E60/sprockets%2F08ae5c39217fa93841884cfcb0037c46 +0 -0
  121. data/test/dummy/tmp/cache/assets/CE2/AE0/sprockets%2F79562f7c45761a5d0dba9361d11ae594 +0 -0
  122. data/test/dummy/tmp/cache/assets/CE3/080/sprockets%2F7d4d7689d6fa8236f0b4848c03ba1215 +0 -0
  123. data/test/dummy/tmp/cache/assets/CE4/530/sprockets%2F70521f5a32e550f6da0d76e896c7183e +0 -0
  124. data/test/dummy/tmp/cache/assets/CE5/D30/sprockets%2F8c9834a63b25a66203918a75ff56e2ac +0 -0
  125. data/test/dummy/tmp/cache/assets/CEE/7F0/sprockets%2F8b32778387c589166e26a7e5a6aa4cc3 +0 -0
  126. data/test/dummy/tmp/cache/assets/CF3/120/sprockets%2Fe2b304b015ce82a222d634e7e544b0b3 +0 -0
  127. data/test/dummy/tmp/cache/assets/CF7/ED0/sprockets%2F8061089f9dc8af8cc6353949d9b9d212 +0 -0
  128. data/test/dummy/tmp/cache/assets/CF9/7C0/sprockets%2F40fc2f3d2a468a00e463f1d313cb1683 +0 -0
  129. data/test/dummy/tmp/cache/assets/D03/6B0/sprockets%2Fd3cfc780201b87a3439e35c5236bb71a +0 -0
  130. data/test/dummy/tmp/cache/assets/D05/D40/sprockets%2F1c9faaf28d05409b88ad3113374d613c +0 -0
  131. data/test/dummy/tmp/cache/assets/D06/7A0/sprockets%2Fa46b76e739460d2691f4121ffa8a0ca0 +0 -0
  132. data/test/dummy/tmp/cache/assets/D0D/A10/sprockets%2F5c22f257a7abbc8e5720b17433657f6d +0 -0
  133. data/test/dummy/tmp/cache/assets/D0E/4A0/sprockets%2F6b27287928ba630c1b25dfa80ee18b48 +0 -0
  134. data/test/dummy/tmp/cache/assets/D0E/7D0/sprockets%2F89200785fe2710582a6c1b8d04ae7fbe +0 -0
  135. data/test/dummy/tmp/cache/assets/D12/010/sprockets%2F8067431ced3f34f1c97d34c3b4fb7049 +0 -0
  136. data/test/dummy/tmp/cache/assets/D12/1E0/sprockets%2Fba248329196c372b79d1f4c4f2a771bf +0 -0
  137. data/test/dummy/tmp/cache/assets/D14/170/sprockets%2F40a7b83bb067eea7ce2c8394e1529287 +0 -0
  138. data/test/dummy/tmp/cache/assets/D15/8E0/sprockets%2F4752afcb2967724e7e47b58b200d8ed2 +0 -0
  139. data/test/dummy/tmp/cache/assets/D15/CE0/sprockets%2Fa1310379a19df3c1796f2f67dcd5915d +0 -0
  140. data/test/dummy/tmp/cache/assets/D21/A50/sprockets%2Feb094bfe70c49891ce65c0178d88d904 +0 -0
  141. data/test/dummy/tmp/cache/assets/D2D/E60/sprockets%2F34ec37e4221a9a127bf1de1ee52951b0 +0 -0
  142. data/test/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705 +0 -0
  143. data/test/dummy/tmp/cache/assets/D47/930/sprockets%2F1a738430fd705a9dddde85a18dd29782 +0 -0
  144. data/test/dummy/tmp/cache/assets/D4E/1B0/sprockets%2Ff7cbd26ba1d28d48de824f0e94586655 +0 -0
  145. data/test/dummy/tmp/cache/assets/D50/750/sprockets%2F7fbcc321810c8f493f86364fee480ed9 +0 -0
  146. data/test/dummy/tmp/cache/assets/D52/430/sprockets%2F6ada07f0c9869f9f35b05fa0988dc717 +0 -0
  147. data/test/dummy/tmp/cache/assets/D5A/EA0/sprockets%2Fd771ace226fc8215a3572e0aa35bb0d6 +0 -0
  148. data/test/dummy/tmp/cache/assets/D60/2A0/sprockets%2Ff1857b8a367fbae328221040cfcb2f1c +0 -0
  149. data/test/dummy/tmp/cache/assets/D65/180/sprockets%2F346621e7334bd914afc87bc6a9d1bc0a +0 -0
  150. data/test/dummy/tmp/cache/assets/D65/F10/sprockets%2F0a60d2fd5c544ea66af4d382b5e3d147 +0 -0
  151. data/test/dummy/tmp/cache/assets/D68/A20/sprockets%2F8b8272d3eaf9323f1c34114cbcbf56f3 +0 -0
  152. data/test/dummy/tmp/cache/assets/D69/0A0/sprockets%2Fe6c078d521b528e004f5dd673ddb2a6d +0 -0
  153. data/test/dummy/tmp/cache/assets/D69/0B0/sprockets%2Fb9e3ae8763ce66c2090d9413bdd400fa +0 -0
  154. data/test/dummy/tmp/cache/assets/D6E/3E0/sprockets%2F1be4cbdc9c19703c546405f087aee92d +0 -0
  155. data/test/dummy/tmp/cache/assets/D73/5F0/sprockets%2F6aee922214ffea56b31595f1a5ed8c92 +0 -0
  156. data/test/dummy/tmp/cache/assets/D78/840/sprockets%2F326ec6387a9d1b45ec2cdf7093b79f0e +0 -0
  157. data/test/dummy/tmp/cache/assets/D83/C70/sprockets%2Ff536f7a68e692747fca1d2fcd5c07f57 +0 -0
  158. data/test/dummy/tmp/cache/assets/D87/C40/sprockets%2F9dcd7a6999affe28e91e514cee079016 +0 -0
  159. data/test/dummy/tmp/cache/assets/D88/700/sprockets%2Fe13c6f31271a8ac23e63ef0a118ebe2b +0 -0
  160. data/test/dummy/tmp/cache/assets/D98/8B0/sprockets%2Fedbef6e0d0a4742346cf479f2c522eb0 +0 -0
  161. data/test/dummy/tmp/cache/assets/DA4/140/sprockets%2F24502b9d4e4eea6f709e089c0fdff30f +0 -0
  162. data/test/dummy/tmp/cache/assets/DBE/210/sprockets%2Fbedb89fd02eac0dc7aa93c820c612343 +0 -0
  163. data/test/dummy/tmp/cache/assets/DBE/950/sprockets%2F46cc27391a6badaac462d9b3aa43ec73 +0 -0
  164. data/test/dummy/tmp/cache/assets/DC7/E10/sprockets%2Fac6d2602a61a59c16ad89cbf2d2d48de +0 -0
  165. data/test/dummy/tmp/cache/assets/DC8/E80/sprockets%2F117e87cbd2939c4a9afcbbca2a3684d0 +0 -0
  166. data/test/dummy/tmp/cache/assets/DCD/AD0/sprockets%2Ffb914fa2e51ab43f0f857f0fddd8713b +0 -0
  167. data/test/dummy/tmp/cache/assets/DDC/400/sprockets%2Fcffd775d018f68ce5dba1ee0d951a994 +0 -0
  168. data/test/dummy/tmp/cache/assets/DEB/B50/sprockets%2Fdcfb6dd7dae66f42a5a10e80a33d1b24 +0 -0
  169. data/test/dummy/tmp/cache/assets/DEC/A90/sprockets%2F3f26f0f2e3ea4a0e194b22be6c3b5cce +0 -0
  170. data/test/dummy/tmp/cache/assets/E00/880/sprockets%2Fecb876bb310c1a3e6fd534ece45c9ed9 +0 -0
  171. data/test/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +0 -0
  172. data/test/dummy/tmp/cache/assets/E05/E70/sprockets%2Fead5bfd3417fc5de81d3794c3e443cfe +0 -0
  173. data/test/dummy/tmp/cache/assets/E1A/970/sprockets%2Ff89b4657cfc95e2d28f6fad44c58edfb +0 -0
  174. data/test/dummy/tmp/cache/assets/E2E/720/sprockets%2Ff76ac8420ca62debb77ecbfe7d0c6d45 +0 -0
  175. data/test/dummy/tmp/cache/assets/E38/2A0/sprockets%2Fc6e8ba43cbed7d3981f70bcfeb3a69c9 +0 -0
  176. data/test/dummy/tmp/cache/assets/E69/B60/sprockets%2Ffdbf7ec615e9a92e4857cdade17f4daa +0 -0
  177. data/test/dummy/tmp/cache/assets/E71/0E0/sprockets%2Fcbbecea061be6e609adc04133b9badab +0 -0
  178. data/test/dummy/tmp/cache/assets/E8C/480/sprockets%2Fdacb331ac961cf7b7cbc69abe8fb74dd +0 -0
  179. data/test/dummy/tmp/cache/assets/E8D/B40/sprockets%2Fb862bf7fb4b4c634aeaa9dfc97babc6b +0 -0
  180. data/test/test_helper.rb +15 -0
  181. metadata +420 -0
@@ -0,0 +1,20 @@
1
+ Copyright 2012 YOURNAME
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,3 @@
1
+ = Cytoplasm
2
+
3
+ This project rocks and uses MIT-LICENSE.
@@ -0,0 +1,38 @@
1
+ #!/usr/bin/env rake
2
+ begin
3
+ require 'bundler/setup'
4
+ rescue LoadError
5
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
6
+ end
7
+ begin
8
+ require 'rdoc/task'
9
+ rescue LoadError
10
+ require 'rdoc/rdoc'
11
+ require 'rake/rdoctask'
12
+ RDoc::Task = Rake::RDocTask
13
+ end
14
+
15
+ RDoc::Task.new(:rdoc) do |rdoc|
16
+ rdoc.rdoc_dir = 'rdoc'
17
+ rdoc.title = 'Cytoplasm'
18
+ rdoc.options << '--line-numbers'
19
+ rdoc.rdoc_files.include('README.rdoc')
20
+ rdoc.rdoc_files.include('lib/**/*.rb')
21
+ end
22
+
23
+
24
+
25
+
26
+ Bundler::GemHelper.install_tasks
27
+
28
+ require 'rake/testtask'
29
+
30
+ Rake::TestTask.new(:test) do |t|
31
+ t.libs << 'lib'
32
+ t.libs << 'test'
33
+ t.pattern = 'test/**/*_test.rb'
34
+ t.verbose = false
35
+ end
36
+
37
+
38
+ task :default => :test
@@ -0,0 +1,53 @@
1
+ // CytoAjax v0.5
2
+ // MacKinley Smith
3
+ (function($){
4
+ $.cytoAjaxResponse = function(message,type,time){
5
+ if (message==null) message = "Success!";
6
+ if (type==null) type = "success";
7
+ if (time==null) time = 0;
8
+
9
+ $('.callback_message').hide();
10
+ $('html,body').animate({scrollTop:0},400);
11
+ $('#'+type+"_message").html(message).show(400,function(){
12
+ var $this = $(this);
13
+ if (time) setTimeout(function(){$this.hide(400);},time);
14
+ });
15
+ };
16
+ $.cytoAjax = function(script,data_to_pass,success,error){
17
+ // Set default parameters
18
+ if (typeof script != "string" || script == "") return false;
19
+ if (data_to_pass==null || typeof data_to_pass != "object") {
20
+ if (typeof data_to_pass == "function") {
21
+ if (typeof success == "function") error = success;
22
+ success = data_to_pass;
23
+ }
24
+ data_to_pass = {ajax:script};
25
+ } else data_to_pass = $.extend(true,{},{ajax:script},data_to_pass);
26
+
27
+ // Make request
28
+ $.ajax({
29
+ url:script,
30
+ type:'get',
31
+ dataType:'html',
32
+ processData:false,
33
+ success:function(data,textStatus,jqXHR) {
34
+ try {
35
+ data = $.parseJSON(data);
36
+ } catch (e) {
37
+ data = $.parseJSON('{"status":"Error","message":"AJAX Return Error: '+e.replace(/"/g,"'")+'<br />'+data.replace(/"/g,"'")+'"}');
38
+ }
39
+ if (data.status=="OK") {
40
+ if (typeof success == "function") success.apply(this,[data]);
41
+ else if (data.message!=null) $.cytoAjaxResponse(data.message);
42
+ else $.cytoAjaxResponse(((typeof success == "string")?success:"Success!"));
43
+ } else if (data.status=="Error") {
44
+ if (data.message != null) $.cytoAjaxResponse(data.message,"error");
45
+ if (typeof error == "function") error.apply(this,[data]);
46
+ }
47
+ },
48
+ error:function(jqXHR,textStatus,errorThrown){
49
+ if (typeof error == "function") error.apply(this,[{status:"Error",message:errorThrown}]);
50
+ }
51
+ });
52
+ };
53
+ })(jQuery);
@@ -0,0 +1,204 @@
1
+ // CytoColorPicker v0.5
2
+ // By MacKinley Smith
3
+ (function($){
4
+ var defaults = {
5
+ format:'hsla', // hsla, hex, rgba
6
+ events:{
7
+ change:function(color){}
8
+ },
9
+ widget:{
10
+ previewer:{
11
+ css:{
12
+ display:'inline-block',
13
+ width:152,
14
+ height:152,
15
+ "margin-right":10,
16
+ "border-radius":10,
17
+ "box-shadow":"0px 0px 10px rgba(0,0,0,0.5)"
18
+ },
19
+ element:null
20
+ },
21
+ slider_table:{
22
+ attrs:{
23
+ hue:{
24
+ max:359
25
+ },
26
+ saturation:{
27
+ max:1,
28
+ step:0.01
29
+ },
30
+ lightness:{
31
+ max:1,
32
+ step:0.01
33
+ },
34
+ alpha:{
35
+ max:1,
36
+ step:0.01
37
+ }
38
+ },
39
+ css:{
40
+ display:'inline-block',
41
+ 'vertical-align':'top',
42
+ 'border-width':1
43
+ },
44
+ element:null,
45
+ sliders:{
46
+ elements:[],
47
+ settings:{
48
+ animate:true,
49
+ min:0,
50
+ slide:function(e,ui){
51
+ $(this).parent().parent().find("span.num").html($(this).slider("value"));
52
+ methods.update.apply($(this).parents(".cytoColorPicker-wrapper").find('.cytoColorPicker'));
53
+ },
54
+ change:function(e,ui){
55
+ $(this).parent().parent().find("span.num").html($(this).slider("value"));
56
+ methods.update.apply($(this).parents(".cytoColorPicker-wrapper").find('.cytoColorPicker'));
57
+ }
58
+ }
59
+ }
60
+ },
61
+ wrapper:{
62
+ css:{},
63
+ element:null
64
+ }
65
+ },
66
+ default_value:"hlsa(0,0%,100%,1)"
67
+ };
68
+ var attrs = ['hue','saturation','lightness','alpha'];
69
+ var methods = {
70
+ init:function(options){
71
+ return this.each(function(){
72
+ var $this = $(this);
73
+
74
+ // Instantiate settings
75
+ var settings = $.extend(true,{},defaults,options);
76
+ $this.data('cytoColorPicker',settings);
77
+
78
+ // Generate widget
79
+ $this.addClass('cytoColorPicker').css({display:'none'});
80
+ settings.widget.wrapper.element = $this.wrap("<div class='cytoColorPicker-wrapper' />").parent().css(settings.widget.wrapper.css);
81
+ settings.widget.previewer.element = $('<div />').addClass('cytoColorPicker-previewer').css(settings.widget.previewer.css).appendTo(settings.widget.wrapper.element).click(function(e){
82
+
83
+ });
84
+
85
+ // Generate slider table
86
+ var slider_table = $('<table />').attr({cellPadding:0,cellSpacing:0}).css(settings.widget.slider_table.css).appendTo(settings.widget.wrapper.element);
87
+ for (var i=0;i<settings.format.length;i++) {
88
+ var letter = settings.format[i];
89
+ var tr = $('<tr />').appendTo(slider_table);
90
+ var lc = $('<td />').addClass('labelcell').html(letter.toUpperCase()+": ").append($('<span />').addClass('num').html(0)).appendTo(tr);
91
+ var sc = $('<td />').addClass('cytoColorPicker-sliderCell').appendTo(tr);
92
+ var slider = $('<div data-attr="'+attrs[i]+'" />').appendTo(sc).slider($.extend(true,{},settings.widget.slider_table.sliders.settings,settings.widget.slider_table.attrs[attrs[i]]));
93
+ settings.widget.slider_table.sliders.elements.push(slider);
94
+ }
95
+ slider_table.find('td').css({'padding':"5px 10px"}).filter('.labelcell').width(50);
96
+
97
+ $this.data('cytoColorPicker',settings);
98
+
99
+ // Get initial value as color
100
+ var wasSet = ($this.val()!="");
101
+ if (wasSet) settings.default_value = $this.val();
102
+ settings.value = $.Color(settings.default_value);
103
+
104
+ // Commit settings to data-cytoColorPicker attribute
105
+ $this.data('cytoColorPicker',settings);
106
+ methods.resize.apply($this);
107
+ if (wasSet) methods.value.apply($this,[settings.value]);
108
+ else methods.update.apply($this);
109
+ });
110
+ },
111
+ update:function(){
112
+ return this.each(function(){
113
+ var $this = $(this);
114
+ var settings = $this.data('cytoColorPicker');
115
+ if (!$this.hasClass('cytoColorPicker') || settings==null) return console.warn("You must instanciate $.cytoColorPicker before calling this method!");
116
+
117
+ var wrapper = $this.parent();
118
+ var previewer = wrapper.find(".cytoColorPicker-previewer");
119
+ var sliders = wrapper.find('.ui-slider');
120
+ var color = {};
121
+ sliders.each(function(i){color[attrs[i]] = sliders.filter("[data-attr="+attrs[i]+"]").slider("value");});
122
+ color = $.Color(color);
123
+ previewer.css({"background-color":color.toHslaString()});
124
+
125
+ $this.val(color.toHslaString());
126
+ settings.events.change.apply($this,[color]);
127
+ });
128
+ },
129
+ value:function(color){
130
+ return this.each(function(){
131
+ var $this = $(this);
132
+ var settings = $this.data('cytoColorPicker');
133
+ if (!$this.hasClass('cytoColorPicker') || settings==null) return console.warn("You must instanciate $.cytoColorPicker before calling the set method!");
134
+
135
+ var wrapper = $this.parent();
136
+ color = $.Color(color);
137
+ var sliders = wrapper.find('.ui-slider');
138
+ sliders.each(function(i){sliders.filter("[data-attr="+attrs[i]+"]").slider("value",color.hsla()[i]);});
139
+
140
+ methods.update.apply($this,[color]);
141
+ });
142
+ },
143
+ resize:function(){
144
+ return this.each(function(){
145
+ var $this = $(this);
146
+ var settings = $this.data('cytoColorPicker');
147
+ if (!$this.hasClass('cytoColorPicker') || settings==null) return console.warn("You must instanciate $.cytoColorPicker before calling the resize method!");
148
+ settings.widget.wrapper.element.width(0).css({opacity:0});
149
+ setTimeout(function(){
150
+ settings.widget.wrapper.element.width('100%').css({opacity:1}).find('.cytoColorPicker-sliderCell').width(settings.widget.wrapper.element.innerWidth()-settings.widget.previewer.element.outerWidth(true)-100);
151
+ },1);
152
+ });
153
+ },
154
+ destroy:function(){
155
+ return this.each(function(){
156
+ var $this = $(this);
157
+ var settings = $(this).data('cytoColorPicker');
158
+ if (!$this.hasClass('cytoColorPicker') || settings==null) return console.warn("You must instanciate $.cytoColorPicker before calling the destroy method!");
159
+ var wrapper = $this.parent();
160
+ $this.insertBefore(wrapper).removeClass('cytoColorPicker').data('cytoColorPicker',null);
161
+ wrapper.remove();
162
+ });
163
+ },
164
+ refresh:function(){
165
+ return this.each(function(){
166
+ var $this = $(this);
167
+ var settings = $(this).data('cytoColorPicker');
168
+ if (!$this.hasClass('cytoColorPicker') || settings==null) return console.warn("You must instanciate $.cytoColorPicker before calling the refresh method!");
169
+ methods.destroy.apply($this);
170
+ methods.init.apply($this,[settings]);
171
+ $this.trigger('change.cytoColorPicker');
172
+ });
173
+ },
174
+ options:function(newOptions){
175
+ if (newOptions!=null) {
176
+ return this.each(function(){
177
+ var $this = $(this);
178
+ var settings = $this.data('cytoColorPicker');
179
+ if (!$this.hasClass("cytoColorPicker") || settings==null) return console.warn("You must instanciate $.cytoColorPicker before you call the options method!");
180
+ $this.data('cytoColorPicker',$.extend(true,{},settings,newOptions));
181
+ methods.refresh.apply($this);
182
+ });
183
+ } else {
184
+ var returnVal;
185
+ this.each(function(){
186
+ var $this = $(this);
187
+ var settings = $this.data('cytoColorPicker');
188
+ if (!$this.hasClass("cytoColorPicker") || settings==null) return console.warn("You must instanciate $.cytoColorPicker before you call the options method!");
189
+ returnVal = settings;
190
+ });
191
+ return returnVal;
192
+ }
193
+ }
194
+ };
195
+
196
+ $.fn.cytoColorPicker = function(method){
197
+ if (methods[method]) return methods[method].apply(this,Array.prototype.slice.call(arguments,1));
198
+ else if (typeof method == 'object' || !method) return methods.init.apply(this,arguments);
199
+ else $.error('Method ' + method + ' does not exist on $.cytoColorPicker!');
200
+ };
201
+
202
+ $(window).resize(function(){$('.cytoColorPicker').cytoColorPicker("resize");});
203
+ $.Cytoplasm("ready",function(){$('.cytoColorPicker').cytoColorPicker();});
204
+ })(jQuery);
@@ -0,0 +1,210 @@
1
+ // CytoRadio v1.0
2
+ // By MacKinley Smith
3
+ (function($){
4
+ var defaults = {
5
+ widget:{
6
+ buttonList:{
7
+ buttons:{
8
+ css:{
9
+ display:'inline-block',
10
+ height:30,
11
+ padding:0,
12
+ 'border-radius':0
13
+ },
14
+ elements:[]
15
+ },
16
+ borderRadius:5,
17
+ css:{
18
+ width:"100%"
19
+ }
20
+ },
21
+ inputList:{
22
+ css:{
23
+ display:'none'
24
+ },
25
+ inputs:{
26
+ css:{},
27
+ elements:[]
28
+ }
29
+ },
30
+ labels:["On","Off"],
31
+ wrapper:{
32
+ css:{
33
+
34
+ }
35
+ }
36
+ },
37
+ events:{
38
+ create:function(cy){},
39
+ change:function(cy,event){},
40
+ destroy:function(cy){}
41
+ }
42
+ };
43
+
44
+ var methods = {
45
+ init:function(options,reinit){
46
+ if (reinit==null) reinit = false;
47
+ var namelist = [];
48
+ return this.each(function(){
49
+ var $this = $(this);
50
+ if ($.inArray($this.attr('name'),namelist)>-1) return;
51
+ if ($this.data('cytoRadio')!=null) return console.warn("You cannot reinstatiate $.cytoRadio before calling the destroy method.\nProtip: Use the refresh method to reinstantiate in one move.");
52
+
53
+ // Initialize settings
54
+ var settings = $.extend(true,{},defaults,options);
55
+
56
+ // Generate widget
57
+ settings.widget.inputList.inputs.elements = $('input[name="'+$this.attr('name')+'"]').addClass('cytoRadio');
58
+ // Data settings for individual radio buttons
59
+ if (!reinit) settings.widget.inputList.inputs.elements.each(function(i){
60
+ if ($(this).data('label')!=null) settings.widget.labels[i] = $(this).data('label');
61
+ });
62
+ settings.widget.wrapper.element = $this.wrap("<div class='cytoRadio-wrapper'></div>").parent().css(settings.widget.wrapper.css);
63
+ settings.widget.inputList.element = $('<div />').addClass('cytoRadio-inputList').appendTo(settings.widget.wrapper.element).css(settings.widget.inputList.css);
64
+ // Move inputs to inputList
65
+ settings.widget.inputList.inputs.elements.css(settings.widget.inputList.inputs.css).appendTo(settings.widget.inputList.element);
66
+ settings.widget.buttonList.element = $('<div />').addClass('cytoRadio-buttonList').css(settings.widget.buttonList.css).appendTo(settings.widget.wrapper.element);
67
+ settings.widget.inputList.inputs.elements.each(function(i){
68
+ if ($(this).data('label')!=null) settings.widget.labels[i] = $(this).data('label');
69
+ $(this).attr('data-cytoradio-input',i);
70
+ var button = $('<button />')
71
+ .addClass('cytoButton cytoRadio-button')
72
+ .attr({'data-cytoradio-input':i,'data-cytoradio-value':$(this).val()}).html(settings.widget.labels[i])
73
+ .css(settings.widget.buttonList.buttons.css)
74
+ .appendTo(settings.widget.buttonList.element);
75
+ });
76
+ settings.widget.buttonList.buttons.elements = settings.widget.buttonList.element.children('.cytoRadio-button');
77
+ // Round button edges
78
+ settings.widget.buttonList.buttons.elements.filter(':first-child').css({'border-top-left-radius':settings.widget.buttonList.borderRadius,'border-bottom-left-radius':settings.widget.buttonList.borderRadius});
79
+ settings.widget.buttonList.buttons.elements.filter(':not(:last-child)').css({'border-right':'none'});
80
+ settings.widget.buttonList.buttons.elements.filter(':last-child').css({'border-top-right-radius':settings.widget.buttonList.borderRadius,'border-bottom-right-radius':settings.widget.buttonList.borderRadius});
81
+
82
+ // Store settings in data-cytoRadio
83
+ settings.widget.inputList.inputs.elements.data('cytoRadio',settings);
84
+
85
+ // Choose active
86
+ if (settings.widget.inputList.inputs.elements.find(':checked')) methods.value.apply(settings.widget.inputList.inputs.elements,[settings.widget.inputList.inputs.elements.find(':checked').val()]);
87
+
88
+ // Bindings
89
+ settings.widget.inputList.inputs.elements.change($.debounce(100,true,function(e){
90
+ methods.value.apply(settings.widget.inputList.inputs.elements,[settings.widget.inputList.inputs.elements.filter(':checked').val()])
91
+ settings.events.change.apply(settings.widget.inputList.inputs.elements,[settings,e]);
92
+ })).trigger('change');
93
+ settings.widget.buttonList.buttons.elements.click(function(e){
94
+ e.preventDefault();
95
+ if ($(this).hasClass('active')) return false;
96
+ methods.value.apply($this,[$(this).data('cytoradio-value')]);
97
+ settings.widget.inputList.inputs.elements.trigger('change');
98
+ });
99
+
100
+ // Fire resize event
101
+ methods.resize.apply(settings.widget.inputList.inputs.elements);
102
+
103
+ settings.events.create.apply(settings.widget.inputList.inputs.elements,[settings]);
104
+
105
+ // Add name to namelist
106
+ namelist.push($this.attr('name'));
107
+ });
108
+ },
109
+ destroy:function(){
110
+ var namelist = [];
111
+ return this.each(function(){
112
+ var $this = $(this);
113
+ if ($.inArray($this.attr('name'),namelist)>-1) return;
114
+ var settings = $this.data('cytoRadio');
115
+ if (!$this.hasClass('cytoRadio') || settings==null) return console.warn("You must instantiate jQuery.cytoRadio before you call the destroy method!");
116
+
117
+ // Move inputs back outside wrapper
118
+ settings.widget.inputList.inputs.elements.insertAfter(settings.widget.wrapper.element).show();
119
+ // Remove widget
120
+ settings.widget.wrapper.element.remove();
121
+ $this.removeClass('cytoRadio').unbind('.cytoRadio').data('cytoRadio',null);
122
+ namelist.push($this.attr('name'));
123
+ settings.events.destroy.apply(settings.widget.inputList.inputs.elements,[settings]);
124
+ });
125
+ },
126
+ refresh:function(){
127
+ var namelist = [];
128
+ return this.each(function(){
129
+ var $this = $(this);
130
+ if ($.inArray($this.attr('name'),namelist)>-1) return;
131
+ var settings = $this.data('cytoRadio');
132
+ if (!$this.hasClass('cytoRadio') || settings==null) return console.warn("You must instantiate jQuery.cytoRadio before you call the refresh method!");
133
+
134
+ methods.destroy.apply($this);
135
+ methods.init.apply($this,[settings,true]);
136
+ $this.trigger('change.cytoRadio');
137
+
138
+ namelist.push($this.attr('name'));
139
+ });
140
+ },
141
+ resize:function(){
142
+ var namelist = [];
143
+ return this.each(function(){
144
+ var $this = $(this);
145
+ if ($.inArray($this.attr('name'),namelist)>-1) return;
146
+ var settings = $this.data('cytoRadio');
147
+ if (!$this.hasClass('cytoRadio') || settings==null) return console.warn("You must instantiate jQuery.cytoRadio before you call the resize method!");
148
+
149
+ var w = settings.widget.wrapper.element.width(0).css({opacity:0});
150
+ var bl = settings.widget.buttonList.buttons.elements.width("auto");
151
+ setTimeout(function(){
152
+ w.width('100%');
153
+ bl.each(function(){
154
+ $(this).width(Math.ceil(settings.widget.buttonList.element.innerWidth()/bl.length) - 2);
155
+ });
156
+ w.css({opacity:1});
157
+ },1);
158
+ });
159
+ },
160
+ value:function(set){
161
+ var namelist = [];
162
+ if (set==null || set==undefined) set = false;
163
+ var value;
164
+ this.each(function(){
165
+ var $this = $(this);
166
+ if ($.inArray($this.attr('name'),namelist)>-1) return;
167
+ var settings = $this.data('cytoRadio');
168
+ if (!$this.hasClass('cytoRadio') || settings==null) return console.warn("You must instantiate jQuery.cytoRadio before you call the value method!");
169
+
170
+ if (set===false) value = settings.widget.inputList.inputs.elements.filter(':checked').val();
171
+ else {
172
+ settings.widget.inputList.inputs.elements.filter('[value="'+set+'"]').prop("checked",true);
173
+ settings.widget.buttonList.element.find('.active').removeClass('active').end().find('[data-cytoradio-value="'+set+'"]').addClass('active');
174
+ }
175
+
176
+ namelist.push($this.attr('name'));
177
+ });
178
+ return (value!=null) ? value : this;
179
+ },
180
+ options:function(newOptions){
181
+ if (newOptions!=null) {
182
+ return this.each(function(){
183
+ var $this = $(this);
184
+ var settings = $this.data('cytoRadio');
185
+ if (!$this.hasClass("cytoRadio") || settings==null) return console.warn("You must instanciate $.cytoRadio before you call the options method!");
186
+ $this.data('cytoRadio',$.extend(true,{},settings,newOptions));
187
+ methods.refresh.apply($this);
188
+ });
189
+ } else {
190
+ var returnVal;
191
+ this.each(function(){
192
+ var $this = $(this);
193
+ var settings = $this.data('cytoRadio');
194
+ if (!$this.hasClass("cytoRadio") || settings==null) return console.warn("You must instanciate $.cytoRadio before you call the options method!");
195
+ returnVal = settings;
196
+ });
197
+ return returnVal;
198
+ }
199
+ }
200
+ };
201
+
202
+ $.fn.cytoRadio = function(method){
203
+ if (methods[method]) return methods[method].apply(this,Array.prototype.slice.call(arguments,1));
204
+ else if (typeof method == 'object' || !method) return methods.init.apply(this,arguments);
205
+ else $.error('Method ' + method + ' does not exist on $.cytoRadio!');
206
+ };
207
+
208
+ $(window).resize(function(){$('.cytoRadio').cytoRadio("resize");});
209
+ $.Cytoplasm("ready",function(){$('.cytoRadio').cytoRadio();});
210
+ })(jQuery);