From 6eca81487a22a6f6c0ee922315dd1b2a5dac2f02 Mon Sep 17 00:00:00 2001 From: Connor Turland Date: Fri, 15 Aug 2014 18:04:22 -0400 Subject: [PATCH] started styling of map cards and topic card, removed new maps section --- Gemfile | 3 + Gemfile.lock | 49 + .../javascripts/metamaps/Metamaps.Backbone.js | 17 +- .../javascripts/metamaps/Metamaps.GlobalUI.js | 41 +- .../javascripts/metamaps/Metamaps.Views.js | 6 +- app/assets/javascripts/metamaps/Metamaps.js | 162 +-- app/assets/stylesheets/Fonts/din-reg.eot | Bin 0 -> 17988 bytes app/assets/stylesheets/Fonts/din-reg.svg | 958 ++++++++++++++++++ app/assets/stylesheets/Fonts/din-reg.ttf | Bin 0 -> 38252 bytes app/assets/stylesheets/Fonts/din-reg.woff | Bin 0 -> 21124 bytes app/assets/stylesheets/application.css | 2 +- app/assets/stylesheets/base.css | 257 +++-- app/assets/stylesheets/clean.css | 26 +- app/controllers/maps_controller.rb | 19 +- app/models/map.rb | 15 +- app/models/topic.rb | 10 +- app/views/layouts/_lowermapelements.html.erb | 7 +- app/views/layouts/_templates.html.erb | 34 +- app/views/maps/_mapinfobox.html.erb | 3 +- config/routes.rb | 1 - .../20140815162253_add_screenshot_to_maps.rb | 9 + db/schema.rb | 10 +- phantomjsSetup.txt | 21 + public/famous/templates.js | 22 +- 24 files changed, 1375 insertions(+), 297 deletions(-) create mode 100644 app/assets/stylesheets/Fonts/din-reg.eot create mode 100644 app/assets/stylesheets/Fonts/din-reg.svg create mode 100644 app/assets/stylesheets/Fonts/din-reg.ttf create mode 100644 app/assets/stylesheets/Fonts/din-reg.woff create mode 100644 db/migrate/20140815162253_add_screenshot_to_maps.rb create mode 100644 phantomjsSetup.txt diff --git a/Gemfile b/Gemfile index 8fd03a16..1c386aad 100644 --- a/Gemfile +++ b/Gemfile @@ -6,6 +6,9 @@ gem 'rails', '3.2.17' # Bundle edge Rails instead: # gem 'rails', :git => 'git://github.com/rails/rails.git' +gem 'watir' +gem 'phantomjs' + gem 'devise' gem 'redis', '2.2.2' gem 'pg' diff --git a/Gemfile.lock b/Gemfile.lock index b4efab8d..a8354dc6 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -39,6 +39,8 @@ GEM rails (~> 3.1) builder (3.0.4) cancan (1.6.10) + childprocess (0.5.3) + ffi (~> 1.0, >= 1.0.11) climate_control (0.0.3) activesupport (>= 3.0) cocaine (0.5.4) @@ -50,6 +52,7 @@ GEM coffee-script-source execjs coffee-script-source (1.7.0) + commonwatir (4.0.0) devise (3.2.4) bcrypt (~> 3.0) orm_adapter (~> 0.1) @@ -58,6 +61,8 @@ GEM warden (~> 1.2.3) erubis (2.7.0) execjs (2.0.2) + ffi (1.9.0) + ffi (1.9.0-x86-mingw32) formtastic (2.2.1) actionpack (>= 3.0) formula (1.0.1) @@ -75,6 +80,8 @@ GEM mime-types (~> 1.16) treetop (~> 1.4.8) mime-types (1.25.1) + mini_magick (3.5.0) + subexec (~> 0.2.1) mini_portile (0.6.0) multi_json (1.10.0) nokogiri (1.6.2.1) @@ -89,6 +96,7 @@ GEM mime-types pg (0.17.1) pg (0.17.1-x86-mingw32) + phantomjs (1.9.7.1) polyglot (0.3.4) rack (1.4.5) rack-cache (1.2) @@ -115,19 +123,28 @@ GEM rdoc (~> 3.4) thor (>= 0.14.6, < 2.0) rake (10.3.2) + rautomation (0.15.0) + ffi (= 1.9.0) rdoc (3.12.2) json (~> 1.4) redis (2.2.2) + rubyzip (1.1.6) sass (3.3.7) sass-rails (3.2.6) railties (~> 3.2.0) sass (>= 3.1.10) tilt (~> 1.3) + selenium-webdriver (2.42.0) + childprocess (>= 0.5.0) + multi_json (~> 1.0) + rubyzip (~> 1.0) + websocket (~> 1.0.4) sprockets (2.2.2) hike (~> 1.2) multi_json (~> 1.0) rack (~> 1.0) tilt (~> 1.1, != 1.3.0) + subexec (0.2.3) thor (0.19.1) thread_safe (0.3.3) tilt (1.4.1) @@ -140,6 +157,36 @@ GEM json (>= 1.8.0) warden (1.2.3) rack (>= 1.0) + watir (5.0.0) + commonwatir (~> 4) + watir-webdriver + watir (5.0.0-x86-mingw32) + commonwatir (~> 4) + watir-classic (~> 4.0) + watir-webdriver + watir-classic (4.0.1) + ffi (~> 1.0) + multi_json + nokogiri (>= 1.5.7.rc3) + rautomation (~> 0.7) + win32-process (>= 0.5.5) + win32screenshot (~> 1.0.9) + windows-pr (>= 0.6.6) + watir-webdriver (0.6.10) + selenium-webdriver (>= 2.18.0) + websocket (1.0.7) + win32-api (1.5.1-x86-mingw32) + win32-process (0.7.4) + ffi (>= 1.0.0) + win32screenshot (1.0.10) + ffi (~> 1.0) + mini_magick (~> 3.5.0) + rautomation (~> 0.7) + windows-api (0.4.2) + win32-api (>= 1.4.5) + windows-pr (1.2.3) + win32-api (>= 1.4.5) + windows-api (>= 0.4.0) PLATFORMS ruby @@ -158,8 +205,10 @@ DEPENDENCIES json paperclip pg + phantomjs rails (= 3.2.17) rails3-jquery-autocomplete redis (= 2.2.2) sass-rails uglifier (>= 1.0.3) + watir diff --git a/app/assets/javascripts/metamaps/Metamaps.Backbone.js b/app/assets/javascripts/metamaps/Metamaps.Backbone.js index f322ef9f..aabfe4ce 100644 --- a/app/assets/javascripts/metamaps/Metamaps.Backbone.js +++ b/app/assets/javascripts/metamaps/Metamaps.Backbone.js @@ -1,7 +1,7 @@ Metamaps.Backbone = {}; Metamaps.Backbone.Map = Backbone.Model.extend({ urlRoot: '/maps', - blacklist: ['created_at', 'updated_at', 'user_name', 'topic_count', 'synapse_count', 'topics', 'synapses', 'mappings', 'mappers'], + blacklist: ['created_at', 'updated_at', 'user_name', 'contributor_count', 'topic_count', 'synapse_count', 'topics', 'synapses', 'mappings', 'mappers'], toJSON: function (options) { return _.omit(this.attributes, this.blacklist); }, @@ -53,16 +53,21 @@ Metamaps.Backbone.Map = Backbone.Model.extend({ return this.get('mappers'); }, attrForCards: function () { + function capitalize(string) { + return string.charAt(0).toUpperCase() + string.slice(1); + } var obj = { id: this.id, name: this.get('name'), desc: this.get('desc'), - username: this.get('user_name'), - mkPermission: this.get("permission") ? this.get("permission").substring(0, 2) : "co", + permission: this.get("permission") ? capitalize(this.get("permission")) : "Commons", editPermission: this.authorizeToEdit(Metamaps.Active.Mapper) ? 'canEdit' : 'cannotEdit', - topicCount: this.get('topic_count'), - synapseCount: this.get('synapse_count'), - createdAt: this.get('created_at') + contributor_count_number: '' + this.get('contributor_count') + '', + contributor_count_string: this.get('contributor_count') == 1 ? ' contributor' : ' contributors', + topic_count_number: '' + this.get('topic_count') + '', + topic_count_string: this.get('topic_count') == 1 ? ' topic' : ' topics', + synapse_count_number: '' + this.get('synapse_count') + '', + synapse_count_string: this.get('synapse_count') == 1 ? ' synapse' : ' synapses', }; return obj; } diff --git a/app/assets/javascripts/metamaps/Metamaps.GlobalUI.js b/app/assets/javascripts/metamaps/Metamaps.GlobalUI.js index dccd5b29..13278b28 100644 --- a/app/assets/javascripts/metamaps/Metamaps.GlobalUI.js +++ b/app/assets/javascripts/metamaps/Metamaps.GlobalUI.js @@ -87,7 +87,6 @@ Metamaps.GlobalUI = { Metamaps.Maps.Mine = new Metamaps.Backbone.MapsCollection(myCollection, {id: 'mine', sortBy: 'name'}); Metamaps.Maps.Featured = new Metamaps.Backbone.MapsCollection(featuredCollection, {id: 'featured', sortBy: 'name'}); Metamaps.Maps.Active = new Metamaps.Backbone.MapsCollection(activeCollection, {id: 'active', sortBy: 'updated_at'}); - Metamaps.Maps.New = new Metamaps.Backbone.MapsCollection(newCollection, {id: 'new', sortBy: 'created_at'}); }, openLightbox: function (which) { var self = Metamaps.GlobalUI; @@ -286,20 +285,30 @@ Metamaps.GlobalUI.CreateMap = { Metamaps.GlobalUI.Account = { isOpen: false, - timeOut: null, changing: false, init: function () { var self = Metamaps.GlobalUI.Account; - $(".sidebarAccount").hover(self.open, self.close); + $('.sidebarAccountIcon').click(self.toggleBox); + $('.sidebarAccountBox').click(function(event){ + event.stopPropagation(); + }); + $('body').click(self.close); + }, + toggleBox: function (event) { + var self = Metamaps.GlobalUI.Account; + + if (self.isOpen) self.close(); + else self.open(); + + event.stopPropagation(); }, open: function () { var self = Metamaps.GlobalUI.Account; - Metamaps.Realtime.close(true); - Metamaps.Filter.close(true); + Metamaps.Realtime.close(); + Metamaps.Filter.close(); - clearTimeout(self.timeOut); if (!self.isOpen && !self.changing) { self.changing = true; $('.sidebarAccountBox').fadeIn(200, function () { @@ -308,20 +317,16 @@ Metamaps.GlobalUI.Account = { }); } }, - close: function (force) { + close: function () { var self = Metamaps.GlobalUI.Account; - var time = force ? 0 : 500; - - self.timeOut = setTimeout(function () { - if (!self.changing) { - self.changing = true; - $('.sidebarAccountBox').fadeOut(200, function () { - self.changing = false; - self.isOpen = false; - }); - } - }, time); + if (!self.changing) { + self.changing = true; + $('.sidebarAccountBox').fadeOut(200, function () { + self.changing = false; + self.isOpen = false; + }); + } } }; diff --git a/app/assets/javascripts/metamaps/Metamaps.Views.js b/app/assets/javascripts/metamaps/Metamaps.Views.js index 872e197c..f28fc113 100644 --- a/app/assets/javascripts/metamaps/Metamaps.Views.js +++ b/app/assets/javascripts/metamaps/Metamaps.Views.js @@ -1,5 +1,7 @@ (function () { Metamaps.Views = {}; + + var initialized = false; Metamaps.Views.init = function () { @@ -56,9 +58,9 @@ Metamaps.Views.init = function () { }); var m = Metamaps.Famous.maps.surf; m.setContent(this.el); - if (!Metamaps.initialized) { + if (!initialized) { m.deploy(m._currTarget); - Metamaps.initialized = true; + initialized = true; } Metamaps.Loading.loader.hide(); diff --git a/app/assets/javascripts/metamaps/Metamaps.js b/app/assets/javascripts/metamaps/Metamaps.js index 067ba7b0..2e80877a 100644 --- a/app/assets/javascripts/metamaps/Metamaps.js +++ b/app/assets/javascripts/metamaps/Metamaps.js @@ -100,7 +100,7 @@ Metamaps.Backbone.init = function () { self.Topic = Backbone.Model.extend({ urlRoot: '/topics', - blacklist: ['node', 'created_at', 'updated_at'], + blacklist: ['node', 'created_at', 'updated_at', 'user_name', 'user_image', 'map_count', 'synapse_count'], toJSON: function (options) { return _.omit(this.attributes, this.blacklist); }, @@ -900,15 +900,13 @@ Metamaps.TopicCard = { nodeValues.embeds = ''; } nodeValues.attachments += '
'; - nodeValues.attachments+= '
photo
'; - nodeValues.attachments+= ''; - nodeValues.attachments+= '
audio
'; - nodeValues.attachments+= '
upload
'; + nodeValues.attachments+= ''; + nodeValues.attachments+= '
Upload a file
'; nodeValues.permission = topic.get("permission"); nodeValues.mk_permission = topic.get("permission").substring(0, 2); - //nodeValues.map_count = topic.get("inmaps").length; - //nodeValues.synapse_count = topic.get("synapseCount"); + nodeValues.map_count = topic.get("map_count").toString(); + nodeValues.synapse_count = topic.get("synapse_count").toString(); nodeValues.id = topic.isNew() ? topic.cid : topic.id; nodeValues.metacode = topic.getMetacode().get("name"); nodeValues.metacode_class = 'mbg' + topic.getMetacode().get("name").replace(/\s/g, ''); @@ -1376,7 +1374,6 @@ Metamaps.Realtime = { //Metamaps.Realtime.socket = io.connect('http://localhost:5001'); socket: null, isOpen: false, - timeOut: null, changing: false, mappersOnMap: {}, status: true, // stores whether realtime is True/On or False/Off @@ -1385,7 +1382,11 @@ Metamaps.Realtime = { $(".realtimeOnOff").click(self.toggle); - $(".sidebarCollaborate").hover(self.open, self.close); + $('.sidebarCollaborateIcon').click(self.toggleBox); + $('.sidebarCollaborateBox').click(function(event){ + event.stopPropagation(); + }); + $('body').click(self.close); var mapperm = Metamaps.Active.Map && Metamaps.Active.Map.authorizeToEdit(Metamaps.Active.Mapper); @@ -1397,6 +1398,39 @@ Metamaps.Realtime = { }); } }, + toggleBox: function (event) { + var self = Metamaps.Realtime; + + if (self.isOpen) self.close(); + else self.open(); + + event.stopPropagation(); + }, + open: function () { + var self = Metamaps.Realtime; + + Metamaps.GlobalUI.Account.close(); + Metamaps.Filter.close(); + + if (!self.isOpen && !self.changing) { + self.changing = true; + $('.sidebarCollaborateBox').fadeIn(200, function () { + self.changing = false; + self.isOpen = true; + }); + } + }, + close: function () { + var self = Metamaps.Realtime; + + if (!self.changing) { + self.changing = true; + $('.sidebarCollaborateBox').fadeOut(200, function () { + self.changing = false; + self.isOpen = false; + }); + } + }, toggle: function () { var self = Metamaps.Realtime; @@ -1412,36 +1446,6 @@ Metamaps.Realtime = { self.status = !self.status; $(".sidebarCollaborateIcon").toggleClass("blue"); }, - open: function () { - var self = Metamaps.Realtime; - - Metamaps.GlobalUI.Account.close(true); - Metamaps.Filter.close(true); - - clearTimeout(self.timeOut); - if (!self.isOpen && !self.changing) { - self.changing = true; - $('.sidebarCollaborateBox').fadeIn(200, function () { - self.changing = false; - self.isOpen = true; - }); - } - }, - close: function (force) { - var self = Metamaps.Realtime; - - var time = force ? 0 : 500; - - self.timeOut = setTimeout(function () { - if (!self.changing) { - self.changing = true; - $('.sidebarCollaborateBox').fadeOut(200, function () { - self.changing = false; - self.isOpen = false; - }); - } - }, time); - }, setupSocket: function () { var self = Metamaps.Realtime; var socket = Metamaps.Realtime.socket; @@ -1998,12 +2002,15 @@ Metamaps.Filter = { synapses: [] }, isOpen: false, - timeOut: null, changing: false, init: function () { var self = Metamaps.Filter; - $(".sidebarFilter").hover(self.open, self.close); + $('.sidebarFilterIcon').click(self.toggleBox); + $('.sidebarFilterBox').click(function(event){ + event.stopPropagation(); + }); + $('body').click(self.close); $('.sidebarFilterBox .showAllMetacodes').click(self.filterNoMetacodes); $('.sidebarFilterBox .showAllSynapses').click(self.filterNoSynapses); @@ -2015,13 +2022,20 @@ Metamaps.Filter = { self.bindLiClicks(); self.getFilterData(); }, + toggleBox: function (event) { + var self = Metamaps.Filter; + + if (self.isOpen) self.close(); + else self.open(); + + event.stopPropagation(); + }, open: function () { var self = Metamaps.Filter; - Metamaps.GlobalUI.Account.close(true); - Metamaps.Realtime.close(true); + Metamaps.GlobalUI.Account.close(); + Metamaps.Realtime.close(); - clearTimeout(self.timeOut); if (!self.isOpen && !self.changing) { self.changing = true; @@ -2031,21 +2045,17 @@ Metamaps.Filter = { }); } }, - close: function (force) { + close: function () { var self = Metamaps.Filter; - var time = force ? 0 : 500; + if (!self.changing) { + self.changing = true; - self.timeOut = setTimeout(function () { - if (!self.changing) { - self.changing = true; - - $('.sidebarFilterBox').fadeOut(200, function () { - self.changing = false; - self.isOpen = false; - }); - } - }, time); + $('.sidebarFilterBox').fadeOut(200, function () { + self.changing = false; + self.isOpen = false; + }); + } }, reset: function () { var self = Metamaps.Filter; @@ -2925,7 +2935,6 @@ Metamaps.Map.CheatSheet = { */ Metamaps.Map.InfoBox = { isOpen: false, - timeOut: null, changing: false, selectingPermission: false, init: function () { @@ -2940,13 +2949,24 @@ Metamaps.Map.InfoBox = { $('.yourMap .mapPermission').click(self.onPermissionClick); - $(".mapInfo").hover(self.open, self.close); + $('.mapInfoIcon').click(self.toggleBox); + $('.mapInfoBox').click(function(event){ + event.stopPropagation(); + }); + $('body').click(self.close); }, - open: function (event) { - var self = Metamaps.GlobalUI.Account; + toggleBox: function (event) { + var self = Metamaps.Map.InfoBox; - clearTimeout(self.timeOut); - if (!self.isOpen && !self.changing && event.target.className.indexOf("openCheatsheet") === -1) { + if (self.isOpen) self.close(); + else self.open(); + + event.stopPropagation(); + }, + open: function () { + var self = Metamaps.Map.InfoBox; + + if (!self.isOpen && !self.changing) { self.changing = true; $('.mapInfoBox').fadeIn(200, function () { self.changing = false; @@ -2955,17 +2975,15 @@ Metamaps.Map.InfoBox = { } }, close: function () { - var self = Metamaps.GlobalUI.Account; + var self = Metamaps.Map.InfoBox; - self.timeOut = setTimeout(function () { - if (!self.changing) { - self.changing = true; - $('.mapInfoBox').fadeOut(200, function () { - self.changing = false; - self.isOpen = false; - }); - } - }, 500); + if (!self.changing) { + self.changing = true; + $('.mapInfoBox').fadeOut(200, function () { + self.changing = false; + self.isOpen = false; + }); + } }, onPermissionClick: function () { var self = Metamaps.Map.InfoBox; diff --git a/app/assets/stylesheets/Fonts/din-reg.eot b/app/assets/stylesheets/Fonts/din-reg.eot new file mode 100644 index 0000000000000000000000000000000000000000..0aab448a31d356fd7328381e2bbd31ffc6211e97 GIT binary patch literal 17988 zcmZU3V{|24%gm+BJGI@ZHN}0uyYBk_+?};{l4ob_ z{7bTuh)V(hX%YYc#D4?@_#X}p`5%V>Kmq|tK)`>Pyb=un5cJ>E|DOL~(*IFToL}|- z7yMrV1|SZQ0Vw{bBLh?b<^W58JHQTL3~>3s2n&D(zzSgg@BSYG0I>g`HR=Cn3jm0! zN-6#CxBpLo1bAKoSXBY6+5n~}^y#yhF)tm>aVuSC*+4IH(=HcAOGb%j>St)NkWKud zwwR}f_cTx`xbR`Est->aHyI<<(gq15(mf<~d;g$myu5$>WZ&h#<|K z*mKg#2%qXVMy#|#+R*rq^jj>DEyoHMwLV3L_`B z^JR_8{e1Dzdq6Ae+gr!Cp9X5!_k+&CRtD3bSG>;bp%IU-(r@I}0U?R$W#uk0fT|+? zn1SfBT+>|F)KHRA0BwzU9cvJ4ukpWRHDCROUz;I}){GH^$WvsKZ2o2aoWVo|ZhEvR zR+P%Y^~bH`kcxM;P12#qhh!jiUW(@YYVuOnVsYK{3rAlliEgyg_DIxf5`K2jao;`f zKh}rxi6ZECTkew>IAibK}j#v&Gjdi4>Riv-mXQ*G8Y3i*=QisIJ8 zPQ}VE@`%6jivu`uCz}+H)*8|V65(Mmv#do~_Ccr4O>n0)jhApYG;@t)ersA}#^NnW z&0$smm8OzrV>I*Vj%ct527CbX*mT$)FKveA&7bfI%qRpE)_Gmwn4r#}3a9oxnZCkn z$MNTag8Qj5~p*{rMC<6I=u6^}8Yvp?k#g&enn zccyU)yVq#GUSL=dcSHN(M6oBaS+D?v=YmeFD1Hs(`wm=0G2eH>y6Z=@hBRhcF%LSC z`8XqBf+-tysd_LJQOq?oee9a$^v1*_(ct*rdiR5ZR;=D7<+mS8$RkCcIywnfX~}*V z6o)ni94iIjE4Cq}ebCj(rs#wzv&aSludT+_A;QHF)QfZYX zc^Y@aS{F!#Tlio#RHg=-r>Qt|*lu*A@D!^9s7Z>uOdcl3Rrp&yai`Tmwz zYkWShG~l>MXLVPU2Tz)T%ZJPC`GTVQK`zeKUh%jK3Cd+z%0XM9T`S3v)R>Xfc`goQ zlTP1#VUWS=-qgL2_`wM{=cl;bxpORZzDjtVnphyDh`Qh?V|h(5o8KB~M`5rCUl=6m z*MJMi3~cdT2`wN>BwATIXr0}75+9PK7^dlIgd1hPA!z`ovUqD<+h#5l$_v5e6f3sy}&1!ba0ka^G%^oa?ZQHji|^J#W@x-|m?D zD$i(AWdxzsWP5J*fWi)Aia<-K5t5h7x#=`N`gX>QrA5-B8x`V(8z&T&!uJen}?aY4|2<>H6SV7&{$r)`FW95t3msP$8*Xo=*g z1&w}`dax;BBhqt9rQ9ve6sQqc2MlMG^hwK zInM8tB8yap1-#eMM@8rhGDig|G!NFd_4JwrDm~#vEu?}WY{4siPbwKDR^vAD6z5cM zh^INa${aogycKGcFnYoN%FK{`(?~@Ec}k9wjkGJ9m6c|tRHj`#GX5x0S1tM%L+$zG z8-)~Qi(dlBQ+O5=LOhGDc0b~{e0KVPTFy}M2lImxwC+$3(L`jNN2w~N|E}n4N_^7Z z{}vRAUD`vcVm!RP7DQAOf~B{UU5;Z)%$A{w(>TV$WFTn{QXfupiRlRg1a;o=x42_V zl=nTEU%?mY{_93nF3alwXodPn4pzp^uEOU zI3EK5!GH2LsJFyqi5iI(WT5H_Uo`}m=YE~W(|MzW5+@N$LIu&Z);@p>hO!x*;mFda zRY<5HgiY}1coO4A~iNz3NKqVINz+v^x{ zm)Lc}g-}l63rcVa#myGaEYBt7J=Wv?%%y82)FaGMlZkv(jsu)ol*BYkN%SRIoQ#q( zWyxN%QG{~XEdth3WI=tYA_`q!yqJF&0{Ku#?eqPAtWY< z(riR&Vj6)O*6wGGngQ0u$X?(IW{Qab3rUI!uN|-mBeNm(2+>3)hdj8%r8oZQkMr|? z(aSyMETB!p+Q*)mK|E;wO~b6n5PSU`JP0#UFX|1sM#f=>M({SUWEnDTWwRJap~fX zY%ijV&MUQ$nHm(k$=h>QGpbATL$-p{r}3Se!cNk?D65=1lG?TsVwFoq0& zmGM_{F&=hD0#Z&=FEWK$9tllu7gcX=I97-}fkz{zh!OREW-6Poh-5#)+UxfyihKiE z<|7(mbQO+}EwfGel4(jk!^z=H+F5`M5m&Kow z8W~x)w^kU7RX${P4R}+9k9hc8eh`!Ld_0pPoiVh8ozcL!ppnSKo!*4*Y1nFjPovew zX)HA>rpBG>9Vrgno;Tc*TCjyP91el8^^`qH7JRcJJS6G~IPs;pDrE7KVCKULe@g>N{g*T>|M21B*t_CR7`1+S2l*NY`P-%yqF_?BU z1%&USg%-Z>QWk)bk>g2|S>=!+Kg5Nmv%Lb(3{_12JQ%beFGwqvs6W4H#(^oSaK zA#(esUptM-nd&t@%$fMd)uU45!mrPmZWPk%($qt{u9n2j){k< zzz@$VdYZtMavax=V*=qx?mMJoZvjCA8N^I7;~IrFIhY`L=c?Dh5n}u2uLgyMf5(3i zo%3&eLaj4`f}e;`T`GpK*?Tn~l;3&)?n0aADJ~`uFrK6#9h1k#e`w?L7_HBbcYP38 zhX$VNb&+{~)+(AP(3HE^UNX9W@!MLjK;_(+nkAeI<;Dx`Dix(<<WEabmPq!rL1rL;#4985TqWBalmbvkqWq0&9y= z6pB;_S0avzen6FQMJ z%obpcDB^YIHWnxEMxC0VvaGWuHP)pM%jjA>mVpip`olvu!I2vFx^ebM@V$?2I*t=n z6V?Uh{kRC}mw~{(bJE2pDdy0J_z+Zo*P%I8Y?%5C6qFz#CL0X`6-`q_bYlB6I&G02 z1ZDF|cZtnkCvp=qpc~`oHk!)GbTnDlsjNq~09E84YdnR?c-nX0f9<_tWQ;f`9?G!q zm96+WsE}?hqLm-%&Ri_aeuYs6DMeP5WVe2f4)^6Q>uqtu(mgbOFbB{asgS6-8JF`I z7fOZ7#^e)6s+5MxM#ofg%-sE6#$*wE)}1IFGp?D9*`r27m4WxD9$!vSu$j?{_y=Dx zw84Yq%iUleot>NV=T#yFIm*p6fm z84*6=?wKOZBD|ektgZ!=a%CB8P{!)q;W3CXH>z^<(k?DrOgQZ<^}W#Va!pCXF%vzN z@T-+|mHFV1YunfM2U!uMAmw*neSWCGoZ{EvU3LkQJpxGbJsUj!=mIF?ZdCVnZhq+U zFjc@(Ld1gNyk!<%_HA}MHX`XIFky&lW0L3Id76MpXZWE67JaEH!OLEMD~Y^MIsR5M zVX53`KN2$&}~TvNoU9Q*5DY-%1&#eGGFl!6C{NTEHKk5Sa2- zv~H8t;Zj3kiwn#n*k_8iYZe}02Y?paC@ww};)06EBF(h)`PPHbyMc+6Ia$4(inB&= zvoAi*_ekaD1>Yr5!NE5vM4pvF$+QoZ;S$(zbjP zvnSh;M%VzU2P+e9R$QzjHR=4%3uT;o2a*C@^e84gCBJ9!@G&Zf1~&pl6mn7|^au=h z8O0pj_sk9>!KpJ-fVF1QB(Vo^x*DSbSiO(cBxWfiT%U+72+%vdDsY6JRGlzyU8>lM zjjX-(k1D-v#2DoTE5{B_%~WHh_Zg}g4f_e7`{W5?JJ({|t{UwEq)7!wqJn~cpXBEy z_jw~vE;-M38KwAI0*IgXn_-x|XR!x!^w;l57`|BZWu@{SalpH||xkX3;M$&OgXj9C|;^mNdYx$Su!*r;*{|d9cRD z$4UBox4wOaqUq!PNt_wG;Ad#zqkNf2&Sgs*H+1Wz$p8auhqlUqH5GX*}>v5sG6pTPNPJLL{RN97lSISn*}?N4xSp6 zSX;9G0ivC6M9CgoexE4*mpPpYvc#ozmRANlDssu7Sy$0lV1uf1;`HjW`$lQ^mZ|&^ z=BpU}3oTecC(xl#%#12;mpT}XUPwXbwgOPl*siJV?Gh3Ha>RT@R7ZTbT{3Vzm~I~( zxI+f0Ck|SLFk~-M^_y`K36?vxPFaXT35I7wqW<7f%!O4D*QJFf?GPy>;b|D^Af`&s ze4JULk9;!j0yjMaN?c54n1D|>ExU~bH0IY2c!Y8}`?)E+1byWCr2@@RRak2>!bc&b zJ}Zbuv2zl=lN_G!`qE-XW&Y;hWz{|yPrlEZDNOvaDFNc^%?yZ0PnGbPLkVY>v^sw? zL2>{67p!%%nI(~%>`XZ6d)ycl0Amx^kA@V7bAlP>M8P2!c>-)C-$}^GN6dFjl#Tzj$UY$yHQz36GA%U9%T_FER zwxFy#OzEPI3-ev_EzB&v`WtZwmN=Z-wfq!btF}x9{#jn;Z?QM-ZY0L?oEq?;(fW*G zsox_Y&dxuF6j?w@f@+>>b(Twmc}7;AvMZ!V^mwTAh!>3cMyBeUQ3nF&z=E3HeD_{t zW^{DUXv%V2d8T^Gs1YFH_vF~MA|iEI6WrNjww8cO{Pyr<_nq@DQbQ2gFWzmG+iWT525ZTjzsl&xhNmmG`GS8U>+sL@wIH9u*(e-j>7e8I@t zYPCl)V@=ZgFflYQ?#9x_kSDtyDxtJ#F{1horU@&=qUSAM zU~zaz_sbc>n~noP4RP_DNBj)MsS3d=upCXc#iC>`>l{d`E*Wp*K2>V(vlj}~-1ZLBdcCTW5ZnAD^_uz2z&tftnWsUS+S!JLwpaKZ z$b^d(66%y#&J$^PD0NdIjMrbO@9Ifk$x5@t1JQp34fBZ=Y%?f2Or`Z;3*?+b@E`E&2nW+JM39HZpXh$5~gc7?J|O*QQZ6|o%gro zE&Y=HBe6UNtj1Tt2EY8dm)V5rq;A?RaPK|xLq-}RKli{kuSh{6b81+n=L@(@#x zkRA2=5A}QB&hg=%)ecN%(B4DeD-RHR>U+x5E?i}sxdSlh(ZlM{^~oL*;k2m9|7rI( zMoqof{CryiAD{WTgf>^eZo!Apo?ch7=CV@gP_?Ne?&CCB95@WKw+PoV05N!0rSo+% z3?N0HV# zVTqiDi&OQwDawrUceocjEal<*Hx3m_aLdz@8nz%NtyJz`QtrnQ47H_&Cih1*C&(Fa zut6RQhwc8ff_)L^9e6Hy+$LLnmc&iv3e>K*!4N>zAKu672ZeCpjVu20fP8n|IKkeP zo#zM>pd=7MO>H+F#?hcuq1v;OtG?7jauc^hFbTS9M8qMARtVfmWbWFVKdwNOhe27L z2h_p$mdh*_>5Td5ff^wx&dlT55dCXLglAc|;?k^ZXE#5Adn8XYRDnwTXjU)S9W++` zI4ixZ-MT95l$L=f#8m$Z(Zhdsj1w?Wq4ZubG+Q0jk1**;sUef^g>m_?Yb4SmC28nB zu>I$*7D)T2LuCzfohciWk zW@!ZdRyD|xh2l<}5TX>j?Wo?cb5Xf|b+)3EU?`ay2sDIG1bRq75cYSLd3A+d5zMO| z^+{JYdqF9v1c~CbkvPZPQ_G8Xmfs>QGep%~8JT}+lTFV1MLYg|CQCRiNqDX*j&dWW zx-Us<5KXf#8w+j$&bGCTD=Fg`NT+r48dp%G|9TV^BT}MtHj;fytpDkGRsrvA(3k=v z-N=UqK%ks(TVRBZ&y-AkEuAXflKkaiXM_aSvKgkHa6?nUaVD{Y>TA|1Qg)`J*w|CC z$sD~Zp5!Z=Uk|$VQl?MC?2158;<=+0>J)o=vbRtBG&mJ)XP*b7E_0Ef(MVN~GJ{uO zY1TmZ6l$&EXV52E&)#>j$hxsC&RUh8ckE(3t(stxMw#0^8!H^iAWu-^6xfD@GS21s z@Z_}tX9SeWm?VcaO@z6Olj*|9W&@yunmDFfmxhj}_NOyDc{VhYcS zzeOfMp0l}0R`aWX-ILhw6w_F0yX<;ml=y@3r9lF{moB0eTE6%;J6d^E7LgbqxA%J2 zJ|$(0nrV#>PE4*hxA~V!1x213iy!(h27fVSB0U#jeS9T(aMlnE)y9#`kC?M#Q2!TzEBdPD<4$ z9qk!4Q@e^b`$y>5skLLEdi8XyqRz<>;eYF;&{GSK5Oj2Xx7 zV>H|-qdNAjUhdzL#E-Q{+vuL<(`yt0VkaS35p_Pp6&cCXRVX`JIA2IlRiz-YE4G64 z0etJmXS_(5Z-2p5LcwCSPP-6wg(&Gr(ns0+yupp>LufMW!%})>0%T&ci_W=m$iCEcwk+>-$B+iAe2TBCKQ&B>=me^D)<3 zR=8axHjo^Vb#Ve0WekECcX> z4|L*w4agBtZ>KgL>c?r-9)f)6YwAdnnznvZ8s1F$=7#UML_FxF#!T{XME=)H@Naf0T!!uuEqC!^6!&orQeok`3f4qspWgeC(FKbNBEi5=r6pn(pt~f34j6N#o0-nvZ0d z!w$2igenLlsX;K`B_@=SzI}s4P}5X+pTSpF-C-!&!dBe1$xfi7Z{v z+z3bRGvuR<{G=sUju~SfI&p52EYBeZKS3TH-rcdpwAvA5&m8BkZYin_K~U-uOz?O6 zarw?_k@1Q)Yq2=1LLLMKsUkpIt0pn>(@hCci5My3&{~p01#?&aGmR5#yH7RQmLCE? z%88K@c@B*zEhxUa5t=C+36U6;Y+$9tjbEE$cu6&oInl$^l9G_Ac3>hV2xh-zEnu0P z4VS7XybJ6i_aLtl_ZNKzwIVVCboA0m{_@Myk+yjzj)k0}S>$bVVK&r~P%{%#7-%mW zHMgW^ZlEC_69xTG(H4d`gp4ifg@r_K5P;u1U=+Gr@_PVgKLr&*$kDT_umH)^BsGUJx=FKJD6fsD zixaHD$2}@2GDaBTBMO}{e5M0M!$;d^ZjOR84~UIilXgyv66}fIs`OqStIv=w1!a5x z^=q&=)i^;!SM*}AK3k1#-PpDb_o7s^ zKk5*Oy+vQNf-0FR^XZuU5mDr?VR(oI$rrFMhtqbIHux7PXIU+48L0@W%%EJDfPPC}|dGn&cJfPTx zfvv!W4Cn#YAwXy3uYQ|Ukdr15p?d|!wI_ZUK*HAH?=2W+mQsGjI%HLHPxMn#jl#`O zK()~;kQ*~ug8Kkjl2n4O24CzJd&Xb=1cj+=gAHzf4>$v|C9J}eA;5@4*Yd1dtdP3sS(p)L;}U$|rWtIX2C!Ya zs?NZoafE~&#XRuHNS*67h4Du*RyQ7l%z^jBaq%H%$kX4895QBF?EHd0mPh*s`OPUE zi?Ea97WA?d6mg>xZoB0)^3HpgbRSkRfULYJM>=8&eL5?(sRb&OA0lDq+%)2&FlIXt z{lUe1JNi>UhF9Vjul7?)i{iA)? zjt|u&K*@RaSb#9F(0LTM4G@+yj&rB`e;|eN4uGV>TQGIRMkIrjJDb`Jrb#_;ZUxnO zf&0!hJdYewd0soHu*OKEnz4UOy?l352Pn4xJl@Cu!+RnY9%W{Tent`pugrz|gfS}C z&*PGqb~z7Kj6ws%4M1ik-Zi7-83ItCxdE)d0Iew5+Z(z5%uE@#uJ|=)Y$y}}A$&cE z&adT|P;noS3|#OdfPcvT{#~w}*^k&@@aeIMd}dHu<9AdMbFRCq)q5F_&=XSh)P~!zsaGjFOXexZxR|nTb z#f+Q%qAq}wVWAV)tbPZPIF;Cz?@^iiUu40rSywr9r!)mMV;+%7Wl(gMa1-7(V8Gil zK=YVIva3ez+?oa`3-7^66jr|Opb6i7ojdiz;fsy!B8=iT1Y>@$pCw zBaLYEu9C8b1QX#Gt%T38YG5=?iJcpe!j@f(F=$By-GaEf@6&>15KgW-oMn{Na?P-W z*bm0%xSPYa@jSAS9zMjylQc&734(A+^o}VoT449QhqkY|Hq>62DsQl{CQPH^?r)!B zF2VjgOEI9GfxOXJ&w^bA@`e9)0HSAV?S{to#P{Z?r=+qr?1)Py1oYwi>{7-g78-R{ zpk+&^x5~?fL+h!jlh;CI`yu@^_POxXjL!OQv4jOmo`pWZm*b7Bb-0{eFhVg9Ca*@? z_oV0c@4V`0?d58xaiu>laf{1ITMMA>loPkEMU8(a|6OB(=s`x;R6<9!h5 zQBJnv=)Bsaa;)UnK;?Kj0h(1)!GfSWc+wqENuC)RG*wPouRZCg~56#$7_ zMM`i%#OWTJmR->fH62YiNc_Y_oMOtbUDe{HF z93*HoWM>D6Btor&Vb?nPs_)C$-U;3Wgg&eeK;X`_Z&ZYKAy1=TCaFd+g&Ijs8Ld@* zud=}eE>V}SsGfu#g6WqVUQV9CFp29POut3M`R{hXhEe&|)`HttT5LIw>VkguvyHVS zmO@*qo8{8fgt{i2d9r?>BNyL)LPTaASbtkRUjyJ%*+UHpd9dhR;?lqcJEQZwsXsgOa355$TM&UCO!LaZ*0 zN9)R)Na!536_UmKvwJ}-x)yeHwQ0Fe0~P9AHAaFn3H{6>#QT7Z_=t>nClRle!~~&& z)UfvMVPCI=SWt4u^p3KdT5pj>8 zG`#Av*Kyx3&zA=}ulhe_6)*!ZF6P+X(sif*Ef|hNt!ThNHtDmU(gJrUTtOW{`PmR6 z5obZL%~kNK3sGgQ5jfb+NfZ}CxEQ#2DSV7Gu0bTQ<3u?6cmey)bn_CHHLng#e9_T# zz#Sv`{N?QtLElKsSL_$UOAMzzqqo>Ra*or2ZCHN?MrYbJf;Uk>R%ewQuTIC05EAGgDn=6l&%^feek)2a1MPHQ`E*$H8b}anRB@L;zizFVTudq9x7FS0&!mRbWM_fD)_~2>F+z_cGrd zEDN$MQL`|2r~IOsuTr#=jTw!`JZXAj*+Aq*qZXs?1eHk0s0UuuvZ^E&XUYJ@cs3kb z0jDEyeQ+>PFOSn5G(|wGCNBTA$KOKyEs`L}nUq`8B1|R7 zhgz^RvfH@h@$ax$WW&pmsgC_*8J0V2hq|1@z>2U>Fl2?#?tl%>M7}JLI$@iUx^Z); zls2|p4=GTBy*9yYw)(C8MC2D1;&)DLRTZZ(Gxi~q_+G^K-N8xeR{9_I7iMH-`Qzg+ z{eb1vk?&#Rp+qOf1A01^Ko9Y8Hg1s&)o@Hq9i)~aI=M_w{q(h!NW8>5S!w-WG1yGg z^9ITZ&w%qrp_kXE=5O+q80W>mlY%JFy;^XX-enzQF(ClEOvV&c1ew3x zt0U&gooM**r94z|oPPo4^?p(?{8va$2If*>v*S0`{j)yl5#J4qw{oUmgW((*f>N%i zlALb*Nr3cT`8OCIUv$wAetjH)M_^G0dAXRVmy?6j+k;SoI-(u~vm3XJ`2<5qY(agQ zCf}lNa$w!bhKOu34bpQ7O2C;3CR_tt+Eu}Kf8}+iwx9l%!qtH$Fi8V{`)bz?0sw%J zKqCO=d_DVhE_PgS_}27_6VFsgvAh+i?gNboPaLf#%9)g8=n?`ODVhH2Cqb=MLBNiK zx`Q>phLRThw!Sr|=$Y(RUuhdLhgU-Qtw}x!m`ir5;^Dz`06THRQ8NWMe`a1+O7WcM z+X{_MFDzX=4mU};{5kR)8kl9pAVH-Cw8F{4Fw0-6ZJ6JAm*S?D2^+6UC6;Ot@O7!OiYtg!_hRreczV;*5LY~h2J^sU9_ zi<)dwu}$4{4*5kMEILeyYM_0=dQ^l%#M!41A}uf^u=dOJ4#14v)@}DD9VA>v7X_@| zWowZZt#>g!4njwT`oTdBLv5ifGD+t!Fj5Y|V3oR*-!j)3Un2gpd*%8>oO?#3JfDL3 zT|NY5y01ERcAOPi6E7O?n=xskf*xe>y7(GYM@-^3gFKgj$n~IZ^kPFA%Da=vD#6jd z3iGam3I$DSjWyyFo0$+UZr?$6zD0C!Bl~ z;1@vpC%`~pyb<+X%N27>SW_V_0bBb@16uiR+cggelDAJpL;PnTa4Z2*&W~QMMOsX@FP&(Nnb5Hyr zUy|yZDPe6Ii6%l`!|4m$i$cPq(eVX%mn~ zavyRC;n9cIe$y~4H%5MZHF;g}W|hE;-y-B_cSRs;KNKf_vA({{Sla}pQ%#gge%5F^ zAtFE5f`*-?Il^-_R}Pu78V7!u zbgm3{5XI@iNKO~u_x*ZO)(HzJ%aG=B`qNmtV2rG6>lT@$L;Kh|61%yL5w8Ph)F}W_ zs3j3hbR5js;~A*YfERWV53mxt6miZAgKIfg)7TWgpq5>*iH$W{OhL8l>cZr~5kexq z6jx;HA`)TWPc=|E@H;WO@)*H*8rlTWh|}E=THAs*{#S$)EIDOfiLzYoAOF+rH%Xju zf1je~f6@=A_G%8ayo64|TqfSu9SdfZj(*NmJ%!D5cfeDu#2T%!aEG;}9XB=jC1n58 zQ+j>28T57}!XKxH@ytk?mhj&pCh}u(7-8*2HaFh6*5keN6?_2@Y~c#qa$N~UPK&N< z$i}8rTejy!L@#tq!7i5)%`h*la57)uq~nQ)UDz9cjp4Nva$cK_kZ>t=gmTY zUTyQmV1JMb{siqYqQuwsWOVt?Wu|#0DL*LU6EQCS7n%$-2;!@g4DGqWq6;~eG+j(C z9lK&y7OeK^sAfw4{G@dbz(9QuYgN=)Sx1K$o7-TN3LpdAg#Vt<>H>35FzzF{qQ^cu zFSI(9nR}`dl@GHwt)?jBKS~+_YS=_P126KfD492Vg23QeB+1!NNC~>QXHh_MEiF9fK7|9)y$yDq?tXfabHbfjOlPL5n_R_f zZhQ&&N!~PvEOg_u+ca2_NWnPa*AL{SCbo2X6ev<{!4GokO6o|CG^X zZfaTuQXd$)1qZ|U%4T1w|8q{Do|rfyhZWoUm67CTp;j z1s$YFG7QHfzx}qLh4Kz_#lXcH0pe+6x&5O$SLSz=TR^}<$HzFCp;Vm04HeMqQY|9$A~p%3`Uni2G`tVp^lp_4;F5Q(T??3RQvn9X#Y$o{V_ zkM`Vvj?P|HqZP>pYRKmm`591OkE03B+VX?qW~0%8E8*t?yxbR5rcGxK+!VET$GVNA ziwG=bxqi0t+`c1QDygA^5ihx)9_RW`wh=Aj#^lG?F|RDN^z27j?aezViYt623Q?r_ zLm!!I2lxiE2jr2(i%)$Dao!?1|K}bXQ(HXVTA4K=t6owAMrdA6;*r9agzEhq+-HU^ z(}|ZK1N7SAf7iZ*T`Hmt`iEc0dV>8{!hg^x4OcW7?IZT2Fw=27lvNWkgk-#JaXesm zWqWBmigu@*CMRMV(m&B3HuAOaDzA99exh}1FtJ-YoR!AUVGF>&G~tq-Wp_{|?<|zU zgAUc!N@~{~uW0%S(&GK>IF@gj-{lAIvO72!&=!hX5CP^%?{1M4A==_Q6`3~J z#Yf|ywinfZ!T9<`^3deMT2ZW=+>)j-Y(q6v@)_cAgwt}$ng?o8BhQyk((hceOyI-&>c|%j}&#x zntLim%C1V$yqXQHdz!=m(S6=qTFymSOUm|}lJkz(M;J@cgLH$v9|PJ0tLQfqS0wiJ zXGJ+g-ygFw4&qAl;xs8OIa#{J&oBjXiUOqKo`+l+U2>XE-uc{l&i?Yo!>>j`xVv$r zG4EIvgsC(QLW>j^cB&UB0UrhVr_cEP@xjT=qBKJivfV@h)RImmF@jgJT&pk`{3XNm zNE_lt9qUrBDgqf;JAKcjSBY2)1j@gc+h{phsdvUQ+Gr{i_-K)X^(6B4$XoHSGoO9o z8;vtETNi6HF;kZ_pqvyt@l@l~p`l=MvqpETB)Co}T`3l4x+t=<_^hL6CgQFRLmnF~ zrnui2Mhu~Yxdy*UVe2P8M*1Dr!2i}V5RhE|1--wh_H%MgB1swSU?RNA2v(5ge50KM z4xyY&0B>m1pjC1|VCkAuj<=7sq9eylM3Ft;86|q&ZCCB&8HLq+=-y416iar^HGrlA zms@1v>K#%Y*gy#@lFCztVg z`_w{VkKTCwG6P%1p59d1qw`dK-PPZd_x#SGMh{t7?#p~TXQXea>$oz9Fmwq2STE4G zuK1nYsIaGniZhzLs$oqta!@)6=y}DpK(0kN2m9BE!<^kZRRq}x@f^!trkFARpm0S6 zPd6TLACEy^AWcim*3S_AY{l=*=fPYx-&tVA5pyM5FYH1k+k&ec$2a2zmJRlXLKQJX zT%?$iPNHa4Z&pA!^FzZn01P36&hZw8p{q!D^3m%WFiL6fPJygJ%6q-Em-fk3 zU@XzKtI}q9g}o$lNpD-(uwp%6=()47sH{_bgl|-22`c$w(=-!iM>*#F(Jp@u>+Xdt zN2jj})U#75>651I)!}dW@V^5DZ0L1@%Qk*^xZOwrpQXc(+|XnDAE|;IjnMzh!$@NK zXBw2rT^u#xE=4xA0v~8`%t@^!{ zHYus*l1Fk1%U!r?&@Y>VPRZk#cjKIDkfyG}OH@=*2d>^BcEJ~l>Xk|wsq`pMuBFaDBQxSA?H{y|)D`bi}8Xfwy`?C9rvv_?*XvIoS5daINSo$p9s#Uq}GC3bY1{2Nr2x)JZg_iieWF z10OzE8D;_gSwKae=3lpYc+*tfz;Wxp#Q@$&FEGWt78qon{r#4K6r-^YH^|3Dwefqw z5u}l8LYy91$3zvCW4Ib#vEbBv;r$)iCr)!HCKH_%#fJpt;;)j)?TQipivOm{SsK6R zHUwd3CP}u-?xSaQD4Kr&g^8za*6#~JxHTqH1=jfNQn}a=Xb*&csukpynWKsRPXO2j zC;CJJOHjX7p}eXTWYS%tD27E?uMvf!d)xc&~2(DWF~IcPGCu|`IYkBM4+GR0Kn5?_mpIrz036Hn85xY$Kf zR79XaMmDsa+#z9ZL%6~hbRlPZ1S#Jk-w9m^*oim}1`HB`5`3iA-}X5_^xAqkcfQcX zIR#yZqg?AXeCGixlV#gygSJDcrkod0a(0(AXs03RIdviI3i&PdH8-R7=w6&gYtb?3 z8K8kz9PVq;E<@I7OX(h%!wI=$LADTfe&ynzBwaKOiS}!u%5sA1#z}}^Q~WNzfzVJ$ z#kc#}Q7zMiN8RTzw^4q=%z1o}%aV~g_SHVn#|-5|ry2bJ^^xm@#TLTGOz`Qjgys(; zkG&-b=}!~Fh}r=PQFKIe!Pjh5uy+aoe;;(*67SJ4Cu((L)Jm_s`k#;D9^PV)Z#?|p zvHf!2@H+{VS0*e6*^Qdtjm4I~Hg5ZE`7x1{*{qg)d5Dwz_zv)Qi!fpbe&}LUjy~*oYhSCaVUr z){zY4P+GcZakD@o2?7HatTyc~E*n;K&a0PT-?K@3+;9Y7m}qRau?m;O_zqqOE0g|s z0~%Ob)w=lG?hlgs8-9KghY4AI15{Q(X%a@;EdI7SA}U025K%$UtpK2KDZcWegSHe4 zSMZH}@<2Des!M4mBh3`<`-AKL*Hw78Bh!3E*RN+>HpvRvX3)V(`#iW|%}lBEaN%fVs zL}2Mrc<3~Yt4jrOR_L7aNkB1R15ehK$`beG^`WH7!n@Biq9hjS8t5H^`*2R$!tlpL zbw(hBJc$yZIwNpn`D88ZIP-~IbdT+4bJ-QB4TQRYdW)sh1LDAHMaok2fB3wKx@i>@ zMJbCH9LSY|@l~E9M3wI>Np9|CqUGiee?r*^FjpaDMom1}ZNek0TF8qoE58te1DUix z8F`ye0vN(N*Y_I)=OYu1oq!?aF2HQXr);QXS)6wp1`@nYfiqj|*eI?WAUrg9b$oIZ zS*(!!bta*}P;6-L?PJ#@5Y0#~(b+o?Y87C~0iC774gU)(^OcN@g1{~Gh^d(%Q0Aq7YEDU}D98uBAmAMC5-XW6 zPxM4M4H*oSsE3ga%$0h85uo}`$ioA{$Z}3}OX(w}l>huoMg-UznUNqs32QWosdm@o zX73_S!%RSpseL$d#Y$nFKEOw6gtT=!)aQoN)h)E~I?n}HjSvFDXLsrAw(zl9`td_^ z9Wn&uQF70Tlv1=n#C|@$1>z+*nw==PXVU2KZ!E+~iSt6|CYsO9K=dLC~=0nvW-?KXGns2brK-;b%HpNt7vD3{Z7S2|PQ~ zupCRpzvOEdfFRK(8j!3m${b5xy#_yxrcWJCb6Ff0o(VQIp#C4pgV zj8Q&+{w$+4m{AqaOKDBOFdXGkx`@J@YTKQs_0^xKK;BK4kMs|V+lOc$w+Q@N+&KiE taTMg2A4-SPJEIrABSC!AcE-#d&;Ql&fI8p0YAnglk$yaiF$a>l#()ZqNTdJ& literal 0 HcmV?d00001 diff --git a/app/assets/stylesheets/Fonts/din-reg.svg b/app/assets/stylesheets/Fonts/din-reg.svg new file mode 100644 index 00000000..ba412d34 --- /dev/null +++ b/app/assets/stylesheets/Fonts/din-reg.svg @@ -0,0 +1,958 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/assets/stylesheets/Fonts/din-reg.ttf b/app/assets/stylesheets/Fonts/din-reg.ttf new file mode 100644 index 0000000000000000000000000000000000000000..8e000258b21c4bf482fa1926d1fadcbdb3f42b5d GIT binary patch literal 38252 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 literal 0 HcmV?d00001 diff --git a/app/assets/stylesheets/Fonts/din-reg.woff b/app/assets/stylesheets/Fonts/din-reg.woff new file mode 100644 index 0000000000000000000000000000000000000000..d645153926a5fe7841879f0274b536325aa2000d GIT binary patch literal 21124 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 :topicmappings has_many :synapses, :through => :synapsemappings + # This method associates the attribute ":image" with a file attachment + has_attached_file :screenshot, :styles => { + :thumb => ['188x126#', :png], + :full => ['1880x1260#', :png] + } + + # Validate the attached image is image/jpg, image/png, etc + validates_attachment_content_type :screenshot, :content_type => /\Aimage\/.*\Z/ + def mappings topicmappings + synapsemappings end @@ -49,8 +58,12 @@ class Map < ActiveRecord::Base self.user.image.url end + def contributor_count + self.contributors.length + end + def as_json(options={}) - super(:methods =>[:user_name, :user_image, :topic_count, :synapse_count]) + super(:methods =>[:user_name, :user_image, :topic_count, :synapse_count, :contributor_count]) end ##### PERMISSIONS ###### diff --git a/app/models/topic.rb b/app/models/topic.rb index e2a44ba4..be6f8b50 100644 --- a/app/models/topic.rb +++ b/app/models/topic.rb @@ -46,8 +46,16 @@ class Topic < ActiveRecord::Base self.user.image.url end + def map_count + self.maps.count + end + + def synapse_count + self.synapses.count + end + def as_json(options={}) - super(:methods =>[:user_name, :user_image]) + super(:methods =>[:user_name, :user_image, :map_count, :synapse_count]) end # sends push updates through redis to websockets for realtime updates diff --git a/app/views/layouts/_lowermapelements.html.erb b/app/views/layouts/_lowermapelements.html.erb index 9d902958..9942c139 100644 --- a/app/views/layouts/_lowermapelements.html.erb +++ b/app/views/layouts/_lowermapelements.html.erb @@ -1,4 +1,4 @@ -
+
E
C
+
@@ -6,9 +6,8 @@
-
- <%= render :partial => 'maps/mapinfobox' %> -
+ <%= render :partial => 'maps/mapinfobox' %> +
\ No newline at end of file diff --git a/app/views/layouts/_templates.html.erb b/app/views/layouts/_templates.html.erb index a71b1a50..3c4036c2 100644 --- a/app/views/layouts/_templates.html.erb +++ b/app/views/layouts/_templates.html.erb @@ -12,22 +12,23 @@
{{name}} - - + +
+ +
{{desc}}
-
-
+
+
@@ -158,15 +159,16 @@
{{metacode}}
-
-
Created by {{username}} on {{date}}
+
+ {{username}}
- + {{map_count}} -
{{synapse_count}}
+ + {{synapse_count}} +
-
{{{metacode_select}}}
diff --git a/app/views/maps/_mapinfobox.html.erb b/app/views/maps/_mapinfobox.html.erb index 0d7da05a..226a897f 100644 --- a/app/views/maps/_mapinfobox.html.erb +++ b/app/views/maps/_mapinfobox.html.erb @@ -47,7 +47,8 @@
<% if @map.user == user %> - <%= link_to 'Delete', map_path(@map), :class => 'delete', :confirm => 'Delete this map (nodes and synapses will remain)?', :method => :delete %> + <%= link_to 'Delete', map_path(@map), :class => 'delete', :confirm => 'Delete this map (nodes and synapses will remain)?', :method => :delete, + :data => { :bypass => 'true'} %> <% end %>
diff --git a/config/routes.rb b/config/routes.rb index a1d31995..ef03d2e8 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -24,7 +24,6 @@ Metamaps::Application.routes.draw do match 'explore/active', to: 'maps#index', via: :get, as: :activemaps match 'explore/featured', to: 'maps#index', via: :get, as: :featuredmaps - match 'explore/new', to: 'maps#index', via: :get, as: :newmaps match 'explore/mine', to: 'maps#index', via: :get, as: :mymaps match 'maps/mappers/:id', to: 'maps#index', via: :get, as: :usermaps match 'maps/topics/:id', to: 'maps#index', via: :get, as: :topicmaps diff --git a/db/migrate/20140815162253_add_screenshot_to_maps.rb b/db/migrate/20140815162253_add_screenshot_to_maps.rb new file mode 100644 index 00000000..c42cca51 --- /dev/null +++ b/db/migrate/20140815162253_add_screenshot_to_maps.rb @@ -0,0 +1,9 @@ +class AddScreenshotToMaps < ActiveRecord::Migration + def self.up + add_attachment :maps, :screenshot + end + + def self.down + remove_attachment :maps, :screenshot + end +end diff --git a/db/schema.rb b/db/schema.rb index ec86b421..4c22e7e5 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20140707161810) do +ActiveRecord::Schema.define(:version => 20140815162253) do create_table "in_metacode_sets", :force => true do |t| t.integer "metacode_id" @@ -41,9 +41,13 @@ ActiveRecord::Schema.define(:version => 20140707161810) do t.text "desc" t.text "permission" t.integer "user_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false t.boolean "featured" + t.string "screenshot_file_name" + t.string "screenshot_content_type" + t.integer "screenshot_file_size" + t.datetime "screenshot_updated_at" end create_table "metacode_sets", :force => true do |t| diff --git a/phantomjsSetup.txt b/phantomjsSetup.txt new file mode 100644 index 00000000..f8916c30 --- /dev/null +++ b/phantomjsSetup.txt @@ -0,0 +1,21 @@ + +// 64 bit ubuntu +cd /usr/local/share +sudo wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-1.9.7-linux-x86_64.tar.bz2 +sudo tar xjf phantomjs-1.9.7-linux-x86_64.tar.bz2 +sudo ln -s /usr/local/share/phantomjs-1.9.7-linux-x86_64/bin/phantomjs /usr/local/share/phantomjs +sudo ln -s /usr/local/share/phantomjs-1.9.7-linux-x86_64/bin/phantomjs /usr/local/bin/phantomjs +sudo ln -s /usr/local/share/phantomjs-1.9.7-linux-x86_64/bin/phantomjs /usr/bin/phantomjs + + +// 32 bit ubuntu +cd /usr/local/share +sudo wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-1.9.7-linux-i686.tar.bz2 +sudo tar xjf phantomjs-1.9.7-linux-i686.tar.bz2 +sudo ln -s /usr/local/share/phantomjs-1.9.7-linux-i686/bin/phantomjs /usr/local/share/phantomjs +sudo ln -s /usr/local/share/phantomjs-1.9.7-linux-i686/bin/phantomjs /usr/local/bin/phantomjs +sudo ln -s /usr/local/share/phantomjs-1.9.7-linux-i686/bin/phantomjs /usr/bin/phantomjs + +// on either running +phantomjs -v +// will confirm it's installed \ No newline at end of file diff --git a/public/famous/templates.js b/public/famous/templates.js index 941ff7ad..c241d596 100644 --- a/public/famous/templates.js +++ b/public/famous/templates.js @@ -11,38 +11,24 @@ t.logoContent += '
  • Get Involved! t.logoContent += ''; /* logged out explore maps bars */ - t.activeContent = 'Recently Active'; - t.activeContent += 'Featured'; - t.activeContent += 'New'; + t.activeContent = 'Recently Active Maps'; + t.activeContent += 'Featured Maps'; - t.featuredContent = 'Recently Active'; - t.featuredContent += 'Featured'; - t.featuredContent += 'New'; - - t.newContent = 'Recently Active'; - t.newContent += 'Featured'; - t.newContent += 'New'; + t.featuredContent = 'Recently Active Maps'; + t.featuredContent += 'Featured Maps'; /* logged in explore maps bars */ t.mineAuthContent = 'My Maps'; t.mineAuthContent += 'Recently Active'; t.mineAuthContent += 'Featured'; - t.mineAuthContent += 'New'; t.activeAuthContent = 'My Maps'; t.activeAuthContent += 'Recently Active'; t.activeAuthContent += 'Featured'; - t.activeAuthContent += 'New'; t.featuredAuthContent = 'My Maps'; t.featuredAuthContent += 'Recently Active'; t.featuredAuthContent += 'Featured'; - t.featuredAuthContent += 'New'; - - t.newAuthContent = 'My Maps'; - t.newAuthContent += 'Recently Active'; - t.newAuthContent += 'Featured'; - t.newAuthContent += 'New'; module.exports = t; });