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..dc41575e 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,11 @@ # Changelog +## Version 0.0.16.2 (2016-11-25) + - 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 - 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 7c6e9515..6e7772a3 100644 Binary files a/public/assets/css/app.css.br and b/public/assets/css/app.css.br differ diff --git a/public/assets/css/app.css.gz b/public/assets/css/app.css.gz index 2c7ee889..596cc54c 100644 Binary files a/public/assets/css/app.css.gz and b/public/assets/css/app.css.gz differ diff --git a/public/assets/css/maps/app.css.map b/public/assets/css/maps/app.css.map index 99f8b4af..a0253dd0 100644 --- a/public/assets/css/maps/app.css.map +++ b/public/assets/css/maps/app.css.map @@ -1 +1 @@ -{"version":3,"sources":["app.scss","layout.scss","styles.scss","pagination.scss","note-form.scss","mapbox.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","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.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"]} \ 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/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, 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;nEdit 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 + 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(''); } /**