From 23b6e440baf798ddf17fb7882c3d3b45fc86a8d8 Mon Sep 17 00:00:00 2001 From: Jonny Barnes Date: Fri, 25 Nov 2016 15:53:14 +0000 Subject: [PATCH 1/4] Squashed commit of the following: commit 2840f58c61c906f5ac408e9681cf33f802625f74 Author: Jonny Barnes Date: Fri Nov 25 15:52:58 2016 +0000 Add changes commit 86b515a20c65e4956766242db424d84082c7e99e Author: Jonny Barnes Date: Fri Nov 25 15:42:00 2016 +0000 gulp derived assets commit def587e2f3805a0ba669d804b12d83e9f3ec5ea7 Author: Jonny Barnes Date: Fri Nov 25 15:41:43 2016 +0000 Include new contact styles commit 8256dc30b0ad23096b3dcde264826fc6cfaa8788 Author: Jonny Barnes Date: Fri Nov 25 15:41:19 2016 +0000 Better styled contacts commit f12ce1d6f68857d88ad6f39f8b835d036c793c8a Author: Jonny Barnes Date: Wed Nov 23 18:11:47 2016 +0000 Sort out views for contacts, better h-card commit 7be5fe82029b20f6cde3ce921f0cb625c27d21d6 Author: Jonny Barnes Date: Wed Nov 23 18:09:00 2016 +0000 quick code tidy commit 71dad7e4918ff4e513715d4ef3a296fa39507ca1 Author: Jonny Barnes Date: Wed Nov 23 16:58:32 2016 +0000 Get contact editing working commit 0b885190733979be4f5508d28523e8e0b45399a2 Author: Jonny Barnes Date: Wed Nov 23 16:42:10 2016 +0000 Improve form layout, add facebook entry commit 0a6bd79e384dcd872cb9a89b1232afaf20e729b2 Author: Jonny Barnes Date: Wed Nov 23 16:41:49 2016 +0000 Add facebook column commit 639d49045c9a213eafd970ceafe288a51cfc95c8 Author: Jonny Barnes Date: Wed Nov 23 16:30:40 2016 +0000 Update changelog commit f4a018591d50bf9af7e1a64daa9e4a04daa6e1d4 Author: Jonny Barnes Date: Wed Nov 23 16:27:42 2016 +0000 Reference right view, use a better variable name when parsing a URL commit 583f7d7f7cc577cf31b37bbc2bdcd8865c7b9980 Author: Jonny Barnes Date: Wed Nov 23 16:26:58 2016 +0000 Move mini-hcard to templates folder, update content commit 2e1b13eff052b65cf2b86796a9509c81d9c86768 Author: Jonny Barnes Date: Wed Nov 23 16:26:10 2016 +0000 Add facebook column to contacts table --- .../Controllers/ContactsAdminController.php | 6 ++- app/Http/Controllers/ContactsController.php | 12 +++--- app/Note.php | 9 +++-- changelog.md | 5 +++ ..._11_23_154939_add_facebook_to_contacts.php | 32 +++++++++++++++ public/assets/css/app.css | 2 +- public/assets/css/app.css.br | Bin 2963 -> 3034 bytes public/assets/css/app.css.gz | Bin 3149 -> 3188 bytes public/assets/css/maps/app.css.map | 2 +- resources/assets/sass/app.scss | 1 + resources/assets/sass/contacts.scss | 14 +++++++ resources/views/admin/editcontact.blade.php | 38 ++++++++++++++---- resources/views/admin/listcontacts.blade.php | 32 ++++++++------- resources/views/contact-template.blade.php | 10 ----- resources/views/contact.blade.php | 4 +- resources/views/contacts.blade.php | 4 +- resources/views/mini-hcard-template.blade.php | 4 -- resources/views/templates/contact.blade.php | 15 +++++++ .../views/templates/mini-hcard.blade.php | 8 ++++ 19 files changed, 143 insertions(+), 55 deletions(-) create mode 100644 database/migrations/2016_11_23_154939_add_facebook_to_contacts.php create mode 100644 resources/assets/sass/contacts.scss delete mode 100644 resources/views/contact-template.blade.php delete mode 100644 resources/views/mini-hcard-template.blade.php create mode 100644 resources/views/templates/contact.blade.php create mode 100644 resources/views/templates/mini-hcard.blade.php diff --git a/app/Http/Controllers/ContactsAdminController.php b/app/Http/Controllers/ContactsAdminController.php index 890f1241..f3cd42af 100644 --- a/app/Http/Controllers/ContactsAdminController.php +++ b/app/Http/Controllers/ContactsAdminController.php @@ -4,6 +4,7 @@ namespace App\Http\Controllers; use App\Contact; use GuzzleHttp\Client; +use Illuminate\Http\Request; use Illuminate\Filesystem\Filesystem; class ContactsAdminController extends Controller @@ -66,10 +67,10 @@ class ContactsAdminController extends Controller $contact->nick = $request->input('nick'); $contact->homepage = $request->input('homepage'); $contact->twitter = $request->input('twitter'); + $contact->facebook = $request->input('facebook'); $contact->save(); - $contactId = $contact->id; - return view('admin.newcontactsuccess', ['id' => $contactId]); + return view('admin.newcontactsuccess', ['id' => $contact->id]); } /** @@ -88,6 +89,7 @@ class ContactsAdminController extends Controller $contact->nick = $request->input('nick'); $contact->homepage = $request->input('homepage'); $contact->twitter = $request->input('twitter'); + $contact->facebook =$request->input('facebook'); $contact->save(); if ($request->hasFile('avatar')) { diff --git a/app/Http/Controllers/ContactsController.php b/app/Http/Controllers/ContactsController.php index 01528411..19e67356 100644 --- a/app/Http/Controllers/ContactsController.php +++ b/app/Http/Controllers/ContactsController.php @@ -17,10 +17,10 @@ class ContactsController extends Controller $filesystem = new Filesystem(); $contacts = Contact::all(); foreach ($contacts as $contact) { - $contact->homepagePretty = parse_url($contact->homepage)['host']; - $file = public_path() . '/assets/profile-images/' . $contact->homepagePretty . '/image'; + $contact->homepageHost = parse_url($contact->homepage, PHP_URL_HOST); + $file = public_path() . '/assets/profile-images/' . $contact->homepageHost . '/image'; $contact->image = ($filesystem->exists($file)) ? - '/assets/profile-images/' . $contact->homepagePretty . '/image' + '/assets/profile-images/' . $contact->homepageHost . '/image' : '/assets/profile-images/default-image'; } @@ -37,10 +37,10 @@ class ContactsController extends Controller { $filesystem = new Filesystem(); $contact = Contact::where('nick', '=', $nick)->firstOrFail(); - $contact->homepagePretty = parse_url($contact->homepage)['host']; - $file = public_path() . '/assets/profile-images/' . $contact->homepagePretty . '/image'; + $contact->homepageHost = parse_url($contact->homepage, PHP_URL_HOST); + $file = public_path() . '/assets/profile-images/' . $contact->homepageHost . '/image'; $contact->image = ($filesystem->exists($file)) ? - '/assets/profile-images/' . $contact->homepagePretty . '/image' + '/assets/profile-images/' . $contact->homepageHost . '/image' : '/assets/profile-images/default-image'; diff --git a/app/Note.php b/app/Note.php index 040a0bbd..ca9b23c3 100644 --- a/app/Note.php +++ b/app/Note.php @@ -178,15 +178,16 @@ class Note extends Model implements HasMedia try { $contact = Contact::where('nick', '=', mb_strtolower($matches[1]))->firstOrFail(); } catch (ModelNotFoundException $e) { + //assume its an actual twitter handle return '' . $matches[0] . ''; } - $path = parse_url($contact->homepage)['host']; - $contact->photo = (file_exists(public_path() . '/assets/profile-images/' . $path . '/image')) ? - '/assets/profile-images/' . $path . '/image' + $host = parse_url($contact->homepage, PHP_URL_HOST); + $contact->photo = (file_exists(public_path() . '/assets/profile-images/' . $host . '/image')) ? + '/assets/profile-images/' . $host . '/image' : '/assets/profile-images/default-image'; - return trim(view('mini-hcard-template', ['contact' => $contact])->render()); + return trim(view('templates.mini-hcard', ['contact' => $contact])->render()); }, $text ); diff --git a/changelog.md b/changelog.md index 56852848..5e33bada 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,10 @@ # Changelog +## Version {next} + - improved contact h-cards + - Better look in /contacts + - h-cards now have person-tags (issue#36) + ## Version 0.0.16.1 (2016-11-22) - Break words - Added a footer to all pages diff --git a/database/migrations/2016_11_23_154939_add_facebook_to_contacts.php b/database/migrations/2016_11_23_154939_add_facebook_to_contacts.php new file mode 100644 index 00000000..8a05f302 --- /dev/null +++ b/database/migrations/2016_11_23_154939_add_facebook_to_contacts.php @@ -0,0 +1,32 @@ +string('facebook')->nullable(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('contacts', function (Blueprint $table) { + $table->dropColumn('facebook'); + }); + } +} diff --git a/public/assets/css/app.css b/public/assets/css/app.css index d17fead8..35538f32 100644 --- a/public/assets/css/app.css +++ b/public/assets/css/app.css @@ -1,3 +1,3 @@ -html{box-sizing:border-box;font-size:24px}*,*::before,*::after{box-sizing:inherit}body{max-width:25em;margin:0 auto;padding-left:5px;padding-right:5px;word-wrap:break-word}#topheader{text-align:center}.h-entry{padding-top:1rem}.note{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.note-metadata{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-pack:justify;justify-content:space-between;font-size:0.75em}.social-links{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.social-links svg{padding-left:3px}.mini-h-card img{display:inline-block;height:1rem}body>.h-card{margin-top:5px;border-top:1px solid grey}body{font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif}a{text-decoration:none;border-bottom:1px solid;color:blue}.social-links a{border-bottom:none}.icon{height:1em;width:auto}footer{font-size:0.5rem;text-align:center}.pagination{width:100%;height:3rem;display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-align:center;align-items:center}.pagination li{list-style-type:none}.note-ui{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}@media (min-width: 600px){.note-ui>div{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;padding:0.2rem}}@media (max-width: 599px){input[name="photo[]"]{width:100%}}.note-ui label{width:5em;margin-right:0.5rem;text-align:right}.note-ui input:not([type=submit]),.note-ui textarea{-ms-flex:1;flex:1}.note-ui textarea{padding:0.1rem 0.3rem}#locate{margin-right:0.4rem}.map{margin-top:4px;height:200px}.marker{background-image:url(data:image/png;base64,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);background-size:contain;width:20px;height:20px}.map-menu{position:absolute;top:0;left:0;background:white;padding:0.4rem}.map-menu label{margin-left:3px;margin-right:3px} +html{box-sizing:border-box;font-size:24px}*,*::before,*::after{box-sizing:inherit}body{max-width:25em;margin:0 auto;padding-left:5px;padding-right:5px;word-wrap:break-word}#topheader{text-align:center}.h-entry{padding-top:1rem}.note{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.note-metadata{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-pack:justify;justify-content:space-between;font-size:0.75em}.social-links{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.social-links svg{padding-left:3px}.mini-h-card img{display:inline-block;height:1rem}body>.h-card{margin-top:5px;border-top:1px solid grey}body{font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif}a{text-decoration:none;border-bottom:1px solid;color:blue}.social-links a{border-bottom:none}.icon{height:1em;width:auto}footer{font-size:0.5rem;text-align:center}.pagination{width:100%;height:3rem;display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-align:center;align-items:center}.pagination li{list-style-type:none}.note-ui{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}@media (min-width: 600px){.note-ui>div{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;padding:0.2rem}}@media (max-width: 599px){input[name="photo[]"]{width:100%}}.note-ui label{width:5em;margin-right:0.5rem;text-align:right}.note-ui input:not([type=submit]),.note-ui textarea{-ms-flex:1;flex:1}.note-ui textarea{padding:0.1rem 0.3rem}#locate{margin-right:0.4rem}.map{margin-top:4px;height:200px}.marker{background-image:url(data:image/png;base64,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);background-size:contain;width:20px;height:20px}.map-menu{position:absolute;top:0;left:0;background:white;padding:0.4rem}.map-menu label{margin-left:3px;margin-right:3px}.contact{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;margin-top:1em;border-bottom:1px dashed grey}.contact img{margin-right:0.2rem;width:100px;height:100px} /*# sourceMappingURL=maps/app.css.map */ diff --git a/public/assets/css/app.css.br b/public/assets/css/app.css.br index 7c6e95159981d87f8ceac55ef5eca77f987d2118..6e7772a307f0b9540ff82fbed539141ae0506413 100644 GIT binary patch literal 3034 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 literal 2963 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 tUfq*|Ya5+=9X2~P*W@%F6M4 .h-card {\n margin-top: 5px;\n border-top: 1px solid grey;\n}\n","// styles.scss\n\nbody {\n // from smashingmagazine.com/2015/11/using-system-ui-fonts-practical-guide\n font-family: -apple-system, BlinkMacSystemFont,\n \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\",\n \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\",\n sans-serif;\n}\n\na {\n text-decoration: none;\n border-bottom: 1px solid;\n color: blue;\n}\n\n.social-links a {\n border-bottom: none;\n}\n\n.icon {\n height: 1em;\n width: auto;\n}\n\nfooter {\n font-size: 0.5rem;\n text-align: center;\n}\n","// pagination.scss\n\n.pagination {\n width: 100%;\n height: 3rem;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n}\n\n.pagination li {\n list-style-type: none;\n}\n","// note-form.scss\n\n.note-ui {\n display: flex;\n flex-direction: column;\n}\n\n@media (min-width: 600px) {\n .note-ui > div {\n display: flex;\n flex-direction: row;\n padding: 0.2rem;\n }\n}\n\n@media (max-width: 599px) {\n input[name=\"photo[]\"] {\n width: 100%;\n }\n}\n\n.note-ui label {\n width: 5em;\n margin-right: 0.5rem;\n text-align: right;\n}\n\n.note-ui input:not([type=submit]),\n.note-ui textarea {\n flex: 1;\n}\n\n.note-ui textarea {\n padding: 0.1rem 0.3rem;\n}\n\n#locate {\n margin-right: 0.4rem;\n}\n","// mapbox.scss\n\n.map {\n margin-top: 4px; //to see underling of note metadata\n height: 200px;\n}\n\n.marker {\n background-image: url(data:image/png;base64,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);\n background-size: contain;\n width: 20px;\n height: 20px;\n}\n\n.map-menu {\n position: absolute;\n top: 0;\n left: 0;\n background: white;\n padding: 0.4rem;\n}\n\n.map-menu label {\n margin-left: 3px;\n margin-right: 3px;\n}\n"]} \ No newline at end of file +{"version":3,"sources":["app.scss","layout.scss","styles.scss","pagination.scss","note-form.scss","mapbox.scss","contacts.scss"],"names":[],"mappings":"AAIA,KACI,sBACA,cAAgB,CACnB,qBAKG,kBAAoB,CACvB,KCVG,eACA,cACA,iBACA,kBACA,oBAAsB,CACzB,WAGG,iBAAmB,CACtB,SAGG,gBAAkB,CACrB,MAGG,oBAAA,AACA,aAAA,0BAAA,AAAuB,qBAAA,CAC1B,eAGG,oBAAA,AACA,aAAA,uBAAA,AACA,mBAAA,sBAAA,AACA,8BAAA,gBAAkB,CACrB,cAGG,oBAAA,AACA,aAAA,sBAAA,AAAoB,kBAAA,CACvB,kBAGG,gBAAkB,CACrB,iBAGG,qBACA,WAAa,CAChB,aAGG,eACA,yBAA2B,CAC9B,KC3CG,6JAGe,CAClB,EAGG,qBACA,wBACA,UAAY,CACf,gBAGG,kBAAoB,CACvB,MAGG,WACA,UAAY,CACf,OAGG,iBACA,iBAAmB,CACtB,YCzBG,WACA,YACA,oBAAA,AACA,aAAA,uBAAA,AACA,mBAAA,sBAAA,AACA,8BAAA,sBAAA,AAAoB,kBAAA,CACvB,eAGG,oBAAsB,CACzB,SCVG,oBAAA,AACA,aAAA,0BAAA,AAAuB,qBAAA,CAC1B,0BAGG,aACI,oBAAA,AACA,aAAA,uBAAA,AACA,mBAAA,cAAgB,CACnB,CAGL,0BACI,sBACI,UAAY,CACf,CAGL,eACI,UACA,oBACA,gBAAkB,CACrB,oDAIG,WAAA,AAAQ,MAAA,CACX,kBAGG,qBAAuB,CAC1B,QAGG,mBAAqB,CACxB,KCnCG,eACA,YAAc,CACjB,QAGG,y4HACA,wBACA,WACA,WAAa,CAChB,UAGG,kBACA,MACA,OACA,iBACA,cAAgB,CACnB,gBAGG,gBACA,gBAAkB,CACrB,SCtBG,oBAAA,AACA,aAAA,uBAAA,AACA,mBAAA,eACA,6BAA+B,CAClC,aAGG,oBACA,YACA,YAAa,CAChB","file":"../app.css","sourcesContent":["// app.scss\n\n// https://css-tricks.com/box-sizing/#article-header-id-6\n// and https://css-tricks.com/rems-ems/\nhtml {\n box-sizing: border-box;\n font-size: 24px;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: inherit;\n}\n\n@import \"layout\";\n@import \"styles\";\n@import \"pagination\";\n@import \"note-form\";\n@import \"mapbox\";\n@import \"contacts\";\n","// import.scss\n\nbody {\n max-width: 25em;\n margin: 0 auto;\n padding-left: 5px;\n padding-right: 5px;\n word-wrap: break-word;\n}\n\n#topheader {\n text-align: center;\n}\n\n.h-entry {\n padding-top: 1rem;\n}\n\n.note {\n display: flex;\n flex-direction: column;\n}\n\n.note-metadata {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n font-size: 0.75em;\n}\n\n.social-links {\n display: flex;\n align-items: center;\n}\n\n.social-links svg {\n padding-left: 3px;\n}\n\n.mini-h-card img {\n display: inline-block;\n height: 1rem;\n}\n\nbody > .h-card {\n margin-top: 5px;\n border-top: 1px solid grey;\n}\n","// styles.scss\n\nbody {\n // from smashingmagazine.com/2015/11/using-system-ui-fonts-practical-guide\n font-family: -apple-system, BlinkMacSystemFont,\n \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\",\n \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\",\n sans-serif;\n}\n\na {\n text-decoration: none;\n border-bottom: 1px solid;\n color: blue;\n}\n\n.social-links a {\n border-bottom: none;\n}\n\n.icon {\n height: 1em;\n width: auto;\n}\n\nfooter {\n font-size: 0.5rem;\n text-align: center;\n}\n","// pagination.scss\n\n.pagination {\n width: 100%;\n height: 3rem;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n}\n\n.pagination li {\n list-style-type: none;\n}\n","// note-form.scss\n\n.note-ui {\n display: flex;\n flex-direction: column;\n}\n\n@media (min-width: 600px) {\n .note-ui > div {\n display: flex;\n flex-direction: row;\n padding: 0.2rem;\n }\n}\n\n@media (max-width: 599px) {\n input[name=\"photo[]\"] {\n width: 100%;\n }\n}\n\n.note-ui label {\n width: 5em;\n margin-right: 0.5rem;\n text-align: right;\n}\n\n.note-ui input:not([type=submit]),\n.note-ui textarea {\n flex: 1;\n}\n\n.note-ui textarea {\n padding: 0.1rem 0.3rem;\n}\n\n#locate {\n margin-right: 0.4rem;\n}\n","// mapbox.scss\n\n.map {\n margin-top: 4px; //to see underling of note metadata\n height: 200px;\n}\n\n.marker {\n background-image: url(data:image/png;base64,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);\n background-size: contain;\n width: 20px;\n height: 20px;\n}\n\n.map-menu {\n position: absolute;\n top: 0;\n left: 0;\n background: white;\n padding: 0.4rem;\n}\n\n.map-menu label {\n margin-left: 3px;\n margin-right: 3px;\n}\n","//contacts.scss\n\n.contact {\n display: flex;\n flex-direction: row;\n margin-top: 1em;\n border-bottom: 1px dashed grey;\n}\n\n.contact img {\n margin-right: 0.2rem;\n width: 100px;\n height:100px;\n}\n"]} \ No newline at end of file diff --git a/resources/assets/sass/app.scss b/resources/assets/sass/app.scss index 403d4f7e..d3eedc9b 100644 --- a/resources/assets/sass/app.scss +++ b/resources/assets/sass/app.scss @@ -18,3 +18,4 @@ html { @import "pagination"; @import "note-form"; @import "mapbox"; +@import "contacts"; diff --git a/resources/assets/sass/contacts.scss b/resources/assets/sass/contacts.scss new file mode 100644 index 00000000..d343022e --- /dev/null +++ b/resources/assets/sass/contacts.scss @@ -0,0 +1,14 @@ +//contacts.scss + +.contact { + display: flex; + flex-direction: row; + margin-top: 1em; + border-bottom: 1px dashed grey; +} + +.contact img { + margin-right: 0.2rem; + width: 100px; + height:100px; +} diff --git a/resources/views/admin/editcontact.blade.php b/resources/views/admin/editcontact.blade.php index 100a7055..618e024e 100644 --- a/resources/views/admin/editcontact.blade.php +++ b/resources/views/admin/editcontact.blade.php @@ -7,14 +7,36 @@ Edit Contact « Admin CP @section('content')

Edit Contact

- -
-
-
-
-
- + +
+ Conctact +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ +

Or do you want to delete this contact?

Instead of uploading an image, you can grab from their homepage?

-@stop \ No newline at end of file +@stop diff --git a/resources/views/admin/listcontacts.blade.php b/resources/views/admin/listcontacts.blade.php index 86a5e2d2..85a6d8ef 100644 --- a/resources/views/admin/listcontacts.blade.php +++ b/resources/views/admin/listcontacts.blade.php @@ -7,21 +7,23 @@ List Contacts « Admin CP @section('content')

Contacts

- - - - - - - + + + + + + + + @foreach($contacts as $contact) - - - - - - - + + + + + + + + @endforeach
Real NameNickHomepageTwitter
Real NameNickHomepageTwitterFacebook
{{ $contact->name }}{{ $contact->nick }}{{ $contact->homepage }}{{ $contact->twitter }}edit
{{ $contact->name }}{{ $contact->nick }}{{ $contact->homepage }}{{ $contact->twitter }}{{ $contact->facebook }}edit
-@stop \ No newline at end of file +@stop diff --git a/resources/views/contact-template.blade.php b/resources/views/contact-template.blade.php deleted file mode 100644 index d6dae0af..00000000 --- a/resources/views/contact-template.blade.php +++ /dev/null @@ -1,10 +0,0 @@ -
-
- {{ $contact->name }} {{ '@' . $contact->nick }} - -
- -
\ No newline at end of file diff --git a/resources/views/contact.blade.php b/resources/views/contact.blade.php index 1cecd3d1..3c417ae9 100644 --- a/resources/views/contact.blade.php +++ b/resources/views/contact.blade.php @@ -5,5 +5,5 @@ Contacts « Jonny Barnes @stop @section('content') -@include('contact-template', array('contact' => $contact)) -@stop \ No newline at end of file +@include('templates.contact', array('contact' => $contact)) +@stop diff --git a/resources/views/contacts.blade.php b/resources/views/contacts.blade.php index b53b34bf..23c2ec88 100644 --- a/resources/views/contacts.blade.php +++ b/resources/views/contacts.blade.php @@ -6,6 +6,6 @@ Contacts « Jonny Barnes @section('content') @foreach($contacts as $contact) -@include('contact-template', array('contact' => $contact)) +@include('templates.contact', array('contact' => $contact)) @endforeach -@stop \ No newline at end of file +@stop diff --git a/resources/views/mini-hcard-template.blade.php b/resources/views/mini-hcard-template.blade.php deleted file mode 100644 index c2ab1eba..00000000 --- a/resources/views/mini-hcard-template.blade.php +++ /dev/null @@ -1,4 +0,0 @@ - - - {!! $contact->name !!} - diff --git a/resources/views/templates/contact.blade.php b/resources/views/templates/contact.blade.php new file mode 100644 index 00000000..aff9cf46 --- /dev/null +++ b/resources/views/templates/contact.blade.php @@ -0,0 +1,15 @@ +
+
+ +
+
+ {{ $contact->name }} {{ '@' . $contact->nick }} + +
+
diff --git a/resources/views/templates/mini-hcard.blade.php b/resources/views/templates/mini-hcard.blade.php new file mode 100644 index 00000000..8b9dd21d --- /dev/null +++ b/resources/views/templates/mini-hcard.blade.php @@ -0,0 +1,8 @@ + + + + {!! $contact->name !!} + + @if ($contact->facebook)@endif + @if ($contact->twitter)@endif + From dc6b8c53ec069130b4517db596e0fe903d2529d2 Mon Sep 17 00:00:00 2001 From: Jonny Barnes Date: Fri, 25 Nov 2016 15:59:04 +0000 Subject: [PATCH 2/4] Squashed commit of the following: commit f00503ad21200f49b360b64297e6969768721ff6 Author: Jonny Barnes Date: Fri Nov 25 15:58:53 2016 +0000 Update changelog commit dc0e92b0b9085609525ec937d21625ddca5350d7 Author: Jonny Barnes Date: Fri Nov 25 15:58:17 2016 +0000 gulp derived assets commit 78501ee5ffe39ca0c96539d5406fcdc4170176c4 Author: Jonny Barnes Date: Fri Nov 25 15:57:47 2016 +0000 Add navigation controls, fixes #37 --- changelog.md | 1 + public/assets/js/maps.js | 2 +- public/assets/js/maps.js.br | Bin 568 -> 583 bytes public/assets/js/maps.js.gz | Bin 674 -> 694 bytes public/assets/js/maps/maps.js.map | 2 +- public/assets/js/maps/newnote.js.map | 2 +- public/assets/js/newnote.js | 2 +- public/assets/js/newnote.js.br | Bin 1737 -> 1750 bytes public/assets/js/newnote.js.gz | Bin 1961 -> 1980 bytes resources/assets/js/maps.js | 1 + resources/assets/js/newnote.js | 1 + 11 files changed, 7 insertions(+), 4 deletions(-) diff --git a/changelog.md b/changelog.md index 5e33bada..d5ccf258 100644 --- a/changelog.md +++ b/changelog.md @@ -4,6 +4,7 @@ - improved contact h-cards - Better look in /contacts - h-cards now have person-tags (issue#36) + - maps now have zoom controls (issue#37) ## Version 0.0.16.1 (2016-11-22) - Break words diff --git a/public/assets/js/maps.js b/public/assets/js/maps.js index cde37385..dab34f57 100644 --- a/public/assets/js/maps.js +++ b/public/assets/js/maps.js @@ -1,2 +1,2 @@ -var mapDivs=document.querySelectorAll(".map");mapboxgl.accessToken="pk.eyJ1Ijoiam9ubnliYXJuZXMiLCJhIjoiY2l2cDhjYW04MDAwcjJ0cG1uZnhqcm82ayJ9.qA2zeVA-nsoMh9IFrd5KQw";for(var i=0;i@9**1 zy0^`D?r;&Bv4As0$cw*lw`c})`V!G4JK42N+)ix1eTwnw%&OYO(Y3Az85TM*UzxLZ zW7UWC0=Z596JG>7tF;t3o>!H1-1=_QtR}wSt<`tdU(DJeaQ^qZ#z2WY6|eUARa@k~ z*7`*S+?i6=KP#gstGDstBEK26YC?6tSkGR&o>XhM@yDl6ciAtWmdXnDy)sGSE7!)- zE0a8=pT6Ua)wtl;cba=SduLjC?m@+K+|NW+jvcxhTItw%#8<9z!LkJcVXF35?g@Od zVau5yutsufk4=?#tKd|7~Q<;<#8_I56-$l7hWamtVx!6aR09ylVBCsldFrkdM%GsNHO=tWmTR3=J)B;4|Lkk)zJx4TS<|>s?>J|4LD;STTvjsz w4*uHnb!oDeNx|CGscxb>+w7eu`Jdmncs=9IAO9k@ZeP&0%-5qVmp6?80IF0R0RR91 literal 568 zcmb0RVQ1*MEc#igwebB0-~WI2?3&H$-Ow3*v}p~?^fb?#FRTCT&1Q6yY}fqq{@&|b z-QPC+ReP>F=>Utb!sLLej@xS;q%D-!HawH7G})6@S+qzdME3IQ*$Vp#Vp(o1RxB~O zeW9u7+s4(y1A{Cho}HAY)||n-ltD z;WxJ{1_Cz}(vKPIN!nDMZV@~lQgFKUlGap4eZe0m^lX=9l&7l+c*y-TPi146^Fb{{ z@X?`}3(F;WnC!mJkeBwkz`xex;A(eCnaLARysz_jXqnf%C+d5~38~~g9S0^xx3{P) z|0z64X->Y^PsS^nvhwBPGHy%zIZ~Rt|2x_^mKZ9e{%v%Bb8!8}@HYJ_HJR4ktn~^) zwhB58CklfVYKj+3wG{X>d1L2xhLSc`1tH&n)mLZTR4(CLazsTjhmWI|GyVT?6^L& zxV<()SAYFA(I>joChm6DQpzrVGrjTTi{<=rf2A}MPVV*f>Rq}bY1)}Bzs`J|<-C|9 zS>RFI^oG>wcY;J-xpy8`QeW}s`gubyIr+Xn%iDvCHr0l3Jd>Yn(pk=R^!V=|{g>yS z)zXtY`myd%eNwA`%)iMlUl;Gcc>Zh(^E)$TpAVN0-9K!5{$FKHWUSZoo#`y4lX7f) zjS{y8a-EsjYI5_2!R))SDThB8S8mmqmFCjVmD!{1je_gnrt0} z$~0M&lTWINs&Zb?Smx0otdt^hbKAxcw>VB4QLfcitk3*Cg@O*xywh>$kHPc_at$Kw zXTCnY(W26^igj;6NW+~emy|8zo1EULW^4B7&%DMGbS*YuO?%EE^~pR_nS+XsFEo%` ztMKaZ8qo(#4}?}UeO>Pu!?`t@QH}X(L*w#k0ZrcCVfWG_gwFA7URlC(DekmYsOD`o zzoSV?65SEiGTfWpwCbmy37h{wUBmn!n@LAoQ+7py@TmjMzuzu8QQCO(Hmg%^@&hUJ zfXV51!X(#yy|uwWbjcKt85g;wiU_WhD=)0+AGVy^D#1-owibhdC^ck##^ zPZx=bm1Xu@_qF(+EjS)2F(c&lyxnud%U_1CK3Hiv^+zV>n?kSoO&7Pjyk4Enw(iC= zpH&SP!_P~u5@2WD#&LL=X+ZvkCA%JQR$8@B{2yb@srBkD H>K_ut$GSAi}G3xL4rReOs zK6CPpi9a|P?G;vZ9&uxCwO*px&3HVJd4^Y=n}XGK2S#l@GtJVuOVVWY*V}vViCyT~ zV(3wM`1OGC%-+48BQSOKcQ_R09Qe_%U}{apZO_wqh02EffmAJnvA;u|+qghcG#u zbQW{VTIZa!=GOs@Iae%mwNyPcgBDCY@Nw>qcNPDbf=Zn(tZ`s`*zMUS)fTcRXyFEl zTqUW4s{|itJ+OMw@OHgt4ENUCS7u6IZD_pUu5qyRxV}4&_Mw@tzi#O}_IB&5fP%So z!q0;=Gp`w4jbEO$zVlgq-*;2BADmjc8O&L0Ha-xW=iy}jA!VPlNUP$8gxy{l5By>t zv)y{t!~VeP`nMdJ8D>FVB5Q7Ni_O2!JMF?n-j||Qhc;<{ZD|dE!`1!&l~eTo_WcKnt6W(?{P57~te&VmXHxb%K8M!=i9LqIIs%IFt zaxhPPeLnbq^p87S<#YPCvi!R9x!}_+&A+e8E%Tok)&CUY_Io)w^6#{ZrL#E>_{55@ zxc~U+COwaLmJ>aHcjo;1dfNNdSI*UQ6rP^j)s#N#b=&S+GbbKsv0LV_rtAAx<*C1F noj-XbSX^aDoO*k;@aGRd&Uvb38?D@5|A#-$PVHYPI|Bm%7xhnK diff --git a/public/assets/js/maps/maps.js.map b/public/assets/js/maps/maps.js.map index 4a976459..1ca274c4 100644 --- a/public/assets/js/maps/maps.js.map +++ b/public/assets/js/maps/maps.js.map @@ -1 +1 @@ -{"version":3,"sources":["maps.js"],"names":["mapDivs","document","querySelectorAll","mapboxgl","accessToken","i","length","mapDiv","latitude","dataset","longitude","el","createElement","classList","add","mapMenu","streetsInput","setAttribute","addEventListener","map","setStyle","streetsLabel","appendChild","createTextNode","satelliteInput","satelliteLabel","Map","container","style","center","zoom","scrollZoom","Marker","offset","setLngLat","addTo"],"mappings":"AAEA,GAAIA,SAAUC,SAASC,iBAAiB,OACxCC,UAASC,YAAc,gGACvB,KAAK,GAAIC,GAAI,EAAGA,EAAIL,QAAQM,OAAQD,IAAK,CACrC,GAAIE,QAASP,QAAQK,GACjBG,SAAWD,OAAOE,QAAQD,SAC1BE,UAAaH,OAAOE,QAAQC,UAC5BC,GAAKV,SAASW,cAAc,MAChCD,IAAGE,UAAUC,IAAI,SACjB,IAAIC,SAAUd,SAASW,cAAc,MACrCG,SAAQF,UAAUC,IAAI,WACtB,IAAIE,cAAef,SAASW,cAAc,QAC1CI,cAAaC,aAAa,KAAM,WAChCD,aAAaC,aAAa,OAAQ,SAClCD,aAAaC,aAAa,OAAQ,UAClCD,aAAaC,aAAa,QAAS,WACnCD,aAAaC,aAAa,UAAW,WACrCD,aAAaE,iBAAiB,QAAS,WACnCC,IAAIC,SAAS,sCAEjB,IAAIC,cAAepB,SAASW,cAAc,QAC1CS,cAAaJ,aAAa,MAAO,WACjCI,aAAaC,YAAYrB,SAASsB,eAAe,WACjD,IAAIC,gBAAiBvB,SAASW,cAAc,QAC5CY,gBAAeP,aAAa,KAAM,aAClCO,eAAeP,aAAa,OAAQ,SACpCO,eAAeP,aAAa,OAAQ,UACpCO,eAAeP,aAAa,QAAS,WACrCO,eAAeN,iBAAiB,QAAS,WACrCC,IAAIC,SAAS,wCAEjB,IAAIK,gBAAiBxB,SAASW,cAAc,QAC5Ca,gBAAeR,aAAa,MAAO,aACnCQ,eAAeH,YAAYrB,SAASsB,eAAe,cACnDR,QAAQO,YAAYN,cACpBD,QAAQO,YAAYD,cACpBN,QAAQO,YAAYE,gBACpBT,QAAQO,YAAYG,eACpB,IAAIN,KAAM,GAAIhB,UAASuB,KACnBC,UAAWpB,OACXqB,MAAO,oCACPC,QAASnB,UAAWF,UACpBsB,KAAM,GACNC,YAAY,GAEhB,IAAI5B,UAAS6B,OAAOrB,IAAKsB,SAAS,IAAK,MAAOC,WAAWxB,UAAWF,WAAW2B,MAAMhB,KACrFZ,OAAOe,YAAYP","file":"../maps.js","sourcesContent":["/* global mapboxgl */\n//This code runs on page load and looks for
, then adds map\nvar mapDivs = document.querySelectorAll('.map');\nmapboxgl.accessToken = 'pk.eyJ1Ijoiam9ubnliYXJuZXMiLCJhIjoiY2l2cDhjYW04MDAwcjJ0cG1uZnhqcm82ayJ9.qA2zeVA-nsoMh9IFrd5KQw';\nfor (var i = 0; i < mapDivs.length; i++) {\n var mapDiv = mapDivs[i];\n var latitude = mapDiv.dataset.latitude;\n var longitude = mapDiv.dataset.longitude;\n var el = document.createElement('div');\n el.classList.add('marker');\n var mapMenu = document.createElement('div');\n mapMenu.classList.add('map-menu');\n var streetsInput = document.createElement('input');\n streetsInput.setAttribute('id', 'streets');\n streetsInput.setAttribute('type', 'radio');\n streetsInput.setAttribute('name', 'toggle');\n streetsInput.setAttribute('value', 'streets');\n streetsInput.setAttribute('checked', 'checked');\n streetsInput.addEventListener('click', function () {\n map.setStyle('mapbox://styles/mapbox/streets-v9');\n });\n var streetsLabel = document.createElement('label');\n streetsLabel.setAttribute('for', 'streets');\n streetsLabel.appendChild(document.createTextNode('Streets'));\n var satelliteInput = document.createElement('input');\n satelliteInput.setAttribute('id', 'satellite');\n satelliteInput.setAttribute('type', 'radio');\n satelliteInput.setAttribute('name', 'toggle');\n satelliteInput.setAttribute('value', 'streets');\n satelliteInput.addEventListener('click', function () {\n map.setStyle('mapbox://styles/mapbox/satellite-v9');\n });\n var satelliteLabel = document.createElement('label');\n satelliteLabel.setAttribute('for', 'satellite');\n satelliteLabel.appendChild(document.createTextNode('Satellite'));\n mapMenu.appendChild(streetsInput);\n mapMenu.appendChild(streetsLabel);\n mapMenu.appendChild(satelliteInput);\n mapMenu.appendChild(satelliteLabel);\n var map = new mapboxgl.Map({\n container: mapDiv,\n style: 'mapbox://styles/mapbox/streets-v9',\n center: [longitude, latitude],\n zoom: 15,\n scrollZoom: false\n });\n new mapboxgl.Marker(el, {offset: [-10, -20]}).setLngLat([longitude, latitude]).addTo(map);\n mapDiv.appendChild(mapMenu);\n}\n"]} \ No newline at end of file +{"version":3,"sources":["maps.js"],"names":["mapDivs","document","querySelectorAll","mapboxgl","accessToken","i","length","mapDiv","latitude","dataset","longitude","el","createElement","classList","add","mapMenu","streetsInput","setAttribute","addEventListener","map","setStyle","streetsLabel","appendChild","createTextNode","satelliteInput","satelliteLabel","Map","container","style","center","zoom","scrollZoom","addControl","NavigationControl","Marker","offset","setLngLat","addTo"],"mappings":"AAEA,GAAIA,SAAUC,SAASC,iBAAiB,OACxCC,UAASC,YAAc,gGACvB,KAAK,GAAIC,GAAI,EAAGA,EAAIL,QAAQM,OAAQD,IAAK,CACrC,GAAIE,QAASP,QAAQK,GACjBG,SAAWD,OAAOE,QAAQD,SAC1BE,UAAaH,OAAOE,QAAQC,UAC5BC,GAAKV,SAASW,cAAc,MAChCD,IAAGE,UAAUC,IAAI,SACjB,IAAIC,SAAUd,SAASW,cAAc,MACrCG,SAAQF,UAAUC,IAAI,WACtB,IAAIE,cAAef,SAASW,cAAc,QAC1CI,cAAaC,aAAa,KAAM,WAChCD,aAAaC,aAAa,OAAQ,SAClCD,aAAaC,aAAa,OAAQ,UAClCD,aAAaC,aAAa,QAAS,WACnCD,aAAaC,aAAa,UAAW,WACrCD,aAAaE,iBAAiB,QAAS,WACnCC,IAAIC,SAAS,sCAEjB,IAAIC,cAAepB,SAASW,cAAc,QAC1CS,cAAaJ,aAAa,MAAO,WACjCI,aAAaC,YAAYrB,SAASsB,eAAe,WACjD,IAAIC,gBAAiBvB,SAASW,cAAc,QAC5CY,gBAAeP,aAAa,KAAM,aAClCO,eAAeP,aAAa,OAAQ,SACpCO,eAAeP,aAAa,OAAQ,UACpCO,eAAeP,aAAa,QAAS,WACrCO,eAAeN,iBAAiB,QAAS,WACrCC,IAAIC,SAAS,wCAEjB,IAAIK,gBAAiBxB,SAASW,cAAc,QAC5Ca,gBAAeR,aAAa,MAAO,aACnCQ,eAAeH,YAAYrB,SAASsB,eAAe,cACnDR,QAAQO,YAAYN,cACpBD,QAAQO,YAAYD,cACpBN,QAAQO,YAAYE,gBACpBT,QAAQO,YAAYG,eACpB,IAAIN,KAAM,GAAIhB,UAASuB,KACnBC,UAAWpB,OACXqB,MAAO,oCACPC,QAASnB,UAAWF,UACpBsB,KAAM,GACNC,YAAY,GAEhBZ,KAAIa,WAAW,GAAI7B,UAAS8B,mBAC5B,GAAI9B,UAAS+B,OAAOvB,IAAKwB,SAAS,IAAK,MAAOC,WAAW1B,UAAWF,WAAW6B,MAAMlB,KACrFZ,OAAOe,YAAYP","file":"../maps.js","sourcesContent":["/* global mapboxgl */\n//This code runs on page load and looks for
, then adds map\nvar mapDivs = document.querySelectorAll('.map');\nmapboxgl.accessToken = 'pk.eyJ1Ijoiam9ubnliYXJuZXMiLCJhIjoiY2l2cDhjYW04MDAwcjJ0cG1uZnhqcm82ayJ9.qA2zeVA-nsoMh9IFrd5KQw';\nfor (var i = 0; i < mapDivs.length; i++) {\n var mapDiv = mapDivs[i];\n var latitude = mapDiv.dataset.latitude;\n var longitude = mapDiv.dataset.longitude;\n var el = document.createElement('div');\n el.classList.add('marker');\n var mapMenu = document.createElement('div');\n mapMenu.classList.add('map-menu');\n var streetsInput = document.createElement('input');\n streetsInput.setAttribute('id', 'streets');\n streetsInput.setAttribute('type', 'radio');\n streetsInput.setAttribute('name', 'toggle');\n streetsInput.setAttribute('value', 'streets');\n streetsInput.setAttribute('checked', 'checked');\n streetsInput.addEventListener('click', function () {\n map.setStyle('mapbox://styles/mapbox/streets-v9');\n });\n var streetsLabel = document.createElement('label');\n streetsLabel.setAttribute('for', 'streets');\n streetsLabel.appendChild(document.createTextNode('Streets'));\n var satelliteInput = document.createElement('input');\n satelliteInput.setAttribute('id', 'satellite');\n satelliteInput.setAttribute('type', 'radio');\n satelliteInput.setAttribute('name', 'toggle');\n satelliteInput.setAttribute('value', 'streets');\n satelliteInput.addEventListener('click', function () {\n map.setStyle('mapbox://styles/mapbox/satellite-v9');\n });\n var satelliteLabel = document.createElement('label');\n satelliteLabel.setAttribute('for', 'satellite');\n satelliteLabel.appendChild(document.createTextNode('Satellite'));\n mapMenu.appendChild(streetsInput);\n mapMenu.appendChild(streetsLabel);\n mapMenu.appendChild(satelliteInput);\n mapMenu.appendChild(satelliteLabel);\n var map = new mapboxgl.Map({\n container: mapDiv,\n style: 'mapbox://styles/mapbox/streets-v9',\n center: [longitude, latitude],\n zoom: 15,\n scrollZoom: false\n });\n map.addControl(new mapboxgl.NavigationControl());\n new mapboxgl.Marker(el, {offset: [-10, -20]}).setLngLat([longitude, latitude]).addTo(map);\n mapDiv.appendChild(mapMenu);\n}\n"]} \ No newline at end of file diff --git a/public/assets/js/maps/newnote.js.map b/public/assets/js/maps/newnote.js.map index 81044df7..dbc589e0 100644 --- a/public/assets/js/maps/newnote.js.map +++ b/public/assets/js/maps/newnote.js.map @@ -1 +1 @@ -{"version":3,"sources":["newnote.js"],"names":["getLocation","navigator","geolocation","getCurrentPosition","position","addPlacesMap","coords","latitude","longitude","accuracy","uncertainty","fetch","credentials","method","then","response","json","j","error","alertify","reset","error_description","places","length","i","latlng","parseLocation","location","name","uri","push","addMap","catch","err","console","arguments","form","document","querySelector","mapDiv","createElement","classList","add","appendChild","mapboxgl","accessToken","map","Map","container","style","center","zoom","el","mapMenu","streetsInput","setAttribute","addEventListener","setStyle","streetsLabel","createTextNode","satelliteInput","satelliteLabel","Marker","offset","setLngLat","addTo","containingDiv","selectEl","noLocation","geoLocation","dataset","insertBefore","forEach","item","option","text","placeMarkerIcon","flyTo","selectPlace","value","placeLat","selectedIndex","placeLon","newLocButton","nameDiv","nameLabel","nameEl","descDiv","descLabel","descEl","latDiv","latLabel","latEl","getLatitudeFromMapbox","getCenter","lonDiv","lonLabel","lonEl","getLongitudeFromMapbox","placeSubmit","formData","FormData","append","body","placeJson","Error","labels","querySelectorAll","removeChild","parentNode","newPlaceButton","newOption","newPlaceMarkerIcon","placeError","point","re","resultArray","exec","split","selected","lnglat","replace","button","disabled"],"mappings":"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","file":"../newnote.js","sourcesContent":["/* global mapboxgl, alertify */\nif ('geolocation' in navigator) {\n var button = document.querySelector('#locate');\n if (button.addEventListener) {\n //if we have javascript, event listeners and geolocation, make the locate\n //button clickable and add event\n button.disabled = false;\n button.addEventListener('click', getLocation);\n }\n}\n\nfunction getLocation() {\n navigator.geolocation.getCurrentPosition(function (position) {\n //the locate button has been clicked so add the places/map\n addPlacesMap(position.coords.latitude, position.coords.longitude, position.coords.accuracy);\n });\n}\n\nfunction addPlacesMap(latitude, longitude, uncertainty) {\n //get the nearby places\n fetch('/places/near/' + latitude + '/' + longitude + '?u=' + uncertainty, {\n credentials: 'same-origin',\n method: 'get'\n }).then(function (response) {\n return response.json();\n }).then(function (j) {\n if (j.error == true) {\n alertify.reset();\n alertify.error(j.error_description);\n }\n if (j.places.length > 0) {\n var i;\n var places = [];\n for (i = 0; i < j.places.length; ++i) {\n var latlng = parseLocation(j.places[i].location);\n var name = j.places[i].name;\n var uri = j.places[i].uri;\n places.push([name, uri, latlng[0], latlng[1]]);\n }\n //add a map with the nearby places\n addMap(latitude, longitude, places);\n } else {\n //add a map with just current location\n addMap(latitude, longitude);\n }\n }).catch(function (err) {\n console.error(err);\n });\n}\n\nfunction addMap(latitude, longitude, places) {\n //make places null if not supplied\n if (arguments.length == 2) {\n places = null;\n }\n // the form has a fieldset element that we are actually targetting\n var form = document.querySelector('.note-ui');\n var mapDiv = document.createElement('div');\n mapDiv.classList.add('map');\n //add the map div\n form.appendChild(mapDiv);\n //set up the mapbox gl map\n mapboxgl.accessToken = 'pk.eyJ1Ijoiam9ubnliYXJuZXMiLCJhIjoiY2l2cDhjYW04MDAwcjJ0cG1uZnhqcm82ayJ9.qA2zeVA-nsoMh9IFrd5KQw';\n var map = new mapboxgl.Map({\n container: mapDiv,\n style: 'mapbox://styles/mapbox/streets-v9',\n center: [longitude, latitude],\n zoom: 15\n });\n //create the current location marker\n var el = document.createElement('div');\n el.classList.add('marker');\n //create the map style menu\n var mapMenu = document.createElement('div');\n mapMenu.classList.add('map-menu');\n var streetsInput = document.createElement('input');\n streetsInput.setAttribute('id', 'streets');\n streetsInput.setAttribute('type', 'radio');\n streetsInput.setAttribute('name', 'toggle');\n streetsInput.setAttribute('value', 'streets');\n streetsInput.setAttribute('checked', 'checked');\n streetsInput.addEventListener('click', function () {\n map.setStyle('mapbox://styles/mapbox/streets-v9');\n });\n var streetsLabel = document.createElement('label');\n streetsLabel.setAttribute('for', 'streets');\n streetsLabel.appendChild(document.createTextNode('Streets'));\n var satelliteInput = document.createElement('input');\n satelliteInput.setAttribute('id', 'satellite');\n satelliteInput.setAttribute('type', 'radio');\n satelliteInput.setAttribute('name', 'toggle');\n satelliteInput.setAttribute('value', 'streets');\n satelliteInput.addEventListener('click', function () {\n map.setStyle('mapbox://styles/mapbox/satellite-v9');\n });\n var satelliteLabel = document.createElement('label');\n satelliteLabel.setAttribute('for', 'satellite');\n satelliteLabel.appendChild(document.createTextNode('Satellite'));\n mapMenu.appendChild(streetsInput);\n mapMenu.appendChild(streetsLabel);\n mapMenu.appendChild(satelliteInput);\n mapMenu.appendChild(satelliteLabel);\n //add the map menu\n mapDiv.appendChild(mapMenu);\n //add a marker for the current location\n new mapboxgl.Marker(el, {offset: [-10, -20]}).setLngLat([longitude, latitude]).addTo(map);\n //create containing div for flexbox\n var containingDiv = document.createElement('div');\n //create the \n places.forEach(function (item) {\n var option = document.createElement('option');\n option.setAttribute('value', item[1]);\n var text = document.createTextNode(item[0]);\n option.appendChild(text);\n option.dataset.latitude = item[2];\n option.dataset.longitude = item[3];\n selectEl.appendChild(option);\n var placeMarkerIcon = document.createElement('div');\n placeMarkerIcon.classList.add('marker');\n new mapboxgl.Marker(placeMarkerIcon, {offset: [-10, -20]}).setLngLat([item[3], item[2]]).addTo(map);\n placeMarkerIcon.addEventListener('click', function () {\n map.flyTo({\n center: [\n item[3],\n item[2]\n ]\n });\n selectPlace(item[1]);\n });\n });\n //add an event listener\n selectEl.addEventListener('change', function () {\n if (selectEl.value !== 'no-location') {\n var placeLat = selectEl[selectEl.selectedIndex].dataset.latitude;\n var placeLon = selectEl[selectEl.selectedIndex].dataset.longitude;\n map.flyTo({\n center: [\n placeLon,\n placeLat\n ]\n });\n }\n });\n }\n //add a button to add a new place\n var newLocButton = document.createElement('button');\n newLocButton.setAttribute('type', 'button');\n newLocButton.setAttribute('id', 'create-new-place');\n newLocButton.appendChild(document.createTextNode('Create New Place?'));\n //the event listener\n newLocButton.addEventListener('click', function() {\n //add the form elements\n var nameDiv = document.createElement('div');\n var nameLabel = document.createElement('label');\n nameLabel.setAttribute('for', 'place-name');\n nameLabel.classList.add('place-label');\n nameLabel.appendChild(document.createTextNode('Place Name:'));\n var nameEl = document.createElement('input');\n nameEl.setAttribute('placeholder', 'Name');\n nameEl.setAttribute('name', 'place-name');\n nameEl.setAttribute('id', 'place-name');\n nameEl.setAttribute('type', 'text');\n nameDiv.appendChild(nameLabel);\n nameDiv.appendChild(nameEl);\n var descDiv = document.createElement('div');\n var descLabel = document.createElement('label');\n descLabel.setAttribute('for', 'place-description');\n descLabel.classList.add('place-label');\n descLabel.appendChild(document.createTextNode('Place Description:'));\n var descEl = document.createElement('input');\n descEl.setAttribute('placeholder', 'Description');\n descEl.setAttribute('name', 'place-description');\n descEl.setAttribute('id', 'place-description');\n descEl.setAttribute('type', 'text');\n descDiv.appendChild(descLabel);\n descDiv.appendChild(descEl);\n var latDiv = document.createElement('div');\n var latLabel = document.createElement('label');\n latLabel.setAttribute('for', 'place-latitude');\n latLabel.classList.add('place-label');\n latLabel.appendChild(document.createTextNode('Place Latitude:'));\n var latEl = document.createElement('input');\n latEl.setAttribute('name', 'place-latitude');\n latEl.setAttribute('id', 'place-latitude');\n latEl.setAttribute('type', 'text');\n latEl.value = getLatitudeFromMapbox(map.getCenter());\n latDiv.appendChild(latLabel);\n latDiv.appendChild(latEl);\n var lonDiv = document.createElement('div');\n var lonLabel = document.createElement('label');\n lonLabel.setAttribute('for', 'place-longitude');\n lonLabel.classList.add('place-label');\n lonLabel.appendChild(document.createTextNode('Place Longitude:'));\n var lonEl = document.createElement('input');\n lonEl.setAttribute('name', 'place-longitude');\n lonEl.setAttribute('id', 'place-longitude');\n lonEl.setAttribute('type', 'text');\n lonEl.value = getLongitudeFromMapbox(map.getCenter());\n lonDiv.appendChild(lonLabel);\n lonDiv.appendChild(lonEl);\n var placeSubmit = document.createElement('button');\n placeSubmit.setAttribute('id', 'place-submit');\n placeSubmit.setAttribute('value', 'Submit New Place');\n placeSubmit.setAttribute('name', 'place-submit');\n placeSubmit.setAttribute('type', 'button');\n placeSubmit.appendChild(document.createTextNode('Submit New Place'));\n form.appendChild(nameDiv);\n form.appendChild(descDiv);\n form.appendChild(latDiv);\n form.appendChild(lonDiv);\n form.appendChild(placeSubmit);\n //the event listener for the new place form\n placeSubmit.addEventListener('click', function () {\n //create the form data to send\n var formData = new FormData();\n formData.append('place-name', document.querySelector('#place-name').value);\n formData.append('place-description', document.querySelector('#place-description').value);\n formData.append('place-latitude', document.querySelector('#place-latitude').value);\n formData.append('place-longitude', document.querySelector('#place-longitude').value);\n //post the new place\n fetch('/places/new', {\n //send cookies with the request\n credentials: 'same-origin',\n method: 'post',\n body: formData\n })\n .then(function (response) {\n return response.json();\n })\n .then(function (placeJson) {\n if (placeJson.error == true) {\n throw new Error(placeJson.error_description);\n }\n //remove un-needed form elements\n //iterate through labels and remove parent div elements\n var labels = document.querySelectorAll('.place-label');\n for (var i = 0; i < labels.length; ++i) {\n form.removeChild(labels[i].parentNode);\n }\n form.removeChild(document.querySelector('#place-submit'));\n var newPlaceButton = document.querySelector('#create-new-place');\n //in order to remove a DOM Node, you need to run removeChild on the parent Node\n newPlaceButton.parentNode.removeChild(newPlaceButton);\n //add place marker\n var newOption = document.createElement('option');\n newOption.setAttribute('value', placeJson.uri);\n newOption.appendChild(document.createTextNode(placeJson.name));\n newOption.dataset.latitude = placeJson.latitude;\n newOption.dataset.longitude = placeJson.longitude;\n selectEl.appendChild(newOption);\n var newPlaceMarkerIcon = document.createElement('div');\n newPlaceMarkerIcon.classList.add('marker');\n var newPlaceMarker = new mapboxgl.Marker(newPlaceMarkerIcon, {offset: [-10, -20]}).setLngLat([placeJson.longitude, placeJson.latitude]).addTo(map);\n map.flyTo({center: [placeJson.longitude, placeJson.latitude]});\n\n newPlaceMarkerIcon.addEventListener('click', function () {\n map.flyTo({center: [placeJson.longitude, placeJson.latitude]});\n selectPlace(placeJson.uri);\n });\n //make selected\n selectPlace(placeJson.uri);\n }).catch(function (placeError) {\n alertify.reset();\n alertify.error(placeError);\n });\n });\n });\n containingDiv.appendChild(newLocButton);\n}\n\nfunction parseLocation(point) {\n var re = /\\((.*)\\)/;\n var resultArray = re.exec(point);\n var location = resultArray[1].split(' ');\n\n return [location[1], location[0]];\n}\n\nfunction selectPlace(uri) {\n document.querySelector('select [value=\"' + uri + '\"]').selected = true;\n}\n\nfunction getLatitudeFromMapbox(lnglat) {\n var resultArray = /\\((.*)\\)/.exec(lnglat);\n var location = resultArray[1].split(' ');\n\n return location[1];\n}\n\nfunction getLongitudeFromMapbox(lnglat) {\n var resultArray = /\\((.*)\\)/.exec(lnglat);\n var location = resultArray[1].split(' ');\n\n return location[0].replace(',', '');\n}\n"]} \ No newline at end of file +{"version":3,"sources":["newnote.js"],"names":["getLocation","navigator","geolocation","getCurrentPosition","position","addPlacesMap","coords","latitude","longitude","accuracy","uncertainty","fetch","credentials","method","then","response","json","j","error","alertify","reset","error_description","places","length","i","latlng","parseLocation","location","name","uri","push","addMap","catch","err","console","arguments","form","document","querySelector","mapDiv","createElement","classList","add","appendChild","mapboxgl","accessToken","map","Map","container","style","center","zoom","addControl","NavigationControl","el","mapMenu","streetsInput","setAttribute","addEventListener","setStyle","streetsLabel","createTextNode","satelliteInput","satelliteLabel","Marker","offset","setLngLat","addTo","containingDiv","selectEl","noLocation","geoLocation","dataset","insertBefore","forEach","item","option","text","placeMarkerIcon","flyTo","selectPlace","value","placeLat","selectedIndex","placeLon","newLocButton","nameDiv","nameLabel","nameEl","descDiv","descLabel","descEl","latDiv","latLabel","latEl","getLatitudeFromMapbox","getCenter","lonDiv","lonLabel","lonEl","getLongitudeFromMapbox","placeSubmit","formData","FormData","append","body","placeJson","Error","labels","querySelectorAll","removeChild","parentNode","newPlaceButton","newOption","newPlaceMarkerIcon","placeError","point","re","resultArray","exec","split","selected","lnglat","replace","button","disabled"],"mappings":"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","file":"../newnote.js","sourcesContent":["/* global mapboxgl, alertify */\nif ('geolocation' in navigator) {\n var button = document.querySelector('#locate');\n if (button.addEventListener) {\n //if we have javascript, event listeners and geolocation, make the locate\n //button clickable and add event\n button.disabled = false;\n button.addEventListener('click', getLocation);\n }\n}\n\nfunction getLocation() {\n navigator.geolocation.getCurrentPosition(function (position) {\n //the locate button has been clicked so add the places/map\n addPlacesMap(position.coords.latitude, position.coords.longitude, position.coords.accuracy);\n });\n}\n\nfunction addPlacesMap(latitude, longitude, uncertainty) {\n //get the nearby places\n fetch('/places/near/' + latitude + '/' + longitude + '?u=' + uncertainty, {\n credentials: 'same-origin',\n method: 'get'\n }).then(function (response) {\n return response.json();\n }).then(function (j) {\n if (j.error == true) {\n alertify.reset();\n alertify.error(j.error_description);\n }\n if (j.places.length > 0) {\n var i;\n var places = [];\n for (i = 0; i < j.places.length; ++i) {\n var latlng = parseLocation(j.places[i].location);\n var name = j.places[i].name;\n var uri = j.places[i].uri;\n places.push([name, uri, latlng[0], latlng[1]]);\n }\n //add a map with the nearby places\n addMap(latitude, longitude, places);\n } else {\n //add a map with just current location\n addMap(latitude, longitude);\n }\n }).catch(function (err) {\n console.error(err);\n });\n}\n\nfunction addMap(latitude, longitude, places) {\n //make places null if not supplied\n if (arguments.length == 2) {\n places = null;\n }\n // the form has a fieldset element that we are actually targetting\n var form = document.querySelector('.note-ui');\n var mapDiv = document.createElement('div');\n mapDiv.classList.add('map');\n //add the map div\n form.appendChild(mapDiv);\n //set up the mapbox gl map\n mapboxgl.accessToken = 'pk.eyJ1Ijoiam9ubnliYXJuZXMiLCJhIjoiY2l2cDhjYW04MDAwcjJ0cG1uZnhqcm82ayJ9.qA2zeVA-nsoMh9IFrd5KQw';\n var map = new mapboxgl.Map({\n container: mapDiv,\n style: 'mapbox://styles/mapbox/streets-v9',\n center: [longitude, latitude],\n zoom: 15\n });\n map.addControl(new mapboxgl.NavigationControl());\n //create the current location marker\n var el = document.createElement('div');\n el.classList.add('marker');\n //create the map style menu\n var mapMenu = document.createElement('div');\n mapMenu.classList.add('map-menu');\n var streetsInput = document.createElement('input');\n streetsInput.setAttribute('id', 'streets');\n streetsInput.setAttribute('type', 'radio');\n streetsInput.setAttribute('name', 'toggle');\n streetsInput.setAttribute('value', 'streets');\n streetsInput.setAttribute('checked', 'checked');\n streetsInput.addEventListener('click', function () {\n map.setStyle('mapbox://styles/mapbox/streets-v9');\n });\n var streetsLabel = document.createElement('label');\n streetsLabel.setAttribute('for', 'streets');\n streetsLabel.appendChild(document.createTextNode('Streets'));\n var satelliteInput = document.createElement('input');\n satelliteInput.setAttribute('id', 'satellite');\n satelliteInput.setAttribute('type', 'radio');\n satelliteInput.setAttribute('name', 'toggle');\n satelliteInput.setAttribute('value', 'streets');\n satelliteInput.addEventListener('click', function () {\n map.setStyle('mapbox://styles/mapbox/satellite-v9');\n });\n var satelliteLabel = document.createElement('label');\n satelliteLabel.setAttribute('for', 'satellite');\n satelliteLabel.appendChild(document.createTextNode('Satellite'));\n mapMenu.appendChild(streetsInput);\n mapMenu.appendChild(streetsLabel);\n mapMenu.appendChild(satelliteInput);\n mapMenu.appendChild(satelliteLabel);\n //add the map menu\n mapDiv.appendChild(mapMenu);\n //add a marker for the current location\n new mapboxgl.Marker(el, {offset: [-10, -20]}).setLngLat([longitude, latitude]).addTo(map);\n //create containing div for flexbox\n var containingDiv = document.createElement('div');\n //create the \n places.forEach(function (item) {\n var option = document.createElement('option');\n option.setAttribute('value', item[1]);\n var text = document.createTextNode(item[0]);\n option.appendChild(text);\n option.dataset.latitude = item[2];\n option.dataset.longitude = item[3];\n selectEl.appendChild(option);\n var placeMarkerIcon = document.createElement('div');\n placeMarkerIcon.classList.add('marker');\n new mapboxgl.Marker(placeMarkerIcon, {offset: [-10, -20]}).setLngLat([item[3], item[2]]).addTo(map);\n placeMarkerIcon.addEventListener('click', function () {\n map.flyTo({\n center: [\n item[3],\n item[2]\n ]\n });\n selectPlace(item[1]);\n });\n });\n //add an event listener\n selectEl.addEventListener('change', function () {\n if (selectEl.value !== 'no-location') {\n var placeLat = selectEl[selectEl.selectedIndex].dataset.latitude;\n var placeLon = selectEl[selectEl.selectedIndex].dataset.longitude;\n map.flyTo({\n center: [\n placeLon,\n placeLat\n ]\n });\n }\n });\n }\n //add a button to add a new place\n var newLocButton = document.createElement('button');\n newLocButton.setAttribute('type', 'button');\n newLocButton.setAttribute('id', 'create-new-place');\n newLocButton.appendChild(document.createTextNode('Create New Place?'));\n //the event listener\n newLocButton.addEventListener('click', function() {\n //add the form elements\n var nameDiv = document.createElement('div');\n var nameLabel = document.createElement('label');\n nameLabel.setAttribute('for', 'place-name');\n nameLabel.classList.add('place-label');\n nameLabel.appendChild(document.createTextNode('Place Name:'));\n var nameEl = document.createElement('input');\n nameEl.setAttribute('placeholder', 'Name');\n nameEl.setAttribute('name', 'place-name');\n nameEl.setAttribute('id', 'place-name');\n nameEl.setAttribute('type', 'text');\n nameDiv.appendChild(nameLabel);\n nameDiv.appendChild(nameEl);\n var descDiv = document.createElement('div');\n var descLabel = document.createElement('label');\n descLabel.setAttribute('for', 'place-description');\n descLabel.classList.add('place-label');\n descLabel.appendChild(document.createTextNode('Place Description:'));\n var descEl = document.createElement('input');\n descEl.setAttribute('placeholder', 'Description');\n descEl.setAttribute('name', 'place-description');\n descEl.setAttribute('id', 'place-description');\n descEl.setAttribute('type', 'text');\n descDiv.appendChild(descLabel);\n descDiv.appendChild(descEl);\n var latDiv = document.createElement('div');\n var latLabel = document.createElement('label');\n latLabel.setAttribute('for', 'place-latitude');\n latLabel.classList.add('place-label');\n latLabel.appendChild(document.createTextNode('Place Latitude:'));\n var latEl = document.createElement('input');\n latEl.setAttribute('name', 'place-latitude');\n latEl.setAttribute('id', 'place-latitude');\n latEl.setAttribute('type', 'text');\n latEl.value = getLatitudeFromMapbox(map.getCenter());\n latDiv.appendChild(latLabel);\n latDiv.appendChild(latEl);\n var lonDiv = document.createElement('div');\n var lonLabel = document.createElement('label');\n lonLabel.setAttribute('for', 'place-longitude');\n lonLabel.classList.add('place-label');\n lonLabel.appendChild(document.createTextNode('Place Longitude:'));\n var lonEl = document.createElement('input');\n lonEl.setAttribute('name', 'place-longitude');\n lonEl.setAttribute('id', 'place-longitude');\n lonEl.setAttribute('type', 'text');\n lonEl.value = getLongitudeFromMapbox(map.getCenter());\n lonDiv.appendChild(lonLabel);\n lonDiv.appendChild(lonEl);\n var placeSubmit = document.createElement('button');\n placeSubmit.setAttribute('id', 'place-submit');\n placeSubmit.setAttribute('value', 'Submit New Place');\n placeSubmit.setAttribute('name', 'place-submit');\n placeSubmit.setAttribute('type', 'button');\n placeSubmit.appendChild(document.createTextNode('Submit New Place'));\n form.appendChild(nameDiv);\n form.appendChild(descDiv);\n form.appendChild(latDiv);\n form.appendChild(lonDiv);\n form.appendChild(placeSubmit);\n //the event listener for the new place form\n placeSubmit.addEventListener('click', function () {\n //create the form data to send\n var formData = new FormData();\n formData.append('place-name', document.querySelector('#place-name').value);\n formData.append('place-description', document.querySelector('#place-description').value);\n formData.append('place-latitude', document.querySelector('#place-latitude').value);\n formData.append('place-longitude', document.querySelector('#place-longitude').value);\n //post the new place\n fetch('/places/new', {\n //send cookies with the request\n credentials: 'same-origin',\n method: 'post',\n body: formData\n })\n .then(function (response) {\n return response.json();\n })\n .then(function (placeJson) {\n if (placeJson.error == true) {\n throw new Error(placeJson.error_description);\n }\n //remove un-needed form elements\n //iterate through labels and remove parent div elements\n var labels = document.querySelectorAll('.place-label');\n for (var i = 0; i < labels.length; ++i) {\n form.removeChild(labels[i].parentNode);\n }\n form.removeChild(document.querySelector('#place-submit'));\n var newPlaceButton = document.querySelector('#create-new-place');\n //in order to remove a DOM Node, you need to run removeChild on the parent Node\n newPlaceButton.parentNode.removeChild(newPlaceButton);\n //add place marker\n var newOption = document.createElement('option');\n newOption.setAttribute('value', placeJson.uri);\n newOption.appendChild(document.createTextNode(placeJson.name));\n newOption.dataset.latitude = placeJson.latitude;\n newOption.dataset.longitude = placeJson.longitude;\n selectEl.appendChild(newOption);\n var newPlaceMarkerIcon = document.createElement('div');\n newPlaceMarkerIcon.classList.add('marker');\n var newPlaceMarker = new mapboxgl.Marker(newPlaceMarkerIcon, {offset: [-10, -20]}).setLngLat([placeJson.longitude, placeJson.latitude]).addTo(map);\n map.flyTo({center: [placeJson.longitude, placeJson.latitude]});\n\n newPlaceMarkerIcon.addEventListener('click', function () {\n map.flyTo({center: [placeJson.longitude, placeJson.latitude]});\n selectPlace(placeJson.uri);\n });\n //make selected\n selectPlace(placeJson.uri);\n }).catch(function (placeError) {\n alertify.reset();\n alertify.error(placeError);\n });\n });\n });\n containingDiv.appendChild(newLocButton);\n}\n\nfunction parseLocation(point) {\n var re = /\\((.*)\\)/;\n var resultArray = re.exec(point);\n var location = resultArray[1].split(' ');\n\n return [location[1], location[0]];\n}\n\nfunction selectPlace(uri) {\n document.querySelector('select [value=\"' + uri + '\"]').selected = true;\n}\n\nfunction getLatitudeFromMapbox(lnglat) {\n var resultArray = /\\((.*)\\)/.exec(lnglat);\n var location = resultArray[1].split(' ');\n\n return location[1];\n}\n\nfunction getLongitudeFromMapbox(lnglat) {\n var resultArray = /\\((.*)\\)/.exec(lnglat);\n var location = resultArray[1].split(' ');\n\n return location[0].replace(',', '');\n}\n"]} \ No newline at end of file diff --git a/public/assets/js/newnote.js b/public/assets/js/newnote.js index 086e2fb7..ebac396a 100644 --- a/public/assets/js/newnote.js +++ b/public/assets/js/newnote.js @@ -1,2 +1,2 @@ -function getLocation(){navigator.geolocation.getCurrentPosition(function(e){addPlacesMap(e.coords.latitude,e.coords.longitude,e.coords.accuracy)})}function addPlacesMap(e,t,a){fetch("/places/near/"+e+"/"+t+"?u="+a,{credentials:"same-origin",method:"get"}).then(function(e){return e.json()}).then(function(a){if(1==a.error&&(alertify.reset(),alertify.error(a.error_description)),a.places.length>0){var n,d=[];for(n=0;n0){var n,d=[];for(n=0;nGJ-%cx<6> zi|2FMq%+p6N7<6YQoc;}Pkb;V>wUB2Wxf+ZCK}0#u|d;~YS(jkPHXtgJV~X)*8P%h zy5!M&(=A&jY?M5A!`k)rx5ZX0Dw<^}X^=yb#+}ey%fTgWTo24!)B} zwAjxTbb8&X-)BW#&3{Tb|L1i(BDN`GL4P3UToWG^+mm&AMpHKzd+!Vp^f%^U$<>f; zd6l*{_*2#rN!P#YKQ(T?Qh7)vs?9C*oq1VOOwW~reP4d38nkVeV{7vhx+a~tJ~-?D z=9fX0ruPjm_4C~i{!u=@7&STwN_P6L@*UV~Jy=j*i zQlfsPTi1q3?G&`vW!q9{efrU|{z&U$89vp^V!`2acf?LSaz4-aBInW1{jZGXYiw|| zvs)%9prTke)8YDr0*#vE2Mk`k5U9O1;meChhO$=ye(u-B6z%>u*PobMk5&x($a=% zC+uy$FO>eGq>$KR>6)m|ur6^u`=P?=-FG;9Q|3Ne>~^KI>f`*5Ez75r-}%zU!K{9G zt3+PThOFn;cbXYpV0Sb9(R-=sm0{AJZuXzgx!Hc5(9&GybLyvMkKoH=rsfVY`%M;n zer7&zHBaxyb8iwa6jm|2ecj`q8@Wh!(bd&|8KRcxsqkCOSJ=aTEyv>Hk=_4;Uh_K# zzWr0X+Hc`A5tEIndB6Ysh?v8|`EiTTa!$s#GwW2p_L*^H8 zR@!K-+xP17(u1jdcQ&ecJaT{M7uR#jN$XgN%gW>Y%;k)`-G+0FT{HNrAG|l!E_HZ)mMyYmUu?uub2r(G z9SIjCw9S|8(0pLUzMWM?myh{+QNJ4HID_Knqsq@>jaME@3-9RAzCvp zu8=!WfiFdsQ@B>4QlNWwP4dh@ZuKJ(Mj`(fv1HtS*Cl`D$hMDd5=VkQFYezyb>Y9` zO(DE8@+BoIvQbsDmUpVozs~tIDrnikdv+^I1I#CMm3lszw70$XQPbrq(|9#L=}5i& zS0>eBaJFTZgq_;&BbC2g_B@)lK;!8A6TUKbMSVBkIYnOfdl_e=F>4bG)2IIjcQ1>c{e6AJ zs?*PTeU{wYzru0UOqV&o3+!xD*58mU@L#o iCnq-j&UW{%b3cDFKmP6tIkw;p2P-c<_-eAQkRJef3uep! literal 1737 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 sejPio!mHSU Date: Fri, 25 Nov 2016 16:16:26 +0000 Subject: [PATCH 3/4] Update tests to match new markup --- tests/NotesTest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/NotesTest.php b/tests/NotesTest.php index c1ac954d..0fc212e4 100644 --- a/tests/NotesTest.php +++ b/tests/NotesTest.php @@ -73,7 +73,7 @@ class NotesTest extends TestCase public function testDefaultImageUsed() { $this->visit($this->appurl . '/notes/C') - ->see(''); + ->see(''); } /** @@ -84,7 +84,7 @@ class NotesTest extends TestCase public function testProfileImageUsed() { $this->visit($this->appurl . '/notes/D') - ->see(''); + ->see(''); } /** From fe217c26d3dc8f2eb140fa41684c67851f6987c5 Mon Sep 17 00:00:00 2001 From: Jonny Barnes Date: Fri, 25 Nov 2016 16:20:57 +0000 Subject: [PATCH 4/4] Update changelog --- changelog.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/changelog.md b/changelog.md index d5ccf258..dc41575e 100644 --- a/changelog.md +++ b/changelog.md @@ -1,6 +1,6 @@ # Changelog -## Version {next} +## Version 0.0.16.2 (2016-11-25) - improved contact h-cards - Better look in /contacts - h-cards now have person-tags (issue#36)