youthtree-js 0.2.0 → 0.3.0

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.
data/README.md CHANGED
@@ -6,6 +6,51 @@ Developed primarily for [TEDxPerth](http://tedxperth.org/) and [Big Help Mob](ht
6
6
 
7
7
  Relies on [Shuriken](http://github.com/Sutto/shuriken/).
8
8
 
9
+ ## Currently provided tools
10
+
11
+ YouthTree JS provides a small number of different pieces of code for a variety of common tasks.
12
+
13
+ Out of the box, the main namespaces are:
14
+
15
+ ### YouthTree.CKEditor
16
+
17
+ A simple wrapper around CKEditor that unobtrusively sets up the jQuery adapter on fields
18
+ with a class of `.ckeditor` on the container. Also, the width is set to deal with the
19
+ common [bhm-admin](http://github.com/YouthTree/bhm-admin) sides images.
20
+
21
+ ### YouthTree.ConvertableEditor
22
+
23
+ Even more magic for YouthTree.CKEditor. Let's you mark a fieldset wrapper with `.convertable` and it'll
24
+ automatically find the select and textarea, showing when the select has a format of "raw". Designed
25
+ to work out of the box with how most [almost-happy](http://github.com/Sutto/almost-happy) editors work.
26
+
27
+ ### YouthTree.Disqus
28
+
29
+ Unobtrusively adds the Disqus html based on the presence of meta tags in the page with the names:
30
+
31
+ * `disqus-identifier`
32
+ * `disqus-site`
33
+ * `disqus-developer`
34
+
35
+ Aka, super simple Disqus commenting for pretty much any website.
36
+
37
+ ### YouthTree.Flickr
38
+
39
+ Simple, unobtrusive wrapper around the flickr api for use with the Flickr Gallery.
40
+
41
+ ### YouthTree.Flickr.Gallery
42
+
43
+ Gives the ability to pull in simple HTML from given flickr tags / photo set ids.
44
+
45
+ ### YouthTree.Gallery
46
+
47
+ Generic facy-boxed autosetup and gallery features based on simple markup.
48
+
49
+ ### YouthTree.Util
50
+
51
+ A set of common JS helper methods similar to their Rails counterparts,
52
+ exposed via JS for use in arbitrary rails apps frontends.
53
+
9
54
  ## Contributing ##
10
55
 
11
56
  We encourage all community contributions. Keeping this in mind, please follow these general guidelines when contributing:
data/Rakefile CHANGED
@@ -23,7 +23,7 @@ desc "Compiles the javascript from Coffeescript to Javascript"
23
23
  task :compile_scripts do
24
24
  Dir["coffeescripts/**/*.coffee"].each do |cs|
25
25
  output = File.dirname(cs).gsub("coffeescripts", "javascripts")
26
- system "coffee", "--no-wrap", "-o", output, "-c", cs
26
+ system "coffee", "-c", "--no-wrap", '-o', output, cs
27
27
  end
28
28
  end
29
29
 
@@ -0,0 +1,32 @@
1
+ YouthTree.withNS 'CKEditor', (ns) ->
2
+
3
+ window.CKEDITOR_BASEPATH = '/ckeditor/'
4
+
5
+ ns.editorSelector = '.ckeditor textarea'
6
+ ns.editorOptions =
7
+ toolbar: 'youthtree'
8
+ width: '71%'
9
+ customConfig: false
10
+
11
+ ns.toolbar_layout = [
12
+ ['Source','-','Templates'], ['Cut','Copy','Paste','PasteText','PasteFromWord','-', 'SpellChecker', 'Scayt'],
13
+ ['Undo','Redo','-','Find','Replace','RemoveFormat'],
14
+ '/',
15
+ ['Bold','Italic','Underline','Strike'], ['NumberedList','BulletedList', 'Blockquote'],
16
+ ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'], ['Link','Unlink','Anchor'], ['Image','Flash','Table','HorizontalRule'],
17
+ '/',
18
+ ['Styles','Format','Font','FontSize'], ['TextColor','BGColor'], ['Maximize', 'ShowBlocks']
19
+ ]
20
+
21
+ currentEditorOptions = ->
22
+ options = $.extend {}, ns.editorOptions
23
+ options.toolbar_youthtree = ns.toolbar_layout
24
+ options
25
+
26
+ ns.makeEditor = (jq) ->
27
+ jq.ckeditor currentEditorOptions()
28
+
29
+ ns.destroyEditor = (jq) ->
30
+ jq.ckeditorGet()?.destroy()
31
+
32
+ ns.setup = -> ns.makeEditor $(ns.editorSelector)
@@ -0,0 +1,29 @@
1
+ YouthTree.withNS 'ConvertableEditor', (ns) ->
2
+
3
+ ns.containerSelector = 'fieldset.inputs.convertable'
4
+ ns.editorSelector = 'textarea'
5
+ ns.formatSelector = 'select'
6
+
7
+ ns.showEditor = (s) ->
8
+ YouthTree.CKEditor.makeEditor s
9
+
10
+ ns.hideEditor = (s) ->
11
+ YouthTree.CKEditor.destroyEditor s
12
+
13
+ ns.shouldShowEditor = (s) ->
14
+ s.find(ns.formatSelector).val() is "raw"
15
+
16
+ ns.toggleEditorOn = (scope) ->
17
+ ns.debug scope
18
+ $scope = $ scope
19
+ if ns.shouldShowEditor $scope
20
+ ns.showEditor $scope.find(ns.editorSelector)
21
+ else
22
+ ns.hideEditor $scope.find(ns.editorSelector)
23
+
24
+ ns.attachEvents = ->
25
+ $(ns.containerSelector).each ->
26
+ $(@).find(ns.formatSelector).change =>
27
+ ns.toggleEditorOn @
28
+
29
+ ns.setup = -> ns.attachEvents()
@@ -0,0 +1,27 @@
1
+ YouthTree.withNS 'Disqus', (ns) ->
2
+
3
+ ns.collectionSelector = '#posts'
4
+
5
+ ns.currentIdentifier = ->
6
+ $.metaAttr "disqus-identifier"
7
+
8
+ ns.currentSite = ->
9
+ $.metaAttr "disqus-site"
10
+
11
+ ns.isDebug = ->
12
+ $.metaAttr("disqus-developer") is "true"
13
+
14
+ ns.configureDisqus = ->
15
+ window.disqus_identifier = ns.currentIdentifier()
16
+ window.disqus_developer = 1 if ns.isDebug()
17
+
18
+ ns.addScripts = ->
19
+ ns.configureDisqus()
20
+ script = $ "<script />", type: "text/javascript", async: true
21
+ if $(ns.collectionSelector).size() > 0
22
+ script.attr "src", "http://disqus.com/forums/#{ns.currentSite()}/count.js"
23
+ else
24
+ script.attr "src", "http://#{ns.currentSite()}.disqus.com/embed.js"
25
+ script.appendTo $ "head"
26
+
27
+ ns.setup = -> ns.addScripts()
@@ -0,0 +1,48 @@
1
+ YouthTree.withNS 'Flickr.Gallery', (ns) ->
2
+
3
+ flickr = YouthTree.Flickr
4
+
5
+ ns.navigationClass = 'flickr-gallery-navigation'
6
+ ns.containerClass = 'flickr-gallery'
7
+
8
+ class InnerFlickrGallery
9
+
10
+ constructor: (@name, @container) ->
11
+ @container.addClass ns.containerClass
12
+
13
+ fetchPhotoset: (photosetId, extraParams) ->
14
+ params =
15
+ photoset_id: photosetId
16
+ extras: 'url_sq,url_m'
17
+ $.extend params, extraParams if extraParams?
18
+ flickr.apiCall 'flickr.photosets.getPhotos', params, (response) =>
19
+ @process response.photoset.photo
20
+
21
+ fetchUserTagged: (user, tag, extraParams) ->
22
+ params =
23
+ tags: tag
24
+ user_id: user
25
+ sort: 'interestingness-desc'
26
+ content_type: '1'
27
+ media: 'photos'
28
+ $.extend params, extraParams if extraParams?
29
+ flickr.apiCall 'flickr.photos.search', params, (response) =>
30
+ @process response.photos.photo
31
+
32
+ process: (photos) ->
33
+ @container.empty()
34
+ $.each photos, (i, item) =>
35
+ img = $('<img/>').attr('src', item.url_sq)
36
+ link = $('<a></a>').attr('href', item.url_m).append img
37
+ @container.append link
38
+ YouthTree.Gallery.create @name, @container.find('a')
39
+
40
+ ns.fromPhotoset = (name, container, photoset, extraParams) ->
41
+ flickr_gallery = new InnerFlickrGallery name, container
42
+ flickr_gallery.fetchPhotoset photoset, extraParams
43
+ flickr_gallery
44
+
45
+ ns.fromUserTag = (name, container, user, tag, extraParams) ->
46
+ flickr_gallery = new InnerFlickrGallery name, container
47
+ flickr_gallery.fetchUserTagged user, tag, extraParams
48
+ flickr_gallery
@@ -0,0 +1,35 @@
1
+ YouthTree.withNS 'Flickr', (ns) ->
2
+
3
+ ns.apiBaseURL = 'http://api.flickr.com/services/rest/'
4
+
5
+ ns.defaultOptions =
6
+ format: 'json'
7
+ api_key: ''
8
+
9
+ ns.defaultErrorHandler = (response) ->
10
+ if window.console?
11
+ ns.log "Error: #{response.code} - #{response.message}"
12
+
13
+ ns.apiCall = (name, options, callback, errback) ->
14
+ return unless ns.apiKey?
15
+ errback?= ns.defaultErrorHandler
16
+ # Do something here,
17
+ apiOptions = method: name
18
+ $.extend apiOptions, options, ns.defaultOptions
19
+ $.ajax
20
+ url: ns.apiBaseURL
21
+ dataType: 'jsonp',
22
+ jsonp: 'jsoncallback'
23
+ data: apiOptions
24
+ success: (data) ->
25
+ if data.stat is 'ok'
26
+ callback data
27
+ else
28
+ errback data
29
+
30
+ ns.setup = ->
31
+ # Get the current api key
32
+ ns.apiKey = $.metaAttr 'flickr-api-key'
33
+ # Set it for requests.
34
+ ns.defaultOptions.api_key = ns.apiKey
35
+
@@ -0,0 +1,52 @@
1
+ YouthTree.withNS 'Util', (ns) ->
2
+
3
+ ns.escapeHTML = (s) ->
4
+ s.replace(/&/g, '&amp;').replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/'/g, "&#39;").replace(/"/g, "&quot;")
5
+
6
+ ns.autolink = (text) ->
7
+ text.replace(/(\bhttp:\/\/\S+(\/|\b))/gi, '<a href="$1" target="_blank">$1</a>')
8
+
9
+ ns.format = (text) ->
10
+ ns.autolink ns.escapeHTML text
11
+
12
+ ns.h = ns.escapeHTML
13
+
14
+ ns.formatTime = (s) ->
15
+ time = new Date(s)
16
+ period = ""
17
+ hour = time.getHours()
18
+ if hour is 0
19
+ period = "am"
20
+ hour = 12
21
+ else if hour < 12
22
+ period = "am"
23
+ else if hour is 12
24
+ period = "pm"
25
+ else if hour < 24
26
+ preiod = "pm"
27
+ hour -= 12
28
+ minutes = time.getMinutes()
29
+ minutesPrefix = if minutes < 10 then "0" else ""
30
+ "#{hour}:#{minutesPrefix}#{minutes} #{period}"
31
+
32
+ ns.attachUpdatingTimeAgo = (object, date) ->
33
+ existing = $(object).dataAttr "time-ago-interval"
34
+ clearInterval(parseInt(existing, 10)) if existing?
35
+ update = =>
36
+ object.html ns.timeAgoInWords(date)
37
+ update()
38
+ $(object).dataAttr "time-ago-interval", setInterval(update, 60000)
39
+
40
+ ns.truncate = (text, length) ->
41
+ length?= 100
42
+ suffix = if text.length > length then "&hellip;" else ""
43
+ text = "#{ns.h text.slice(0, length)}#{suffix}"
44
+
45
+ ns.timeAgoInWords = (date) ->
46
+ if $.browser.ie?
47
+ date = Date.parse date.replace /( \+)/," UTC$1"
48
+ else
49
+ date = Date.parse date
50
+ time = Number new Date(date)
51
+ now = Number new Date()
52
+ $.timeago.inWords(now - time)
@@ -0,0 +1,27 @@
1
+ YouthTree.withNS('CKEditor', function(ns) {
2
+ var currentEditorOptions;
3
+ window.CKEDITOR_BASEPATH = '/ckeditor/';
4
+ ns.editorSelector = '.ckeditor textarea';
5
+ ns.editorOptions = {
6
+ toolbar: 'youthtree',
7
+ width: '71%',
8
+ customConfig: false
9
+ };
10
+ ns.toolbar_layout = [['Source', '-', 'Templates'], ['Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord', '-', 'SpellChecker', 'Scayt'], ['Undo', 'Redo', '-', 'Find', 'Replace', 'RemoveFormat'], '/', ['Bold', 'Italic', 'Underline', 'Strike'], ['NumberedList', 'BulletedList', 'Blockquote'], ['JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock'], ['Link', 'Unlink', 'Anchor'], ['Image', 'Flash', 'Table', 'HorizontalRule'], '/', ['Styles', 'Format', 'Font', 'FontSize'], ['TextColor', 'BGColor'], ['Maximize', 'ShowBlocks']];
11
+ currentEditorOptions = function() {
12
+ var options;
13
+ options = $.extend({}, ns.editorOptions);
14
+ options.toolbar_youthtree = ns.toolbar_layout;
15
+ return options;
16
+ };
17
+ ns.makeEditor = function(jq) {
18
+ return jq.ckeditor(currentEditorOptions());
19
+ };
20
+ ns.destroyEditor = function(jq) {
21
+ var _ref, _ref2;
22
+ return (typeof (_ref2 = ((_ref = jq.ckeditorGet()))) === "undefined" || _ref2 === null) ? undefined : _ref2.destroy();
23
+ };
24
+ return (ns.setup = function() {
25
+ return ns.makeEditor($(ns.editorSelector));
26
+ });
27
+ });
@@ -0,0 +1,33 @@
1
+ var __bind = function(func, context) {
2
+ return function(){ return func.apply(context, arguments); };
3
+ };
4
+ YouthTree.withNS('ConvertableEditor', function(ns) {
5
+ ns.containerSelector = 'fieldset.inputs.convertable';
6
+ ns.editorSelector = 'textarea';
7
+ ns.formatSelector = 'select';
8
+ ns.showEditor = function(s) {
9
+ return YouthTree.CKEditor.makeEditor(s);
10
+ };
11
+ ns.hideEditor = function(s) {
12
+ return YouthTree.CKEditor.destroyEditor(s);
13
+ };
14
+ ns.shouldShowEditor = function(s) {
15
+ return s.find(ns.formatSelector).val() === "raw";
16
+ };
17
+ ns.toggleEditorOn = function(scope) {
18
+ var $scope;
19
+ ns.debug(scope);
20
+ $scope = $(scope);
21
+ return ns.shouldShowEditor($scope) ? ns.showEditor($scope.find(ns.editorSelector)) : ns.hideEditor($scope.find(ns.editorSelector));
22
+ };
23
+ ns.attachEvents = function() {
24
+ return $(ns.containerSelector).each(function() {
25
+ return $(this).find(ns.formatSelector).change(__bind(function() {
26
+ return ns.toggleEditorOn(this);
27
+ }, this));
28
+ });
29
+ };
30
+ return (ns.setup = function() {
31
+ return ns.attachEvents();
32
+ });
33
+ });
@@ -0,0 +1,35 @@
1
+ YouthTree.withNS('Disqus', function(ns) {
2
+ ns.collectionSelector = '#posts';
3
+ ns.currentIdentifier = function() {
4
+ return $.metaAttr("disqus-identifier");
5
+ };
6
+ ns.currentSite = function() {
7
+ return $.metaAttr("disqus-site");
8
+ };
9
+ ns.isDebug = function() {
10
+ return $.metaAttr("disqus-developer") === "true";
11
+ };
12
+ ns.configureDisqus = function() {
13
+ window.disqus_identifier = ns.currentIdentifier();
14
+ if (ns.isDebug()) {
15
+ return (window.disqus_developer = 1);
16
+ }
17
+ };
18
+ ns.addScripts = function() {
19
+ var script;
20
+ ns.configureDisqus();
21
+ script = $("<script />", {
22
+ type: "text/javascript",
23
+ async: true
24
+ });
25
+ if ($(ns.collectionSelector).size() > 0) {
26
+ script.attr("src", "http://disqus.com/forums/" + (ns.currentSite()) + "/count.js");
27
+ } else {
28
+ script.attr("src", "http://" + (ns.currentSite()) + ".disqus.com/embed.js");
29
+ }
30
+ return script.appendTo($("head"));
31
+ };
32
+ return (ns.setup = function() {
33
+ return ns.addScripts();
34
+ });
35
+ });
@@ -0,0 +1,66 @@
1
+ var __bind = function(func, context) {
2
+ return function(){ return func.apply(context, arguments); };
3
+ };
4
+ YouthTree.withNS('Flickr.Gallery', function(ns) {
5
+ var InnerFlickrGallery, flickr;
6
+ flickr = YouthTree.Flickr;
7
+ ns.navigationClass = 'flickr-gallery-navigation';
8
+ ns.containerClass = 'flickr-gallery';
9
+ InnerFlickrGallery = function(_arg, _arg2) {
10
+ this.container = _arg2;
11
+ this.name = _arg;
12
+ this.container.addClass(ns.containerClass);
13
+ return this;
14
+ };
15
+ InnerFlickrGallery.prototype.fetchPhotoset = function(photosetId, extraParams) {
16
+ var params;
17
+ params = {
18
+ photoset_id: photosetId,
19
+ extras: 'url_sq,url_m'
20
+ };
21
+ if (typeof extraParams !== "undefined" && extraParams !== null) {
22
+ $.extend(params, extraParams);
23
+ }
24
+ return flickr.apiCall('flickr.photosets.getPhotos', params, __bind(function(response) {
25
+ return this.process(response.photoset.photo);
26
+ }, this));
27
+ };
28
+ InnerFlickrGallery.prototype.fetchUserTagged = function(user, tag, extraParams) {
29
+ var params;
30
+ params = {
31
+ tags: tag,
32
+ user_id: user,
33
+ sort: 'interestingness-desc',
34
+ content_type: '1',
35
+ media: 'photos'
36
+ };
37
+ if (typeof extraParams !== "undefined" && extraParams !== null) {
38
+ $.extend(params, extraParams);
39
+ }
40
+ return flickr.apiCall('flickr.photos.search', params, __bind(function(response) {
41
+ return this.process(response.photos.photo);
42
+ }, this));
43
+ };
44
+ InnerFlickrGallery.prototype.process = function(photos) {
45
+ this.container.empty();
46
+ $.each(photos, __bind(function(i, item) {
47
+ var img, link;
48
+ img = $('<img/>').attr('src', item.url_sq);
49
+ link = $('<a></a>').attr('href', item.url_m).append(img);
50
+ return this.container.append(link);
51
+ }, this));
52
+ return YouthTree.Gallery.create(this.name, this.container.find('a'));
53
+ };
54
+ ns.fromPhotoset = function(name, container, photoset, extraParams) {
55
+ var flickr_gallery;
56
+ flickr_gallery = new InnerFlickrGallery(name, container);
57
+ flickr_gallery.fetchPhotoset(photoset, extraParams);
58
+ return flickr_gallery;
59
+ };
60
+ return (ns.fromUserTag = function(name, container, user, tag, extraParams) {
61
+ var flickr_gallery;
62
+ flickr_gallery = new InnerFlickrGallery(name, container);
63
+ flickr_gallery.fetchUserTagged(user, tag, extraParams);
64
+ return flickr_gallery;
65
+ });
66
+ });
@@ -0,0 +1,35 @@
1
+ YouthTree.withNS('Flickr', function(ns) {
2
+ ns.apiBaseURL = 'http://api.flickr.com/services/rest/';
3
+ ns.defaultOptions = {
4
+ format: 'json',
5
+ api_key: ''
6
+ };
7
+ ns.defaultErrorHandler = function(response) {
8
+ var _ref;
9
+ return (typeof (_ref = window.console) !== "undefined" && _ref !== null) ? ns.log("Error: " + (response.code) + " - " + (response.message)) : null;
10
+ };
11
+ ns.apiCall = function(name, options, callback, errback) {
12
+ var _ref, apiOptions;
13
+ if (!(typeof (_ref = ns.apiKey) !== "undefined" && _ref !== null)) {
14
+ return null;
15
+ }
16
+ errback = (typeof errback !== "undefined" && errback !== null) ? errback : ns.defaultErrorHandler;
17
+ apiOptions = {
18
+ method: name
19
+ };
20
+ $.extend(apiOptions, options, ns.defaultOptions);
21
+ return $.ajax({
22
+ url: ns.apiBaseURL,
23
+ dataType: 'jsonp',
24
+ jsonp: 'jsoncallback',
25
+ data: apiOptions,
26
+ success: function(data) {
27
+ return data.stat === 'ok' ? callback(data) : errback(data);
28
+ }
29
+ });
30
+ };
31
+ return (ns.setup = function() {
32
+ ns.apiKey = $.metaAttr('flickr-api-key');
33
+ return (ns.defaultOptions.api_key = ns.apiKey);
34
+ });
35
+ });
@@ -0,0 +1,64 @@
1
+ var __bind = function(func, context) {
2
+ return function(){ return func.apply(context, arguments); };
3
+ };
4
+ YouthTree.withNS('Util', function(ns) {
5
+ ns.escapeHTML = function(s) {
6
+ return s.replace(/&/g, '&amp;').replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/'/g, "&#39;").replace(/"/g, "&quot;");
7
+ };
8
+ ns.autolink = function(text) {
9
+ return text.replace(/(\bhttp:\/\/\S+(\/|\b))/gi, '<a href="$1" target="_blank">$1</a>');
10
+ };
11
+ ns.format = function(text) {
12
+ return ns.autolink(ns.escapeHTML(text));
13
+ };
14
+ ns.h = ns.escapeHTML;
15
+ ns.formatTime = function(s) {
16
+ var hour, minutes, minutesPrefix, period, preiod, time;
17
+ time = new Date(s);
18
+ period = "";
19
+ hour = time.getHours();
20
+ if (hour === 0) {
21
+ period = "am";
22
+ hour = 12;
23
+ } else if (hour < 12) {
24
+ period = "am";
25
+ } else if (hour === 12) {
26
+ period = "pm";
27
+ } else if (hour < 24) {
28
+ preiod = "pm";
29
+ hour -= 12;
30
+ }
31
+ minutes = time.getMinutes();
32
+ minutesPrefix = minutes < 10 ? "0" : "";
33
+ return "" + (hour) + ":" + (minutesPrefix) + (minutes) + " " + (period);
34
+ };
35
+ ns.attachUpdatingTimeAgo = function(object, date) {
36
+ var existing, update;
37
+ existing = $(object).dataAttr("time-ago-interval");
38
+ if (typeof existing !== "undefined" && existing !== null) {
39
+ clearInterval(parseInt(existing, 10));
40
+ }
41
+ update = __bind(function() {
42
+ return object.html(ns.timeAgoInWords(date));
43
+ }, this);
44
+ update();
45
+ return $(object).dataAttr("time-ago-interval", setInterval(update, 60000));
46
+ };
47
+ ns.truncate = function(text, length) {
48
+ var suffix;
49
+ length = (typeof length !== "undefined" && length !== null) ? length : 100;
50
+ suffix = text.length > length ? "&hellip;" : "";
51
+ return (text = ("" + (ns.h(text.slice(0, length))) + (suffix)));
52
+ };
53
+ return (ns.timeAgoInWords = function(date) {
54
+ var _ref, now, time;
55
+ if (typeof (_ref = $.browser.ie) !== "undefined" && _ref !== null) {
56
+ date = Date.parse(date.replace(/( \+)/, " UTC$1"));
57
+ } else {
58
+ date = Date.parse(date);
59
+ }
60
+ time = Number(new Date(date));
61
+ now = Number(new Date());
62
+ return $.timeago.inWords(now - time);
63
+ });
64
+ });
data/lib/youthtree-js.rb CHANGED
@@ -1,8 +1,12 @@
1
1
  class YouthTreeJS
2
- VERSION = "0.2.0".freeze
2
+ VERSION = "0.3.0".freeze
3
+
4
+ def self.coffeescripts_root
5
+ File.expand_path('../coffeescripts', File.dirname(__FILE__))
6
+ end
3
7
 
4
8
  def self.register_framework!
5
- Barista::Framework.register 'youthtree', File.expand_path('../coffeescripts', File.dirname(__FILE__))
9
+ Barista::Framework.register 'youthtree', coffeescripts_root
6
10
  end
7
11
 
8
12
  register_framework! if defined? Barista::Framework
data/youthtree-js.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{youthtree-js}
8
- s.version = "0.2.0"
8
+ s.version = "0.3.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Darcy Laycock"]
12
- s.date = %q{2010-08-21}
12
+ s.date = %q{2010-11-29}
13
13
  s.description = %q{Shared Javascript tools across YouthTree apps.}
14
14
  s.email = %q{sutto@sutto.net}
15
15
  s.extra_rdoc_files = [
@@ -17,16 +17,27 @@ Gem::Specification.new do |s|
17
17
  ]
18
18
  s.files = [
19
19
  "README.md",
20
- "Rakefile",
21
- "coffeescripts/youth_tree.coffee",
22
- "coffeescripts/youth_tree/gallery.coffee",
23
- "javascripts/youth_tree.js",
24
- "javascripts/youth_tree/gallery.js",
25
- "lib/youthtree-js.rb",
26
- "youthtree-js.gemspec"
20
+ "Rakefile",
21
+ "coffeescripts/youth_tree.coffee",
22
+ "coffeescripts/youth_tree/ck_editor.coffee",
23
+ "coffeescripts/youth_tree/convertable_editor.coffee",
24
+ "coffeescripts/youth_tree/disqus.coffee",
25
+ "coffeescripts/youth_tree/flickr.coffee",
26
+ "coffeescripts/youth_tree/flickr/gallery.coffee",
27
+ "coffeescripts/youth_tree/gallery.coffee",
28
+ "coffeescripts/youth_tree/util.coffee",
29
+ "javascripts/youth_tree.js",
30
+ "javascripts/youth_tree/ck_editor.js",
31
+ "javascripts/youth_tree/convertable_editor.js",
32
+ "javascripts/youth_tree/disqus.js",
33
+ "javascripts/youth_tree/flickr.js",
34
+ "javascripts/youth_tree/flickr/gallery.js",
35
+ "javascripts/youth_tree/gallery.js",
36
+ "javascripts/youth_tree/util.js",
37
+ "lib/youthtree-js.rb",
38
+ "youthtree-js.gemspec"
27
39
  ]
28
40
  s.homepage = %q{http://github.com/YouthTree/youthtree-js}
29
- s.rdoc_options = ["--charset=UTF-8"]
30
41
  s.require_paths = ["lib"]
31
42
  s.rubygems_version = %q{1.3.7}
32
43
  s.summary = %q{Shared Javascript tools across YouthTree apps.}
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: youthtree-js
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
4
+ hash: 19
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 2
8
+ - 3
9
9
  - 0
10
- version: 0.2.0
10
+ version: 0.3.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Darcy Laycock
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-08-21 00:00:00 +08:00
18
+ date: 2010-11-29 00:00:00 +08:00
19
19
  default_executable:
20
20
  dependencies: []
21
21
 
@@ -31,9 +31,21 @@ files:
31
31
  - README.md
32
32
  - Rakefile
33
33
  - coffeescripts/youth_tree.coffee
34
+ - coffeescripts/youth_tree/ck_editor.coffee
35
+ - coffeescripts/youth_tree/convertable_editor.coffee
36
+ - coffeescripts/youth_tree/disqus.coffee
37
+ - coffeescripts/youth_tree/flickr.coffee
38
+ - coffeescripts/youth_tree/flickr/gallery.coffee
34
39
  - coffeescripts/youth_tree/gallery.coffee
40
+ - coffeescripts/youth_tree/util.coffee
35
41
  - javascripts/youth_tree.js
42
+ - javascripts/youth_tree/ck_editor.js
43
+ - javascripts/youth_tree/convertable_editor.js
44
+ - javascripts/youth_tree/disqus.js
45
+ - javascripts/youth_tree/flickr.js
46
+ - javascripts/youth_tree/flickr/gallery.js
36
47
  - javascripts/youth_tree/gallery.js
48
+ - javascripts/youth_tree/util.js
37
49
  - lib/youthtree-js.rb
38
50
  - youthtree-js.gemspec
39
51
  has_rdoc: true
@@ -41,8 +53,8 @@ homepage: http://github.com/YouthTree/youthtree-js
41
53
  licenses: []
42
54
 
43
55
  post_install_message:
44
- rdoc_options:
45
- - --charset=UTF-8
56
+ rdoc_options: []
57
+
46
58
  require_paths:
47
59
  - lib
48
60
  required_ruby_version: !ruby/object:Gem::Requirement