API improves

This commit is contained in:
Diego Najar 2019-02-19 08:38:17 +01:00
parent 4365147a40
commit 3058904fd2
27 changed files with 4937 additions and 179 deletions

View File

@ -192,7 +192,7 @@ $(document).ready(function() {
// Check file size ?
// Check file type/extension ?
$("#jsbluditProgressBar").removeClass().addClass("progress-bar bg-primary");
$("#jsbluditProgressBar").width("0");
// Data to send via AJAX
@ -222,11 +222,11 @@ $(document).ready(function() {
}
}).done(function(data) {
if (data.status==0) {
$("#jsbluditProgressBar").width("0");
$("#jsbluditProgressBar").removeClass("bg-primary").addClass("bg-success");
// Get the files for the first page, this include the files uploaded
getFiles(1);
} else {
$("#jsbluditProgressBar").width("0");
$("#jsbluditProgressBar").removeClass("bg-primary").addClass("bg-danger");
showMediaAlert(data.message);
}
});

View File

@ -52,4 +52,4 @@ a:hover {
background-color: #d44545;
border-left: 6px solid #ff9c9c !important;
color: #ffffff;
}
}

View File

@ -1,11 +1,13 @@
html {
height: 100%;
font-size: 0.9rem;
background: #fcfcfc;
}
body {
background: #fcfcfc;
height: 100%;
overflow: hidden;
margin: 0px;
display: flex;
background: #fdfdfd;
}
/* LOGIN */
@ -15,7 +17,70 @@ body.login {
height: 100%;
}
#editor {
background: #fcfcfc;
border: none;
/* TOOLBAR */
#toolbar {
font-size: 14px;
border-bottom: 1px solid #f0f0f0;
text-shadow: 2px 2px 3px rgba(255,255,255,0.1);
cursor: pointer;
}
#message {
color: rgba(36, 122, 43, 0.77);
}
/* EDITOR */
div.editor-container {
margin: 0 auto;
background: #fdfdfd;
}
/* TAGS */
div.tags-list {
background: #333;
font-size: 0.9em;
}
#currentTags li.list-group-item {
background: none;
color: #ccc;
border: none;
cursor: pointer;
padding: 5px 15px;
}
#currentTags li.list-group-item:hover {
color: #fff;
}
#currentTags li.tagSelected {
background: #334E6A;
color: #fff;
}
/* PAGES */
div.pages-list {
background: #f7f7f7;
}
#currentPages li.list-group-item {
background: none;
color: #333;
border-right: 3px solid #f7f7f7;
cursor: pointer;
}
#currentPages li.list-group-item:hover {
color: #000;
border-right: 3px solid #ccc;
}
#currentPages li.pageSelected {
color: #000;
border-right: 3px solid #ccc;
}
div.pageItemContent {
color: #828282;
font-size: 0.8em;
}

View File

@ -1,4 +1,6 @@
.CodeMirror {
background: #fcfcfc;
border: none;
padding: 0;
height: 100%;
background: #fdfdfd;
}

Binary file not shown.

View File

@ -0,0 +1,845 @@
/*!
* Line Awesome 1.1.0 by @icons_8 - https://icons8.com/line-awesome
* License - https://icons8.com/good-boy-license/ (Font: SIL OFL 1.1, CSS: MIT License)
*
* Made with love by Icons8 [ https://icons8.com/ ] using FontCustom [ https://github.com/FontCustom/fontcustom ]
*
* Contacts:
* [ https://icons8.com/contact ]
*
* Follow Icon8 on
* Twitter [ https://twitter.com/icons_8 ]
* Facebook [ https://www.facebook.com/Icons8 ]
* Google+ [ https://plus.google.com/+Icons8 ]
* GitHub [ https://github.com/icons8 ]
*/
@font-face {
font-family: "FontAwesome";
src: url("../fonts/line-awesome.eot?v=1.1.");
src: url("../fonts/line-awesome.eot??v=1.1.#iefix") format("embedded-opentype"),
url("../fonts/line-awesome.woff2?v=1.1.") format("woff2"),
url("../fonts/line-awesome.woff?v=1.1.") format("woff"),
url("../fonts/line-awesome.ttf?v=1.1.") format("truetype"),
url("../fonts/line-awesome.svg?v=1.1.#fa") format("svg");
font-weight: normal;
font-style: normal;
}
@media screen and (-webkit-min-device-pixel-ratio:0) {
@font-face {
font-family: "FontAwesome";
src: url("../fonts/line-awesome.svg?v=1.1.#fa") format("svg");
}
}
/* Thanks to http://fontawesome.io @fontawesome and @davegandy */
.fa {
display: inline-block;
font: normal normal normal 14px/1 "FontAwesome";
font-size: inherit;
text-decoration: inherit;
text-rendering: optimizeLegibility;
text-transform: none;
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
font-smoothing: antialiased;
}
/* makes the font 33% larger relative to the icon container */
.fa-lg {
font-size: 1.33333333em;
line-height: 0.75em;
vertical-align: -15%;
}
.fa-2x {
font-size: 2em;
}
.fa-3x {
font-size: 3em;
}
.fa-4x {
font-size: 4em;
}
.fa-5x {
font-size: 5em;
}
.fa-fw {
width: 1.28571429em;
text-align: center;
}
.fa-ul {
padding-left: 0;
margin-left: 2.14285714em;
list-style-type: none;
}
.fa-ul > li {
position: relative;
}
.fa-li {
position: absolute;
left: -2.14285714em;
width: 2.14285714em;
top: 0.14285714em;
text-align: center;
}
.fa-li.fa-lg {
left: -1.85714286em;
}
.fa-border {
padding: .2em .25em .15em;
border: solid 0.08em #eeeeee;
border-radius: .1em;
}
.pull-right {
float: right;
}
.pull-left {
float: left;
}
.fa.pull-left {
margin-right: .3em;
}
.fa.pull-right {
margin-left: .3em;
}
.fa-spin {
-webkit-animation: fa-spin 2s infinite linear;
animation: fa-spin 2s infinite linear;
}
@-webkit-keyframes fa-spin {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(359deg);
transform: rotate(359deg);
}
}
@keyframes fa-spin {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(359deg);
transform: rotate(359deg);
}
}
.fa-rotate-90 {
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
-webkit-transform: rotate(90deg);
-ms-transform: rotate(90deg);
transform: rotate(90deg);
}
.fa-rotate-180 {
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
-webkit-transform: rotate(180deg);
-ms-transform: rotate(180deg);
transform: rotate(180deg);
}
.fa-rotate-270 {
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
-webkit-transform: rotate(270deg);
-ms-transform: rotate(270deg);
transform: rotate(270deg);
}
.fa-flip-horizontal {
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);
-webkit-transform: scale(-1, 1);
-ms-transform: scale(-1, 1);
transform: scale(-1, 1);
}
.fa-flip-vertical {
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);
-webkit-transform: scale(1, -1);
-ms-transform: scale(1, -1);
transform: scale(1, -1);
}
:root .fa-rotate-90,
:root .fa-rotate-180,
:root .fa-rotate-270,
:root .fa-flip-horizontal,
:root .fa-flip-vertical {
filter: none;
}
.fa-stack {
position: relative;
display: inline-block;
width: 2em;
height: 2em;
line-height: 2em;
vertical-align: middle;
}
.fa-stack-1x,
.fa-stack-2x {
position: absolute;
left: 0;
width: 100%;
text-align: center;
}
.fa-stack-1x {
line-height: inherit;
}
.fa-stack-2x {
font-size: 2em;
}
.fa-inverse {
color: #ffffff;
}
/* Thanks to http://fontawesome.io @fontawesome and @davegandy */
.fa-500px:before { content: "\f100"; }
.fa-adjust:before { content: "\f101"; }
.fa-adn:before { content: "\f102"; }
.fa-align-center:before { content: "\f103"; }
.fa-align-justify:before { content: "\f104"; }
.fa-align-left:before { content: "\f105"; }
.fa-align-right:before { content: "\f106"; }
.fa-amazon:before { content: "\f107"; }
.fa-ambulance:before { content: "\f108"; }
.fa-anchor:before { content: "\f109"; }
.fa-android:before { content: "\f10a"; }
.fa-angellist:before { content: "\f10b"; }
.fa-angle-double-down:before { content: "\f10c"; }
.fa-angle-double-left:before { content: "\f10d"; }
.fa-angle-double-right:before { content: "\f10e"; }
.fa-angle-double-up:before { content: "\f10f"; }
.fa-angle-down:before { content: "\f110"; }
.fa-angle-left:before { content: "\f111"; }
.fa-angle-right:before { content: "\f112"; }
.fa-angle-up:before { content: "\f113"; }
.fa-apple:before { content: "\f114"; }
.fa-archive:before { content: "\f115"; }
.fa-area-chart:before { content: "\f116"; }
.fa-arrow-circle-down:before { content: "\f117"; }
.fa-arrow-circle-left:before { content: "\f118"; }
.fa-arrow-circle-o-down:before { content: "\f119"; }
.fa-arrow-circle-o-left:before { content: "\f11a"; }
.fa-arrow-circle-o-right:before { content: "\f11b"; }
.fa-arrow-circle-o-up:before { content: "\f11c"; }
.fa-arrow-circle-right:before { content: "\f11d"; }
.fa-arrow-circle-up:before { content: "\f11e"; }
.fa-arrow-down:before { content: "\f11f"; }
.fa-arrow-left:before { content: "\f120"; }
.fa-arrow-right:before { content: "\f121"; }
.fa-arrow-up:before { content: "\f122"; }
.fa-arrows:before { content: "\f123"; }
.fa-arrows-alt:before { content: "\f124"; }
.fa-arrows-h:before { content: "\f125"; }
.fa-arrows-v:before { content: "\f126"; }
.fa-asterisk:before { content: "\f127"; }
.fa-at:before { content: "\f128"; }
.fa-automobile:before { content: "\f129"; }
.fa-backward:before { content: "\f12a"; }
.fa-balance-scale:before { content: "\f12b"; }
.fa-ban:before { content: "\f12c"; }
.fa-bank:before { content: "\f12d"; }
.fa-bar-chart:before { content: "\f12e"; }
.fa-bar-chart-o:before { content: "\f12f"; }
.fa-barcode:before { content: "\f130"; }
.fa-bars:before { content: "\f131"; }
.fa-battery-0:before { content: "\f132"; }
.fa-battery-1:before { content: "\f133"; }
.fa-battery-2:before { content: "\f134"; }
.fa-battery-3:before { content: "\f135"; }
.fa-battery-4:before { content: "\f136"; }
.fa-battery-empty:before { content: "\f137"; }
.fa-battery-full:before { content: "\f138"; }
.fa-battery-half:before { content: "\f139"; }
.fa-battery-quarter:before { content: "\f13a"; }
.fa-battery-three-quarters:before { content: "\f13b"; }
.fa-bed:before { content: "\f13c"; }
.fa-beer:before { content: "\f13d"; }
.fa-behance:before { content: "\f13e"; }
.fa-behance-square:before { content: "\f13f"; }
.fa-bell:before { content: "\f140"; }
.fa-bell-o:before { content: "\f141"; }
.fa-bell-slash:before { content: "\f142"; }
.fa-bell-slash-o:before { content: "\f143"; }
.fa-bicycle:before { content: "\f144"; }
.fa-binoculars:before { content: "\f145"; }
.fa-birthday-cake:before { content: "\f146"; }
.fa-bitbucket:before { content: "\f147"; }
.fa-bitbucket-square:before { content: "\f148"; }
.fa-bitcoin:before { content: "\f149"; }
.fa-black-tie:before { content: "\f14a"; }
.fa-bold:before { content: "\f14b"; }
.fa-bolt:before { content: "\f14c"; }
.fa-bomb:before { content: "\f14d"; }
.fa-book:before { content: "\f14e"; }
.fa-bookmark:before { content: "\f14f"; }
.fa-bookmark-o:before { content: "\f150"; }
.fa-briefcase:before { content: "\f151"; }
.fa-btc:before { content: "\f152"; }
.fa-bug:before { content: "\f153"; }
.fa-building:before { content: "\f154"; }
.fa-building-o:before { content: "\f155"; }
.fa-bullhorn:before { content: "\f156"; }
.fa-bullseye:before { content: "\f157"; }
.fa-bus:before { content: "\f158"; }
.fa-buysellads:before { content: "\f159"; }
.fa-cab:before { content: "\f15a"; }
.fa-calculator:before { content: "\f15b"; }
.fa-calendar:before { content: "\f15c"; }
.fa-calendar-check-o:before { content: "\f15d"; }
.fa-calendar-minus-o:before { content: "\f15e"; }
.fa-calendar-o:before { content: "\f15f"; }
.fa-calendar-plus-o:before { content: "\f160"; }
.fa-calendar-times-o:before { content: "\f161"; }
.fa-camera:before { content: "\f162"; }
.fa-camera-retro:before { content: "\f163"; }
.fa-car:before { content: "\f164"; }
.fa-caret-down:before { content: "\f165"; }
.fa-caret-left:before { content: "\f166"; }
.fa-caret-right:before { content: "\f167"; }
.fa-caret-square-o-down:before, .fa-toggle-down:before { content: "\f168"; }
.fa-caret-square-o-left:before, .fa-toggle-left:before { content: "\f169"; }
.fa-caret-square-o-right:before, .fa-toggle-right:before { content: "\f16a"; }
.fa-caret-square-o-up:before, .fa-toggle-up:before { content: "\f16b"; }
.fa-caret-up:before { content: "\f16c"; }
.fa-cart-arrow-down:before { content: "\f16d"; }
.fa-cart-plus:before { content: "\f16e"; }
.fa-cc:before { content: "\f16f"; }
.fa-cc-amex:before { content: "\f170"; }
.fa-cc-diners-club:before { content: "\f171"; }
.fa-cc-discover:before { content: "\f172"; }
.fa-cc-jcb:before { content: "\f173"; }
.fa-cc-mastercard:before { content: "\f174"; }
.fa-cc-paypal:before { content: "\f175"; }
.fa-cc-stripe:before { content: "\f176"; }
.fa-cc-visa:before { content: "\f177"; }
.fa-certificate:before { content: "\f178"; }
.fa-chain:before { content: "\f179"; }
.fa-chain-broken:before { content: "\f17a"; }
.fa-check:before { content: "\f17b"; }
.fa-check-circle:before { content: "\f17c"; }
.fa-check-circle-o:before { content: "\f17d"; }
.fa-check-square:before { content: "\f17e"; }
.fa-check-square-o:before { content: "\f17f"; }
.fa-chevron-circle-down:before { content: "\f180"; }
.fa-chevron-circle-left:before { content: "\f181"; }
.fa-chevron-circle-right:before { content: "\f182"; }
.fa-chevron-circle-up:before { content: "\f183"; }
.fa-chevron-down:before { content: "\f184"; }
.fa-chevron-left:before { content: "\f185"; }
.fa-chevron-right:before { content: "\f186"; }
.fa-chevron-up:before { content: "\f187"; }
.fa-child:before { content: "\f188"; }
.fa-chrome:before { content: "\f189"; }
.fa-circle:before { content: "\f18a"; }
.fa-circle-o:before { content: "\f18b"; }
.fa-circle-o-notch:before { content: "\f18c"; }
.fa-circle-thin:before { content: "\f18d"; }
.fa-clipboard:before { content: "\f18e"; }
.fa-clock-o:before { content: "\f18f"; }
.fa-clone:before { content: "\f190"; }
.fa-close:before { content: "\f191"; }
.fa-cloud:before { content: "\f192"; }
.fa-cloud-download:before { content: "\f193"; }
.fa-cloud-upload:before { content: "\f194"; }
.fa-cny:before { content: "\f195"; }
.fa-code:before { content: "\f196"; }
.fa-code-fork:before { content: "\f197"; }
.fa-codepen:before { content: "\f198"; }
.fa-coffee:before { content: "\f199"; }
.fa-cog:before { content: "\f19a"; }
.fa-cogs:before { content: "\f19b"; }
.fa-columns:before { content: "\f19c"; }
.fa-comment:before { content: "\f19d"; }
.fa-comment-o:before { content: "\f19e"; }
.fa-commenting:before { content: "\f19f"; }
.fa-commenting-o:before { content: "\f1a0"; }
.fa-comments:before { content: "\f1a1"; }
.fa-comments-o:before { content: "\f1a2"; }
.fa-compass:before { content: "\f1a3"; }
.fa-compress:before { content: "\f1a4"; }
.fa-connectdevelop:before { content: "\f1a5"; }
.fa-contao:before { content: "\f1a6"; }
.fa-copy:before { content: "\f1a7"; }
.fa-copyright:before { content: "\f1a8"; }
.fa-creative-commons:before { content: "\f1a9"; }
.fa-credit-card:before { content: "\f1aa"; }
.fa-crop:before { content: "\f1ab"; }
.fa-crosshairs:before { content: "\f1ac"; }
.fa-css3:before { content: "\f1ad"; }
.fa-cube:before { content: "\f1ae"; }
.fa-cubes:before { content: "\f1af"; }
.fa-cut:before { content: "\f1b0"; }
.fa-cutlery:before { content: "\f1b1"; }
.fa-dashboard:before { content: "\f1b2"; }
.fa-dashcube:before { content: "\f1b3"; }
.fa-database:before { content: "\f1b4"; }
.fa-dedent:before { content: "\f1b5"; }
.fa-delicious:before { content: "\f1b6"; }
.fa-desktop:before { content: "\f1b7"; }
.fa-deviantart:before { content: "\f1b8"; }
.fa-diamond:before { content: "\f1b9"; }
.fa-digg:before { content: "\f1ba"; }
.fa-dollar:before { content: "\f1bb"; }
.fa-dot-circle-o:before { content: "\f1bc"; }
.fa-download:before { content: "\f1bd"; }
.fa-dribbble:before { content: "\f1be"; }
.fa-dropbox:before { content: "\f1bf"; }
.fa-drupal:before { content: "\f1c0"; }
.fa-edit:before { content: "\f1c1"; }
.fa-eject:before { content: "\f1c2"; }
.fa-ellipsis-h:before { content: "\f1c3"; }
.fa-ellipsis-v:before { content: "\f1c4"; }
.fa-empire:before, .fa-ge:before { content: "\f1c5"; }
.fa-envelope:before { content: "\f1c6"; }
.fa-envelope-o:before { content: "\f1c7"; }
.fa-envelope-square:before { content: "\f1c8"; }
.fa-eraser:before { content: "\f1c9"; }
.fa-eur:before { content: "\f1ca"; }
.fa-euro:before { content: "\f1cb"; }
.fa-exchange:before { content: "\f1cc"; }
.fa-exclamation:before { content: "\f1cd"; }
.fa-exclamation-circle:before { content: "\f1ce"; }
.fa-exclamation-triangle:before { content: "\f1cf"; }
.fa-expand:before { content: "\f1d0"; }
.fa-expeditedssl:before { content: "\f1d1"; }
.fa-external-link:before { content: "\f1d2"; }
.fa-external-link-square:before { content: "\f1d3"; }
.fa-eye:before { content: "\f1d4"; }
.fa-eye-slash:before { content: "\f1d5"; }
.fa-eyedropper:before { content: "\f1d6"; }
.fa-facebook:before, .fa-facebook-f:before { content: "\f1d7"; }
.fa-facebook-official:before { content: "\f1d8"; }
.fa-facebook-square:before { content: "\f1d9"; }
.fa-fast-backward:before { content: "\f1da"; }
.fa-fast-forward:before { content: "\f1db"; }
.fa-fax:before { content: "\f1dc"; }
.fa-female:before { content: "\f1dd"; }
.fa-fighter-jet:before { content: "\f1de"; }
.fa-file:before { content: "\f1df"; }
.fa-file-archive-o:before { content: "\f1e0"; }
.fa-file-audio-o:before { content: "\f1e1"; }
.fa-file-code-o:before { content: "\f1e2"; }
.fa-file-excel-o:before { content: "\f1e3"; }
.fa-file-image-o:before { content: "\f1e4"; }
.fa-file-movie-o:before { content: "\f1e5"; }
.fa-file-o:before { content: "\f1e6"; }
.fa-file-pdf-o:before { content: "\f1e7"; }
.fa-file-photo-o:before { content: "\f1e8"; }
.fa-file-picture-o:before { content: "\f1e9"; }
.fa-file-powerpoint-o:before { content: "\f1ea"; }
.fa-file-sound-o:before { content: "\f1eb"; }
.fa-file-text:before { content: "\f1ec"; }
.fa-file-text-o:before { content: "\f1ed"; }
.fa-file-video-o:before { content: "\f1ee"; }
.fa-file-word-o:before { content: "\f1ef"; }
.fa-file-zip-o:before { content: "\f1f0"; }
.fa-files-o:before { content: "\f1f1"; }
.fa-film:before { content: "\f1f2"; }
.fa-filter:before { content: "\f1f3"; }
.fa-fire:before { content: "\f1f4"; }
.fa-fire-extinguisher:before { content: "\f1f5"; }
.fa-firefox:before { content: "\f1f6"; }
.fa-flag:before { content: "\f1f7"; }
.fa-flag-checkered:before { content: "\f1f8"; }
.fa-flag-o:before { content: "\f1f9"; }
.fa-flash:before { content: "\f1fa"; }
.fa-flask:before { content: "\f1fb"; }
.fa-flickr:before { content: "\f1fc"; }
.fa-floppy-o:before { content: "\f1fd"; }
.fa-folder:before { content: "\f1fe"; }
.fa-folder-o:before { content: "\f1ff"; }
.fa-folder-open:before { content: "\f200"; }
.fa-folder-open-o:before { content: "\f201"; }
.fa-font:before { content: "\f202"; }
.fa-fonticons:before { content: "\f203"; }
.fa-forumbee:before { content: "\f204"; }
.fa-forward:before { content: "\f205"; }
.fa-foursquare:before { content: "\f206"; }
.fa-frown-o:before { content: "\f207"; }
.fa-futbol-o:before, .fa-soccer-ball-o:before { content: "\f208"; }
.fa-gamepad:before { content: "\f209"; }
.fa-gavel:before { content: "\f20a"; }
.fa-gbp:before { content: "\f20b"; }
.fa-gear:before { content: "\f20c"; }
.fa-gears:before { content: "\f20d"; }
.fa-genderless:before { content: "\f20e"; }
.fa-get-pocket:before { content: "\f20f"; }
.fa-gg:before { content: "\f210"; }
.fa-gg-circle:before { content: "\f211"; }
.fa-gift:before { content: "\f212"; }
.fa-git:before { content: "\f213"; }
.fa-git-square:before { content: "\f214"; }
.fa-github:before { content: "\f215"; }
.fa-github-alt:before { content: "\f216"; }
.fa-github-square:before { content: "\f217"; }
.fa-glass:before { content: "\f218"; }
.fa-globe:before { content: "\f219"; }
.fa-google:before { content: "\f21a"; }
.fa-google-plus:before { content: "\f21b"; }
.fa-google-plus-square:before { content: "\f21c"; }
.fa-google-wallet:before { content: "\f21d"; }
.fa-graduation-cap:before { content: "\f21e"; }
.fa-gratipay:before, .fa-gittip:before { content: "\f21f"; }
.fa-group:before { content: "\f220"; }
.fa-h-square:before { content: "\f221"; }
.fa-hacker-news:before { content: "\f222"; }
.fa-hand-grab-o:before { content: "\f223"; }
.fa-hand-lizard-o:before { content: "\f224"; }
.fa-hand-o-down:before { content: "\f225"; }
.fa-hand-o-left:before { content: "\f226"; }
.fa-hand-o-right:before { content: "\f227"; }
.fa-hand-o-up:before { content: "\f228"; }
.fa-hand-paper-o:before { content: "\f229"; }
.fa-hand-peace-o:before { content: "\f22a"; }
.fa-hand-pointer-o:before { content: "\f22b"; }
.fa-hand-rock-o:before { content: "\f22c"; }
.fa-hand-scissors-o:before { content: "\f22d"; }
.fa-hand-spock-o:before { content: "\f22e"; }
.fa-hand-stop-o:before { content: "\f22f"; }
.fa-hdd-o:before { content: "\f230"; }
.fa-header:before { content: "\f231"; }
.fa-headphones:before { content: "\f232"; }
.fa-heart:before { content: "\f233"; }
.fa-heart-o:before { content: "\f234"; }
.fa-heartbeat:before { content: "\f235"; }
.fa-history:before { content: "\f236"; }
.fa-home:before { content: "\f237"; }
.fa-hospital-o:before { content: "\f238"; }
.fa-hotel:before { content: "\f239"; }
.fa-hourglass:before { content: "\f23a"; }
.fa-hourglass-1:before { content: "\f23b"; }
.fa-hourglass-2:before { content: "\f23c"; }
.fa-hourglass-3:before { content: "\f23d"; }
.fa-hourglass-end:before { content: "\f23e"; }
.fa-hourglass-half:before { content: "\f23f"; }
.fa-hourglass-o:before { content: "\f240"; }
.fa-hourglass-start:before { content: "\f241"; }
.fa-houzz:before { content: "\f242"; }
.fa-html5:before { content: "\f243"; }
.fa-i-cursor:before { content: "\f244"; }
.fa-ils:before { content: "\f245"; }
.fa-image:before { content: "\f246"; }
.fa-inbox:before { content: "\f247"; }
.fa-indent:before { content: "\f248"; }
.fa-industry:before { content: "\f249"; }
.fa-info:before { content: "\f24a"; }
.fa-info-circle:before { content: "\f24b"; }
.fa-inr:before { content: "\f24c"; }
.fa-instagram:before { content: "\f24d"; }
.fa-institution:before { content: "\f24e"; }
.fa-internet-explorer:before { content: "\f24f"; }
.fa-ioxhost:before { content: "\f250"; }
.fa-italic:before { content: "\f251"; }
.fa-joomla:before { content: "\f252"; }
.fa-jpy:before { content: "\f253"; }
.fa-jsfiddle:before { content: "\f254"; }
.fa-key:before { content: "\f255"; }
.fa-keyboard-o:before { content: "\f256"; }
.fa-krw:before { content: "\f257"; }
.fa-language:before { content: "\f258"; }
.fa-laptop:before { content: "\f259"; }
.fa-lastfm:before { content: "\f25a"; }
.fa-lastfm-square:before { content: "\f25b"; }
.fa-leaf:before { content: "\f25c"; }
.fa-leanpub:before { content: "\f25d"; }
.fa-legal:before { content: "\f25e"; }
.fa-lemon-o:before { content: "\f25f"; }
.fa-level-down:before { content: "\f260"; }
.fa-level-up:before { content: "\f261"; }
.fa-life-bouy:before { content: "\f262"; }
.fa-life-buoy:before { content: "\f263"; }
.fa-life-ring:before, .fa-support:before { content: "\f264"; }
.fa-life-saver:before { content: "\f265"; }
.fa-lightbulb-o:before { content: "\f266"; }
.fa-line-chart:before { content: "\f267"; }
.fa-link:before { content: "\f268"; }
.fa-linkedin:before { content: "\f269"; }
.fa-linkedin-square:before { content: "\f26a"; }
.fa-linux:before { content: "\f26b"; }
.fa-list:before { content: "\f26c"; }
.fa-list-alt:before { content: "\f26d"; }
.fa-list-ol:before { content: "\f26e"; }
.fa-list-ul:before { content: "\f26f"; }
.fa-location-arrow:before { content: "\f270"; }
.fa-lock:before { content: "\f271"; }
.fa-long-arrow-down:before { content: "\f272"; }
.fa-long-arrow-left:before { content: "\f273"; }
.fa-long-arrow-right:before { content: "\f274"; }
.fa-long-arrow-up:before { content: "\f275"; }
.fa-magic:before { content: "\f276"; }
.fa-magnet:before { content: "\f277"; }
.fa-mail-forward:before { content: "\f278"; }
.fa-mail-reply:before { content: "\f279"; }
.fa-mail-reply-all:before { content: "\f27a"; }
.fa-male:before { content: "\f27b"; }
.fa-map:before { content: "\f27c"; }
.fa-map-marker:before { content: "\f27d"; }
.fa-map-o:before { content: "\f27e"; }
.fa-map-pin:before { content: "\f27f"; }
.fa-map-signs:before { content: "\f280"; }
.fa-mars:before { content: "\f281"; }
.fa-mars-double:before { content: "\f282"; }
.fa-mars-stroke:before { content: "\f283"; }
.fa-mars-stroke-h:before { content: "\f284"; }
.fa-mars-stroke-v:before { content: "\f285"; }
.fa-maxcdn:before { content: "\f286"; }
.fa-meanpath:before { content: "\f287"; }
.fa-medium:before { content: "\f288"; }
.fa-medkit:before { content: "\f289"; }
.fa-meh-o:before { content: "\f28a"; }
.fa-mercury:before { content: "\f28b"; }
.fa-microphone:before { content: "\f28c"; }
.fa-microphone-slash:before { content: "\f28d"; }
.fa-minus:before { content: "\f28e"; }
.fa-minus-circle:before { content: "\f28f"; }
.fa-minus-square:before { content: "\f290"; }
.fa-minus-square-o:before { content: "\f291"; }
.fa-mobile:before { content: "\f292"; }
.fa-mobile-phone:before { content: "\f293"; }
.fa-money:before { content: "\f294"; }
.fa-moon-o:before { content: "\f295"; }
.fa-mortar-board:before { content: "\f296"; }
.fa-motorcycle:before { content: "\f297"; }
.fa-mouse-pointer:before { content: "\f298"; }
.fa-music:before { content: "\f299"; }
.fa-navicon:before { content: "\f29a"; }
.fa-neuter:before { content: "\f29b"; }
.fa-newspaper-o:before { content: "\f29c"; }
.fa-object-group:before { content: "\f29d"; }
.fa-object-ungroup:before { content: "\f29e"; }
.fa-odnoklassniki:before { content: "\f29f"; }
.fa-odnoklassniki-square:before { content: "\f2a0"; }
.fa-opencart:before { content: "\f2a1"; }
.fa-openid:before { content: "\f2a2"; }
.fa-opera:before { content: "\f2a3"; }
.fa-optin-monster:before { content: "\f2a4"; }
.fa-outdent:before { content: "\f2a5"; }
.fa-pagelines:before { content: "\f2a6"; }
.fa-paint-brush:before { content: "\f2a7"; }
.fa-paper-plane:before, .fa-send:before { content: "\f2a8"; }
.fa-paper-plane-o:before, .fa-send-o:before { content: "\f2a9"; }
.fa-paperclip:before { content: "\f2aa"; }
.fa-paragraph:before { content: "\f2ab"; }
.fa-paste:before { content: "\f2ac"; }
.fa-pause:before { content: "\f2ad"; }
.fa-paw:before { content: "\f2ae"; }
.fa-paypal:before { content: "\f2af"; }
.fa-pencil:before { content: "\f2b0"; }
.fa-pencil-square:before { content: "\f2b1"; }
.fa-pencil-square-o:before { content: "\f2b2"; }
.fa-phone:before { content: "\f2b3"; }
.fa-phone-square:before { content: "\f2b4"; }
.fa-photo:before { content: "\f2b5"; }
.fa-picture-o:before { content: "\f2b6"; }
.fa-pie-chart:before { content: "\f2b7"; }
.fa-pied-piper:before { content: "\f2b8"; }
.fa-pied-piper-alt:before { content: "\f2b9"; }
.fa-pinterest:before { content: "\f2ba"; }
.fa-pinterest-p:before { content: "\f2bb"; }
.fa-pinterest-square:before { content: "\f2bc"; }
.fa-plane:before { content: "\f2bd"; }
.fa-play:before { content: "\f2be"; }
.fa-play-circle:before { content: "\f2bf"; }
.fa-play-circle-o:before { content: "\f2c0"; }
.fa-plug:before { content: "\f2c1"; }
.fa-plus:before { content: "\f2c2"; }
.fa-plus-circle:before { content: "\f2c3"; }
.fa-plus-square:before { content: "\f2c4"; }
.fa-plus-square-o:before { content: "\f2c5"; }
.fa-power-off:before { content: "\f2c6"; }
.fa-print:before { content: "\f2c7"; }
.fa-puzzle-piece:before { content: "\f2c8"; }
.fa-qq:before { content: "\f2c9"; }
.fa-qrcode:before { content: "\f2ca"; }
.fa-question:before { content: "\f2cb"; }
.fa-question-circle:before { content: "\f2cc"; }
.fa-quote-left:before { content: "\f2cd"; }
.fa-quote-right:before { content: "\f2ce"; }
.fa-ra:before { content: "\f2cf"; }
.fa-random:before { content: "\f2d0"; }
.fa-rebel:before { content: "\f2d1"; }
.fa-recycle:before { content: "\f2d2"; }
.fa-reddit:before { content: "\f2d3"; }
.fa-reddit-square:before { content: "\f2d4"; }
.fa-refresh:before { content: "\f2d5"; }
.fa-registered:before { content: "\f2d6"; }
.fa-renren:before { content: "\f2d7"; }
.fa-reorder:before { content: "\f2d8"; }
.fa-repeat:before { content: "\f2d9"; }
.fa-reply:before { content: "\f2da"; }
.fa-reply-all:before { content: "\f2db"; }
.fa-retweet:before { content: "\f2dc"; }
.fa-rmb:before { content: "\f2dd"; }
.fa-road:before { content: "\f2de"; }
.fa-rocket:before { content: "\f2df"; }
.fa-rotate-left:before { content: "\f2e0"; }
.fa-rotate-right:before { content: "\f2e1"; }
.fa-rouble:before { content: "\f2e2"; }
.fa-rss:before, .fa-feed:before { content: "\f2e3"; }
.fa-rss-square:before { content: "\f2e4"; }
.fa-rub:before { content: "\f2e5"; }
.fa-ruble:before { content: "\f2e6"; }
.fa-rupee:before { content: "\f2e7"; }
.fa-safari:before { content: "\f2e8"; }
.fa-save:before { content: "\f2e9"; }
.fa-scissors:before { content: "\f2ea"; }
.fa-search:before { content: "\f2eb"; }
.fa-search-minus:before { content: "\f2ec"; }
.fa-search-plus:before { content: "\f2ed"; }
.fa-sellsy:before { content: "\f2ee"; }
.fa-server:before { content: "\f2ef"; }
.fa-share:before { content: "\f2f0"; }
.fa-share-alt:before { content: "\f2f1"; }
.fa-share-alt-square:before { content: "\f2f2"; }
.fa-share-square:before { content: "\f2f3"; }
.fa-share-square-o:before { content: "\f2f4"; }
.fa-shekel:before { content: "\f2f5"; }
.fa-sheqel:before { content: "\f2f6"; }
.fa-shield:before { content: "\f2f7"; }
.fa-ship:before { content: "\f2f8"; }
.fa-shirtsinbulk:before { content: "\f2f9"; }
.fa-shopping-cart:before { content: "\f2fa"; }
.fa-sign-in:before { content: "\f2fb"; }
.fa-sign-out:before { content: "\f2fc"; }
.fa-signal:before { content: "\f2fd"; }
.fa-simplybuilt:before { content: "\f2fe"; }
.fa-sitemap:before { content: "\f2ff"; }
.fa-skyatlas:before { content: "\f300"; }
.fa-skype:before { content: "\f301"; }
.fa-slack:before { content: "\f302"; }
.fa-sliders:before { content: "\f303"; }
.fa-slideshare:before { content: "\f304"; }
.fa-smile-o:before { content: "\f305"; }
.fa-sort:before, .fa-unsorted:before { content: "\f306"; }
.fa-sort-alpha-asc:before { content: "\f307"; }
.fa-sort-alpha-desc:before { content: "\f308"; }
.fa-sort-amount-asc:before { content: "\f309"; }
.fa-sort-amount-desc:before { content: "\f30a"; }
.fa-sort-asc:before, .fa-sort-up:before { content: "\f30b"; }
.fa-sort-desc:before, .fa-sort-down:before { content: "\f30c"; }
.fa-sort-numeric-asc:before { content: "\f30d"; }
.fa-sort-numeric-desc:before { content: "\f30e"; }
.fa-soundcloud:before { content: "\f30f"; }
.fa-space-shuttle:before { content: "\f310"; }
.fa-spinner:before { content: "\f311"; }
.fa-spoon:before { content: "\f312"; }
.fa-spotify:before { content: "\f313"; }
.fa-square:before { content: "\f314"; }
.fa-square-o:before { content: "\f315"; }
.fa-stack-exchange:before { content: "\f316"; }
.fa-stack-overflow:before { content: "\f317"; }
.fa-star:before { content: "\f318"; }
.fa-star-half:before { content: "\f319"; }
.fa-star-half-o:before, .fa-star-half-full:before, .fa-star-half-empty:before { content: "\f31a"; }
.fa-star-o:before { content: "\f31b"; }
.fa-steam:before { content: "\f31c"; }
.fa-steam-square:before { content: "\f31d"; }
.fa-step-backward:before { content: "\f31e"; }
.fa-step-forward:before { content: "\f31f"; }
.fa-stethoscope:before { content: "\f320"; }
.fa-sticky-note:before { content: "\f321"; }
.fa-sticky-note-o:before { content: "\f322"; }
.fa-stop:before { content: "\f323"; }
.fa-street-view:before { content: "\f324"; }
.fa-strikethrough:before { content: "\f325"; }
.fa-stumbleupon:before { content: "\f326"; }
.fa-stumbleupon-circle:before { content: "\f327"; }
.fa-subscript:before { content: "\f328"; }
.fa-subway:before { content: "\f329"; }
.fa-suitcase:before { content: "\f32a"; }
.fa-sun-o:before { content: "\f32b"; }
.fa-superscript:before { content: "\f32c"; }
.fa-table:before { content: "\f32d"; }
.fa-tablet:before { content: "\f32e"; }
.fa-tachometer:before { content: "\f32f"; }
.fa-tag:before { content: "\f330"; }
.fa-tags:before { content: "\f331"; }
.fa-tasks:before { content: "\f332"; }
.fa-taxi:before { content: "\f333"; }
.fa-television:before, .fa-tv:before { content: "\f334"; }
.fa-tencent-weibo:before { content: "\f335"; }
.fa-terminal:before { content: "\f336"; }
.fa-text-height:before { content: "\f337"; }
.fa-text-width:before { content: "\f338"; }
.fa-th:before { content: "\f339"; }
.fa-th-large:before { content: "\f33a"; }
.fa-th-list:before { content: "\f33b"; }
.fa-thumb-tack:before { content: "\f33c"; }
.fa-thumbs-down:before { content: "\f33d"; }
.fa-thumbs-o-down:before { content: "\f33e"; }
.fa-thumbs-o-up:before { content: "\f33f"; }
.fa-thumbs-up:before { content: "\f340"; }
.fa-ticket:before { content: "\f341"; }
.fa-times:before, .fa-remove:before { content: "\f342"; }
.fa-times-circle:before { content: "\f343"; }
.fa-times-circle-o:before { content: "\f344"; }
.fa-tint:before { content: "\f345"; }
.fa-toggle-off:before { content: "\f346"; }
.fa-toggle-on:before { content: "\f347"; }
.fa-trademark:before { content: "\f348"; }
.fa-train:before { content: "\f349"; }
.fa-transgender:before, .fa-intersex:before { content: "\f34a"; }
.fa-transgender-alt:before { content: "\f34b"; }
.fa-trash:before { content: "\f34c"; }
.fa-trash-o:before { content: "\f34d"; }
.fa-tree:before { content: "\f34e"; }
.fa-trello:before { content: "\f34f"; }
.fa-tripadvisor:before { content: "\f350"; }
.fa-trophy:before { content: "\f351"; }
.fa-truck:before { content: "\f352"; }
.fa-try:before { content: "\f353"; }
.fa-tty:before { content: "\f354"; }
.fa-tumblr:before { content: "\f355"; }
.fa-tumblr-square:before { content: "\f356"; }
.fa-turkish-lira:before { content: "\f357"; }
.fa-twitch:before { content: "\f358"; }
.fa-twitter:before { content: "\f359"; }
.fa-twitter-square:before { content: "\f35a"; }
.fa-umbrella:before { content: "\f35b"; }
.fa-underline:before { content: "\f35c"; }
.fa-undo:before { content: "\f35d"; }
.fa-university:before { content: "\f35e"; }
.fa-unlink:before { content: "\f35f"; }
.fa-unlock:before { content: "\f360"; }
.fa-unlock-alt:before { content: "\f361"; }
.fa-upload:before { content: "\f362"; }
.fa-usd:before { content: "\f363"; }
.fa-user:before { content: "\f364"; }
.fa-user-md:before { content: "\f365"; }
.fa-user-plus:before { content: "\f366"; }
.fa-user-secret:before { content: "\f367"; }
.fa-user-times:before { content: "\f368"; }
.fa-users:before { content: "\f369"; }
.fa-venus:before { content: "\f36a"; }
.fa-venus-double:before { content: "\f36b"; }
.fa-venus-mars:before { content: "\f36c"; }
.fa-viacoin:before { content: "\f36d"; }
.fa-video-camera:before { content: "\f36e"; }
.fa-vimeo:before { content: "\f36f"; }
.fa-vimeo-square:before { content: "\f370"; }
.fa-vine:before { content: "\f371"; }
.fa-vk:before { content: "\f372"; }
.fa-volume-down:before { content: "\f373"; }
.fa-volume-off:before { content: "\f374"; }
.fa-volume-up:before { content: "\f375"; }
.fa-warning:before { content: "\f376"; }
.fa-wechat:before { content: "\f377"; }
.fa-weibo:before { content: "\f378"; }
.fa-weixin:before { content: "\f379"; }
.fa-whatsapp:before { content: "\f37a"; }
.fa-wheelchair:before { content: "\f37b"; }
.fa-wifi:before { content: "\f37c"; }
.fa-wikipedia-w:before { content: "\f37d"; }
.fa-windows:before { content: "\f37e"; }
.fa-won:before { content: "\f37f"; }
.fa-wordpress:before { content: "\f380"; }
.fa-wrench:before { content: "\f381"; }
.fa-xing:before { content: "\f382"; }
.fa-xing-square:before { content: "\f383"; }
.fa-y-combinator:before { content: "\f384"; }
.fa-y-combinator-square:before { content: "\f385"; }
.fa-yahoo:before { content: "\f386"; }
.fa-yc:before { content: "\f387"; }
.fa-yc-square:before { content: "\f388"; }
.fa-yelp:before { content: "\f389"; }
.fa-yen:before { content: "\f38a"; }
.fa-youtube:before { content: "\f38b"; }
.fa-youtube-play:before { content: "\f38c"; }
.fa-youtube-square:before { content: "\f38d"; }

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,845 @@
/*!
* Line Awesome 1.1.0 by @icons_8 - https://icons8.com/line-awesome
* License - https://icons8.com/good-boy-license/ (Font: SIL OFL 1.1, CSS: MIT License)
*
* Made with love by Icons8 [ https://icons8.com/ ] using FontCustom [ https://github.com/FontCustom/fontcustom ]
*
* Contacts:
* [ https://icons8.com/contact ]
*
* Follow Icon8 on
* Twitter [ https://twitter.com/icons_8 ]
* Facebook [ https://www.facebook.com/Icons8 ]
* Google+ [ https://plus.google.com/+Icons8 ]
* GitHub [ https://github.com/icons8 ]
*/
@font-face {
font-family: "LineAwesome";
src: url("../fonts/line-awesome.eot?v=1.1.");
src: url("../fonts/line-awesome.eot??v=1.1.#iefix") format("embedded-opentype"),
url("../fonts/line-awesome.woff2?v=1.1.") format("woff2"),
url("../fonts/line-awesome.woff?v=1.1.") format("woff"),
url("../fonts/line-awesome.ttf?v=1.1.") format("truetype"),
url("../fonts/line-awesome.svg?v=1.1.#fa") format("svg");
font-weight: normal;
font-style: normal;
}
@media screen and (-webkit-min-device-pixel-ratio:0) {
@font-face {
font-family: "LineAwesome";
src: url("../fonts/line-awesome.svg?v=1.1.#fa") format("svg");
}
}
/* Thanks to http://fontawesome.io @fontawesome and @davegandy */
.la {
display: inline-block;
font: normal normal normal 16px/1 "LineAwesome";
font-size: inherit;
text-decoration: inherit;
text-rendering: optimizeLegibility;
text-transform: none;
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
font-smoothing: antialiased;
}
/* makes the font 33% larger relative to the icon container */
.la-lg {
font-size: 1.33333333em;
line-height: 0.75em;
vertical-align: -15%;
}
.la-2x {
font-size: 2em;
}
.la-3x {
font-size: 3em;
}
.la-4x {
font-size: 4em;
}
.la-5x {
font-size: 5em;
}
.la-fw {
width: 1.28571429em;
text-align: center;
}
.la-ul {
padding-left: 0;
margin-left: 2.14285714em;
list-style-type: none;
}
.la-ul > li {
position: relative;
}
.la-li {
position: absolute;
left: -2.14285714em;
width: 2.14285714em;
top: 0.14285714em;
text-align: center;
}
.la-li.la-lg {
left: -1.85714286em;
}
.la-border {
padding: .2em .25em .15em;
border: solid 0.08em #eeeeee;
border-radius: .1em;
}
.pull-right {
float: right;
}
.pull-left {
float: left;
}
.li.pull-left {
margin-right: .3em;
}
.li.pull-right {
margin-left: .3em;
}
.la-spin {
-webkit-animation: fa-spin 2s infinite linear;
animation: fa-spin 2s infinite linear;
}
@-webkit-keyframes fa-spin {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(359deg);
transform: rotate(359deg);
}
}
@keyframes fa-spin {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(359deg);
transform: rotate(359deg);
}
}
.la-rotate-90 {
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
-webkit-transform: rotate(90deg);
-ms-transform: rotate(90deg);
transform: rotate(90deg);
}
.la-rotate-180 {
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
-webkit-transform: rotate(180deg);
-ms-transform: rotate(180deg);
transform: rotate(180deg);
}
.la-rotate-270 {
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
-webkit-transform: rotate(270deg);
-ms-transform: rotate(270deg);
transform: rotate(270deg);
}
.la-flip-horizontal {
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);
-webkit-transform: scale(-1, 1);
-ms-transform: scale(-1, 1);
transform: scale(-1, 1);
}
.la-flip-vertical {
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);
-webkit-transform: scale(1, -1);
-ms-transform: scale(1, -1);
transform: scale(1, -1);
}
:root .la-rotate-90,
:root .la-rotate-180,
:root .la-rotate-270,
:root .la-flip-horizontal,
:root .la-flip-vertical {
filter: none;
}
.la-stack {
position: relative;
display: inline-block;
width: 2em;
height: 2em;
line-height: 2em;
vertical-align: middle;
}
.la-stack-1x,
.la-stack-2x {
position: absolute;
left: 0;
width: 100%;
text-align: center;
}
.la-stack-1x {
line-height: inherit;
}
.la-stack-2x {
font-size: 2em;
}
.la-inverse {
color: #ffffff;
}
/* Thanks to http://fontawesome.io @fontawesome and @davegandy */
.la-500px:before { content: "\f100"; }
.la-adjust:before { content: "\f101"; }
.la-adn:before { content: "\f102"; }
.la-align-center:before { content: "\f103"; }
.la-align-justify:before { content: "\f104"; }
.la-align-left:before { content: "\f105"; }
.la-align-right:before { content: "\f106"; }
.la-amazon:before { content: "\f107"; }
.la-ambulance:before { content: "\f108"; }
.la-anchor:before { content: "\f109"; }
.la-android:before { content: "\f10a"; }
.la-angellist:before { content: "\f10b"; }
.la-angle-double-down:before { content: "\f10c"; }
.la-angle-double-left:before { content: "\f10d"; }
.la-angle-double-right:before { content: "\f10e"; }
.la-angle-double-up:before { content: "\f10f"; }
.la-angle-down:before { content: "\f110"; }
.la-angle-left:before { content: "\f111"; }
.la-angle-right:before { content: "\f112"; }
.la-angle-up:before { content: "\f113"; }
.la-apple:before { content: "\f114"; }
.la-archive:before { content: "\f115"; }
.la-area-chart:before { content: "\f116"; }
.la-arrow-circle-down:before { content: "\f117"; }
.la-arrow-circle-left:before { content: "\f118"; }
.la-arrow-circle-o-down:before { content: "\f119"; }
.la-arrow-circle-o-left:before { content: "\f11a"; }
.la-arrow-circle-o-right:before { content: "\f11b"; }
.la-arrow-circle-o-up:before { content: "\f11c"; }
.la-arrow-circle-right:before { content: "\f11d"; }
.la-arrow-circle-up:before { content: "\f11e"; }
.la-arrow-down:before { content: "\f11f"; }
.la-arrow-left:before { content: "\f120"; }
.la-arrow-right:before { content: "\f121"; }
.la-arrow-up:before { content: "\f122"; }
.la-arrows:before { content: "\f123"; }
.la-arrows-alt:before { content: "\f124"; }
.la-arrows-h:before { content: "\f125"; }
.la-arrows-v:before { content: "\f126"; }
.la-asterisk:before { content: "\f127"; }
.la-at:before { content: "\f128"; }
.la-automobile:before { content: "\f129"; }
.la-backward:before { content: "\f12a"; }
.la-balance-scale:before { content: "\f12b"; }
.la-ban:before { content: "\f12c"; }
.la-bank:before { content: "\f12d"; }
.la-bar-chart:before { content: "\f12e"; }
.la-bar-chart-o:before { content: "\f12f"; }
.la-barcode:before { content: "\f130"; }
.la-bars:before { content: "\f131"; }
.la-battery-0:before { content: "\f132"; }
.la-battery-1:before { content: "\f133"; }
.la-battery-2:before { content: "\f134"; }
.la-battery-3:before { content: "\f135"; }
.la-battery-4:before { content: "\f136"; }
.la-battery-empty:before { content: "\f137"; }
.la-battery-full:before { content: "\f138"; }
.la-battery-half:before { content: "\f139"; }
.la-battery-quarter:before { content: "\f13a"; }
.la-battery-three-quarters:before { content: "\f13b"; }
.la-bed:before { content: "\f13c"; }
.la-beer:before { content: "\f13d"; }
.la-behance:before { content: "\f13e"; }
.la-behance-square:before { content: "\f13f"; }
.la-bell:before { content: "\f140"; }
.la-bell-o:before { content: "\f141"; }
.la-bell-slash:before { content: "\f142"; }
.la-bell-slash-o:before { content: "\f143"; }
.la-bicycle:before { content: "\f144"; }
.la-binoculars:before { content: "\f145"; }
.la-birthday-cake:before { content: "\f146"; }
.la-bitbucket:before { content: "\f147"; }
.la-bitbucket-square:before { content: "\f148"; }
.la-bitcoin:before { content: "\f149"; }
.la-black-tie:before { content: "\f14a"; }
.la-bold:before { content: "\f14b"; }
.la-bolt:before { content: "\f14c"; }
.la-bomb:before { content: "\f14d"; }
.la-book:before { content: "\f14e"; }
.la-bookmark:before { content: "\f14f"; }
.la-bookmark-o:before { content: "\f150"; }
.la-briefcase:before { content: "\f151"; }
.la-btc:before { content: "\f152"; }
.la-bug:before { content: "\f153"; }
.la-building:before { content: "\f154"; }
.la-building-o:before { content: "\f155"; }
.la-bullhorn:before { content: "\f156"; }
.la-bullseye:before { content: "\f157"; }
.la-bus:before { content: "\f158"; }
.la-buysellads:before { content: "\f159"; }
.la-cab:before { content: "\f15a"; }
.la-calculator:before { content: "\f15b"; }
.la-calendar:before { content: "\f15c"; }
.la-calendar-check-o:before { content: "\f15d"; }
.la-calendar-minus-o:before { content: "\f15e"; }
.la-calendar-o:before { content: "\f15f"; }
.la-calendar-plus-o:before { content: "\f160"; }
.la-calendar-times-o:before { content: "\f161"; }
.la-camera:before { content: "\f162"; }
.la-camera-retro:before { content: "\f163"; }
.la-car:before { content: "\f164"; }
.la-caret-down:before { content: "\f165"; }
.la-caret-left:before { content: "\f166"; }
.la-caret-right:before { content: "\f167"; }
.la-caret-square-o-down:before, .la-toggle-down:before { content: "\f168"; }
.la-caret-square-o-left:before, .la-toggle-left:before { content: "\f169"; }
.la-caret-square-o-right:before, .la-toggle-right:before { content: "\f16a"; }
.la-caret-square-o-up:before, .la-toggle-up:before { content: "\f16b"; }
.la-caret-up:before { content: "\f16c"; }
.la-cart-arrow-down:before { content: "\f16d"; }
.la-cart-plus:before { content: "\f16e"; }
.la-cc:before { content: "\f16f"; }
.la-cc-amex:before { content: "\f170"; }
.la-cc-diners-club:before { content: "\f171"; }
.la-cc-discover:before { content: "\f172"; }
.la-cc-jcb:before { content: "\f173"; }
.la-cc-mastercard:before { content: "\f174"; }
.la-cc-paypal:before { content: "\f175"; }
.la-cc-stripe:before { content: "\f176"; }
.la-cc-visa:before { content: "\f177"; }
.la-certificate:before { content: "\f178"; }
.la-chain:before { content: "\f179"; }
.la-chain-broken:before { content: "\f17a"; }
.la-check:before { content: "\f17b"; }
.la-check-circle:before { content: "\f17c"; }
.la-check-circle-o:before { content: "\f17d"; }
.la-check-square:before { content: "\f17e"; }
.la-check-square-o:before { content: "\f17f"; }
.la-chevron-circle-down:before { content: "\f180"; }
.la-chevron-circle-left:before { content: "\f181"; }
.la-chevron-circle-right:before { content: "\f182"; }
.la-chevron-circle-up:before { content: "\f183"; }
.la-chevron-down:before { content: "\f184"; }
.la-chevron-left:before { content: "\f185"; }
.la-chevron-right:before { content: "\f186"; }
.la-chevron-up:before { content: "\f187"; }
.la-child:before { content: "\f188"; }
.la-chrome:before { content: "\f189"; }
.la-circle:before { content: "\f18a"; }
.la-circle-o:before { content: "\f18b"; }
.la-circle-o-notch:before { content: "\f18c"; }
.la-circle-thin:before { content: "\f18d"; }
.la-clipboard:before { content: "\f18e"; }
.la-clock-o:before { content: "\f18f"; }
.la-clone:before { content: "\f190"; }
.la-close:before { content: "\f191"; }
.la-cloud:before { content: "\f192"; }
.la-cloud-download:before { content: "\f193"; }
.la-cloud-upload:before { content: "\f194"; }
.la-cny:before { content: "\f195"; }
.la-code:before { content: "\f196"; }
.la-code-fork:before { content: "\f197"; }
.la-codepen:before { content: "\f198"; }
.la-coffee:before { content: "\f199"; }
.la-cog:before { content: "\f19a"; }
.la-cogs:before { content: "\f19b"; }
.la-columns:before { content: "\f19c"; }
.la-comment:before { content: "\f19d"; }
.la-comment-o:before { content: "\f19e"; }
.la-commenting:before { content: "\f19f"; }
.la-commenting-o:before { content: "\f1a0"; }
.la-comments:before { content: "\f1a1"; }
.la-comments-o:before { content: "\f1a2"; }
.la-compass:before { content: "\f1a3"; }
.la-compress:before { content: "\f1a4"; }
.la-connectdevelop:before { content: "\f1a5"; }
.la-contao:before { content: "\f1a6"; }
.la-copy:before { content: "\f1a7"; }
.la-copyright:before { content: "\f1a8"; }
.la-creative-commons:before { content: "\f1a9"; }
.la-credit-card:before { content: "\f1aa"; }
.la-crop:before { content: "\f1ab"; }
.la-crosshairs:before { content: "\f1ac"; }
.la-css3:before { content: "\f1ad"; }
.la-cube:before { content: "\f1ae"; }
.la-cubes:before { content: "\f1af"; }
.la-cut:before { content: "\f1b0"; }
.la-cutlery:before { content: "\f1b1"; }
.la-dashboard:before { content: "\f1b2"; }
.la-dashcube:before { content: "\f1b3"; }
.la-database:before { content: "\f1b4"; }
.la-dedent:before { content: "\f1b5"; }
.la-delicious:before { content: "\f1b6"; }
.la-desktop:before { content: "\f1b7"; }
.la-deviantart:before { content: "\f1b8"; }
.la-diamond:before { content: "\f1b9"; }
.la-digg:before { content: "\f1ba"; }
.la-dollar:before { content: "\f1bb"; }
.la-dot-circle-o:before { content: "\f1bc"; }
.la-download:before { content: "\f1bd"; }
.la-dribbble:before { content: "\f1be"; }
.la-dropbox:before { content: "\f1bf"; }
.la-drupal:before { content: "\f1c0"; }
.la-edit:before { content: "\f1c1"; }
.la-eject:before { content: "\f1c2"; }
.la-ellipsis-h:before { content: "\f1c3"; }
.la-ellipsis-v:before { content: "\f1c4"; }
.la-empire:before, .la-ge:before { content: "\f1c5"; }
.la-envelope:before { content: "\f1c6"; }
.la-envelope-o:before { content: "\f1c7"; }
.la-envelope-square:before { content: "\f1c8"; }
.la-eraser:before { content: "\f1c9"; }
.la-eur:before { content: "\f1ca"; }
.la-euro:before { content: "\f1cb"; }
.la-exchange:before { content: "\f1cc"; }
.la-exclamation:before { content: "\f1cd"; }
.la-exclamation-circle:before { content: "\f1ce"; }
.la-exclamation-triangle:before { content: "\f1cf"; }
.la-expand:before { content: "\f1d0"; }
.la-expeditedssl:before { content: "\f1d1"; }
.la-external-link:before { content: "\f1d2"; }
.la-external-link-square:before { content: "\f1d3"; }
.la-eye:before { content: "\f1d4"; }
.la-eye-slash:before { content: "\f1d5"; }
.la-eyedropper:before { content: "\f1d6"; }
.la-facebook:before, .la-facebook-f:before { content: "\f1d7"; }
.la-facebook-official:before { content: "\f1d8"; }
.la-facebook-square:before { content: "\f1d9"; }
.la-fast-backward:before { content: "\f1da"; }
.la-fast-forward:before { content: "\f1db"; }
.la-fax:before { content: "\f1dc"; }
.la-female:before { content: "\f1dd"; }
.la-fighter-jet:before { content: "\f1de"; }
.la-file:before { content: "\f1df"; }
.la-file-archive-o:before { content: "\f1e0"; }
.la-file-audio-o:before { content: "\f1e1"; }
.la-file-code-o:before { content: "\f1e2"; }
.la-file-excel-o:before { content: "\f1e3"; }
.la-file-image-o:before { content: "\f1e4"; }
.la-file-movie-o:before { content: "\f1e5"; }
.la-file-o:before { content: "\f1e6"; }
.la-file-pdf-o:before { content: "\f1e7"; }
.la-file-photo-o:before { content: "\f1e8"; }
.la-file-picture-o:before { content: "\f1e9"; }
.la-file-powerpoint-o:before { content: "\f1ea"; }
.la-file-sound-o:before { content: "\f1eb"; }
.la-file-text:before { content: "\f1ec"; }
.la-file-text-o:before { content: "\f1ed"; }
.la-file-video-o:before { content: "\f1ee"; }
.la-file-word-o:before { content: "\f1ef"; }
.la-file-zip-o:before { content: "\f1f0"; }
.la-files-o:before { content: "\f1f1"; }
.la-film:before { content: "\f1f2"; }
.la-filter:before { content: "\f1f3"; }
.la-fire:before { content: "\f1f4"; }
.la-fire-extinguisher:before { content: "\f1f5"; }
.la-firefox:before { content: "\f1f6"; }
.la-flag:before { content: "\f1f7"; }
.la-flag-checkered:before { content: "\f1f8"; }
.la-flag-o:before { content: "\f1f9"; }
.la-flash:before { content: "\f1fa"; }
.la-flask:before { content: "\f1fb"; }
.la-flickr:before { content: "\f1fc"; }
.la-floppy-o:before { content: "\f1fd"; }
.la-folder:before { content: "\f1fe"; }
.la-folder-o:before { content: "\f1ff"; }
.la-folder-open:before { content: "\f200"; }
.la-folder-open-o:before { content: "\f201"; }
.la-font:before { content: "\f202"; }
.la-fonticons:before { content: "\f203"; }
.la-forumbee:before { content: "\f204"; }
.la-forward:before { content: "\f205"; }
.la-foursquare:before { content: "\f206"; }
.la-frown-o:before { content: "\f207"; }
.la-futbol-o:before, .la-soccer-ball-o:before { content: "\f208"; }
.la-gamepad:before { content: "\f209"; }
.la-gavel:before { content: "\f20a"; }
.la-gbp:before { content: "\f20b"; }
.la-gear:before { content: "\f20c"; }
.la-gears:before { content: "\f20d"; }
.la-genderless:before { content: "\f20e"; }
.la-get-pocket:before { content: "\f20f"; }
.la-gg:before { content: "\f210"; }
.la-gg-circle:before { content: "\f211"; }
.la-gift:before { content: "\f212"; }
.la-git:before { content: "\f213"; }
.la-git-square:before { content: "\f214"; }
.la-github:before { content: "\f215"; }
.la-github-alt:before { content: "\f216"; }
.la-github-square:before { content: "\f217"; }
.la-glass:before { content: "\f218"; }
.la-globe:before { content: "\f219"; }
.la-google:before { content: "\f21a"; }
.la-google-plus:before { content: "\f21b"; }
.la-google-plus-square:before { content: "\f21c"; }
.la-google-wallet:before { content: "\f21d"; }
.la-graduation-cap:before { content: "\f21e"; }
.la-gratipay:before, .la-gittip:before { content: "\f21f"; }
.la-group:before { content: "\f220"; }
.la-h-square:before { content: "\f221"; }
.la-hacker-news:before { content: "\f222"; }
.la-hand-grab-o:before { content: "\f223"; }
.la-hand-lizard-o:before { content: "\f224"; }
.la-hand-o-down:before { content: "\f225"; }
.la-hand-o-left:before { content: "\f226"; }
.la-hand-o-right:before { content: "\f227"; }
.la-hand-o-up:before { content: "\f228"; }
.la-hand-paper-o:before { content: "\f229"; }
.la-hand-peace-o:before { content: "\f22a"; }
.la-hand-pointer-o:before { content: "\f22b"; }
.la-hand-rock-o:before { content: "\f22c"; }
.la-hand-scissors-o:before { content: "\f22d"; }
.la-hand-spock-o:before { content: "\f22e"; }
.la-hand-stop-o:before { content: "\f22f"; }
.la-hdd-o:before { content: "\f230"; }
.la-header:before { content: "\f231"; }
.la-headphones:before { content: "\f232"; }
.la-heart:before { content: "\f233"; }
.la-heart-o:before { content: "\f234"; }
.la-heartbeat:before { content: "\f235"; }
.la-history:before { content: "\f236"; }
.la-home:before { content: "\f237"; }
.la-hospital-o:before { content: "\f238"; }
.la-hotel:before { content: "\f239"; }
.la-hourglass:before { content: "\f23a"; }
.la-hourglass-1:before { content: "\f23b"; }
.la-hourglass-2:before { content: "\f23c"; }
.la-hourglass-3:before { content: "\f23d"; }
.la-hourglass-end:before { content: "\f23e"; }
.la-hourglass-half:before { content: "\f23f"; }
.la-hourglass-o:before { content: "\f240"; }
.la-hourglass-start:before { content: "\f241"; }
.la-houzz:before { content: "\f242"; }
.la-html5:before { content: "\f243"; }
.la-i-cursor:before { content: "\f244"; }
.la-ils:before { content: "\f245"; }
.la-image:before { content: "\f246"; }
.la-inbox:before { content: "\f247"; }
.la-indent:before { content: "\f248"; }
.la-industry:before { content: "\f249"; }
.la-info:before { content: "\f24a"; }
.la-info-circle:before { content: "\f24b"; }
.la-inr:before { content: "\f24c"; }
.la-instagram:before { content: "\f24d"; }
.la-institution:before { content: "\f24e"; }
.la-internet-explorer:before { content: "\f24f"; }
.la-ioxhost:before { content: "\f250"; }
.la-italic:before { content: "\f251"; }
.la-joomla:before { content: "\f252"; }
.la-jpy:before { content: "\f253"; }
.la-jsfiddle:before { content: "\f254"; }
.la-key:before { content: "\f255"; }
.la-keyboard-o:before { content: "\f256"; }
.la-krw:before { content: "\f257"; }
.la-language:before { content: "\f258"; }
.la-laptop:before { content: "\f259"; }
.la-lastfm:before { content: "\f25a"; }
.la-lastfm-square:before { content: "\f25b"; }
.la-leaf:before { content: "\f25c"; }
.la-leanpub:before { content: "\f25d"; }
.la-legal:before { content: "\f25e"; }
.la-lemon-o:before { content: "\f25f"; }
.la-level-down:before { content: "\f260"; }
.la-level-up:before { content: "\f261"; }
.la-life-bouy:before { content: "\f262"; }
.la-life-buoy:before { content: "\f263"; }
.la-life-ring:before, .la-support:before { content: "\f264"; }
.la-life-saver:before { content: "\f265"; }
.la-lightbulb-o:before { content: "\f266"; }
.la-line-chart:before { content: "\f267"; }
.la-link:before { content: "\f268"; }
.la-linkedin:before { content: "\f269"; }
.la-linkedin-square:before { content: "\f26a"; }
.la-linux:before { content: "\f26b"; }
.la-list:before { content: "\f26c"; }
.la-list-alt:before { content: "\f26d"; }
.la-list-ol:before { content: "\f26e"; }
.la-list-ul:before { content: "\f26f"; }
.la-location-arrow:before { content: "\f270"; }
.la-lock:before { content: "\f271"; }
.la-long-arrow-down:before { content: "\f272"; }
.la-long-arrow-left:before { content: "\f273"; }
.la-long-arrow-right:before { content: "\f274"; }
.la-long-arrow-up:before { content: "\f275"; }
.la-magic:before { content: "\f276"; }
.la-magnet:before { content: "\f277"; }
.la-mail-forward:before { content: "\f278"; }
.la-mail-reply:before { content: "\f279"; }
.la-mail-reply-all:before { content: "\f27a"; }
.la-male:before { content: "\f27b"; }
.la-map:before { content: "\f27c"; }
.la-map-marker:before { content: "\f27d"; }
.la-map-o:before { content: "\f27e"; }
.la-map-pin:before { content: "\f27f"; }
.la-map-signs:before { content: "\f280"; }
.la-mars:before { content: "\f281"; }
.la-mars-double:before { content: "\f282"; }
.la-mars-stroke:before { content: "\f283"; }
.la-mars-stroke-h:before { content: "\f284"; }
.la-mars-stroke-v:before { content: "\f285"; }
.la-maxcdn:before { content: "\f286"; }
.la-meanpath:before { content: "\f287"; }
.la-medium:before { content: "\f288"; }
.la-medkit:before { content: "\f289"; }
.la-meh-o:before { content: "\f28a"; }
.la-mercury:before { content: "\f28b"; }
.la-microphone:before { content: "\f28c"; }
.la-microphone-slash:before { content: "\f28d"; }
.la-minus:before { content: "\f28e"; }
.la-minus-circle:before { content: "\f28f"; }
.la-minus-square:before { content: "\f290"; }
.la-minus-square-o:before { content: "\f291"; }
.la-mobile:before { content: "\f292"; }
.la-mobile-phone:before { content: "\f293"; }
.la-money:before { content: "\f294"; }
.la-moon-o:before { content: "\f295"; }
.la-mortar-board:before { content: "\f296"; }
.la-motorcycle:before { content: "\f297"; }
.la-mouse-pointer:before { content: "\f298"; }
.la-music:before { content: "\f299"; }
.la-navicon:before { content: "\f29a"; }
.la-neuter:before { content: "\f29b"; }
.la-newspaper-o:before { content: "\f29c"; }
.la-object-group:before { content: "\f29d"; }
.la-object-ungroup:before { content: "\f29e"; }
.la-odnoklassniki:before { content: "\f29f"; }
.la-odnoklassniki-square:before { content: "\f2a0"; }
.la-opencart:before { content: "\f2a1"; }
.la-openid:before { content: "\f2a2"; }
.la-opera:before { content: "\f2a3"; }
.la-optin-monster:before { content: "\f2a4"; }
.la-outdent:before { content: "\f2a5"; }
.la-pagelines:before { content: "\f2a6"; }
.la-paint-brush:before { content: "\f2a7"; }
.la-paper-plane:before, .la-send:before { content: "\f2a8"; }
.la-paper-plane-o:before, .la-send-o:before { content: "\f2a9"; }
.la-paperclip:before { content: "\f2aa"; }
.la-paragraph:before { content: "\f2ab"; }
.la-paste:before { content: "\f2ac"; }
.la-pause:before { content: "\f2ad"; }
.la-paw:before { content: "\f2ae"; }
.la-paypal:before { content: "\f2af"; }
.la-pencil:before { content: "\f2b0"; }
.la-pencil-square:before { content: "\f2b1"; }
.la-pencil-square-o:before { content: "\f2b2"; }
.la-phone:before { content: "\f2b3"; }
.la-phone-square:before { content: "\f2b4"; }
.la-photo:before { content: "\f2b5"; }
.la-picture-o:before { content: "\f2b6"; }
.la-pie-chart:before { content: "\f2b7"; }
.la-pied-piper:before { content: "\f2b8"; }
.la-pied-piper-alt:before { content: "\f2b9"; }
.la-pinterest:before { content: "\f2ba"; }
.la-pinterest-p:before { content: "\f2bb"; }
.la-pinterest-square:before { content: "\f2bc"; }
.la-plane:before { content: "\f2bd"; }
.la-play:before { content: "\f2be"; }
.la-play-circle:before { content: "\f2bf"; }
.la-play-circle-o:before { content: "\f2c0"; }
.la-plug:before { content: "\f2c1"; }
.la-plus:before { content: "\f2c2"; }
.la-plus-circle:before { content: "\f2c3"; }
.la-plus-square:before { content: "\f2c4"; }
.la-plus-square-o:before { content: "\f2c5"; }
.la-power-off:before { content: "\f2c6"; }
.la-print:before { content: "\f2c7"; }
.la-puzzle-piece:before { content: "\f2c8"; }
.la-qq:before { content: "\f2c9"; }
.la-qrcode:before { content: "\f2ca"; }
.la-question:before { content: "\f2cb"; }
.la-question-circle:before { content: "\f2cc"; }
.la-quote-left:before { content: "\f2cd"; }
.la-quote-right:before { content: "\f2ce"; }
.la-ra:before { content: "\f2cf"; }
.la-random:before { content: "\f2d0"; }
.la-rebel:before { content: "\f2d1"; }
.la-recycle:before { content: "\f2d2"; }
.la-reddit:before { content: "\f2d3"; }
.la-reddit-square:before { content: "\f2d4"; }
.la-refresh:before { content: "\f2d5"; }
.la-registered:before { content: "\f2d6"; }
.la-renren:before { content: "\f2d7"; }
.la-reorder:before { content: "\f2d8"; }
.la-repeat:before { content: "\f2d9"; }
.la-reply:before { content: "\f2da"; }
.la-reply-all:before { content: "\f2db"; }
.la-retweet:before { content: "\f2dc"; }
.la-rmb:before { content: "\f2dd"; }
.la-road:before { content: "\f2de"; }
.la-rocket:before { content: "\f2df"; }
.la-rotate-left:before { content: "\f2e0"; }
.la-rotate-right:before { content: "\f2e1"; }
.la-rouble:before { content: "\f2e2"; }
.la-rss:before, .la-feed:before { content: "\f2e3"; }
.la-rss-square:before { content: "\f2e4"; }
.la-rub:before { content: "\f2e5"; }
.la-ruble:before { content: "\f2e6"; }
.la-rupee:before { content: "\f2e7"; }
.la-safari:before { content: "\f2e8"; }
.la-save:before { content: "\f2e9"; }
.la-scissors:before { content: "\f2ea"; }
.la-search:before { content: "\f2eb"; }
.la-search-minus:before { content: "\f2ec"; }
.la-search-plus:before { content: "\f2ed"; }
.la-sellsy:before { content: "\f2ee"; }
.la-server:before { content: "\f2ef"; }
.la-share:before { content: "\f2f0"; }
.la-share-alt:before { content: "\f2f1"; }
.la-share-alt-square:before { content: "\f2f2"; }
.la-share-square:before { content: "\f2f3"; }
.la-share-square-o:before { content: "\f2f4"; }
.la-shekel:before { content: "\f2f5"; }
.la-sheqel:before { content: "\f2f6"; }
.la-shield:before { content: "\f2f7"; }
.la-ship:before { content: "\f2f8"; }
.la-shirtsinbulk:before { content: "\f2f9"; }
.la-shopping-cart:before { content: "\f2fa"; }
.la-sign-in:before { content: "\f2fb"; }
.la-sign-out:before { content: "\f2fc"; }
.la-signal:before { content: "\f2fd"; }
.la-simplybuilt:before { content: "\f2fe"; }
.la-sitemap:before { content: "\f2ff"; }
.la-skyatlas:before { content: "\f300"; }
.la-skype:before { content: "\f301"; }
.la-slack:before { content: "\f302"; }
.la-sliders:before { content: "\f303"; }
.la-slideshare:before { content: "\f304"; }
.la-smile-o:before { content: "\f305"; }
.la-sort:before, .la-unsorted:before { content: "\f306"; }
.la-sort-alpha-asc:before { content: "\f307"; }
.la-sort-alpha-desc:before { content: "\f308"; }
.la-sort-amount-asc:before { content: "\f309"; }
.la-sort-amount-desc:before { content: "\f30a"; }
.la-sort-asc:before, .la-sort-up:before { content: "\f30b"; }
.la-sort-desc:before, .la-sort-down:before { content: "\f30c"; }
.la-sort-numeric-asc:before { content: "\f30d"; }
.la-sort-numeric-desc:before { content: "\f30e"; }
.la-soundcloud:before { content: "\f30f"; }
.la-space-shuttle:before { content: "\f310"; }
.la-spinner:before { content: "\f311"; }
.la-spoon:before { content: "\f312"; }
.la-spotify:before { content: "\f313"; }
.la-square:before { content: "\f314"; }
.la-square-o:before { content: "\f315"; }
.la-stack-exchange:before { content: "\f316"; }
.la-stack-overflow:before { content: "\f317"; }
.la-star:before { content: "\f318"; }
.la-star-half:before { content: "\f319"; }
.la-star-half-o:before, .la-star-half-full:before, .la-star-half-empty:before { content: "\f31a"; }
.la-star-o:before { content: "\f31b"; }
.la-steam:before { content: "\f31c"; }
.la-steam-square:before { content: "\f31d"; }
.la-step-backward:before { content: "\f31e"; }
.la-step-forward:before { content: "\f31f"; }
.la-stethoscope:before { content: "\f320"; }
.la-sticky-note:before { content: "\f321"; }
.la-sticky-note-o:before { content: "\f322"; }
.la-stop:before { content: "\f323"; }
.la-street-view:before { content: "\f324"; }
.la-strikethrough:before { content: "\f325"; }
.la-stumbleupon:before { content: "\f326"; }
.la-stumbleupon-circle:before { content: "\f327"; }
.la-subscript:before { content: "\f328"; }
.la-subway:before { content: "\f329"; }
.la-suitcase:before { content: "\f32a"; }
.la-sun-o:before { content: "\f32b"; }
.la-superscript:before { content: "\f32c"; }
.la-table:before { content: "\f32d"; }
.la-tablet:before { content: "\f32e"; }
.la-tachometer:before { content: "\f32f"; }
.la-tag:before { content: "\f330"; }
.la-tags:before { content: "\f331"; }
.la-tasks:before { content: "\f332"; }
.la-taxi:before { content: "\f333"; }
.la-television:before, .la-tv:before { content: "\f334"; }
.la-tencent-weibo:before { content: "\f335"; }
.la-terminal:before { content: "\f336"; }
.la-text-height:before { content: "\f337"; }
.la-text-width:before { content: "\f338"; }
.la-th:before { content: "\f339"; }
.la-th-large:before { content: "\f33a"; }
.la-th-list:before { content: "\f33b"; }
.la-thumb-tack:before { content: "\f33c"; }
.la-thumbs-down:before { content: "\f33d"; }
.la-thumbs-o-down:before { content: "\f33e"; }
.la-thumbs-o-up:before { content: "\f33f"; }
.la-thumbs-up:before { content: "\f340"; }
.la-ticket:before { content: "\f341"; }
.la-times:before, .la-remove:before { content: "\f342"; }
.la-times-circle:before { content: "\f343"; }
.la-times-circle-o:before { content: "\f344"; }
.la-tint:before { content: "\f345"; }
.la-toggle-off:before { content: "\f346"; }
.la-toggle-on:before { content: "\f347"; }
.la-trademark:before { content: "\f348"; }
.la-train:before { content: "\f349"; }
.la-transgender:before, .la-intersex:before { content: "\f34a"; }
.la-transgender-alt:before { content: "\f34b"; }
.la-trash:before { content: "\f34c"; }
.la-trash-o:before { content: "\f34d"; }
.la-tree:before { content: "\f34e"; }
.la-trello:before { content: "\f34f"; }
.la-tripadvisor:before { content: "\f350"; }
.la-trophy:before { content: "\f351"; }
.la-truck:before { content: "\f352"; }
.la-try:before { content: "\f353"; }
.la-tty:before { content: "\f354"; }
.la-tumblr:before { content: "\f355"; }
.la-tumblr-square:before { content: "\f356"; }
.la-turkish-lira:before { content: "\f357"; }
.la-twitch:before { content: "\f358"; }
.la-twitter:before { content: "\f359"; }
.la-twitter-square:before { content: "\f35a"; }
.la-umbrella:before { content: "\f35b"; }
.la-underline:before { content: "\f35c"; }
.la-undo:before { content: "\f35d"; }
.la-university:before { content: "\f35e"; }
.la-unlink:before { content: "\f35f"; }
.la-unlock:before { content: "\f360"; }
.la-unlock-alt:before { content: "\f361"; }
.la-upload:before { content: "\f362"; }
.la-usd:before { content: "\f363"; }
.la-user:before { content: "\f364"; }
.la-user-md:before { content: "\f365"; }
.la-user-plus:before { content: "\f366"; }
.la-user-secret:before { content: "\f367"; }
.la-user-times:before { content: "\f368"; }
.la-users:before { content: "\f369"; }
.la-venus:before { content: "\f36a"; }
.la-venus-double:before { content: "\f36b"; }
.la-venus-mars:before { content: "\f36c"; }
.la-viacoin:before { content: "\f36d"; }
.la-video-camera:before { content: "\f36e"; }
.la-vimeo:before { content: "\f36f"; }
.la-vimeo-square:before { content: "\f370"; }
.la-vine:before { content: "\f371"; }
.la-vk:before { content: "\f372"; }
.la-volume-down:before { content: "\f373"; }
.la-volume-off:before { content: "\f374"; }
.la-volume-up:before { content: "\f375"; }
.la-warning:before { content: "\f376"; }
.la-wechat:before { content: "\f377"; }
.la-weibo:before { content: "\f378"; }
.la-weixin:before { content: "\f379"; }
.la-whatsapp:before { content: "\f37a"; }
.la-wheelchair:before { content: "\f37b"; }
.la-wifi:before { content: "\f37c"; }
.la-wikipedia-w:before { content: "\f37d"; }
.la-windows:before { content: "\f37e"; }
.la-won:before { content: "\f37f"; }
.la-wordpress:before { content: "\f380"; }
.la-wrench:before { content: "\f381"; }
.la-xing:before { content: "\f382"; }
.la-xing-square:before { content: "\f383"; }
.la-y-combinator:before { content: "\f384"; }
.la-y-combinator-square:before { content: "\f385"; }
.la-yahoo:before { content: "\f386"; }
.la-yc:before { content: "\f387"; }
.la-yc-square:before { content: "\f388"; }
.la-yelp:before { content: "\f389"; }
.la-yen:before { content: "\f38a"; }
.la-youtube:before { content: "\f38b"; }
.la-youtube-play:before { content: "\f38c"; }
.la-youtube-square:before { content: "\f38d"; }

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 424 KiB

View File

@ -1,133 +1,98 @@
<textarea id="editor"></textarea>
<div id="toolbar" class="d-flex p-1">
<div id="message" class="mr-auto"></div>
<div class="pr-2">Draft</div>
<div>Delete</div>
</div>
<script>
// Returns an array with tags
// The tags are parser from hash-tags
// text = Hello this is a #test of #the function
// returns ['test', 'the']
function getTags(text) {
var rgx = /#(\w+)\b/gi;
var tag;
var tags = [];
while (tag = rgx.exec(text)){
tags.push(tag[1])
}
// tags is an array, implode with comma ,
return tags.join(",");
}
var _options = {
'alertTimeout': 5, // Second in dissapear the alert
'autosaveTimeout': 5 // Second to activate before call the autosave
};
// Returns all characters after the hash # and space
// Onlt the first match
// text = # Hello World
// returns "Hello World"
function getTitle(text) {
var rgx = /# (.*)/;
title = rgx.exec(text);
return title[1].trim();
function showAlert(text) {
$("#message").html(text).fadeIn();
setTimeout(function(){
$("#message").html("");
},_options['alertTimeout']*1000);
}
function getContent(text, title, tags) {
var content = "";
// Remove the title. # Title
content = text.replace("# "+title+"\n", "");
return content;
}
function getPages() {
var params = {token: '790f6f150492ebe24c6197f53ff10010'}
apiUrl.search = new URLSearchParams(params)
fetch(apiUrl, {
method: 'GET'
})
.then(function(response) {
return response.json();
})
.then(function(json) {
return json;
})
.catch(err => {
console.log(err);
});
}
function createPage() {
return fetch(apiUrl, {
credentials: 'same-origin',
method: 'POST',
body: JSON.stringify({
token: "790f6f150492ebe24c6197f53ff10010",
authentication: "cb75be4a34ce9222914c0555f6faaa8d"
}),
headers: new Headers({
'Content-Type': 'application/json'
}),
})
.then(function(response) {
return response.json();
})
.then(function(json) {
key = json.data.key;
})
.catch(err => {
console.log(err);
});
}
function updatePage() {
var finalUrl = apiUrl+'/'+key;
return fetch(finalUrl, {
credentials: 'same-origin',
method: 'PUT',
body: JSON.stringify({
token: "790f6f150492ebe24c6197f53ff10010",
authentication: "cb75be4a34ce9222914c0555f6faaa8d",
title: title,
content: content,
tags: tags
}),
headers: new Headers({
'Content-Type': 'application/json'
}),
})
.then(function(response) {
return response.json();
})
.then(function(json) {
key = json.data.key;
})
.catch(err => {
console.log(err);
});
}
</script>
<textarea id="editor"></textarea>
<script>
var key = "";
var title = "";
var content = "";
var tags = [];
var apiUrl = new URL('http://localhost:8000/api/pages');
var _editor = null;
var _key = null; // Current page key in the editor
var _tags = []; // Current tags from the content
var _content = ""; // Current content, this variable helps to know when the content was changed
var _autosaveTimer = null; // Timer object for the autosave
var editor = new EasyMDE({
autofocus: true,
toolbar: false,
spellChecker: false,
status: ["lines", "words"],
tabSize: 4,
initialValue: '# Title \n'
function editorInitialize(content) {
_editor = new EasyMDE({
autofocus: true,
toolbar: false,
spellChecker: false,
status: false,
tabSize: 4,
initialValue: content
});
// Editor event change
_editor.codemirror.on("change", function(){
// If the content doesn't changed is not need to autosave
if (_content == editorGetContent()) {
return true;
}
// Reset timer
if (_autosaveTimer != null) {
clearTimeout(_autosaveTimer);
}
// Activate timer
_autosaveTimer = setTimeout(function() {
log('Autosave running', '');
_content = editorGetContent();
var tags = parser.tags(_content);
var title = parser.title(_content);
var newContent = parser.removeFirstLine(_content);
// Update the page because was a change in the content
ajax.updatePage(_key, title, newContent, tags);
// Check if there are new tags in the editor
// If there are new tags get the new tags for the sidebar
if (JSON.stringify(_tags) != JSON.stringify(tags)) {
_tags = tags;
displayTags();
}
}, _options['autosaveTimeout']*1000);
});
}
function editorSetContent(text) {
// Get the tags from the content
// When the content is setted the tags need to be setted
_tags = parser.tags(text);
// Set the current content to the variable
// This variable helps to know when the content was changed
_content = text;
// Set the new content into the editor
_editor.value(text);
}
function editorGetContent() {
return _editor.value();
}
// MAIN
// Init editor area
editorInitialize("# Title \n");
$(document).ready(function() {
showAlert("Welcome to Bludit");
});
// Editor event change
editor.codemirror.on("change", function(){
var editorValue = editor.value();
tags = getTags(editorValue);
title = getTitle(editorValue);
content = getContent(editorValue, title, tags);
console.log(content);
//updatePage();
});
//createPage();
</script>

View File

@ -0,0 +1 @@
<h4>Pages</h4>

View File

@ -0,0 +1,118 @@
<div class="tags-list col-lg-2 p-0 pt-4">
<ul id="currentTags" class="list-group list-group-flush">
</ul>
</div>
<script>
// Array with all current tags in the system
// array[ (string) tagKey => (array) pagesKeys ]
var _currentTags = [];
// Display all the current tags to the <ul> list
function displayTags() {
let response = ajax.getTags();
response.then(function(tags) {
// Log
log('displayTags() => ajax.getTags => tags',tags);
// Get the tag selected
let tagSelected = $("li.tagSelected").data("key");
// Init array for current tags
_currentTags = [];
// Remove all tags from the <ul>
$("#currentTags").html('<li class="tagItem list-group-item tagSelected"><i class="fa fa-star-o"></i> Untagged</li>');
// Add all tags to the <ul>
tags.forEach(function(tag) {
_currentTags[tag.key] = tag.list;
if (tagSelected == tag.key) {
$("#currentTags").append('<li class="tagItem list-group-item tagSelected" data-key="'+tag.key+'"># '+tag.name+'</li>');
} else {
$("#currentTags").append('<li class="tagItem list-group-item" data-key="'+tag.key+'"># '+tag.name+'</li>');
}
});
});
}
$(document).ready(function() {
// Click on tags
$(document).on("click", "li.tagItem", function() {
// Add class to the tag selected
$("li.tagItem").removeClass("tagSelected");
$(this).addClass("tagSelected");
// Get the tag key clicked
let tagKey = $(this).data("key");
// Log
log('click li.tagItem => tagKey',tagKey);
// Display pages by the tag
displayPagesByTag(tagKey);
});
// Retrive and show the tags
displayTags();
});
</script>
<div class="pages-list col-lg-2 p-0">
<ul id="currentPages" class="list-group list-group-flush">
</ul>
</div>
<script>
// Array with all current pages in the system
// array[ (string) pageKey => (array) { key, title, content, contentRaw, description, date } ]
var _currentPages = [];
// Display all the pages by the tag selected
// This function is called when the user click on a tag
function displayPagesByTag(tagKey) {
let response = ajax.getTag(tagKey);
response.then(function(tag) {
// Log
log('displayPagesByTag() => ajax.getTag => tag',tag);
// Init array for current pages by tag
_currentPages = [];
// Remove all pages from the <ul>
$("#currentPages").html("");
tag.pages.forEach(function(page) {
_currentPages[page.key] = page;
// Add all pages to the <ul>
$("#currentPages").append('<li class="pageItem list-group-item" data-key="'+page.key+'"><div class="pageItemTitle">'+page.title+'</div><div class="pageItemContent">'+page.contentRaw.substring(0, 50)+'</div></li>');
});
});
}
// Set the page selected
function loadPage(pageKey) {
// Check the current key if the same as the page is editing
if (_key == pageKey) {
console.log("Page already loaded");
return true;
}
console.log("Loading page by key: "+pageKey);
// Set the current key
_key = pageKey;
// Get the current page
let response = ajax.getPage(pageKey);
response.then(function(page) {
// Log
log('loadPage() => ajax.getPage => page',page);
let content = "";
if (page.title.trim()) {
content += "# "+page.title.trim()+"\n";
}
content += page.contentRaw;
editorSetContent(content);
});
}
$(document).ready(function() {
// Click on pages
$(document).on("click", "li.pageItem", function() {
// Add class to the tag selected
$("li.pageItem").removeClass("pageSelected");
$(this).addClass("pageSelected");
// Get the tag key clicked
var pageKey = $(this).data("key");
log('click li.pageItem => pageKey',pageKey);
// Retrive all titles of the pages and show
loadPage(pageKey);
});
});
</script>

View File

@ -19,7 +19,8 @@
'bludit-bootstrap.css',
'easymde.min.css',
'editor.css',
'bludit.css'
'bludit.css',
'line-awesome/css/line-awesome-font-awesome.min.css'
), DOMAIN_ADMIN_THEME_CSS);
?>
@ -36,7 +37,9 @@
echo Theme::jquery();
echo Theme::jsBootstrap();
echo Theme::js(array(
'easymde.min.js'
'easymde.min.js',
'ajax.js',
'parser.js'
), DOMAIN_ADMIN_THEME_JS);
?>
@ -45,22 +48,30 @@
echo '<script charset="utf-8">'.PHP_EOL;
include(PATH_CORE_JS.'variables.php');
echo '</script>'.PHP_EOL;
echo '<script charset="utf-8">'.PHP_EOL;
include(PATH_CORE_JS.'bludit-ajax.php');
echo '</script>'.PHP_EOL;
?>
<div class="container h-100">
<script>
var ajax = new Ajax();
var parser = new Parser();
var DEBUG = true;
var log = function(name, variable){
if (DEBUG) {
console.log(name);
console.log(variable);
}
return true;
}
</script>
<div class="container-fluid h-100">
<!-- 25%/75% split on large devices, small, medium devices hide -->
<div class="row h-100">
<div class="row h-100 d-flex">
<!-- LEFT SIDEBAR - Display only on large devices -->
<div class="sidebar col-lg-2">
<?php include('html/sidebar.php'); ?>
</div>
<?php include('html/tags.php'); ?>
<!-- RIGHT MAIN -->
<div class="main col-lg-10 mt-2 h-100">
<div class="editor-container col-lg-6 h-100" style="max-width: 600px;">
<?php include('html/main.php'); ?>
</div>
</div>

View File

@ -0,0 +1,107 @@
class Ajax {
constructor() {
this.apiURL = new URL('http://localhost:8000/api/');
this.token = "790f6f150492ebe24c6197f53ff10010";
this.authentication = "cb75be4a34ce9222914c0555f6faaa8d";
}
async getPage(key) {
let url = this.apiURL+"pages/"+key+"?token="+this.token;
try {
const response = await fetch(url, {
method: "GET"
});
const json = await response.json();
return json.data;
}
catch (err) {
console.log(err);
return false;
}
}
createPage() {
var url = this.apiURL+"pages";
return fetch(url, {
credentials: 'same-origin',
method: "POST",
body: JSON.stringify({
token: this.token,
authentication: this.authentication
}),
headers: new Headers({
'Content-Type': 'application/json'
}),
})
.then(function(response) {
return response.json();
})
.then(function(json) {
return json.data.key;
})
.catch(err => {
console.log(err);
return false;
});
}
updatePage(key, title, content, tags) {
log('this.updatePage()', key);
var url = this.apiURL+"pages/"+key;
return fetch(url, {
credentials: 'same-origin',
method: "PUT",
body: JSON.stringify({
token: this.token,
authentication: this.authentication,
title: title,
content: content,
tags: tags
}),
headers: new Headers({
'Content-Type': 'application/json'
}),
})
.then(function(response) {
return response.json();
})
.then(function(json) {
return json.data.key;
})
.catch(err => {
console.log(err);
return false;
});
}
async getTags() {
let url = this.apiURL+"tags?token="+this.token;
try {
const response = await fetch(url, {
method: "GET"
});
const json = await response.json();
return json.data;
}
catch (err) {
console.log(err);
return false;
}
}
async getTag(key) {
let url = this.apiURL+"tags/"+key+"?token="+this.token;
try {
const response = await fetch(url, {
method: "GET"
});
const json = await response.json();
return json.data;
}
catch (err) {
console.log(err);
return false;
}
}
}

View File

@ -0,0 +1,42 @@
class Parser {
// Returns an array with tags
// The tags are parser from hash-tags
// text = Hello this is a #test of #the function
// returns ['test', 'the']
tags(text) {
var rgx = /#(\w+)\b/gi;
var tag;
var tags = [];
while (tag = rgx.exec(text)){
tags.push(tag[1])
}
// tags is an array, implode with comma ,
return tags.join(",");
}
// Returns all characters after the hash # and space
// Onlt the first match
// text = # Hello World
// returns "Hello World"
title(text) {
var rgx = /# (.*)/;
let title = rgx.exec(text);
if (title) {
return title[1].trim();
}
return "";
}
// Returns the text without the first line
// The first line is removed only if the first line has a # Headline1
removeFirstLine(text) {
var lines = text.split("\n");
if (lines) {
// If the first line included # Headline1 then the line is removed
if (lines[0].includes("# ")) {
lines.splice(0,1);
}
}
return lines.join("\n");
}
}

View File

@ -326,6 +326,18 @@ class Pages extends dbJSON {
return false;
}
// Returns a database with all pages
// $onlyKeys = true; Returns only the pages keys
// $onlyKeys = false; Returns part of the database, I do not recommend use this
public function getDB($onlyKeys=true)
{
$tmp = $this->db;
if ($onlyKeys) {
return array_keys($tmp);
}
return $tmp;
}
// Returns a database with published pages
// $onlyKeys = true; Returns only the pages keys
// $onlyKeys = false; Returns part of the database, I do not recommend use this
@ -454,35 +466,47 @@ class Pages extends dbJSON {
// (int) $pageNumber, the page number
// (int) $numberOfItems, amount of items to return, if -1 returns all the items
// (boolean) $onlyPublished, TRUE to return only published pages
public function getList($pageNumber, $numberOfItems, $onlyPublished=true)
public function getList($pageNumber, $numberOfItems, $published=true, $static=false, $sticky=false, $draft=false, $scheduled=false)
{
$db = array_keys($this->db);
$list = array();
if ($published) {
$list += $this->getPublishedDB();
}
if ($onlyPublished) {
$db = $this->getPublishedDB(true);
if ($static) {
$list += $pages->getStaticDB();
}
if ($sticky) {
$list += $pages->getStickyDB();
}
if ($draft) {
$list += $pages->getDraftDB();
}
if ($scheduled) {
$list += $pages->getScheduledDB();
}
if ($numberOfItems==-1) {
return $db;
return $list;
}
// The first page number is 1, so the real is 0
$realPageNumber = $pageNumber - 1;
$total = count($db);
$total = count($list);
$init = (int) $numberOfItems * $realPageNumber;
$end = (int) min( ($init + $numberOfItems - 1), $total );
$outrange = $init<0 ? true : $init>$end;
if (!$outrange) {
return array_slice($db, $init, $numberOfItems, true);
return array_slice($list, $init, $numberOfItems, true);
}
return false;
}
// Returns the amount of pages
// (boolean) $total, TRUE returns the total of pages
// (boolean) $total, FALSE returns the total of published pages (without draft and scheduled)

View File

@ -265,6 +265,7 @@ class Page {
$tmp['content'] = $this->content(); // Markdown parsed
$tmp['contentRaw'] = $this->contentRaw(true); // No Markdown parsed
$tmp['description'] = $this->description();
$tmp['type'] = $this->type();
$tmp['date'] = $this->dateRaw();
$tmp['dateUTC'] = Date::convertToUTC($this->dateRaw(), DB_DATE_FORMAT, DB_DATE_FORMAT);
$tmp['permalink'] = $this->permalink(true);

View File

@ -42,9 +42,24 @@ class Tag {
return $this->getValue('permalink');
}
// Returns an array with the keys of pages linked to the tag
// Returns an array with the pages keys linked to the tag
public function pages()
{
return $this->getValue('list');
}
// Returns an array in json format with all the data of the tag
public function json($returnsArray=false)
{
$tmp['key'] = $this->key();
$tmp['name'] = $this->name();
$tmp['permalink'] = $this->permalink();
$tmp['pages'] = $this->pages();
if ($returnsArray) {
return $tmp;
}
return json_encode($tmp);
}
}

View File

@ -17,23 +17,22 @@ class Tags extends dbList {
global $pages;
// Get a database with published pages
$db = $pages->getPublishedDB(false);
$db = $pages->getDB(false);
$tagsIndex = array();
foreach($db as $pageKey=>$pageFields) {
foreach ($db as $pageKey=>$pageFields) {
$tags = $pageFields['tags'];
foreach($tags as $tagKey=>$tagName) {
if( isset($tagsIndex[$tagKey]) ) {
foreach ($tags as $tagKey=>$tagName) {
if (isset($tagsIndex[$tagKey])) {
array_push($tagsIndex[$tagKey]['list'], $pageKey);
}
else {
} else {
$tagsIndex[$tagKey]['name'] = $tagName;
$tagsIndex[$tagKey]['list'] = array($pageKey);
}
}
}
// Sort database by alphabet
ksort($tagsIndex);
$this->db = $tagsIndex;
return $this->save();
}

View File

@ -67,16 +67,14 @@ class pluginAPI extends Plugin {
// METHOD INPUTS
// ------------------------------------------------------------
$inputs = $this->getMethodInputs();
if ( empty($inputs) ) {
if (empty($inputs)) {
$this->response(400, 'Bad Request', array('message'=>'Missing method inputs.'));
}
// ENDPOINT PARAMETERS
// ------------------------------------------------------------
$parameters = $this->getEndpointParameters($URI);
if ( empty($parameters) ) {
if (empty($parameters)) {
$this->response(400, 'Bad Request', array('message'=>'Missing endpoint parameters.'));
}
@ -123,7 +121,7 @@ class pluginAPI extends Plugin {
// (GET) /api/pages
if ( ($method==='GET') && ($parameters[0]==='pages') && empty($parameters[1]) ) {
$data = $this->getPages();
$data = $this->getPages($inputs);
}
// (GET) /api/pages/<key>
elseif ( ($method==='GET') && ($parameters[0]==='pages') && !empty($parameters[1]) ) {
@ -144,6 +142,15 @@ class pluginAPI extends Plugin {
elseif ( ($method==='POST') && ($parameters[0]==='pages') && empty($parameters[1]) && $writePermissions ) {
$data = $this->createPage($inputs);
}
// (GET) /api/tags
elseif ( ($method==='GET') && ($parameters[0]==='tags') && empty($parameters[1]) ) {
$data = $this->getTags();
}
// (GET) /api/tags/<key>
elseif ( ($method==='GET') && ($parameters[0]==='tags') && !empty($parameters[1]) ) {
$tagKey = $parameters[1];
$data = $this->getTag($tagKey);
}
else {
$this->response(401, 'Unauthorized', array('message'=>'Access denied or invalid endpoint.'));
}
@ -193,7 +200,7 @@ class pluginAPI extends Plugin {
return $this->cleanInputs($inputs);
}
// Returns an array with key=>value
// Returns an array with key=>value with the inputs
// If the content is JSON is parsed to array
private function cleanInputs($inputs)
{
@ -240,14 +247,63 @@ class pluginAPI extends Plugin {
exit($json);
}
private function getPages()
private function getTags()
{
global $tags;
$tmp = array(
'status'=>'0',
'message'=>'List of tags.',
'data'=>array()
);
foreach ($tags->keys() as $key) {
$tag = $tags->getMap($key);
array_push($tmp['data'], $tag);
}
return $tmp;
}
// Returns the tag information and the pages releated to the tag
// The array with the pages has the complete information of each page
private function getTag($key)
{
try {
$tag = new Tag($key);
} catch (Exception $e) {
return array(
'status'=>'1',
'message'=>'Tag not found by the tag key: '.$key
);
}
$list = array();
foreach ($tag->pages() as $pageKey) {
try {
$page = new Page($pageKey);
array_push($list, $page->json($returnsArray=true));
} catch (Exception $e){}
}
$data = $tag->json($returnsArray=true);
$data['pages'] = $list;
return array(
'status'=>'0',
'message'=>'Tag data and pages related to the tag.',
'data'=>$data
);
}
private function getPages($args)
{
global $pages;
$onlyPublished = true;
$published = $args['published'];
$static = $args['static'];
$draft = $args['draft'];
$sticky = $args['sticky'];
$scheduled = $args['scheduled'];
$numberOfItems = $this->getValue('numberOfItems');
$pageNumber = 1;
$list = $pages->getList($pageNumber, $numberOfItems, $onlyPublished);
$list = $pages->getList($pageNumber, $numberOfItems, $published, $static, $sticky, $draft, $scheduled);
$tmp = array(
'status'=>'0',
@ -255,12 +311,16 @@ class pluginAPI extends Plugin {
'data'=>array()
);
// Get keys of pages
foreach ($list as $pageKey) {
try {
// Create the page object from the page key
$page = new Page($pageKey);
array_push($tmp['data'], $page->json( $returnsArray=true ));
if ($args['untagged'] && (empty($page->tags()))) {
// Push the page to the data array for the response
array_push($tmp['data'], $page->json($returnsArray=true));
} else {
array_push($tmp['data'], $page->json($returnsArray=true));
}
} catch (Exception $e) {
// Continue
}

View File

@ -82,7 +82,7 @@ class pluginsimpleMDE extends Plugin {
return simplemde.value();
}'.PHP_EOL;
// Insert an image in the editor in the cursor position
// Insert an image in the editor at the cursor position
// Function required for Bludit
$html .= 'function editorInsertMedia(filename) {
addContentSimpleMDE("!['.$L->get('Image description').']("+filename+")");

View File

@ -77,7 +77,7 @@ class pluginTinymce extends Plugin {
$html = <<<EOF
<script>
// Insert an image in the editor in the cursor position
// Insert an image in the editor at the cursor position
// Function required for Bludit
function editorInsertMedia(filename) {
tinymce.activeEditor.insertContent("<img src=\""+filename+"\" alt=\"\">");