From 712d6d924714725c2327dca4ac8dcb8a9f7aff36 Mon Sep 17 00:00:00 2001 From: Andrey Islentiev Date: Mon, 24 Apr 2023 15:38:57 +1000 Subject: [PATCH 1/2] Version 7.3.3 update --- css/jquery.qtip.min.css | 1 - css/smoothness/jquery-ui-1.8.11.custom.css | 25 +- .../jquery-ui-1.8.11.custom.min.css | 1 + css/zotpress.admin.css | 1392 ++++++++++++++ css/zotpress.admin.min.css | 1 + css/zotpress.ckeditor.css | 170 -- css/zotpress.css | 1667 ----------------- css/zotpress.help.css | 325 ++++ css/zotpress.help.min.css | 1 + css/zotpress.metabox.css | 1201 ++++++------ css/zotpress.metabox.min.css | 1 + css/zotpress.shortcode.css | 508 +++-- css/zotpress.shortcode.min.css | 1 + images/bullet.gif | Bin 270 -> 0 bytes images/help.png | Bin 479 -> 0 bytes images/icon-64x64.png | Bin 0 -> 3667 bytes images/icon-add.png | Bin 701 -> 0 bytes images/icon-bib.png | Bin 704 -> 0 bytes images/icon-cite.png | Bin 789 -> 0 bytes images/icon-edit.png | Bin 787 -> 0 bytes images/icon-list.png | Bin 710 -> 0 bytes images/icon-menu.svg | 4 + ...{loading_import.GIF => loading_import.gif} | Bin images/loading_import_lg.gif | Bin 6804 -> 0 bytes images/loading_list.gif | Bin 9427 -> 0 bytes images/loading_select.gif | Bin 1456 -> 0 bytes images/pp.png | Bin 0 -> 571 bytes images/sprite.png | Bin 45388 -> 48758 bytes images/syncing_bw.gif | Bin 847 -> 0 bytes js/jquery.livequery.js | 250 --- js/zotpress.accounts.js | 347 ---- js/zotpress.admin.js | 836 +++++++++ js/zotpress.admin.min.js | 1 + js/zotpress.admin.notices.js | 17 + js/zotpress.admin.notices.min.js | 3 + js/zotpress.default.js | 261 +-- js/zotpress.default.min.js | 2 + js/zotpress.frontend.js | 255 --- js/zotpress.gutenberg.js | 122 ++ js/zotpress.gutenberg.min.js | 3 + js/zotpress.help.js | 77 + js/zotpress.help.min.js | 1 + js/zotpress.icon.js | 7 + js/zotpress.lib.dropdown.js | 576 ++++++ js/zotpress.lib.dropdown.min.js | 1 + js/zotpress.lib.js | 253 +++ js/zotpress.lib.min.js | 1 + js/zotpress.lib.searchbar.js | 438 +++-- js/zotpress.lib.searchbar.min.js | 1 + js/zotpress.shortcode.bib.js | 668 +++++++ js/zotpress.shortcode.bib.min.js | 1 + js/zotpress.shortcode.intext.js | 931 +++++++++ js/zotpress.shortcode.intext.min.js | 1 + js/zotpress.widget.ckeditor.js | 288 --- js/zotpress.widget.metabox.js | 1343 +++++++------ js/zotpress.widget.metabox.min.js | 36 + languages/zotpress-ja.mo | Bin 0 -> 24708 bytes languages/zotpress-ja.po | 1040 ++++++++++ languages/zotpress.pot | 975 ++++++++++ lib/actions/actions.autoupdate.php | 216 --- lib/actions/actions.php | 352 ---- lib/actions/actions.style.php | 198 -- lib/actions/actions.sync.php | 243 --- lib/admin/admin.accounts.addform.php | 180 +- lib/admin/admin.accounts.oauth.php | 66 +- lib/admin/admin.accounts.php | 129 +- lib/admin/admin.browse.php | 336 ++-- lib/admin/admin.functions.php | 78 + lib/admin/admin.help.php | 986 +++++----- lib/admin/admin.install.php | 694 +++---- lib/admin/admin.menu.php | 43 +- lib/admin/admin.options.form.php | 463 ++--- lib/admin/admin.options.php | 283 +-- lib/admin/admin.php | 626 ++++++- lib/admin/admin.setup.php | 269 +-- lib/import/import.actions.php | 230 --- lib/import/import.collection.php | 131 -- lib/import/import.functions.php | 1271 ------------- lib/import/import.iframe.php | 470 ----- lib/import/import.php | 55 - lib/import/import.selective.php | 54 - lib/import/sync.functions.php | 864 --------- lib/import/sync.php | 232 --- lib/request/request.cite.php | 62 + lib/request/request.class.php | 427 +++++ lib/request/request.dl.php | 87 + lib/request/request.functions.php | 185 ++ lib/request/rss.file.php | 52 - lib/request/rss.php | 286 --- lib/request/rss.request.php | 124 -- lib/shortcode/shortcode.class.lib.php | 503 +++++ lib/shortcode/shortcode.classes.php | 645 ------- lib/shortcode/shortcode.functions.php | 1021 +++++++--- lib/shortcode/shortcode.intext.php | 626 ++----- lib/shortcode/shortcode.intextbib.php | 547 +++--- lib/shortcode/shortcode.lib.php | 298 +-- lib/shortcode/shortcode.lib.search.php | 173 -- lib/shortcode/shortcode.php | 1413 +++++--------- lib/shortcode/shortcode.request.php | 976 ++++++++++ lib/tinymce-plugin/css/zotpress.tinymce.css | 12 - lib/tinymce-plugin/images/icon-bib.png | Bin 3342 -> 0 bytes lib/tinymce-plugin/images/icon-cite.png | Bin 3438 -> 0 bytes lib/tinymce-plugin/images/icon-list.png | Bin 3397 -> 0 bytes lib/tinymce-plugin/zotpress-tinymce-plugin.js | 117 -- lib/widget/widget.ckeditor.php | 382 ---- lib/widget/widget.metabox.actions.php | 376 ---- lib/widget/widget.metabox.php | 1008 +++++----- lib/widget/widget.metabox.search.php | 81 - lib/widget/widget.php | 186 ++ lib/widget/widget.sidebar.php | 438 ++--- lib/widget/widget.tinymce.bib.php | 346 ---- lib/widget/widget.tinymce.cite.php | 263 --- lib/widget/widget.tinymce.list.php | 233 --- readme.txt | 572 ++++-- screenshot-1.jpg | Bin 56626 -> 238618 bytes screenshot-2.jpg | Bin 69092 -> 156871 bytes screenshot-3.jpg | Bin 64425 -> 114043 bytes screenshot-4.jpg | Bin 0 -> 136508 bytes screenshot-5.jpg | Bin 0 -> 128812 bytes screenshot-6.jpg | Bin 0 -> 214179 bytes zotpress.php | 552 +++--- 121 files changed, 16859 insertions(+), 17634 deletions(-) delete mode 100644 css/jquery.qtip.min.css create mode 100644 css/smoothness/jquery-ui-1.8.11.custom.min.css create mode 100644 css/zotpress.admin.css create mode 100644 css/zotpress.admin.min.css delete mode 100644 css/zotpress.ckeditor.css delete mode 100644 css/zotpress.css create mode 100644 css/zotpress.help.css create mode 100644 css/zotpress.help.min.css create mode 100644 css/zotpress.metabox.min.css create mode 100644 css/zotpress.shortcode.min.css delete mode 100644 images/bullet.gif delete mode 100644 images/help.png create mode 100644 images/icon-64x64.png delete mode 100644 images/icon-add.png delete mode 100644 images/icon-bib.png delete mode 100644 images/icon-cite.png delete mode 100644 images/icon-edit.png delete mode 100644 images/icon-list.png create mode 100644 images/icon-menu.svg rename images/{loading_import.GIF => loading_import.gif} (100%) delete mode 100644 images/loading_import_lg.gif delete mode 100644 images/loading_list.gif delete mode 100644 images/loading_select.gif create mode 100644 images/pp.png delete mode 100644 images/syncing_bw.gif delete mode 100644 js/jquery.livequery.js delete mode 100644 js/zotpress.accounts.js create mode 100644 js/zotpress.admin.js create mode 100644 js/zotpress.admin.min.js create mode 100644 js/zotpress.admin.notices.js create mode 100644 js/zotpress.admin.notices.min.js create mode 100644 js/zotpress.default.min.js delete mode 100644 js/zotpress.frontend.js create mode 100644 js/zotpress.gutenberg.js create mode 100644 js/zotpress.gutenberg.min.js create mode 100644 js/zotpress.help.js create mode 100644 js/zotpress.help.min.js create mode 100644 js/zotpress.icon.js create mode 100644 js/zotpress.lib.dropdown.js create mode 100644 js/zotpress.lib.dropdown.min.js create mode 100644 js/zotpress.lib.js create mode 100644 js/zotpress.lib.min.js create mode 100644 js/zotpress.lib.searchbar.min.js create mode 100644 js/zotpress.shortcode.bib.js create mode 100644 js/zotpress.shortcode.bib.min.js create mode 100644 js/zotpress.shortcode.intext.js create mode 100644 js/zotpress.shortcode.intext.min.js delete mode 100644 js/zotpress.widget.ckeditor.js create mode 100644 js/zotpress.widget.metabox.min.js create mode 100644 languages/zotpress-ja.mo create mode 100644 languages/zotpress-ja.po create mode 100644 languages/zotpress.pot delete mode 100644 lib/actions/actions.autoupdate.php delete mode 100644 lib/actions/actions.php delete mode 100644 lib/actions/actions.style.php delete mode 100644 lib/actions/actions.sync.php create mode 100644 lib/admin/admin.functions.php delete mode 100644 lib/import/import.actions.php delete mode 100644 lib/import/import.collection.php delete mode 100644 lib/import/import.functions.php delete mode 100644 lib/import/import.iframe.php delete mode 100644 lib/import/import.php delete mode 100644 lib/import/import.selective.php delete mode 100644 lib/import/sync.functions.php delete mode 100644 lib/import/sync.php create mode 100644 lib/request/request.cite.php create mode 100644 lib/request/request.class.php create mode 100644 lib/request/request.dl.php create mode 100644 lib/request/request.functions.php delete mode 100644 lib/request/rss.file.php delete mode 100644 lib/request/rss.php delete mode 100644 lib/request/rss.request.php create mode 100644 lib/shortcode/shortcode.class.lib.php delete mode 100644 lib/shortcode/shortcode.classes.php delete mode 100644 lib/shortcode/shortcode.lib.search.php create mode 100644 lib/shortcode/shortcode.request.php delete mode 100644 lib/tinymce-plugin/css/zotpress.tinymce.css delete mode 100644 lib/tinymce-plugin/images/icon-bib.png delete mode 100644 lib/tinymce-plugin/images/icon-cite.png delete mode 100644 lib/tinymce-plugin/images/icon-list.png delete mode 100644 lib/tinymce-plugin/zotpress-tinymce-plugin.js delete mode 100644 lib/widget/widget.ckeditor.php delete mode 100644 lib/widget/widget.metabox.actions.php delete mode 100644 lib/widget/widget.metabox.search.php create mode 100644 lib/widget/widget.php delete mode 100644 lib/widget/widget.tinymce.bib.php delete mode 100644 lib/widget/widget.tinymce.cite.php delete mode 100644 lib/widget/widget.tinymce.list.php create mode 100644 screenshot-4.jpg create mode 100644 screenshot-5.jpg create mode 100644 screenshot-6.jpg diff --git a/css/jquery.qtip.min.css b/css/jquery.qtip.min.css deleted file mode 100644 index 947c8f9..0000000 --- a/css/jquery.qtip.min.css +++ /dev/null @@ -1 +0,0 @@ -.ui-tooltip,.qtip{position:absolute;left:-28000px;top:-28000px;display:none;max-width:280px;min-width:50px;font-size:10.5px;line-height:12px;}.ui-tooltip-fluid{display:block;visibility:hidden;position:static!important;float:left!important;}.ui-tooltip-content{position:relative;padding:5px 9px;overflow:hidden;border:1px solid #000001;text-align:left;word-wrap:break-word;overflow:hidden;}.ui-tooltip-titlebar{position:relative;min-height:14px;padding:5px 35px 5px 10px;overflow:hidden;border:1px solid #000001;border-width:1px 1px 0;font-weight:bold;}.ui-tooltip-titlebar+.ui-tooltip-content{border-top-width:0!important;}/*!Default close button class */ .ui-tooltip-titlebar .ui-state-default{position:absolute;right:4px;top:50%;margin-top:-9px;cursor:pointer;outline:medium none;border-width:1px;border-style:solid;}* html .ui-tooltip-titlebar .ui-state-default{top:16px;}.ui-tooltip-titlebar .ui-icon,.ui-tooltip-icon .ui-icon{display:block;text-indent:-1000em;}.ui-tooltip-icon,.ui-tooltip-icon .ui-icon{-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;}.ui-tooltip-icon .ui-icon{width:18px;height:14px;text-align:center;text-indent:0;font:normal bold 10px/13px Tahoma,sans-serif;color:inherit;background:transparent none no-repeat -100em -100em;}/*!Default tooltip style */ .ui-tooltip-default .ui-tooltip-titlebar,.ui-tooltip-default .ui-tooltip-content{border-color:#F1D031;background-color:#FFFFA3;color:#555;}.ui-tooltip-default .ui-tooltip-titlebar{background-color:#FFEF93;}.ui-tooltip-default .ui-tooltip-icon{border-color:#CCC;background:#F1F1F1;color:#777;}.ui-tooltip-default .ui-tooltip-titlebar .ui-state-hover{border-color:#AAA;color:#111;}.ui-tooltip .ui-tooltip-tip{margin:0 auto;overflow:hidden;z-index:10;}.ui-tooltip .ui-tooltip-tip,.ui-tooltip .ui-tooltip-tip *{position:absolute;line-height:.1px!important;font-size:.1px!important;color:#123456;background:transparent;border:0 dashed transparent;}.ui-tooltip .ui-tooltip-tip canvas{top:0;left:0;}#qtip-overlay{position:fixed;left:-10000em;top:-10000em;}#qtip-overlay.blurs{cursor:pointer;}#qtip-overlay div{position:absolute;left:0;top:0;width:100%;height:100%;background-color:black;opacity:.7;filter:alpha(opacity=70);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=70)";}/*!Light tooltip style */ .ui-tooltip-light .ui-tooltip-titlebar,.ui-tooltip-light .ui-tooltip-content{border-color:#E2E2E2;color:#454545;}.ui-tooltip-light .ui-tooltip-content{background-color:white;}.ui-tooltip-light .ui-tooltip-titlebar{background-color:#f1f1f1;}/*!Dark tooltip style */ .ui-tooltip-dark .ui-tooltip-titlebar,.ui-tooltip-dark .ui-tooltip-content{border-color:#303030;color:#f3f3f3;}.ui-tooltip-dark .ui-tooltip-content{background-color:#505050;}.ui-tooltip-dark .ui-tooltip-titlebar{background-color:#404040;}.ui-tooltip-dark .ui-tooltip-icon{border-color:#444;}.ui-tooltip-dark .ui-tooltip-titlebar .ui-state-hover{border-color:#303030;}/*!Cream tooltip style */ .ui-tooltip-cream .ui-tooltip-titlebar,.ui-tooltip-cream .ui-tooltip-content{border-color:#F9E98E;color:#A27D35;}.ui-tooltip-cream .ui-tooltip-content{background-color:#FBF7AA;}.ui-tooltip-cream .ui-tooltip-titlebar{background-color:#F0DE7D;}.ui-tooltip-cream .ui-state-default .ui-tooltip-icon{background-position:-82px 0;}/*!Red tooltip style */ .ui-tooltip-red .ui-tooltip-titlebar,.ui-tooltip-red .ui-tooltip-content{border-color:#D95252;color:#912323;}.ui-tooltip-red .ui-tooltip-content{background-color:#F78B83;}.ui-tooltip-red .ui-tooltip-titlebar{background-color:#F06D65;}.ui-tooltip-red .ui-state-default .ui-tooltip-icon{background-position:-102px 0;}.ui-tooltip-red .ui-tooltip-icon{border-color:#D95252;}.ui-tooltip-red .ui-tooltip-titlebar .ui-state-hover{border-color:#D95252;}/*!Green tooltip style */ .ui-tooltip-green .ui-tooltip-titlebar,.ui-tooltip-green .ui-tooltip-content{border-color:#90D93F;color:#3F6219;}.ui-tooltip-green .ui-tooltip-content{background-color:#CAED9E;}.ui-tooltip-green .ui-tooltip-titlebar{background-color:#B0DE78;}.ui-tooltip-green .ui-state-default .ui-tooltip-icon{background-position:-42px 0;}/*!Blue tooltip style */ .ui-tooltip-blue .ui-tooltip-titlebar,.ui-tooltip-blue .ui-tooltip-content{border-color:#ADD9ED;color:#5E99BD;}.ui-tooltip-blue .ui-tooltip-content{background-color:#E5F6FE;}.ui-tooltip-blue .ui-tooltip-titlebar{background-color:#D0E9F5;}.ui-tooltip-blue .ui-state-default .ui-tooltip-icon{background-position:-2px 0;}/*!Add shadows to your tooltips in:FF3+,Chrome 2+,Opera 10.6+,IE6+,Safari 2+*/ .ui-tooltip-shadow{-webkit-box-shadow:1px 1px 3px 1px rgba(0,0,0,0.15);-moz-box-shadow:1px 1px 3px 1px rgba(0,0,0,0.15);box-shadow:1px 1px 3px 1px rgba(0,0,0,0.15);}.ui-tooltip-shadow .ui-tooltip-titlebar,.ui-tooltip-shadow .ui-tooltip-content{filter:progid:DXImageTransform.Microsoft.Shadow(Color='gray',Direction=135,Strength=3);-ms-filter:"progid:DXImageTransform.Microsoft.Shadow(Color='gray',Direction=135,Strength=3)";_margin-bottom:-3px;.margin-bottom:-3px;}/*!Add rounded corners to your tooltips in:FF3+,Chrome 2+,Opera 10.6+,IE9+,Safari 2+*/ .ui-tooltip-rounded,.ui-tooltip-rounded .ui-tooltip-content,.ui-tooltip-tipsy,.ui-tooltip-tipsy .ui-tooltip-content,.ui-tooltip-youtube,.ui-tooltip-youtube .ui-tooltip-content{-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px;}.ui-tooltip-rounded .ui-tooltip-titlebar,.ui-tooltip-tipsy .ui-tooltip-titlebar,.ui-tooltip-youtube .ui-tooltip-titlebar{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0;}.ui-tooltip-rounded .ui-tooltip-titlebar+.ui-tooltip-content,.ui-tooltip-tipsy .ui-tooltip-titlebar+.ui-tooltip-content,.ui-tooltip-youtube .ui-tooltip-titlebar+.ui-tooltip-content{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px;}/*!Youtube tooltip style */ .ui-tooltip-youtube{-webkit-box-shadow:0 0 3px #333;-moz-box-shadow:0 0 3px #333;box-shadow:0 0 3px #333;}.ui-tooltip-youtube .ui-tooltip-titlebar,.ui-tooltip-youtube .ui-tooltip-content{_margin-bottom:0;.margin-bottom:0;background:transparent;background:rgba(0,0,0,0.85);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#D9000000,endColorstr=#D9000000);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#D9000000,endColorstr=#D9000000)";color:white;border-color:#CCC;}.ui-tooltip-youtube .ui-tooltip-icon{border-color:#222;}.ui-tooltip-youtube .ui-tooltip-titlebar .ui-state-hover{border-color:#303030;}.ui-tooltip-jtools{background:#232323;background:rgba(0,0,0,0.7);background-image:-moz-linear-gradient(top,#717171,#232323);background-image:-webkit-gradient(linear,left top,left bottom,from(#717171),to(#232323));border:2px solid #ddd;border:2px solid rgba(241,241,241,1);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 0 12px #333;-moz-box-shadow:0 0 12px #333;box-shadow:0 0 12px #333;}.ui-tooltip-jtools .ui-tooltip-titlebar{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171,endColorstr=#4A4A4A);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171,endColorstr=#4A4A4A)";}.ui-tooltip-jtools .ui-tooltip-content{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A,endColorstr=#232323);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A,endColorstr=#232323)";}.ui-tooltip-jtools .ui-tooltip-titlebar,.ui-tooltip-jtools .ui-tooltip-content{background:transparent;color:white;border:0 dashed transparent;}.ui-tooltip-jtools .ui-tooltip-icon{border-color:#555;}.ui-tooltip-jtools .ui-tooltip-titlebar .ui-state-hover{border-color:#333;}.ui-tooltip-cluetip{-webkit-box-shadow:4px 4px 5px rgba(0,0,0,0.4);-moz-box-shadow:4px 4px 5px rgba(0,0,0,0.4);box-shadow:4px 4px 5px rgba(0,0,0,0.4);}.ui-tooltip-cluetip .ui-tooltip-titlebar{background-color:#87876A;color:white;border:0 dashed transparent;}.ui-tooltip-cluetip .ui-tooltip-content{background-color:#D9D9C2;color:#111;border:0 dashed transparent;}.ui-tooltip-cluetip .ui-tooltip-icon{border-color:#808064;}.ui-tooltip-cluetip .ui-tooltip-titlebar .ui-state-hover{border-color:#696952;color:#696952;}.ui-tooltip-tipsy{border:0;}.ui-tooltip-tipsy .ui-tooltip-titlebar,.ui-tooltip-tipsy .ui-tooltip-content{_margin-bottom:0;.margin-bottom:0;background:transparent;background:rgba(0,0,0,.87);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#D9000000,endColorstr=#D9000000);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#D9000000,endColorstr=#D9000000)";color:white;border:0 transparent;font-size:11px;font-family:'Lucida Grande',sans-serif;font-weight:bold;line-height:16px;text-shadow:0 1px black;}.ui-tooltip-tipsy .ui-tooltip-titlebar{padding:6px 35px 0 10;}.ui-tooltip-tipsy .ui-tooltip-content{padding:6px 10;}.ui-tooltip-tipsy .ui-tooltip-icon{border-color:#222;text-shadow:none;}.ui-tooltip-tipsy .ui-tooltip-titlebar .ui-state-hover{border-color:#303030;}.ui-tooltip-tipped .ui-tooltip-titlebar,.ui-tooltip-tipped .ui-tooltip-content{border:3px solid #959FA9;filter:none;-ms-filter:none;}.ui-tooltip-tipped .ui-tooltip-titlebar{background:#3A79B8;background-image:-moz-linear-gradient(top,#3A79B8,#2E629D);background-image:-webkit-gradient(linear,left top,left bottom,from(#3A79B8),to(#2E629D));filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8,endColorstr=#2E629D);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8,endColorstr=#2E629D)";color:white;font-weight:normal;font-family:serif;border-bottom-width:0;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;}.ui-tooltip-tipped .ui-tooltip-content{background-color:#F9F9F9;color:#454545;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px;}.ui-tooltip-tipped .ui-tooltip-icon{border:2px solid #285589;background:#285589;}.ui-tooltip-tipped .ui-tooltip-icon .ui-icon{background-color:#FBFBFB;color:#555;}.ui-tooltip:not(.ie9haxors) div.ui-tooltip-content,.ui-tooltip:not(.ie9haxors) div.ui-tooltip-titlebar{filter:none;-ms-filter:none;} \ No newline at end of file diff --git a/css/smoothness/jquery-ui-1.8.11.custom.css b/css/smoothness/jquery-ui-1.8.11.custom.css index 4c57c5b..69b0a33 100644 --- a/css/smoothness/jquery-ui-1.8.11.custom.css +++ b/css/smoothness/jquery-ui-1.8.11.custom.css @@ -59,20 +59,25 @@ #ZotpressMetaBox .ui-widget { } #ZotpressMetaBox .ui-widget .ui-widget { font-size: 1em; } /*#ZotpressMetaBox .ui-widget input, #ZotpressMetaBox .ui-widget select, #ZotpressMetaBox .ui-widget textarea, #ZotpressMetaBox .ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; }*/ -#ZotpressMetaBox .ui-widget-content { border: none; background: transparent; color: #222222; } +#ZotpressMetaBox .ui-widget-content { border: none; background: transparent; color: #555d66; } #ZotpressMetaBox .ui-widget-content a { color: #222222; } -#ZotpressMetaBox .ui-widget-header { border: 0; background: #F5F5F5; color: #222222; font-weight: normal; font-size: 0.85em !important; text-transform: uppercase; } +#ZotpressMetaBox .ui-widget-header { + /* border: 0; background: #fff; color: #222222; font-weight: normal; */ + font-size: 0.85em !important; text-transform: uppercase; +} #ZotpressMetaBox .ui-widget-header a { color: #222222; } /* Interaction states ----------------------------------*/ -#ZotpressMetaBox .ui-state-default, #ZotpressMetaBox .ui-widget-content .ui-state-default, #ZotpressMetaBox .ui-widget-header .ui-state-default { border: none; background: #e6e6e6; color: #666; float: left; margin: 0.35em 0 0 0.35em; } +/* #ZotpressMetaBox .ui-state-default, #ZotpressMetaBox .ui-widget-content .ui-state-default, #ZotpressMetaBox .ui-widget-header .ui-state-default { border: none; background: #fff; color: #222; float: left; margin: 0; padding: 8px 4px; } */ +/* #ZotpressMetaBox .ui-state-default:before, #ZotpressMetaBox .ui-widget-content .ui-state-default:before, #ZotpressMetaBox .ui-widget-header .ui-state-default:before { content: " "; display: block; background: url('images/ui-icons_222222_256x240.png') -111px 335px; width: 20px; height: 14px; float: left; } */ #ZotpressMetaBox .ui-state-default a, #ZotpressMetaBox .ui-state-default a:link, #ZotpressMetaBox .ui-state-default a:visited { color: #555555; text-decoration: none; } -#ZotpressMetaBox .ui-state-hover, #ZotpressMetaBox .ui-widget-content .ui-state-hover, #ZotpressMetaBox .ui-widget-header .ui-state-hover, #ZotpressMetaBox .ui-state-focus, #ZotpressMetaBox .ui-widget-content .ui-state-focus, #ZotpressMetaBox .ui-widget-header .ui-state-focus { background: #ccc; color: #000; } +#ZotpressMetaBox .ui-state-hover, #ZotpressMetaBox .ui-widget-content .ui-state-hover, #ZotpressMetaBox .ui-widget-header .ui-state-hover, #ZotpressMetaBox .ui-state-focus, #ZotpressMetaBox .ui-widget-content .ui-state-focus, #ZotpressMetaBox .ui-widget-header .ui-state-focus { } #ZotpressMetaBox .ui-state-hover a, #ZotpressMetaBox .ui-state-hover a:hover { color: #212121; text-decoration: none; } -#ZotpressMetaBox .ui-state-active, #ZotpressMetaBox .ui-widget-content .ui-state-active, #ZotpressMetaBox .ui-widget-header .ui-state-active { border: none; background: #ffffff; color: #222; } -#ZotpressMetaBox .ui-state-active a, #ZotpressMetaBox .ui-state-active a:link, #ZotpressMetaBox .ui-state-active a:visited { color: #212121; text-decoration: none; } -#ZotpressMetaBox .ui-widget :active { outline: none; } +/* #ZotpressMetaBox .ui-state-active, #ZotpressMetaBox .ui-widget-content .ui-state-active, #ZotpressMetaBox .ui-widget-header .ui-state-active { border: none; background: #ffffff; color: #222; } */ +/* #ZotpressMetaBox .ui-state-active:before, #ZotpressMetaBox .ui-widget-content .ui-state-active:before, #ZotpressMetaBox .ui-widget-header .ui-state-active:before { content: " "; display: block; background: url('images/ui-icons_222222_256x240.png') -206px 287px; width: 20px; height: 14px; float: left; } */ +#ZotpressMetaBox .ui-state-active a, #ZotpressMetaBox .ui-state-active a:link, #ZotpressMetaBox .ui-state-active a:visited, #ZotpressMetaBox .ui-state-active a:focus { color: #212121; text-decoration: none; } +#ZotpressMetaBox .ui-widget :active, #ZotpressMetaBox .ui-widget :focus { outline: none; box-shadow: none; } /* Interaction Cues ----------------------------------*/ @@ -304,7 +309,7 @@ #ZotpressMetaBox .ui-tabs { position: relative; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ #ZotpressMetaBox .ui-tabs #ZotpressMetaBox .ui-tabs-nav { margin: 0; padding: 0 0 0 1px; } #ZotpressMetaBox .ui-tabs #ZotpressMetaBox .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 1px 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; } -#ZotpressMetaBox .ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; } +/* #ZotpressMetaBox .ui-tabs .ui-tabs-nav li a { float: left; padding: 0; text-decoration: none; } */ #ZotpressMetaBox .ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; } #ZotpressMetaBox .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, #ZotpressMetaBox .ui-tabs .ui-tabs-nav li.ui-state-disabled a, #ZotpressMetaBox .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; } #ZotpressMetaBox .ui-tabs .ui-tabs-nav li a, #ZotpressMetaBox .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ @@ -331,7 +336,7 @@ #ZotpressMetaBox .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } #ZotpressMetaBox .ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; } #ZotpressMetaBox .ui-datepicker select.ui-datepicker-month-year {width: 100%;} -#ZotpressMetaBox .ui-datepicker select.ui-datepicker-month, +#ZotpressMetaBox .ui-datepicker select.ui-datepicker-month, #ZotpressMetaBox .ui-datepicker select.ui-datepicker-year { width: 49%;} #ZotpressMetaBox .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; } #ZotpressMetaBox .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } @@ -377,4 +382,4 @@ left: -4px; /*must have*/ width: 200px; /*must have*/ height: 200px; /*must have*/ -} \ No newline at end of file +} diff --git a/css/smoothness/jquery-ui-1.8.11.custom.min.css b/css/smoothness/jquery-ui-1.8.11.custom.min.css new file mode 100644 index 0000000..9e2c25f --- /dev/null +++ b/css/smoothness/jquery-ui-1.8.11.custom.min.css @@ -0,0 +1 @@ +#ZotpressMetaBox .ui-helper-hidden{display:none}#ZotpressMetaBox .ui-helper-hidden-accessible{position:absolute!important;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px)}#ZotpressMetaBox .ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}#ZotpressMetaBox .ui-helper-clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden}#ZotpressMetaBox .ui-helper-clearfix{display:inline-block}* html #ZotpressMetaBox .ui-helper-clearfix{height:1%}#ZotpressMetaBox .ui-helper-clearfix{display:block}#ZotpressMetaBox .ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}#ZotpressMetaBox .ui-state-disabled{cursor:default!important}#ZotpressMetaBox .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}#ZotpressMetaBox .ui-widget-overlay{position:absolute;top:0;left:0;width:100%;height:100%}#ZotpressMetaBox .ui-widget .ui-widget{font-size:1em}#ZotpressMetaBox .ui-widget-content{border:none;background:0 0;color:#555d66}#ZotpressMetaBox .ui-widget-content a{color:#222}#ZotpressMetaBox .ui-widget-header{font-size:.85em!important;text-transform:uppercase}#ZotpressMetaBox .ui-widget-header a{color:#222}#ZotpressMetaBox .ui-state-default a,#ZotpressMetaBox .ui-state-default a:link,#ZotpressMetaBox .ui-state-default a:visited{color:#555;text-decoration:none}#ZotpressMetaBox .ui-state-hover a,#ZotpressMetaBox .ui-state-hover a:hover{color:#212121;text-decoration:none}#ZotpressMetaBox .ui-state-active a,#ZotpressMetaBox .ui-state-active a:focus,#ZotpressMetaBox .ui-state-active a:link,#ZotpressMetaBox .ui-state-active a:visited{color:#212121;text-decoration:none}#ZotpressMetaBox .ui-widget :active,#ZotpressMetaBox .ui-widget :focus{outline:0;box-shadow:none}#ZotpressMetaBox .ui-state-highlight,#ZotpressMetaBox .ui-widget-content .ui-state-highlight,#ZotpressMetaBox .ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x;color:#363636}#ZotpressMetaBox .ui-state-highlight a,#ZotpressMetaBox .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}#ZotpressMetaBox .ui-state-error,#ZotpressMetaBox .ui-widget-content .ui-state-error,#ZotpressMetaBox .ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x;color:#cd0a0a}#ZotpressMetaBox .ui-state-error a,#ZotpressMetaBox .ui-widget-content .ui-state-error a,#ZotpressMetaBox .ui-widget-header .ui-state-error a{color:#cd0a0a}#ZotpressMetaBox .ui-state-error-text,#ZotpressMetaBox .ui-widget-content .ui-state-error-text,#ZotpressMetaBox .ui-widget-header .ui-state-error-text{color:#cd0a0a}#ZotpressMetaBox .ui-priority-primary,#ZotpressMetaBox .ui-widget-content .ui-priority-primary,#ZotpressMetaBox .ui-widget-header .ui-priority-primary{font-weight:700}#ZotpressMetaBox .ui-priority-secondary,#ZotpressMetaBox .ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:400}#ZotpressMetaBox .ui-state-disabled,#ZotpressMetaBox .ui-widget-content .ui-state-disabled,#ZotpressMetaBox .ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}#ZotpressMetaBox .ui-icon{width:16px;height:16px;background-image:url(images/ui-icons_222222_256x240.png)}#ZotpressMetaBox .ui-widget-content .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}#ZotpressMetaBox .ui-widget-header .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}#ZotpressMetaBox .ui-state-default .ui-icon{background-image:url(images/ui-icons_888888_256x240.png)}#ZotpressMetaBox .ui-state-focus .ui-icon,#ZotpressMetaBox .ui-state-hover .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}#ZotpressMetaBox .ui-state-active .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}#ZotpressMetaBox .ui-state-highlight .ui-icon{background-image:url(images/ui-icons_2e83ff_256x240.png)}#ZotpressMetaBox .ui-state-error .ui-icon,#ZotpressMetaBox .ui-state-error-text .ui-icon{background-image:url(images/ui-icons_cd0a0a_256x240.png)}#ZotpressMetaBox .ui-icon-carat-1-n{background-position:0 0}#ZotpressMetaBox .ui-icon-carat-1-ne{background-position:-16px 0}#ZotpressMetaBox .ui-icon-carat-1-e{background-position:-32px 0}#ZotpressMetaBox .ui-icon-carat-1-se{background-position:-48px 0}#ZotpressMetaBox .ui-icon-carat-1-s{background-position:-64px 0}#ZotpressMetaBox .ui-icon-carat-1-sw{background-position:-80px 0}#ZotpressMetaBox .ui-icon-carat-1-w{background-position:-96px 0}#ZotpressMetaBox .ui-icon-carat-1-nw{background-position:-112px 0}#ZotpressMetaBox .ui-icon-carat-2-n-s{background-position:-128px 0}#ZotpressMetaBox .ui-icon-carat-2-e-w{background-position:-144px 0}#ZotpressMetaBox .ui-icon-triangle-1-n{background-position:0 -16px}#ZotpressMetaBox .ui-icon-triangle-1-ne{background-position:-16px -16px}#ZotpressMetaBox .ui-icon-triangle-1-e{background-position:-32px -16px}#ZotpressMetaBox .ui-icon-triangle-1-se{background-position:-48px -16px}#ZotpressMetaBox .ui-icon-triangle-1-s{background-position:-64px -16px}#ZotpressMetaBox .ui-icon-triangle-1-sw{background-position:-80px -16px}#ZotpressMetaBox .ui-icon-triangle-1-w{background-position:-96px -16px}#ZotpressMetaBox .ui-icon-triangle-1-nw{background-position:-112px -16px}#ZotpressMetaBox .ui-icon-triangle-2-n-s{background-position:-128px -16px}#ZotpressMetaBox .ui-icon-triangle-2-e-w{background-position:-144px -16px}#ZotpressMetaBox .ui-icon-arrow-1-n{background-position:0 -32px}#ZotpressMetaBox .ui-icon-arrow-1-ne{background-position:-16px -32px}#ZotpressMetaBox .ui-icon-arrow-1-e{background-position:-32px -32px}#ZotpressMetaBox .ui-icon-arrow-1-se{background-position:-48px -32px}#ZotpressMetaBox .ui-icon-arrow-1-s{background-position:-64px -32px}#ZotpressMetaBox .ui-icon-arrow-1-sw{background-position:-80px -32px}#ZotpressMetaBox .ui-icon-arrow-1-w{background-position:-96px -32px}#ZotpressMetaBox .ui-icon-arrow-1-nw{background-position:-112px -32px}#ZotpressMetaBox .ui-icon-arrow-2-n-s{background-position:-128px -32px}#ZotpressMetaBox .ui-icon-arrow-2-ne-sw{background-position:-144px -32px}#ZotpressMetaBox .ui-icon-arrow-2-e-w{background-position:-160px -32px}#ZotpressMetaBox .ui-icon-arrow-2-se-nw{background-position:-176px -32px}#ZotpressMetaBox .ui-icon-arrowstop-1-n{background-position:-192px -32px}#ZotpressMetaBox .ui-icon-arrowstop-1-e{background-position:-208px -32px}#ZotpressMetaBox .ui-icon-arrowstop-1-s{background-position:-224px -32px}#ZotpressMetaBox .ui-icon-arrowstop-1-w{background-position:-240px -32px}#ZotpressMetaBox .ui-icon-arrowthick-1-n{background-position:0 -48px}#ZotpressMetaBox .ui-icon-arrowthick-1-ne{background-position:-16px -48px}#ZotpressMetaBox .ui-icon-arrowthick-1-e{background-position:-32px -48px}#ZotpressMetaBox .ui-icon-arrowthick-1-se{background-position:-48px -48px}#ZotpressMetaBox .ui-icon-arrowthick-1-s{background-position:-64px -48px}#ZotpressMetaBox .ui-icon-arrowthick-1-sw{background-position:-80px -48px}#ZotpressMetaBox .ui-icon-arrowthick-1-w{background-position:-96px -48px}#ZotpressMetaBox .ui-icon-arrowthick-1-nw{background-position:-112px -48px}#ZotpressMetaBox .ui-icon-arrowthick-2-n-s{background-position:-128px -48px}#ZotpressMetaBox .ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}#ZotpressMetaBox .ui-icon-arrowthick-2-e-w{background-position:-160px -48px}#ZotpressMetaBox .ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}#ZotpressMetaBox .ui-icon-arrowthickstop-1-n{background-position:-192px -48px}#ZotpressMetaBox .ui-icon-arrowthickstop-1-e{background-position:-208px -48px}#ZotpressMetaBox .ui-icon-arrowthickstop-1-s{background-position:-224px -48px}#ZotpressMetaBox .ui-icon-arrowthickstop-1-w{background-position:-240px -48px}#ZotpressMetaBox .ui-icon-arrowreturnthick-1-w{background-position:0 -64px}#ZotpressMetaBox .ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}#ZotpressMetaBox .ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}#ZotpressMetaBox .ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}#ZotpressMetaBox .ui-icon-arrowreturn-1-w{background-position:-64px -64px}#ZotpressMetaBox .ui-icon-arrowreturn-1-n{background-position:-80px -64px}#ZotpressMetaBox .ui-icon-arrowreturn-1-e{background-position:-96px -64px}#ZotpressMetaBox .ui-icon-arrowreturn-1-s{background-position:-112px -64px}#ZotpressMetaBox .ui-icon-arrowrefresh-1-w{background-position:-128px -64px}#ZotpressMetaBox .ui-icon-arrowrefresh-1-n{background-position:-144px -64px}#ZotpressMetaBox .ui-icon-arrowrefresh-1-e{background-position:-160px -64px}#ZotpressMetaBox .ui-icon-arrowrefresh-1-s{background-position:-176px -64px}#ZotpressMetaBox .ui-icon-arrow-4{background-position:0 -80px}#ZotpressMetaBox .ui-icon-arrow-4-diag{background-position:-16px -80px}#ZotpressMetaBox .ui-icon-extlink{background-position:-32px -80px}#ZotpressMetaBox .ui-icon-newwin{background-position:-48px -80px}#ZotpressMetaBox .ui-icon-refresh{background-position:-64px -80px}#ZotpressMetaBox .ui-icon-shuffle{background-position:-80px -80px}#ZotpressMetaBox .ui-icon-transfer-e-w{background-position:-96px -80px}#ZotpressMetaBox .ui-icon-transferthick-e-w{background-position:-112px -80px}#ZotpressMetaBox .ui-icon-folder-collapsed{background-position:0 -96px}#ZotpressMetaBox .ui-icon-folder-open{background-position:-16px -96px}#ZotpressMetaBox .ui-icon-document{background-position:-32px -96px}#ZotpressMetaBox .ui-icon-document-b{background-position:-48px -96px}#ZotpressMetaBox .ui-icon-note{background-position:-64px -96px}#ZotpressMetaBox .ui-icon-mail-closed{background-position:-80px -96px}#ZotpressMetaBox .ui-icon-mail-open{background-position:-96px -96px}#ZotpressMetaBox .ui-icon-suitcase{background-position:-112px -96px}#ZotpressMetaBox .ui-icon-comment{background-position:-128px -96px}#ZotpressMetaBox .ui-icon-person{background-position:-144px -96px}#ZotpressMetaBox .ui-icon-print{background-position:-160px -96px}#ZotpressMetaBox .ui-icon-trash{background-position:-176px -96px}#ZotpressMetaBox .ui-icon-locked{background-position:-192px -96px}#ZotpressMetaBox .ui-icon-unlocked{background-position:-208px -96px}#ZotpressMetaBox .ui-icon-bookmark{background-position:-224px -96px}#ZotpressMetaBox .ui-icon-tag{background-position:-240px -96px}#ZotpressMetaBox .ui-icon-home{background-position:0 -112px}#ZotpressMetaBox .ui-icon-flag{background-position:-16px -112px}#ZotpressMetaBox .ui-icon-calendar{background-position:-32px -112px}#ZotpressMetaBox .ui-icon-cart{background-position:-48px -112px}#ZotpressMetaBox .ui-icon-pencil{background-position:-64px -112px}#ZotpressMetaBox .ui-icon-clock{background-position:-80px -112px}#ZotpressMetaBox .ui-icon-disk{background-position:-96px -112px}#ZotpressMetaBox .ui-icon-calculator{background-position:-112px -112px}#ZotpressMetaBox .ui-icon-zoomin{background-position:-128px -112px}#ZotpressMetaBox .ui-icon-zoomout{background-position:-144px -112px}#ZotpressMetaBox .ui-icon-search{background-position:-160px -112px}#ZotpressMetaBox .ui-icon-wrench{background-position:-176px -112px}#ZotpressMetaBox .ui-icon-gear{background-position:-192px -112px}#ZotpressMetaBox .ui-icon-heart{background-position:-208px -112px}#ZotpressMetaBox .ui-icon-star{background-position:-224px -112px}#ZotpressMetaBox .ui-icon-link{background-position:-240px -112px}#ZotpressMetaBox .ui-icon-cancel{background-position:0 -128px}#ZotpressMetaBox .ui-icon-plus{background-position:-16px -128px}#ZotpressMetaBox .ui-icon-plusthick{background-position:-32px -128px}#ZotpressMetaBox .ui-icon-minus{background-position:-48px -128px}#ZotpressMetaBox .ui-icon-minusthick{background-position:-64px -128px}#ZotpressMetaBox .ui-icon-close{background-position:-80px -128px}#ZotpressMetaBox .ui-icon-closethick{background-position:-96px -128px}#ZotpressMetaBox .ui-icon-key{background-position:-112px -128px}#ZotpressMetaBox .ui-icon-lightbulb{background-position:-128px -128px}#ZotpressMetaBox .ui-icon-scissors{background-position:-144px -128px}#ZotpressMetaBox .ui-icon-clipboard{background-position:-160px -128px}#ZotpressMetaBox .ui-icon-copy{background-position:-176px -128px}#ZotpressMetaBox .ui-icon-contact{background-position:-192px -128px}#ZotpressMetaBox .ui-icon-image{background-position:-208px -128px}#ZotpressMetaBox .ui-icon-video{background-position:-224px -128px}#ZotpressMetaBox .ui-icon-script{background-position:-240px -128px}#ZotpressMetaBox .ui-icon-alert{background-position:0 -144px}#ZotpressMetaBox .ui-icon-info{background-position:-16px -144px}#ZotpressMetaBox .ui-icon-notice{background-position:-32px -144px}#ZotpressMetaBox .ui-icon-help{background-position:-48px -144px}#ZotpressMetaBox .ui-icon-check{background-position:-64px -144px}#ZotpressMetaBox .ui-icon-bullet{background-position:-80px -144px}#ZotpressMetaBox .ui-icon-radio-off{background-position:-96px -144px}#ZotpressMetaBox .ui-icon-radio-on{background-position:-112px -144px}#ZotpressMetaBox .ui-icon-pin-w{background-position:-128px -144px}#ZotpressMetaBox .ui-icon-pin-s{background-position:-144px -144px}#ZotpressMetaBox .ui-icon-play{background-position:0 -160px}#ZotpressMetaBox .ui-icon-pause{background-position:-16px -160px}#ZotpressMetaBox .ui-icon-seek-next{background-position:-32px -160px}#ZotpressMetaBox .ui-icon-seek-prev{background-position:-48px -160px}#ZotpressMetaBox .ui-icon-seek-end{background-position:-64px -160px}#ZotpressMetaBox .ui-icon-seek-start{background-position:-80px -160px}#ZotpressMetaBox .ui-icon-seek-first{background-position:-80px -160px}#ZotpressMetaBox .ui-icon-stop{background-position:-96px -160px}#ZotpressMetaBox .ui-icon-eject{background-position:-112px -160px}#ZotpressMetaBox .ui-icon-volume-off{background-position:-128px -160px}#ZotpressMetaBox .ui-icon-volume-on{background-position:-144px -160px}#ZotpressMetaBox .ui-icon-power{background-position:0 -176px}#ZotpressMetaBox .ui-icon-signal-diag{background-position:-16px -176px}#ZotpressMetaBox .ui-icon-signal{background-position:-32px -176px}#ZotpressMetaBox .ui-icon-battery-0{background-position:-48px -176px}#ZotpressMetaBox .ui-icon-battery-1{background-position:-64px -176px}#ZotpressMetaBox .ui-icon-battery-2{background-position:-80px -176px}#ZotpressMetaBox .ui-icon-battery-3{background-position:-96px -176px}#ZotpressMetaBox .ui-icon-circle-plus{background-position:0 -192px}#ZotpressMetaBox .ui-icon-circle-minus{background-position:-16px -192px}#ZotpressMetaBox .ui-icon-circle-close{background-position:-32px -192px}#ZotpressMetaBox .ui-icon-circle-triangle-e{background-position:-48px -192px}#ZotpressMetaBox .ui-icon-circle-triangle-s{background-position:-64px -192px}#ZotpressMetaBox .ui-icon-circle-triangle-w{background-position:-80px -192px}#ZotpressMetaBox .ui-icon-circle-triangle-n{background-position:-96px -192px}#ZotpressMetaBox .ui-icon-circle-arrow-e{background-position:-112px -192px}#ZotpressMetaBox .ui-icon-circle-arrow-s{background-position:-128px -192px}#ZotpressMetaBox .ui-icon-circle-arrow-w{background-position:-144px -192px}#ZotpressMetaBox .ui-icon-circle-arrow-n{background-position:-160px -192px}#ZotpressMetaBox .ui-icon-circle-zoomin{background-position:-176px -192px}#ZotpressMetaBox .ui-icon-circle-zoomout{background-position:-192px -192px}#ZotpressMetaBox .ui-icon-circle-check{background-position:-208px -192px}#ZotpressMetaBox .ui-icon-circlesmall-plus{background-position:0 -208px}#ZotpressMetaBox .ui-icon-circlesmall-minus{background-position:-16px -208px}#ZotpressMetaBox .ui-icon-circlesmall-close{background-position:-32px -208px}#ZotpressMetaBox .ui-icon-squaresmall-plus{background-position:-48px -208px}#ZotpressMetaBox .ui-icon-squaresmall-minus{background-position:-64px -208px}#ZotpressMetaBox .ui-icon-squaresmall-close{background-position:-80px -208px}#ZotpressMetaBox .ui-icon-grip-dotted-vertical{background-position:0 -224px}#ZotpressMetaBox .ui-icon-grip-dotted-horizontal{background-position:-16px -224px}#ZotpressMetaBox .ui-icon-grip-solid-vertical{background-position:-32px -224px}#ZotpressMetaBox .ui-icon-grip-solid-horizontal{background-position:-48px -224px}#ZotpressMetaBox .ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}#ZotpressMetaBox .ui-icon-grip-diagonal-se{background-position:-80px -224px}#ZotpressMetaBox .ui-corner-tl{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px}#ZotpressMetaBox .ui-corner-tr{-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px}#ZotpressMetaBox .ui-corner-bl{-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px}#ZotpressMetaBox .ui-corner-br{-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px}#ZotpressMetaBox .ui-corner-bottom{-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px}#ZotpressMetaBox .ui-corner-right{-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px}#ZotpressMetaBox .ui-corner-left{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px}#ZotpressMetaBox .ui-widget-overlay{background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30)}#ZotpressMetaBox .ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);-moz-border-radius:8px;-webkit-border-radius:8px;border-radius:8px}#ZotpressMetaBox .ui-tabs{position:relative;zoom:1}#ZotpressMetaBox .ui-tabs #ZotpressMetaBox .ui-tabs-nav{margin:0;padding:0 0 0 1px}#ZotpressMetaBox .ui-tabs #ZotpressMetaBox .ui-tabs-nav li{list-style:none;float:left;position:relative;top:1px;margin:0 1px 1px 0;border-bottom:0!important;padding:0;white-space:nowrap}#ZotpressMetaBox .ui-tabs .ui-tabs-nav li.ui-tabs-selected{margin-bottom:0;padding-bottom:1px}#ZotpressMetaBox .ui-tabs .ui-tabs-nav li.ui-state-disabled a,#ZotpressMetaBox .ui-tabs .ui-tabs-nav li.ui-state-processing a,#ZotpressMetaBox .ui-tabs .ui-tabs-nav li.ui-tabs-selected a{cursor:text}#ZotpressMetaBox .ui-tabs .ui-tabs-nav li a,#ZotpressMetaBox .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a{cursor:pointer}#ZotpressMetaBox .ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:0;background:0 0}#ZotpressMetaBox .ui-tabs .ui-tabs-hide{display:none!important}#ZotpressMetaBox .ui-datepicker{width:17em;padding:.2em .2em 0;display:none}#ZotpressMetaBox .ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}#ZotpressMetaBox .ui-datepicker .ui-datepicker-next,#ZotpressMetaBox .ui-datepicker .ui-datepicker-prev{position:absolute;top:2px;width:1.8em;height:1.8em}#ZotpressMetaBox .ui-datepicker .ui-datepicker-next-hover,#ZotpressMetaBox .ui-datepicker .ui-datepicker-prev-hover{top:1px}#ZotpressMetaBox .ui-datepicker .ui-datepicker-prev{left:2px}#ZotpressMetaBox .ui-datepicker .ui-datepicker-next{right:2px}#ZotpressMetaBox .ui-datepicker .ui-datepicker-prev-hover{left:1px}#ZotpressMetaBox .ui-datepicker .ui-datepicker-next-hover{right:1px}#ZotpressMetaBox .ui-datepicker .ui-datepicker-next span,#ZotpressMetaBox .ui-datepicker .ui-datepicker-prev span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}#ZotpressMetaBox .ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}#ZotpressMetaBox .ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}#ZotpressMetaBox .ui-datepicker select.ui-datepicker-month-year{width:100%}#ZotpressMetaBox .ui-datepicker select.ui-datepicker-month,#ZotpressMetaBox .ui-datepicker select.ui-datepicker-year{width:49%}#ZotpressMetaBox .ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}#ZotpressMetaBox .ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:700;border:0}#ZotpressMetaBox .ui-datepicker td{border:0;padding:1px}#ZotpressMetaBox .ui-datepicker td a,#ZotpressMetaBox .ui-datepicker td span{display:block;padding:.2em;text-align:right;text-decoration:none}#ZotpressMetaBox .ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}#ZotpressMetaBox .ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}#ZotpressMetaBox .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}#ZotpressMetaBox .ui-datepicker.ui-datepicker-multi{width:auto}#ZotpressMetaBox .ui-datepicker-multi .ui-datepicker-group{float:left}#ZotpressMetaBox .ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}#ZotpressMetaBox .ui-datepicker-multi-2 .ui-datepicker-group{width:50%}#ZotpressMetaBox .ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}#ZotpressMetaBox .ui-datepicker-multi-4 .ui-datepicker-group{width:25%}#ZotpressMetaBox .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header{border-left-width:0}#ZotpressMetaBox .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}#ZotpressMetaBox .ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}#ZotpressMetaBox .ui-datepicker-row-break{clear:both;width:100%}#ZotpressMetaBox .ui-datepicker-rtl{direction:rtl}#ZotpressMetaBox .ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}#ZotpressMetaBox .ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}#ZotpressMetaBox .ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}#ZotpressMetaBox .ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}#ZotpressMetaBox .ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}#ZotpressMetaBox .ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}#ZotpressMetaBox .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current{float:right}#ZotpressMetaBox .ui-datepicker-rtl .ui-datepicker-group{float:right}#ZotpressMetaBox .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header{border-right-width:0;border-left-width:1px}#ZotpressMetaBox .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}#ZotpressMetaBox .ui-datepicker-cover{display:none;display:block;position:absolute;z-index:-1;filter:mask();top:-4px;left:-4px;width:200px;height:200px} diff --git a/css/zotpress.admin.css b/css/zotpress.admin.css new file mode 100644 index 0000000..21a9c64 --- /dev/null +++ b/css/zotpress.admin.css @@ -0,0 +1,1392 @@ + + +/* START OF BASIC ZOTPRESS CSS */ + +div#zp-Zotpress select { + cursor: pointer; +} + +div#zp-Zotpress div.zp-Col-1 { + float: left; + width: 350px; +} +div#zp-Zotpress div.zp-Col-2 { + float: left; +} + +#adminmenu .current .wp-menu-image img { + opacity: 1.0; + /* filter: alpha(opacity = 100); */ +} + +div#zp-Zotpress del { + color: #aaa; + text-decoration: none; +} + +div#zp-Setup h3, +div#zp-Zotpress h3 { + clear: both; + font: 400 27px/32px "Helvetica", "Helvetica Neue", "Arial", sans-serif; + margin: 0; + font-weight: bold; + padding: 9px 15px 4px 0; + text-transform: none; +} +div#zp-Setup h3.pair { + border-bottom: 0; + padding: 15px 30px 0; +} + +div.zp-Collection-Title, +div#zp-Setup h4, +div#zp-Zotpress h4 { + font: italic 400 17px/21px "Georgia", serif; + margin: 1.5em 0 1em; +} +div#zp-Setup h4 { + font: italic 400 16px/21px "Georgia", serif; +} +div#zp-Setup h4.pair { + border-bottom: 1px solid #eee; + margin: 0; + padding: 10px 30px 25px; +} + +div#zp-Zotpress h5 { + font: 300 11px/30px "Georgia", serif; + margin-bottom: -15px; + text-transform: uppercase; +} + +div#zp-Zotpress hr { + border: none; + border-top: 1px solid #ddd; + clear: both; + margin: 3.3em 0 0.7em; + height: 1px; +} +div#zp-Setup hr.clear, +div#zp-Zotpress hr.clear { + border: none; + margin-bottom: 0; +} + +div#zp-Setup ul, +div#zp-Zotpress ul { + list-style: none; + margin: 20px 0 25px; + padding: 0; +} +div#zp-Setup ul li, +div#zp-Zotpress ul li { + background: url('../images/sprite.png') no-repeat -40px -60px; + padding-left: 15px; + margin-left: 5px; + margin-bottom: 10px; + list-style: none; +} + +div#zp-Zotpress form hr.clear { + margin: 0; + padding: 0; + height: 1px; +} + +div#zp-Zotpress p.example { + font-family: monospace; + font-size: 1.1em; +} + +/* END OF BASIC ZOTPRESS CSS */ + + + +/* START OF SETUP CSS */ + +div#zp-Setup { + border-bottom: 1px solid #ccc; + margin-right: 1.5em; + width: auto; + min-width: 549px; +} +div#zp-Setup div#zp-Zotpress-Navigation { + z-index: 1; + position: relative; + margin-bottom: 0; +} +div.zp-Setup-Step, +div#zp-Setup-Step { + z-index: 0; + position: relative; + background-color: #fff; + padding: 1em 0 0.65em; +} +div.zp-Setup-Step.second { + border-top: 1px solid #eee; +} +div.zp-Setup-Step.second:before, +div.zp-Setup-Step.second:after { + display: table; + content: ""; +} +div.zp-Setup-Step.second:after { + clear: both; +} + +div#zp-Setup h3 { + padding: 15px 30px 25px; + border-bottom: 1px solid #eee; +} +div#zp-Setup-Step hr { + clear: both; + border: none; + padding: 0; + margin: 1em 0; + height: 1px; + background: none; + border-top: 1px solid #eee; +} +div#zp-Setup-Step hr.clear { + margin: 0; +} + +div#zp-Setup div.zp-Column-1, +div#zp-Setup div.zp-Column-2 { + float: left; + margin-left: 30px; + width: 400px; +} + +div#zp-Setup p.note { + color: #666; + font-size: 0.9em; + font-style: italic; + margin: -10px 0 10px 0; +} + +div#zp-Setup div.zp-Zotpress-Options { + margin-bottom: 2em; +} + +div#zp-Zotpress-Setup-Buttons { + clear: both; + border-top: 1px solid #eee; +} +a#zp-Setup-Cancel, +div#zp-Zotpress-Setup-Buttons a, +div#zp-Zotpress-Setup-Buttons input { + margin: 1em 30px 0.5em; + float: right; +} +a#zp-Setup-Cancel { + float: none; +} +div#zp-Zotpress-Setup-Buttons a#zp-Import-Accounts-Button { + margin-right: 0; +} +div#zp-Zotpress-Setup-Buttons a#zp-Import-Browse-Button { + margin-left: 10px; +} + +div#zp-Setup div.zp-Zotpress-Options div.zp-Success, +div#zp-Setup div.zp-Zotpress-Options div.zp-Loading, +div#zp-Setup div.zp-Zotpress-Options div.zp-Errors { + float: left; + height: 32px; +} +div#zp-Setup div.zp-Zotpress-Options div.zp-Success, +div#zp-Setup div.zp-Zotpress-Options div.zp-Errors { + margin-top: 14px; + margin-bottom: 0; + padding-left: 35px; + height: 24px; +} +div#zp-Setup div.zp-Zotpress-Options div.zp-Success { + background-position: 0 -82px; +} +div#zp-Setup div.zp-Zotpress-Options div.zp-Errors { + background-position: 0 -146px; +} +div#zp-Setup div.zp-Zotpress-Options div.zp-Loading { + margin-top: 6px; +} + + +div#zp-Setup div.zp-Column, +div#zp-Zotpress div.zp-Column { + border-bottom: 1px solid #eee; +} +div#zp-Setup div.zp-Column div.zp-Column-Inner { + padding: 0 25px; +} + + +div.zp-Step-Import, +div#zp-Step-Import { + padding: 10px 30px; +} +.second div.zp-Step-Import { + padding-top: 0; +} +div#zp-Zotpress-Setup-Import-Buttons { + margin-top: 2em; +} +input#zp-Zotpress-Setup-Import, +.wp-core-ui input.zp-Import-Button.button-secondary { + margin: 0 0.5em 1em 0; + float: left; +} +div#zp-Step-Import-Collection { + background-color: #f9f9f9; + clear: both; + margin-top: 1em; + width: 36.75em; + height: 13.5em; +} +div#zp-Step-Import-Collection.loading { + background: #f9f9f9 url('../images/loading_default.gif') no-repeat center; +} +div#zp-Step-Import-Collection iframe { + width: 100%; +} +#zp-Zotpress-Setup-Import-Selective { + float: left; + margin: 1em 0; +} + + +iframe#zp-Setup-Import { + position: absolute; + top: 0; + right: 0; + margin: 0; + padding: 0; + + /* LIVE */ + visibility: hidden; + width: 50px; + height: 35px; + + /* DEBUGGING */ + /*border: 3px solid #eee;*/ + /*width: 350px;*/ + /*height: 200px;*/ +} + +div.zp-Loading-Container { + clear: both; + padding-top: 0.75em; +} +div.zp-Loading-Container:before, +div.zp-Loading-Container:after { + content: ""; + display: table; +} +div.zp-Loading-Container:after { + clear: both; +} +div.zp-Loading-Container.selective { + clear: none; + padding-top: 0; +} +div.zp-Loading-Initial.zp-Loading-Import { + background: transparent url('../images/loading_import.gif') no-repeat 0 6px; + display: none; + float: left; + margin: 0; + width: 70px; + height: 20px; +} +div.zp-Loading-Initial.zp-Loading-Import.selective { + margin-top: 1.35em; + margin-left: 1em; +} +div.zp-Import-Messages { + color: #999; + font: italic 9px/20px Georgia,"Times New Roman","Bitstream Charter",Times,serif; + display: none; + float: left; + margin: 0 0 0 1em; +} +div.zp-Import-Messages.selective { + margin-top: 1.95em; +} + +div.Zotpress_update_notice .notice-dismiss.text { + position: static; + color: inherit; + text-decoration: underline; + padding: 0; +} +div.Zotpress_update_notice .notice-dismiss.text::before { + display: none; +} + + + +/* START OF SETUP CHECK */ + +#zp-Setup-Check { + padding: 1.5em 30px; +} +#zp-Setup-Check-Message.error { + background: #fceae9; +} +#zp-Setup-Check-Message.updated { + background: #eef9e6; +} +div#zp-Setup-Check-Message.error strong em { + color: #E14D43; + font-style: normal; +} +div#zp-Setup-Check-Message.updated strong em { + color: #7AD03A; + font-style: normal; +} + + + +/* START OF ADD FORM CSS */ + +form#zp-Add { + padding: 0; + margin: 0; +} +*:first-child+html form#zp-Add { /* IE7 hack */ + /*width: 850px;*/ +} +form#zp-Add fieldset { + background: transparent; + border: none; + margin: 0; + padding: 0; +} +form#zp-Add div.field { + clear: both; + padding: 2.2em 2.4em; +} + +form#zp-Add label, +form#zp-Add select, +form#zp-Add textarea, +form#zp-Add input, +form#zp-Add aside { + display: block; + float: left; +} +form#zp-Add select, +form#zp-Add textarea, +form#zp-Add input { + margin: -4px 0 0; +} +form#zp-Add input#private_key { + min-width: 18em; +} +form#zp-Add label { + font: italic 400 1.1em/1.25em "Georgia", serif; + width: 20%; +} +form#zp-Add label.required { + background: url('../images/sprite.png') no-repeat 0 -36px; + padding-left: 15px; + margin-left: -15px; +} +form#zp-Add aside { + float: right; + margin-top: -8px; + width: 40%; +} +form#zp-Add aside p { + font-size: 0.85em; + margin: 0 0 0 1em; +} +form#zp-Add .last aside p { + padding-bottom: 2em; +} + +form#zp-Add input#upload_image, +form#zp-Add input#upload_image_button { + display: inline; +}/* Remove once converted to WP types w/ post image? */ + +#zp-Setup div.proceed { + border-top: 1px solid #eee; + clear: both; + width: 100%; +} +#zp-Setup div.proceed input#zp-Connect, +#zp-Setup div.proceed input#zp-Connect-Next { + margin: 1em 30px 0.5em; + float: right; +} +/* Thanks to http://nicolasgallagher.com/micro-clearfix-hack/ */ +#zp-Setup div.proceed:before, +#zp-Setup div.proceed:after { + content: ""; + display: table; +} +#zp-Setup div.proceed:after { + clear: both; +} + +form#zp-Add div.message { + position: absolute; + bottom: 1.1em; + right: 8.5em; + width: 100%; +} +div.zp-Loading { + background: transparent url('../images/loading_default.gif') no-repeat center; + display: none; + float: right; + letter-spacing: -1000px; + overflow: hidden; + text-indent: -5000px; + margin: 0 0 0; + width: 30px; + height: 30px; +} +div.zp-Errors, +div.zp-Success { + display: none; + float: right; + font-weight: bold; + margin: 0 0 0; + padding-left: 35px; +} +div.zp-Errors { + background: url('../images/sprite.png') no-repeat 0 -139px; + color: #990033; +} +div.zp-Success { + background: url('../images/sprite.png') no-repeat 0 -76px; + color: #009966; +} +div.zp-Errors p, +div.zp-Success p { + margin: 5px 0; +} + +/* END OF SETUP CSS */ + + + +/* START OF LOADING CSS */ + +div.zp-Loading-Initial { + background: transparent url('../images/loading_initial.gif') no-repeat -3px 10px; + margin: 0; + padding: 0; + width: 220px; + height: 18px; +} +div.zp-Loading-Initial h2 { + margin-bottom: -12px; +} +iframe#zp-Loading-Initial { + visibility: hidden; +} + +/* END OF LOADING CSS */ + + + +/* START TABS */ + +div#zp-Zotpress-Navigation { + border-bottom: 1px solid #ccc; + margin: 10px 0 20px; + overflow: visible; + /*height: 47px;*/ + height: 49px; +} + +div#zp-Zotpress-Navigation h1 { + font: 600 18px/24px "Helvetica", Arial, sans-serif; + float: left; + margin: 0; + padding: 0.45em 5em 1em 0; + text-transform: uppercase; +} +div#zp-Zotpress-Navigation h1 em { + color: #c23d35; + font-style: normal; +} + +/* Nav Items */ + +div#zp-Zotpress-Navigation .nav-item, +div#zp-Zotpress-Navigation :visited.nav-item { + color: #000; + display: block; + float: left; + /*font: normal 15px/24px "Helvetica", "Helvetica Neue", "Arial", sans-serif;*/ + font: normal 1em/2.15em "Helvetica", "Helvetica Neue", "Arial", sans-serif; + padding: 0.75em 1.5em; + outline: none; + text-transform: uppercase; + text-decoration: none; +} +div#zp-Setup:not(.zp-Step-Selective) div#zp-Zotpress-Navigation .nav-item, +div#zp-Setup:not(.zp-Step-Selective) div#zp-Zotpress-Navigation :visited.nav-item { + color: #bbb; +} + +div#zp-Zotpress-Navigation :hover.nav-item { + border-bottom: 0.25em solid #000; +} +div#zp-Setup:not(.zp-Step-Selective) div#zp-Zotpress-Navigation :hover.nav-item { + border-bottom: none; +} + +div#zp-Zotpress-Navigation :focus.nav-item, +div#zp-Zotpress-Navigation :active.nav-item, +div#zp-Zotpress-Navigation .active.nav-item { + background-color: #eaeaea; + border-bottom: 0.25em solid #000; + box-shadow: none; +} + +div#zp-Zotpress-Navigation .nav-item.nav-tab-active, +div#zp-Setup div#zp-Zotpress-Navigation .nav-item.nav-tab-active, +div#zp-Setup div#zp-Zotpress-Navigation .nav-item.nav-tab-active:hover, +div#zp-Setup div#zp-Zotpress-Navigation .nav-item.nav-tab-active:active { + border-bottom: 0.25em solid #E14D43; + background-color: transparent; + color: #000; +} + +div#zp-Zotpress-Navigation .nav-item.nav-tab-active strong { + font-weight: bold; + margin-right: 0.25em; +} + +div#zp-Icon { + float: left; + margin-right: 8px; + text-align: center; + width: 48px; + height: 48px; +} +div#zp-Icon img { + display: inline; + padding-top: 6px; + width: 32px; +} + +/* END TABS */ + + + +/* START BROWSE */ + +/* from ID to class: + +zp-Options-Wrapper +zp-Browse-Wrapper +zp-Browse-Bar +.zp-Browse-Collections, +.zp-Browse-Tags + +*/ + +div#zp-Zotpress div#zp-Options-Wrapper, +div#zp-Zotpress div.zp-Browse-Wrapper { + position: relative; + background-color: #fff; + border-bottom: 1px solid #ccc; + margin-top: -20px; + padding: 1em 0 0; +} +div#zp-Zotpress div#zp-Options-Wrapper:before, +div#zp-Zotpress div#zp-Options-Wrapper:after { + content: ""; + display: table; +} +div#zp-Zotpress div#zp-Options-Wrapper:after { + clear: both; +} +div#zp-Zotpress div#zp-Options-Wrapper h3, +div#zp-Zotpress div.zp-Browse-Wrapper h3 { + padding: 15px 30px 25px; +} +div#zp-Zotpress div#zp-Options-Wrapper h3 { + border-bottom: 1px solid #eee; +} + +div#zp-Zotpress div#zp-Options-Wrapper hr { + border-color: #eee; + margin-bottom: 0; +} +div#zp-Zotpress div#zp-Options-Wrapper div.zp-Column-1, +div#zp-Zotpress div#zp-Options-Wrapper div.zp-Column-2 { + border-color: #eee; + margin-right: 0; + width: 49.5%; +} +div#zp-Zotpress div#zp-Options-Wrapper div.zp-Column-Inner { + padding: 0 25px; +} + + +/* Browse Dropdowns */ + +.zp-Browse-Bar { + border: none; + padding: 0 30px; +} +.zp-Browse-Bar:after { + clear: both; + content: ""; + display: table; +} + +.zp-Browse-Collections, +.zp-Browse-Tags { + float: left; + width: 50%; +} +.zp-Browse-Select { + /* padding: 0 30px; */ + margin-right: 15px; + width: auto; +} +.zp-Browse-Tags .zp-Browse-Select { + margin-right: 0; + margin-left: 15px; +} + +.zp-Browse-Select select { + border: 1px solid #ccc; + width: 100%; +} + +.zp-Browse-Select .zp-List-Tags { + float: right; +} + + + +/* Accounts */ + +div.zp-Browse-Accounts { + display: inline; +} +div.zp-Browse-Accounts label { + color: #ccc; + display: none; + font: normal 400 1em/1.75em "Georgia", serif; + margin-right: 5px; + padding: 0; +} +div#zp-Zotpress select.zp-FilterByAccount { + font-size: inherit; + line-height: inherit; + border: none; + box-shadow: none; + margin: 0; + padding: 0; + display: inline; + height: auto; + vertical-align: baseline; +} +div#zp-Zotpress select.zp-FilterByAccount.loading { + color: #ddd; +} + +div.zp-Browse-Account-Options { + position: absolute; + top: 27px; + right: 30px; +} +.zp-Browse-Account-Default { + font: 400 27px/32px "Helvetica", "Helvetica Neue", "Arial", sans-serif; + padding-left: 3px !important; + transition: none !important; + width: auto; +} +.zp-Browse-Account-Default:before { + font-family: dashicons; + content: "\f154"; + line-height: 1.1; + font-size: 1.1em; + margin: 0 0.4em; + padding: 0 0.1em; + vertical-align: text-bottom; +} +.zp-Browse-Account-Default.dashicons-star-empty:before { + content: "\f154"; +} +.zp-Browse-Account-Default.dashicons-star-filled:before { + content: "\f155"; +} +.zp-Browse-Account-Default.loading:before { + background-image: url("../images/loading_default.gif") !important; + background-repeat: no-repeat; + background-position: center !important; + height: 1.5rem; +} +.zp-Browse-Account-Default.loading.dashicons-star-empty:before { + content: " "; + display: inline-block; + white-space: pre; + vertical-align: 0.1em; + min-height: 18px; + min-width: 18px; +} + + +/* Collection Folders */ + +div.zp-Collection-Title { + letter-spacing: normal; + margin-left: 30px; + padding: 0; + text-transform: none; +} +div.zp-Collection-Title label { + color: #ccc; + display: inline-block; + font-family: "Georgia", serif; + font-size: 0.65em; + font-style: normal; + padding-left: 2em; + text-transform: uppercase; +} +div.zp-Collection-Title .item_key { + border: none; + box-shadow: none; + color: #ccc; + display: inline-block; + font-size: 0.8em; + font-style: italic; +} + +/* END BROWSE */ + + + +/* START OF BROWSE CITATION LISTS */ + +.zpSearchResultsContainer { + border-top: 1px solid #eee; +} +.wp-admin .zpSearchResultsContainer { + padding-bottom: 0; +} +.wp-admin div#zp-Zotpress div.zp-List .zp_display_progress { + position: absolute; + top: 0; + right: 0; + + background: transparent url('../images/loading_default.gif') no-repeat right top; + font-size: 0.8em; + text-transform: uppercase; + margin-right: 30px; + padding-right: 30px; +} +.wp-admin div#zp-Zotpress div.zp-List.loading .zpSearchResultsContainer { + background: none; +} + +div#zp-Zotpress div.zp-List { + position: relative; +} + +div#zp-Zotpress div.zp-List h3 { + display: block; + color: #bbb; + background: #333; + font: 400 19px/24px "Helvetica", "Helvetica Neue", "Arial", sans-serif; + margin: -3px 0 0; + padding: 10px 15px; +} +div#zp-Zotpress div.zp-List h3 em { + color: #fff; + font-style: normal; +} + +div#zp-Zotpress div.zp-List p { + margin: 1em; +} + +div#zp-Zotpress div.zp-List a, +div#zp-Zotpress div.zp-List a:visited +{ + color: #E14D43; /* bae1fe */ + text-decoration: none; +} +div#zp-Zotpress div.zp-List h3 a { + float: right; +} +div#zp-Zotpress div.zp-List a:hover { + color: #ddd; +} +div#zp-Zotpress div.zp-List a:active { + color: #666; +} + + + +div#zp-Zotpress div.zp-List div.zp-Entry { + padding: 0 30px; +} +div#zp-Zotpress div.zp-List div.zp-Entry:before, +div#zp-Zotpress div.zp-List div.zp-Entry:after { + content: ""; + display: table; +} +div#zp-Zotpress div.zp-List div.zp-Entry:after { + clear: both; +} +.wp-admin div#zp-Zotpress div.zp-List div.zp-Entry { + border-bottom: 1px solid #eee; + padding-top: 20px; +} + +div#zp-Zotpress div.zp-List div.zp-Entry label { + color: #ccc; + display: inline; + font-family: "Georgia", serif; + font-size: 0.85em; + text-transform: uppercase; +} +div#zp-Zotpress div.zp-List div.zp-Entry input.item_key { + border: none; + box-shadow: none; + color: #ccc; + display: inline-block; + font-family: "Georgia", serif; + font-style: italic; + font-weight: normal; + margin-bottom: 2em; +} + +div#zp-Zotpress div.zp-List div.zp-Entry-Image { + position: relative; + float: right; + margin: 0 0 5px 15px; + overflow: hidden; + text-align: center; + width: 150px; +} +div#zp-Zotpress div.zp-List div.zp-Entry-Image.hasImage { + line-height: 0; + width: 150px; + height: auto; +} + +div#zp-Zotpress div.zp-List div.zp-Entry-Image a.upload, +div#zp-Zotpress div.zp-List div.zp-Entry-Image a.upload:link, +div#zp-Zotpress div.zp-List div.zp-Entry-Image a.upload:visited { + transition: .25s ease-in-out; + + background-color: #F6F6F6; + border: 2px solid #F6F6F6; + border-bottom: 2px solid #eee; + color: #ccc; + display: block; + font-size: 0.9em; + font-weight: bold; + line-height: 2em; + text-decoration: none; + width: 150px; +} +div#zp-Zotpress div.zp-List div.zp-Entry-Image a.upload:hover { + background-color: #E14D43; + border: 2px solid #E14D43; + border-bottom: 2px solid #C24138; + color: #fff; +} +div#zp-Zotpress div.zp-List div.zp-Entry-Image a.upload:active { + background-color: #aaa; + border: 2px solid #aaa; + color: #666; +} +div#zp-Zotpress div.zp-List div.zp-Entry-Image a.delete, +div#zp-Zotpress div.zp-List div.zp-Entry-Image a.delete:link, +div#zp-Zotpress div.zp-List div.zp-Entry-Image a.delete:visited { + transition: .25s ease-in-out; + + position: absolute; + z-index: 3; + top: 0; + right: 0; + left: auto; + background-color: #F6F6F6; + border: 2px solid #F6F6F6; + border-bottom: 2px solid #eee; + box-shadow: none; + display: none; + font-size: 14pt; + font-weight: bold; + line-height: 20px; + outline: none; + text-align: center; + width: 25px; + height: 25px; +} +div#zp-Zotpress div.zp-List div.zp-Entry-Image a.delete:hover { + background-color: #E14D43; + border: 2px solid #E14D43; + border-bottom: 2px solid #C24138; + color: #fff; +} +div#zp-Zotpress div.zp-List div.zp-Entry-Image a.delete:active { + background-color: #aaa; + border: 2px solid #aaa; + color: #666; +} +div#zp-Zotpress div.zp-List div.zp-Entry-Image.hover.hasImage a.delete { + display: block; +} + +div#zp-Zotpress div.zp-List div.zp-Entry-Image img { + width: 150px; + height: auto; +} + +div#zp-Zotpress div.zp-Entry div.zp-Entry-ID { + color: #999; + font-size: 10px; + display: block; + margin: 0; +} +div#zp-Zotpress div.zp-Entry div.zp-Entry-ID span.title { + text-transform: uppercase; +} +div#zp-Zotpress div.zp-Entry div.zp-Entry-ID div { + display: inline-block; +} +div#zp-Zotpress div.zp-Entry div.zp-Entry-ID-Text span { + cursor: pointer; +} +div#zp-Zotpress div.zp-Entry div.zp-Entry-ID input { + border: 0; + background: transparent; + color: #999; + display: none; + font-size: 10px; + padding: 0; + margin: 0; +} + + +/* Pagination */ + +.zpSearchResultsPaging:after { + clear: both; + content: ""; + display: table; +} + +.zpSearchResultsPagingContainer { + margin: 0; + margin-left: 30px; +} + +.zpSearchResultsPagingContainer span.title { + font: italic 400 1rem/2.6 "Georgia", serif; + /* float: left; */ + /* padding: 7px 15px 0 0; */ + text-transform: none; +} + +.zpSearchResultsPaging a { + /* float: left; */ + display: block; + text-align: center; + /* width: 40px; */ + /* height: 3.5rem; */ +} +.zpSearchResultsPaging a.selected { + color: #000 !important; +} +.zpSearchResultsPaging a span { + margin: 0.5rem; + /* padding: calc(1.5rem - 4px) calc(1.2rem - 4px); */ +} + +.zpSearchResultsPagingScroller { + /* width: 5em; */ +} +.zpSearchResultsPagingScroller span { + font-size: 2.5rem; + margin-top: -0.5rem; +} + +/* END OF BROWSE CITATIONS */ + + + +/* START IMAGE FORM */ + +div#zp-Zotpress form#zp-Image { + /* -moz-border-radius: 10px; */ + border-radius: 10px; + background-color: #fafafa; + margin: 0.75em 0 30px 0; + width: 780px; +} + +div#zp-Zotpress form#zp-Image fieldset { + padding: 10px 20px; +} + +div#zp-Zotpress form#zp-Image div.section { + margin: 10px 0; +} + +div#zp-Zotpress form#zp-Image div.zp-Image-Current { + float: right; + overflow: hidden; + margin: 20px; + max-width: 310px; + max-height: 310px; +} + +div#zp-Zotpress div.zp-Citation { + width: 780px; +} +div#zp-Zotpress div.zp-Citation div.csl-bib-body { + margin: 0; +} +div#zp-Zotpress div.zp-Citation div.zp-Entry { + min-height: 0; +} + +div#zp-Zotpress form#zp-Image span.help { + color: #999; + font: italic 11px/14px 'Georgia', serif; +} + +div#zp-Zotpress form#zp-Image #zp-Submit, +div#zp-Zotpress form#zp-Image #zp-Cancel { + float: left; +} +div#zp-Zotpress form#zp-Image #zp-Submit { + margin-right: 4px; +} + +div#zp-Zotpress form#zp-Image div.zp-Loading { + display: none; + float: left; + margin: 0 0 0 4px; +} + +div#zp-Zotpress form#zp-Image div.zp-Errors, +div#zp-Zotpress form#zp-Image div.zp-Success { + margin-left: 140px; + padding-left: 35px; +} +div#zp-Zotpress form#zp-Image div.zp-Errors p, +div#zp-Zotpress form#zp-Image div.zp-Success p { + padding: 6px 0 1px; +} + +/* END IMAGE FORM */ + + + +/* START OF HIDDEN URL CSS */ + +span#ZOTPRESS_PLUGIN_URL { + display: none; +} + +/* END OF HIDDEN URL CSS */ + + + +/* START ACCOUNTS */ + +div#zp-ManageAccounts { + clear: both; +} +div#zp-ManageAccounts h3 { + width: 50%; +} + +a.zp-Account-Default.inactive { + cursor: default; +} + +a.zp-AddAccountButton, +a.zp-AddAccountButton:link, +a.zp-AddAccountButton:visited, +a.zp-AddAccountButton:active, +a.zp-AddAccountButton:hover { + float: right; + margin-top: -2.55em; + text-shadow: none; +} +a.zp-AddAccountButton span.dashicons { + color: #000; + margin-right: 0.3em; + padding-bottom: 3px; + vertical-align: middle; + /* background: transparent url('../images/sprite.png') no-repeat 0 -351px; */ + /* padding: 0 2px 0 16px; */ +} +a.zp-AddAccountButton:hover { + background: #ceec8a; +} +a.zp-AddAccountButton:hover span.dashicons { + color: #E14D43; + /* background-position: -161px -351px; */ +} +a.zp-AddAccountButton:active { + background: #777; + color: #000; +} +a.zp-AddAccountButton:active span.dashicons { + color: #666; + /* background-position: -161px -350px; */ +} + +#zp-Accounts { + margin: 1.55em 0; +} + +#zp-Accounts th { + font: 300 1.1em/1.1em "Georgia", sans-serif; +} + +#zp-Accounts .default { + text-align: center; + width: 10%; +} +#zp-Accounts .account_type { + width: 8%; +} +#zp-Accounts .api_user_id { + width: 12%; +} +#zp-Accounts .private_key { + width: 34%; +} +#zp-Accounts .nickname { + width: 20%; +} +#zp-Accounts .cache { + text-align: center; + width: 8%; +} +#zp-Accounts .remove { + text-align: center; + width: 8%; +} + +#zp-AccountsList td.cache, +#zp-AccountsList td.remove { + text-align: center; + /* display: flex; + align-items: center; + justify-content: center; + width: inherit; */ +} + +#zp-AccountsList .default a, +#zp-AccountsList .cache a, +#zp-AccountsList .remove a { +/* #zp-AccountsList .actions a { */ + /* display: block; */ + font-size: 1.7em; + line-height: 25px; + outline: none; + overflow: hidden; + margin: 0 1.25em 0 0; + width: 25px; + height: 25px; +} +#zp-AccountsList .default a span, +#zp-AccountsList .cache a span, +#zp-AccountsList .remove a span { + display: none; +} +#zp-AccountsList .default a.dashicons-star-filled { + color: #000; + content: "\f154"; +} +#zp-AccountsList .default a.dashicons-star-empty { + color: #ccc; + content: "\f155"; +} +#zp-AccountsList .default a:focus, +#zp-AccountsList .cache a:focus, +#zp-AccountsList .remove a:focus { +/* #zp-AccountsList .actions a:focus { */ + box-shadow: none; +} +#zp-AccountsList .cache a.cache { + color: #000; + /* color: #2ecc71; */ + margin-right: 0; + + /* -webkit-transform: scaleX(-1) rotate(25deg); + -moz-transform: scaleX(-1) rotate(25deg); + -o-transform: scaleX(-1) rotate(25deg); */ + transform: scaleX(-1) rotate(25deg); +} +#zp-AccountsList .cache a.cache.loading:before { + content: " "; + white-space: pre; + background-position: 0 center !important; + background-image: url('../images/loading_default.gif'); + background-repeat: no-repeat; + width: 18px; + display: inline-block; +} +#zp-AccountsList .remove a.delete { + color: #E14D43; + margin-right: 0; +} + +#zp-AccountsList .default a.default { + float: none; + margin: 0 auto; +} +#zp-AccountsList .default a.default.loading { + background-position: 4px center !important; + background-image: url('../images/loading_default.gif'); + background-repeat: no-repeat; +} +#zp-AccountsList .default a.default.loading:before { + content: " "; + white-space: pre; +} + +/* END ACCOUNTS */ + + + + + + +/* START OF MODAL CSS */ + +.zp-Modal #adminmenu, +.zp-Modal #footer, +.zp-Modal #wphead +{ + display: none; +} +.zp-Modal #wpbody { + margin-left: 25px; +} +body.wp-admin.zp-Modal { + min-width: 400px; +} + +/* END OF MODAL CSS */ + + + + +/* START OF OPTIONS PAGE CSS */ + +div.zp-Zotpress-Options { + border-left: 0.35em solid #000; + margin: 20px 0 30px; + padding: 0.6em 1em; +} +div.zp-Zotpress-Options:before, +div.zp-Zotpress-Options:after { + content: ""; + display: table; +} +div.zp-Zotpress-Options:after { + clear: both; +} + +div#zp-Zotpress div.zp-Column-1 { + border-right: 1px solid #ddd; + float: left; + margin-right: 4%; + width: 47.5% +} +div#zp-Zotpress div.zp-Column-2 { + float: left; + width: 47.5% +} + +div.zp-Zotpress-Options label { + font: normal 0.9em/1em "Georgia", sans-serif; + margin: 0 0 0.5em 0; + text-transform: uppercase; + letter-spacing: 0.075rem; +} + +div.zp-Zotpress-Options label, +div.zp-Zotpress-Options select { + display: block; +} +div.zp-Zotpress-Options select { + margin-bottom: 0.5em; +} + +div.zp-Zotpress-Options input.button-secondary { + float: left; + margin-top: 10px; +} + +div#zp-Zotpress div.zp-Zotpress-Options div.zp-Loading { + display: none; + float: left; + margin: 0.6em 0 0 0.25em; +} +div#zp-Zotpress div.zp-Zotpress-Options div.zp-Success, +div#zp-Zotpress div.zp-Zotpress-Options div.zp-Errors { + margin: 0.6em 0 0; + padding: 6px 0 4px 32px; + float: left; +} + +div#zp-Zotpress-Options-Style-New-Container { + display: none; + margin: 1.5em 0 0.5em; +} +select#zp-Zotpress-Options-Style option#new { + border-top: 1px dotted #CCCCCC; + font-weight: bold; + font-style: italic; +} + +div#zp-Zotpress .zp-Column-1 p.note { + /*margin-right: 1em;*/ +} + +div#zp-Zotpress-Options-Reset { + border-left: 0; + padding: 0; +} + +div.zp-CPT-Checkbox { + float: left; + width: 50%; +} +div.zp-Zotpress-Options div.zp-CPT-Checkbox label { + display: inline; + line-height: 2em; + vertical-align: 0.05em; +} +div.zp-Zotpress-Options div.zp-CPT-Checkbox label.dis { + color: #ccc; +} +div.zp-CPT-Checkbox-Container:before, +div.zp-CPT-Checkbox-Container:after { + content: " "; /* 1 */ + display: table; /* 2 */ +} +div.zp-CPT-Checkbox-Container:after { + clear: both; +} + +/* END OF OPTIONS PAGE CSS */ + + +.ui-tooltip-tipsy .ui-tooltip-titlebar, .ui-tooltip-tipsy .ui-tooltip-content { + font-weight: normal !important; + width: 300px !important; +} diff --git a/css/zotpress.admin.min.css b/css/zotpress.admin.min.css new file mode 100644 index 0000000..9fbc9ad --- /dev/null +++ b/css/zotpress.admin.min.css @@ -0,0 +1 @@ +div#zp-Zotpress select{cursor:pointer}div#zp-Zotpress div.zp-Col-1{float:left;width:350px}div#zp-Zotpress div.zp-Col-2{float:left}#adminmenu .current .wp-menu-image img{opacity:1}div#zp-Zotpress del{color:#aaa;text-decoration:none}div#zp-Setup h3,div#zp-Zotpress h3{clear:both;font:400 27px/32px Helvetica,"Helvetica Neue",Arial,sans-serif;margin:0;font-weight:700;padding:9px 15px 4px 0;text-transform:none}div#zp-Setup h3.pair{border-bottom:0;padding:15px 30px 0}div#zp-Setup h4,div#zp-Zotpress h4,div.zp-Collection-Title{font:italic 400 17px/21px Georgia,serif;margin:1.5em 0 1em}div#zp-Setup h4{font:italic 400 16px/21px Georgia,serif}div#zp-Setup h4.pair{border-bottom:1px solid #eee;margin:0;padding:10px 30px 25px}div#zp-Zotpress h5{font:300 11px/30px Georgia,serif;margin-bottom:-15px;text-transform:uppercase}div#zp-Zotpress hr{border:none;border-top:1px solid #ddd;clear:both;margin:3.3em 0 .7em;height:1px}div#zp-Setup hr.clear,div#zp-Zotpress hr.clear{border:none;margin-bottom:0}div#zp-Setup ul,div#zp-Zotpress ul{list-style:none;margin:20px 0 25px;padding:0}div#zp-Setup ul li,div#zp-Zotpress ul li{background:url('../images/sprite.png') no-repeat -40px -60px;padding-left:15px;margin-left:5px;margin-bottom:10px;list-style:none}div#zp-Zotpress form hr.clear{margin:0;padding:0;height:1px}div#zp-Zotpress p.example{font-family:monospace;font-size:1.1em}div#zp-Setup{border-bottom:1px solid #ccc;margin-right:1.5em;width:auto;min-width:549px}div#zp-Setup div#zp-Zotpress-Navigation{z-index:1;position:relative;margin-bottom:0}div#zp-Setup-Step,div.zp-Setup-Step{z-index:0;position:relative;background-color:#fff;padding:1em 0 .65em}div.zp-Setup-Step.second{border-top:1px solid #eee}div.zp-Setup-Step.second:after,div.zp-Setup-Step.second:before{display:table;content:""}div.zp-Setup-Step.second:after{clear:both}div#zp-Setup h3{padding:15px 30px 25px;border-bottom:1px solid #eee}div#zp-Setup-Step hr{clear:both;border:none;padding:0;margin:1em 0;height:1px;background:0 0;border-top:1px solid #eee}div#zp-Setup-Step hr.clear{margin:0}div#zp-Setup div.zp-Column-1,div#zp-Setup div.zp-Column-2{float:left;margin-left:30px;width:400px}div#zp-Setup p.note{color:#666;font-size:.9em;font-style:italic;margin:-10px 0 10px 0}div#zp-Setup div.zp-Zotpress-Options{margin-bottom:2em}div#zp-Zotpress-Setup-Buttons{clear:both;border-top:1px solid #eee}a#zp-Setup-Cancel,div#zp-Zotpress-Setup-Buttons a,div#zp-Zotpress-Setup-Buttons input{margin:1em 30px .5em;float:right}a#zp-Setup-Cancel{float:none}div#zp-Zotpress-Setup-Buttons a#zp-Import-Accounts-Button{margin-right:0}div#zp-Zotpress-Setup-Buttons a#zp-Import-Browse-Button{margin-left:10px}div#zp-Setup div.zp-Zotpress-Options div.zp-Errors,div#zp-Setup div.zp-Zotpress-Options div.zp-Loading,div#zp-Setup div.zp-Zotpress-Options div.zp-Success{float:left;height:32px}div#zp-Setup div.zp-Zotpress-Options div.zp-Errors,div#zp-Setup div.zp-Zotpress-Options div.zp-Success{margin-top:14px;margin-bottom:0;padding-left:35px;height:24px}div#zp-Setup div.zp-Zotpress-Options div.zp-Success{background-position:0 -82px}div#zp-Setup div.zp-Zotpress-Options div.zp-Errors{background-position:0 -146px}div#zp-Setup div.zp-Zotpress-Options div.zp-Loading{margin-top:6px}div#zp-Setup div.zp-Column,div#zp-Zotpress div.zp-Column{border-bottom:1px solid #eee}div#zp-Setup div.zp-Column div.zp-Column-Inner{padding:0 25px}div#zp-Step-Import,div.zp-Step-Import{padding:10px 30px}.second div.zp-Step-Import{padding-top:0}div#zp-Zotpress-Setup-Import-Buttons{margin-top:2em}.wp-core-ui input.zp-Import-Button.button-secondary,input#zp-Zotpress-Setup-Import{margin:0 .5em 1em 0;float:left}div#zp-Step-Import-Collection{background-color:#f9f9f9;clear:both;margin-top:1em;width:36.75em;height:13.5em}div#zp-Step-Import-Collection.loading{background:#f9f9f9 url('../images/loading_default.gif') no-repeat center}div#zp-Step-Import-Collection iframe{width:100%}#zp-Zotpress-Setup-Import-Selective{float:left;margin:1em 0}iframe#zp-Setup-Import{position:absolute;top:0;right:0;margin:0;padding:0;visibility:hidden;width:50px;height:35px}div.zp-Loading-Container{clear:both;padding-top:.75em}div.zp-Loading-Container:after,div.zp-Loading-Container:before{content:"";display:table}div.zp-Loading-Container:after{clear:both}div.zp-Loading-Container.selective{clear:none;padding-top:0}div.zp-Loading-Initial.zp-Loading-Import{background:transparent url('../images/loading_import.gif') no-repeat 0 6px;display:none;float:left;margin:0;width:70px;height:20px}div.zp-Loading-Initial.zp-Loading-Import.selective{margin-top:1.35em;margin-left:1em}div.zp-Import-Messages{color:#999;font:italic 9px/20px Georgia,"Times New Roman","Bitstream Charter",Times,serif;display:none;float:left;margin:0 0 0 1em}div.zp-Import-Messages.selective{margin-top:1.95em}div.Zotpress_update_notice .notice-dismiss.text{position:static;color:inherit;text-decoration:underline;padding:0}div.Zotpress_update_notice .notice-dismiss.text::before{display:none}#zp-Setup-Check{padding:1.5em 30px}#zp-Setup-Check-Message.error{background:#fceae9}#zp-Setup-Check-Message.updated{background:#eef9e6}div#zp-Setup-Check-Message.error strong em{color:#e14d43;font-style:normal}div#zp-Setup-Check-Message.updated strong em{color:#7ad03a;font-style:normal}form#zp-Add{padding:0;margin:0}form#zp-Add fieldset{background:0 0;border:none;margin:0;padding:0}form#zp-Add div.field{clear:both;padding:2.2em 2.4em}form#zp-Add aside,form#zp-Add input,form#zp-Add label,form#zp-Add select,form#zp-Add textarea{display:block;float:left}form#zp-Add input,form#zp-Add select,form#zp-Add textarea{margin:-4px 0 0}form#zp-Add input#private_key{min-width:18em}form#zp-Add label{font:italic 400 1.1em/1.25em Georgia,serif;width:20%}form#zp-Add label.required{background:url('../images/sprite.png') no-repeat 0 -36px;padding-left:15px;margin-left:-15px}form#zp-Add aside{float:right;margin-top:-8px;width:40%}form#zp-Add aside p{font-size:.85em;margin:0 0 0 1em}form#zp-Add .last aside p{padding-bottom:2em}form#zp-Add input#upload_image,form#zp-Add input#upload_image_button{display:inline}#zp-Setup div.proceed{border-top:1px solid #eee;clear:both;width:100%}#zp-Setup div.proceed input#zp-Connect,#zp-Setup div.proceed input#zp-Connect-Next{margin:1em 30px .5em;float:right}#zp-Setup div.proceed:after,#zp-Setup div.proceed:before{content:"";display:table}#zp-Setup div.proceed:after{clear:both}form#zp-Add div.message{position:absolute;bottom:1.1em;right:8.5em;width:100%}div.zp-Loading{background:transparent url('../images/loading_default.gif') no-repeat center;display:none;float:right;letter-spacing:-1000px;overflow:hidden;text-indent:-5000px;margin:0 0 0;width:30px;height:30px}div.zp-Errors,div.zp-Success{display:none;float:right;font-weight:700;margin:0 0 0;padding-left:35px}div.zp-Errors{background:url('../images/sprite.png') no-repeat 0 -139px;color:#903}div.zp-Success{background:url('../images/sprite.png') no-repeat 0 -76px;color:#096}div.zp-Errors p,div.zp-Success p{margin:5px 0}div.zp-Loading-Initial{background:transparent url('../images/loading_initial.gif') no-repeat -3px 10px;margin:0;padding:0;width:220px;height:18px}div.zp-Loading-Initial h2{margin-bottom:-12px}iframe#zp-Loading-Initial{visibility:hidden}div#zp-Zotpress-Navigation{border-bottom:1px solid #ccc;margin:10px 0 20px;overflow:visible;height:49px}div#zp-Zotpress-Navigation h1{font:600 18px/24px Helvetica,Arial,sans-serif;float:left;margin:0;padding:.45em 5em 1em 0;text-transform:uppercase}div#zp-Zotpress-Navigation h1 em{color:#c23d35;font-style:normal}div#zp-Zotpress-Navigation .nav-item,div#zp-Zotpress-Navigation :visited.nav-item{color:#000;display:block;float:left;font:normal 1em/2.15em Helvetica,"Helvetica Neue",Arial,sans-serif;padding:.75em 1.5em;outline:0;text-transform:uppercase;text-decoration:none}div#zp-Setup:not(.zp-Step-Selective) div#zp-Zotpress-Navigation .nav-item,div#zp-Setup:not(.zp-Step-Selective) div#zp-Zotpress-Navigation :visited.nav-item{color:#bbb}div#zp-Zotpress-Navigation :hover.nav-item{border-bottom:.25em solid #000}div#zp-Setup:not(.zp-Step-Selective) div#zp-Zotpress-Navigation :hover.nav-item{border-bottom:none}div#zp-Zotpress-Navigation .active.nav-item,div#zp-Zotpress-Navigation :active.nav-item,div#zp-Zotpress-Navigation :focus.nav-item{background-color:#eaeaea;border-bottom:.25em solid #000;box-shadow:none}div#zp-Setup div#zp-Zotpress-Navigation .nav-item.nav-tab-active,div#zp-Setup div#zp-Zotpress-Navigation .nav-item.nav-tab-active:active,div#zp-Setup div#zp-Zotpress-Navigation .nav-item.nav-tab-active:hover,div#zp-Zotpress-Navigation .nav-item.nav-tab-active{border-bottom:.25em solid #e14d43;background-color:transparent;color:#000}div#zp-Zotpress-Navigation .nav-item.nav-tab-active strong{font-weight:700;margin-right:.25em}div#zp-Icon{float:left;margin-right:8px;text-align:center;width:48px;height:48px}div#zp-Icon img{display:inline;padding-top:6px;width:32px}div#zp-Zotpress div#zp-Options-Wrapper,div#zp-Zotpress div.zp-Browse-Wrapper{position:relative;background-color:#fff;border-bottom:1px solid #ccc;margin-top:-20px;padding:1em 0 0}div#zp-Zotpress div#zp-Options-Wrapper:after,div#zp-Zotpress div#zp-Options-Wrapper:before{content:"";display:table}div#zp-Zotpress div#zp-Options-Wrapper:after{clear:both}div#zp-Zotpress div#zp-Options-Wrapper h3,div#zp-Zotpress div.zp-Browse-Wrapper h3{padding:15px 30px 25px}div#zp-Zotpress div#zp-Options-Wrapper h3{border-bottom:1px solid #eee}div#zp-Zotpress div#zp-Options-Wrapper hr{border-color:#eee;margin-bottom:0}div#zp-Zotpress div#zp-Options-Wrapper div.zp-Column-1,div#zp-Zotpress div#zp-Options-Wrapper div.zp-Column-2{border-color:#eee;margin-right:0;width:49.5%}div#zp-Zotpress div#zp-Options-Wrapper div.zp-Column-Inner{padding:0 25px}.zp-Browse-Bar{border:none;padding:0 30px}.zp-Browse-Bar:after{clear:both;content:"";display:table}.zp-Browse-Collections,.zp-Browse-Tags{float:left;width:50%}.zp-Browse-Select{margin-right:15px;width:auto}.zp-Browse-Tags .zp-Browse-Select{margin-right:0;margin-left:15px}.zp-Browse-Select select{border:1px solid #ccc;width:100%}.zp-Browse-Select .zp-List-Tags{float:right}div.zp-Browse-Accounts{display:inline}div.zp-Browse-Accounts label{color:#ccc;display:none;font:normal 400 1em/1.75em Georgia,serif;margin-right:5px;padding:0}div#zp-Zotpress select.zp-FilterByAccount{font-size:inherit;line-height:inherit;border:none;box-shadow:none;margin:0;padding:0;display:inline;height:auto;vertical-align:baseline}div#zp-Zotpress select.zp-FilterByAccount.loading{color:#ddd}div.zp-Browse-Account-Options{position:absolute;top:27px;right:30px}.zp-Browse-Account-Default{font:400 27px/32px Helvetica,"Helvetica Neue",Arial,sans-serif;padding-left:3px!important;transition:none!important;width:auto}.zp-Browse-Account-Default:before{font-family:dashicons;content:"\f154";line-height:1.1;font-size:1.1em;margin:0 .4em;padding:0 .1em;vertical-align:text-bottom}.zp-Browse-Account-Default.dashicons-star-empty:before{content:"\f154"}.zp-Browse-Account-Default.dashicons-star-filled:before{content:"\f155"}.zp-Browse-Account-Default.loading:before{background-image:url("../images/loading_default.gif")!important;background-repeat:no-repeat;background-position:center!important;height:1.5rem}.zp-Browse-Account-Default.loading.dashicons-star-empty:before{content:" ";display:inline-block;white-space:pre;vertical-align:.1em;min-height:18px;min-width:18px}div.zp-Collection-Title{letter-spacing:normal;margin-left:30px;padding:0;text-transform:none}div.zp-Collection-Title label{color:#ccc;display:inline-block;font-family:Georgia,serif;font-size:.65em;font-style:normal;padding-left:2em;text-transform:uppercase}div.zp-Collection-Title .item_key{border:none;box-shadow:none;color:#ccc;display:inline-block;font-size:.8em;font-style:italic}.zpSearchResultsContainer{border-top:1px solid #eee}.wp-admin .zpSearchResultsContainer{padding-bottom:0}.wp-admin div#zp-Zotpress div.zp-List .zp_display_progress{position:absolute;top:0;right:0;background:transparent url('../images/loading_default.gif') no-repeat right top;font-size:.8em;text-transform:uppercase;margin-right:30px;padding-right:30px}.wp-admin div#zp-Zotpress div.zp-List.loading .zpSearchResultsContainer{background:0 0}div#zp-Zotpress div.zp-List{position:relative}div#zp-Zotpress div.zp-List h3{display:block;color:#bbb;background:#333;font:400 19px/24px Helvetica,"Helvetica Neue",Arial,sans-serif;margin:-3px 0 0;padding:10px 15px}div#zp-Zotpress div.zp-List h3 em{color:#fff;font-style:normal}div#zp-Zotpress div.zp-List p{margin:1em}div#zp-Zotpress div.zp-List a,div#zp-Zotpress div.zp-List a:visited{color:#e14d43;text-decoration:none}div#zp-Zotpress div.zp-List h3 a{float:right}div#zp-Zotpress div.zp-List a:hover{color:#ddd}div#zp-Zotpress div.zp-List a:active{color:#666}div#zp-Zotpress div.zp-List div.zp-Entry{padding:0 30px}div#zp-Zotpress div.zp-List div.zp-Entry:after,div#zp-Zotpress div.zp-List div.zp-Entry:before{content:"";display:table}div#zp-Zotpress div.zp-List div.zp-Entry:after{clear:both}.wp-admin div#zp-Zotpress div.zp-List div.zp-Entry{border-bottom:1px solid #eee;padding-top:20px}div#zp-Zotpress div.zp-List div.zp-Entry label{color:#ccc;display:inline;font-family:Georgia,serif;font-size:.85em;text-transform:uppercase}div#zp-Zotpress div.zp-List div.zp-Entry input.item_key{border:none;box-shadow:none;color:#ccc;display:inline-block;font-family:Georgia,serif;font-style:italic;font-weight:400;margin-bottom:2em}div#zp-Zotpress div.zp-List div.zp-Entry-Image{position:relative;float:right;margin:0 0 5px 15px;overflow:hidden;text-align:center;width:150px}div#zp-Zotpress div.zp-List div.zp-Entry-Image.hasImage{line-height:0;width:150px;height:auto}div#zp-Zotpress div.zp-List div.zp-Entry-Image a.upload,div#zp-Zotpress div.zp-List div.zp-Entry-Image a.upload:link,div#zp-Zotpress div.zp-List div.zp-Entry-Image a.upload:visited{transition:.25s ease-in-out;background-color:#f6f6f6;border:2px solid #f6f6f6;border-bottom:2px solid #eee;color:#ccc;display:block;font-size:.9em;font-weight:700;line-height:2em;text-decoration:none;width:150px}div#zp-Zotpress div.zp-List div.zp-Entry-Image a.upload:hover{background-color:#e14d43;border:2px solid #e14d43;border-bottom:2px solid #c24138;color:#fff}div#zp-Zotpress div.zp-List div.zp-Entry-Image a.upload:active{background-color:#aaa;border:2px solid #aaa;color:#666}div#zp-Zotpress div.zp-List div.zp-Entry-Image a.delete,div#zp-Zotpress div.zp-List div.zp-Entry-Image a.delete:link,div#zp-Zotpress div.zp-List div.zp-Entry-Image a.delete:visited{transition:.25s ease-in-out;position:absolute;z-index:3;top:0;right:0;left:auto;background-color:#f6f6f6;border:2px solid #f6f6f6;border-bottom:2px solid #eee;box-shadow:none;display:none;font-size:14pt;font-weight:700;line-height:20px;outline:0;text-align:center;width:25px;height:25px}div#zp-Zotpress div.zp-List div.zp-Entry-Image a.delete:hover{background-color:#e14d43;border:2px solid #e14d43;border-bottom:2px solid #c24138;color:#fff}div#zp-Zotpress div.zp-List div.zp-Entry-Image a.delete:active{background-color:#aaa;border:2px solid #aaa;color:#666}div#zp-Zotpress div.zp-List div.zp-Entry-Image.hover.hasImage a.delete{display:block}div#zp-Zotpress div.zp-List div.zp-Entry-Image img{width:150px;height:auto}div#zp-Zotpress div.zp-Entry div.zp-Entry-ID{color:#999;font-size:10px;display:block;margin:0}div#zp-Zotpress div.zp-Entry div.zp-Entry-ID span.title{text-transform:uppercase}div#zp-Zotpress div.zp-Entry div.zp-Entry-ID div{display:inline-block}div#zp-Zotpress div.zp-Entry div.zp-Entry-ID-Text span{cursor:pointer}div#zp-Zotpress div.zp-Entry div.zp-Entry-ID input{border:0;background:0 0;color:#999;display:none;font-size:10px;padding:0;margin:0}.zpSearchResultsPaging:after{clear:both;content:"";display:table}.zpSearchResultsPagingContainer{margin:0;margin-left:30px}.zpSearchResultsPagingContainer span.title{font:italic 400 1rem/2.6 Georgia,serif;text-transform:none}.zpSearchResultsPaging a{display:block;text-align:center}.zpSearchResultsPaging a.selected{color:#000!important}.zpSearchResultsPaging a span{margin:.5rem}.zpSearchResultsPagingScroller span{font-size:2.5rem;margin-top:-.5rem}div#zp-Zotpress form#zp-Image{border-radius:10px;background-color:#fafafa;margin:.75em 0 30px 0;width:780px}div#zp-Zotpress form#zp-Image fieldset{padding:10px 20px}div#zp-Zotpress form#zp-Image div.section{margin:10px 0}div#zp-Zotpress form#zp-Image div.zp-Image-Current{float:right;overflow:hidden;margin:20px;max-width:310px;max-height:310px}div#zp-Zotpress div.zp-Citation{width:780px}div#zp-Zotpress div.zp-Citation div.csl-bib-body{margin:0}div#zp-Zotpress div.zp-Citation div.zp-Entry{min-height:0}div#zp-Zotpress form#zp-Image span.help{color:#999;font:italic 11px/14px Georgia,serif}div#zp-Zotpress form#zp-Image #zp-Cancel,div#zp-Zotpress form#zp-Image #zp-Submit{float:left}div#zp-Zotpress form#zp-Image #zp-Submit{margin-right:4px}div#zp-Zotpress form#zp-Image div.zp-Loading{display:none;float:left;margin:0 0 0 4px}div#zp-Zotpress form#zp-Image div.zp-Errors,div#zp-Zotpress form#zp-Image div.zp-Success{margin-left:140px;padding-left:35px}div#zp-Zotpress form#zp-Image div.zp-Errors p,div#zp-Zotpress form#zp-Image div.zp-Success p{padding:6px 0 1px}span#ZOTPRESS_PLUGIN_URL{display:none}div#zp-ManageAccounts{clear:both}div#zp-ManageAccounts h3{width:50%}a.zp-Account-Default.inactive{cursor:default}a.zp-AddAccountButton,a.zp-AddAccountButton:active,a.zp-AddAccountButton:hover,a.zp-AddAccountButton:link,a.zp-AddAccountButton:visited{float:right;margin-top:-2.55em;text-shadow:none}a.zp-AddAccountButton span.dashicons{color:#000;margin-right:.3em;padding-bottom:3px;vertical-align:middle}a.zp-AddAccountButton:hover{background:#ceec8a}a.zp-AddAccountButton:hover span.dashicons{color:#e14d43}a.zp-AddAccountButton:active{background:#777;color:#000}a.zp-AddAccountButton:active span.dashicons{color:#666}#zp-Accounts{margin:1.55em 0}#zp-Accounts th{font:300 1.1em/1.1em Georgia,sans-serif}#zp-Accounts .default{text-align:center;width:10%}#zp-Accounts .account_type{width:8%}#zp-Accounts .api_user_id{width:12%}#zp-Accounts .private_key{width:34%}#zp-Accounts .nickname{width:20%}#zp-Accounts .cache{text-align:center;width:8%}#zp-Accounts .remove{text-align:center;width:8%}#zp-AccountsList td.cache,#zp-AccountsList td.remove{text-align:center}#zp-AccountsList .cache a,#zp-AccountsList .default a,#zp-AccountsList .remove a{font-size:1.7em;line-height:25px;outline:0;overflow:hidden;margin:0 1.25em 0 0;width:25px;height:25px}#zp-AccountsList .cache a span,#zp-AccountsList .default a span,#zp-AccountsList .remove a span{display:none}#zp-AccountsList .default a.dashicons-star-filled{color:#000;content:"\f154"}#zp-AccountsList .default a.dashicons-star-empty{color:#ccc;content:"\f155"}#zp-AccountsList .cache a:focus,#zp-AccountsList .default a:focus,#zp-AccountsList .remove a:focus{box-shadow:none}#zp-AccountsList .cache a.cache{color:#000;margin-right:0;transform:scaleX(-1) rotate(25deg)}#zp-AccountsList .cache a.cache.loading:before{content:" ";white-space:pre;background-position:0 center!important;background-image:url('../images/loading_default.gif');background-repeat:no-repeat;width:18px;display:inline-block}#zp-AccountsList .remove a.delete{color:#e14d43;margin-right:0}#zp-AccountsList .default a.default{float:none;margin:0 auto}#zp-AccountsList .default a.default.loading{background-position:4px center!important;background-image:url('../images/loading_default.gif');background-repeat:no-repeat}#zp-AccountsList .default a.default.loading:before{content:" ";white-space:pre}.zp-Modal #adminmenu,.zp-Modal #footer,.zp-Modal #wphead{display:none}.zp-Modal #wpbody{margin-left:25px}body.wp-admin.zp-Modal{min-width:400px}div.zp-Zotpress-Options{border-left:.35em solid #000;margin:20px 0 30px;padding:.6em 1em}div.zp-Zotpress-Options:after,div.zp-Zotpress-Options:before{content:"";display:table}div.zp-Zotpress-Options:after{clear:both}div#zp-Zotpress div.zp-Column-1{border-right:1px solid #ddd;float:left;margin-right:4%;width:47.5%}div#zp-Zotpress div.zp-Column-2{float:left;width:47.5%}div.zp-Zotpress-Options label{font:normal 0.9em/1em Georgia,sans-serif;margin:0 0 .5em 0;text-transform:uppercase;letter-spacing:.075rem}div.zp-Zotpress-Options label,div.zp-Zotpress-Options select{display:block}div.zp-Zotpress-Options select{margin-bottom:.5em}div.zp-Zotpress-Options input.button-secondary{float:left;margin-top:10px}div#zp-Zotpress div.zp-Zotpress-Options div.zp-Loading{display:none;float:left;margin:.6em 0 0 .25em}div#zp-Zotpress div.zp-Zotpress-Options div.zp-Errors,div#zp-Zotpress div.zp-Zotpress-Options div.zp-Success{margin:.6em 0 0;padding:6px 0 4px 32px;float:left}div#zp-Zotpress-Options-Style-New-Container{display:none;margin:1.5em 0 .5em}select#zp-Zotpress-Options-Style option#new{border-top:1px dotted #ccc;font-weight:700;font-style:italic}div#zp-Zotpress-Options-Reset{border-left:0;padding:0}div.zp-CPT-Checkbox{float:left;width:50%}div.zp-Zotpress-Options div.zp-CPT-Checkbox label{display:inline;line-height:2em;vertical-align:.05em}div.zp-Zotpress-Options div.zp-CPT-Checkbox label.dis{color:#ccc}div.zp-CPT-Checkbox-Container:after,div.zp-CPT-Checkbox-Container:before{content:" ";display:table}div.zp-CPT-Checkbox-Container:after{clear:both}.ui-tooltip-tipsy .ui-tooltip-content,.ui-tooltip-tipsy .ui-tooltip-titlebar{font-weight:400!important;width:300px!important} diff --git a/css/zotpress.ckeditor.css b/css/zotpress.ckeditor.css deleted file mode 100644 index 6f63990..0000000 --- a/css/zotpress.ckeditor.css +++ /dev/null @@ -1,170 +0,0 @@ -.zp-ZotpressShortcode { - background-color: #eee; -} - - - - - .zotpress-widget-ckeditor-php #adminmenuback, - .zotpress-widget-ckeditor-php #adminmenuwrap, - .zotpress-widget-ckeditor-php #footer, - .zotpress-widget-ckeditor-php #wpadminbar - { - display: none !important; - } - - /* Body */ - - body.zotpress-widget-ckeditor-php { - background-color: #EBEBEB; - } - - body.zotpress-widget-ckeditor-php.admin-bar #wpcontent, - body.zotpress-widget-ckeditor-php.admin-bar #adminmenu { - margin: 0; - padding: 0; - } - - #wpbody-content { - padding-bottom: 0; - } - - div#zp-Zotpress-CkEditor.citation { - background-color: #fafafa; - border-radius: 7px; - -moz-border-radius: 7px; - } - - - /* Tabs */ - - div#zp-Zotpress-CkEditor-0 { - padding: 6px !important; - width: 584px; - } - .citation div#zp-Zotpress-CkEditor-0 { - padding: 0 !important; - width: 592px; - } - - div#zp-Zotpress-CkEditor ul.ui-widget-header { - border: 1px solid #aaa; - border-bottom: none; - } - - div#zp-Zotpress-CkEditor div#zp-ZotpressMetaBox-Tabs ul.ui-widget-header { - border: 1px solid #efefef; - border-bottom: none; - background: #f0f0f0; - } - - div#zp-ZotpressMetaBox-Tabs { - overflow: hidden; - margin-bottom: 0; - width: 580px; - } - .citation div#zp-ZotpressMetaBox-Tabs { - width: 588px; - } - - div.zp-ZotpressMetaBox-Tabs ul.ui-tabs-nav li { - margin-right: 2px; - } - - div.zp-ZotpressMetaBox-Tabs ul.ui-tabs-nav li a { - color: #888; - letter-spacing: 0; - - } - div.zp-ZotpressMetaBox-Tabs ul.ui-tabs-nav li.ui-state-active a { - color: #bbb; - } - - div#zp-Zotpress-CkEditor div#zp-ZotpressMetaBox-Tabs .zp-Tab { - width: 560px; - height: 250px; - } - - /* Frames */ - - div#zp-Zotpress-Frame-Left { - border-right: 1px solid #eee; - float: left; - padding-right: 10px; - width: 200px; - } - - div#zp-Zotpress-Frame-Right { - float: left; - padding-left: 10px; - width: 338px; - } - - /* Form */ - - div#zp-ZotpressMetaBox-Tabs div.zp-Loading { - position: absolute; - top: 50px; - } - - .ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { - font-size: 11px; - } - - div#zp-Zotpress-Collection-Account-Select { - float: right; - margin-top: -32px; - margin-right: -17px; - } - div#zp-ZotpressMetaBox-Tabs div.zp-Tab select#zp-ZotpressMetaBox-Collection-Accounts { - margin-bottom: 0; - width: 215px; - height: 22px; - } - - div#zp-Zotpress-CkEditor label { - font: 10px/10px "Arial", sans-serif; - color: #666; - text-transform: uppercase; - } - - div#zp-ZotpressMetaBox-Tabs .wp-admin select[multiple], - div#zp-ZotpressMetaBox-Tabs div.zp-Tab select { - width: 200px; - height: 228px; - } - div#zp-ZotpressMetaBox-Tabs div.zp-Tab select#zp-ZotpressMetaBox-Collection-Items { - width: 344px; - } - - #zp-ZotpressMetaBox-Pages-Button { - display: none !important; - } - - /* Pages */ - - div#zp-ZotpressMetaBox-Pages { - margin-left: 317px; - padding: 6px; - } - div#zp-ZotpressMetaBox-Pages p.zp-Note { - margin-bottom: 0 !important; - } - - /* Zotpress Shortcode output */ - - div#zp-Zotpress-CKEditor-Output { - display: block; - padding: 7px; - padding-bottom: 0; - } - div#zp-Zotpress-CKEditor-Output label { - font-size: 10px; - text-transform: uppercase; - } - input#zp-Zotpress-Output-Citation { - width: 230px; - } - input#zp-Zotpress-Output-Shortcode { - display: none; - } \ No newline at end of file diff --git a/css/zotpress.css b/css/zotpress.css deleted file mode 100644 index 6552343..0000000 --- a/css/zotpress.css +++ /dev/null @@ -1,1667 +0,0 @@ - - - /* START OF BASIC ZOTPRESS CSS */ - - div#zp-Zotpress select { - cursor: pointer; - } - - div#zp-Zotpress div.zp-Col-1 { - float: left; - width: 350px; - } - div#zp-Zotpress div.zp-Col-2 { - float: left; - } - - #adminmenu .current .wp-menu-image img { - opacity: 1.0; - filter: alpha(opacity = 100); - } - - div#zp-Zotpress del { - color: #aaa; - text-decoration: none; - } - - div#zp-Setup h3, - div#zp-Zotpress h3 { - clear: both; - font: 400 27px/32px "Oswald", "HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue",sans-serif; - margin: 0; - padding: 9px 15px 4px 0; - text-transform: uppercase; - } - div#zp-Zotpress h3.zp-HeaderGroup { - /*margin-bottom: -0.5em;*/ - } - div#zp-Setup h3.pair { - border-bottom: 0; - padding: 15px 30px 0; - } - - div#zp-Setup h4, - div#zp-Zotpress h4 { - font: italic 400 17px/21px "Droid Serif", "Georgia", serif; - margin: 1.5em 0 1em; - } - div#zp-Setup h4 { - font: italic 400 16px/21px "Droid Serif", "Georgia", serif; - } - div#zp-Setup h4.pair { - border-bottom: 1px solid #eee; - margin: 0; - padding: 10px 30px 25px; - } - - div#zp-Zotpress h5 { - font: 300 11px/30px "Droid Serif", serif; - margin-bottom: -15px; - text-transform: uppercase; - } - - div#zp-Zotpress hr { - border: none; - border-top: 1px solid #ddd; - clear: both; - margin: 3.3em 0 0.7em; - height: 1px; - } - div#zp-Setup hr.clear, - div#zp-Zotpress hr.clear { - border: none; - margin-bottom: 0; - } - - div#zp-Zotpress ul { - list-style: none; - margin: 20px 0 25px; - padding: 0; - } - div#zp-Zotpress ul li { - background: url('../images/sprite.png') no-repeat -40px -60px; - padding-left: 15px; - margin-left: 5px; - margin-bottom: 10px; - list-style: none; - } - - div#zp-Zotpress form hr.clear { - margin: 0; - padding: 0; - height: 1px; - } - - div#zp-Zotpress p.example { - font-family: monospace; - font-size: 1.1em; - } - - /* END OF BASIC ZOTPRESS CSS */ - - - - /* START OF SETUP CSS */ - - div#zp-Setup { - border-bottom: 1px solid #ccc; - margin-right: 1.5em; - width: auto; - min-width: 549px; - } - div#zp-Setup div#zp-Zotpress-Navigation { - z-index: 1; - position: relative; - margin-bottom: 0; - } - div.zp-Setup-Step, - div#zp-Setup-Step { - z-index: 0; - position: relative; - background-color: #fff; - padding: 1em 0 0.65em; - } - div.zp-Setup-Step.second { - border-top: 1px solid #eee; - } - div.zp-Setup-Step.second:before, - div.zp-Setup-Step.second:after { - display: table; - content: ""; - } - div.zp-Setup-Step.second:after { - clear: both; - } - - div#zp-Setup h3 { - padding: 15px 30px 25px; - border-bottom: 1px solid #eee; - } - div#zp-Setup-Step hr { - clear: both; - border: none; - padding: 0; - margin: 1em 0; - height: 1px; - background: none; - border-top: 1px solid #eee; - } - div#zp-Setup-Step hr.clear { - margin: 0; - } - - div#zp-Setup div.zp-Column-1, - div#zp-Setup div.zp-Column-2 { - float: left; - margin-left: 30px; - width: 400px; - } - - div#zp-Setup p.note { - color: #666; - font-size: 0.9em; - font-style: italic; - margin: -10px 0 10px 0; - } - - div#zp-Setup div.zp-Zotpress-Options { - margin-bottom: 2em; - } - - div#zp-Zotpress-Setup-Buttons { - clear: both; - border-top: 1px solid #eee; - } - a#zp-Setup-Cancel, - div#zp-Zotpress-Setup-Buttons a, - div#zp-Zotpress-Setup-Buttons input { - margin: 20px 30px 12px; - float: right; - } - a#zp-Setup-Cancel { - float: none; - } - div#zp-Zotpress-Setup-Buttons a#zp-Import-Accounts-Button { - margin-right: 0; - } - div#zp-Zotpress-Setup-Buttons a#zp-Import-Browse-Button { - margin-left: 10px; - } - - div#zp-Setup div.zp-Zotpress-Options div.zp-Success, - div#zp-Setup div.zp-Zotpress-Options div.zp-Loading, - div#zp-Setup div.zp-Zotpress-Options div.zp-Errors { - float: left; - height: 32px; - } - div#zp-Setup div.zp-Zotpress-Options div.zp-Success, - div#zp-Setup div.zp-Zotpress-Options div.zp-Errors { - margin-top: 14px; - margin-bottom: 0; - padding-left: 35px; - height: 24px; - } - div#zp-Setup div.zp-Zotpress-Options div.zp-Success { - background-position: 0 -82px; - } - div#zp-Setup div.zp-Zotpress-Options div.zp-Errors { - background-position: 0 -146px; - } - div#zp-Setup div.zp-Zotpress-Options div.zp-Loading { - margin-top: 6px; - } - - - div.zp-Step-Import, - div#zp-Step-Import { - padding: 10px 30px; - } - .second div.zp-Step-Import { - padding-top: 0; - } - div#zp-Zotpress-Setup-Import-Buttons { - margin-top: 2em; - } - input#zp-Zotpress-Setup-Import, - .wp-core-ui input.zp-Import-Button.button-secondary { - margin: 0 0.5em 1em 0; - float: left; - } - div#zp-Step-Import-Collection { - background-color: #f9f9f9; - clear: both; - margin-top: 1em; - width: 36.75em; - height: 13.5em; - } - div#zp-Step-Import-Collection.loading { - background: #f9f9f9 url('../images/loading_default.gif') no-repeat center; - } - div#zp-Step-Import-Collection iframe { - width: 100%; - } - #zp-Zotpress-Setup-Import-Selective { - float: left; - margin: 1em 0; - } - - - iframe.zp-Setup-Sync, - iframe#zp-Setup-Import { - position: absolute; - top: 0; - right: 0; - margin: 0; - padding: 0; - - /* LIVE */ - visibility: hidden; - width: 50px; - height: 35px; - - /* DEBUGGING */ - /*border: 3px solid #eee;*/ - /*width: 350px;*/ - /*height: 200px;*/ - } - - div.zp-Loading-Container { - clear: both; - padding-top: 0.75em; - } - div.zp-Loading-Container:before, - div.zp-Loading-Container:after { - content: ""; - display: table; - } - div.zp-Loading-Container:after { - clear: both; - } - div.zp-Loading-Container.selective { - clear: none; - padding-top: 0; - } - div.zp-Loading-Initial.zp-Loading-Import { - background: transparent url('../images/loading_import.gif') no-repeat 0 6px; - display: none; - float: left; - margin: 0; - width: 70px; - height: 20px; - } - div.zp-Loading-Initial.zp-Loading-Import.selective { - margin-top: 1.35em; - margin-left: 1em; - } - div.zp-Import-Messages { - color: #999; - font: italic 9px/20px Georgia,"Times New Roman","Bitstream Charter",Times,serif; - display: none; - float: left; - margin: 0 0 0 1em; - } - div.zp-Import-Messages.selective { - margin-top: 1.95em; - } - - - - /* START OF SETUP CHECK */ - - #zp-Setup-Check { - padding: 1.5em 30px; - } - #zp-Setup-Check-Message.error { - background: #fceae9; - } - #zp-Setup-Check-Message.updated { - background: #eef9e6; - } - div#zp-Setup-Check-Message.error strong em { - color: #E14D43; - font-style: normal; - } - div#zp-Setup-Check-Message.updated strong em { - color: #7AD03A; - font-style: normal; - } - - - - /* START OF ADD FORM CSS */ - - form#zp-Add { - padding: 0; - margin: 0; - } - *:first-child+html form#zp-Add { /* IE7 hack */ - /*width: 850px;*/ - } - form#zp-Add fieldset { - background: transparent; - border: none; - margin: 0; - padding: 0; - } - form#zp-Add div.field { - clear: both; - padding: 2.2em 2.4em; - } - - form#zp-Add label, - form#zp-Add select, - form#zp-Add textarea, - form#zp-Add input, - form#zp-Add aside { - display: block; - float: left; - } - form#zp-Add select, - form#zp-Add textarea, - form#zp-Add input { - margin: -4px 0 0; - } - form#zp-Add input#public_key { - min-width: 18em; - } - form#zp-Add label { - font: italic 400 1.1em/1.25em "Droid Serif", serif; - width: 20%; - } - form#zp-Add label.required { - background: url('../images/sprite.png') no-repeat 0 -36px; - padding-left: 15px; - margin-left: -15px; - } - form#zp-Add aside { - float: right; - margin-top: -8px; - width: 40%; - } - form#zp-Add aside p { - font-size: 0.85em; - margin: 0 0 0 1em; - } - form#zp-Add .last aside p { - padding-bottom: 2em; - } - - form#zp-Add input#upload_image, - form#zp-Add input#upload_image_button { - display: inline; - }/* Remove once converted to WP types w/ post image? */ - - #zp-Setup div.proceed { - border-top: 1px solid #eee; - clear: both; - width: 100%; - } - #zp-Setup div.proceed input#zp-Connect { - margin: 1em 2em 0.5em; - float: right; - } - /* Thanks to http://nicolasgallagher.com/micro-clearfix-hack/ */ - #zp-Setup div.proceed:before, - #zp-Setup div.proceed:after { - content: ""; - display: table; - } - #zp-Setup div.proceed:after { - clear: both; - } - - form#zp-Add div.message { - position: absolute; - bottom: 1.1em; - right: 8.5em; - width: 100%; - } - div.zp-Loading { - background: transparent url('../images/loading_default.gif') no-repeat center; - display: none; - float: right; - letter-spacing: -1000px; - overflow: hidden; - text-indent: -5000px; - margin: 0 0 0; - width: 30px; - height: 30px; - } - div.zp-Errors, - div.zp-Success { - display: none; - float: right; - font-weight: bold; - margin: 0 0 0; - padding-left: 35px; - } - div.zp-Errors { - background: url('../images/sprite.png') no-repeat 0 -139px; - color: #990033; - } - div.zp-Success { - background: url('../images/sprite.png') no-repeat 0 -76px; - color: #009966; - } - div.zp-Errors p, - div.zp-Success p { - margin: 5px 0; - } - - /* END OF SETUP CSS */ - - - - /* START OF LOADING CSS */ - - div.zp-Loading-Initial { - background: transparent url('../images/loading_initial.gif') no-repeat -3px 10px; - margin: 0; - padding: 0; - width: 220px; - height: 18px; - } - div.zp-Loading-Initial h2 { - margin-bottom: -12px; - } - iframe#zp-Loading-Initial { - visibility: hidden; - } - - /* END OF LOADING CSS */ - - - - /* START TABS */ - - div#zp-Zotpress-Navigation { - border-bottom: 1px solid #ccc; - margin: 10px 0 20px; - overflow: visible; - /*height: 47px;*/ - height: 49px; - } - - div#zp-Zotpress-Navigation h1 { - font: 600 18px/24px "Source Sans Pro", sans-serif; - float: left; - margin: 0; - padding: 0.45em 5em 1em 0; - text-transform: uppercase; - } - div#zp-Zotpress-Navigation h1 em { - color: #c23d35; - font-style: normal; - } - - /* Nav Items */ - - div#zp-Zotpress-Navigation .nav-item, - div#zp-Zotpress-Navigation :visited.nav-item { - color: #000; - display: block; - float: left; - font: 300 15px/24px "Source Sans Pro", sans-serif; - padding: 0.75em 1.5em; - outline: none; - text-transform: uppercase; - text-decoration: none; - } - div#zp-Setup:not(.zp-Step-Selective) div#zp-Zotpress-Navigation .nav-item, - div#zp-Setup:not(.zp-Step-Selective) div#zp-Zotpress-Navigation :visited.nav-item { - color: #bbb; - } - - div#zp-Zotpress-Navigation :hover.nav-item { - border-bottom: 0.25em solid #000; - } - div#zp-Setup:not(.zp-Step-Selective) div#zp-Zotpress-Navigation :hover.nav-item { - border-bottom: none; - } - - div#zp-Zotpress-Navigation :focus.nav-item, - div#zp-Zotpress-Navigation :active.nav-item, - div#zp-Zotpress-Navigation .active.nav-item { - background-color: #eaeaea; - border-bottom: 0.25em solid #000; - box-shadow: none; - } - - div#zp-Zotpress-Navigation .nav-item.nav-tab-active, - div#zp-Setup div#zp-Zotpress-Navigation .nav-item.nav-tab-active, - div#zp-Setup div#zp-Zotpress-Navigation .nav-item.nav-tab-active:hover, - div#zp-Setup div#zp-Zotpress-Navigation .nav-item.nav-tab-active:active { - border-bottom: 0.25em solid #E14D43; - background-color: transparent; - color: #000; - } - - div#zp-Zotpress-Navigation .nav-item.nav-tab-active strong { - font-weight: bold; - margin-right: 0.25em; - } - - div#zp-Icon { - background: transparent url('../images/sprite.png') no-repeat -4px -310px; - float: left; - margin-right: 1em; - width: 33px; - height: 44px; - } - - /* END TABS */ - - - - /* START BROWSE */ - - div#zp-Options-Wrapper, - div#zp-Browse-Wrapper { - position: relative; - background-color: #fff; - border-bottom: 1px solid #ccc; - margin-top: -20px; - padding: 1em 0 0; - } - div#zp-Options-Wrapper:before, - div#zp-Options-Wrapper:after { - content: ""; - display: table; - } - div#zp-Options-Wrapper:after { - clear: both; - } - div#zp-Options-Wrapper h3, - div#zp-Browse-Wrapper h3 { - padding: 15px 30px 25px; - } - div#zp-Options-Wrapper h3 { - border-bottom: 1px solid #eee; - } - - div#zp-Zotpress div#zp-Options-Wrapper hr { - border-color: #eee; - margin-bottom: 0; - } - div#zp-Zotpress div#zp-Options-Wrapper div.zp-Column-1, - div#zp-Zotpress div#zp-Options-Wrapper div.zp-Column-2 { - border-color: #eee; - margin-right: 0; - width: 49.5%; - } - div#zp-Zotpress div#zp-Options-Wrapper div.zp-Column-Inner { - padding: 0 25px; - } - - div#zp-Browse { - background-color: #F9F9F9; - margin: 0; - padding: 0; - overflow: hidden; - width: 100%; - } - div#zp-Browse-Bar { - background-color: #ACBAD5; - float: left; - padding-bottom: 5000px; - margin-bottom: -5000px; - width: 25%; - } - div#zp-Browse label, - div#zp-Browse-Accounts label { - /*font: normal 600 1em/1.5em "Open Sans", Helvetica, Arial, sans-serif;*/ - font: normal 600 1em/1.75em "Droid Serif", serif; - color: #fff; - display: block; - padding: 4% 0 0 6%; - text-transform: uppercase; - } - - - /* Accounts */ - - div#zp-Browse-Accounts { - display: inline; - } - div#zp-Browse-Accounts label { - color: #ccc; - display: none; - font: normal 400 1em/1.75em "Droid Serif", serif; - margin-right: 5px; - padding: 0; - } - div#zp-Zotpress select#zp-FilterByAccount { - font-size: inherit; - line-height: inherit; - border: none; - box-shadow: none; - margin: 0; - padding: 0; - display: inline; - height: auto; - vertical-align: baseline; - } - div#zp-Zotpress select#zp-FilterByAccount.loading { - color: #ddd; - } - - div#zp-Browse-Account-Options { - position: absolute; - top: 35px; - right: 30px; - } - .zp-Browse-Account-Import { - padding-left: 3px !important; - margin-right: 5px !important; - transition: none !important; - } - .zp-Browse-Account-Import:before { - background-image: url("../images/sprite.png") !important; - background-repeat: no-repeat !important; - background-position: -252px -420px !important; - content: ""; - display: block; - float: left; - width: 25px; - height: 25px; - } - .zp-Browse-Account-Import.loading:before { - background-image: url("../images/loading_default.gif") !important; - background-position: 2px center !important; - } - .zp-Browse-Account-Default { - padding-left: 3px !important; - transition: none !important; - } - .zp-Browse-Account-Default:before { - background-image: url("../images/sprite.png") !important; - background-repeat: no-repeat !important; - background-position: -312px -420px !important; - content: ""; - display: block; - float: left; - width: 25px; - height: 25px; - } - .zp-Browse-Account-Default.selected:before { - background-position: -282px -420px !important; - } - .zp-Browse-Account-Default.loading:before { - background-image: url("../images/loading_default.gif") !important; - background-position: 2px center !important; - } - .zp-Browse-Account-Default.success:before { - background-image: url("../images/checkmark-green.png") !important; - background-position: 3px center !important; - } - - - /* Collection Folders */ - - div#zp-Browse-Collections { - background-color: #ACBAD5; - width: 100%; - } - - div#zp-Browse-Collections a.zp-List-Subcollection, - div#zp-Browse-Collections a.zp-List-Subcollection:visited - { - background-color: #7c8798; - border-bottom: 1px solid #687384; - color: #fff; - display: block; - font-size: 9pt; - line-height: 1.1; - padding: 4% 6% 4.5%; - outline: none; - text-decoration: none; - } - div#zp-Browse-Collections a.zp-List-Subcollection:hover - { - background-color: #9aa3af; - } - div#zp-Browse-Collections a.zp-List-Subcollection.selected, - div#zp-Browse-Collections a.zp-List-Subcollection.down, - div#zp-Browse-Collections a.zp-List-Subcollection:active, - div#zp-Browse-Collections a.zp-List-Subcollection:focus - { - background-color: #6d798b; - box-shadow: none; - color: #9aa3af; - } - div#zp-Browse-Collections a.zp-List-Subcollection span.name { - display: block; - font-weight: 600; - padding-bottom: 4%; - } - - - div#zp-Browse-Collections a.zp-List-Subcollection.toplevel, - div#zp-Browse-Collections a.zp-List-Subcollection.toplevel.selected { - background-color: #ACBAD5; - color: #fff; - font: normal 600 1em/1.75em "Droid Serif", serif; - padding: 3% 6%; - text-transform: uppercase; - } - div#zp-Browse-Collections a.zp-List-Subcollection.toplevel span, - div#zp-Browse-Collections a.zp-List-Subcollection.toplevel.down span, - div#zp-Browse-Collections a.zp-List-Subcollection.toplevel.down:hover span, - div#zp-Browse-Collections a.zp-List-Subcollection.toplevel:active span, - div#zp-Browse-Collections a.zp-List-Subcollection.toplevel.selected span, - div#zp-Browse-Collections a.zp-List-Subcollection.toplevel.selected:hover span { - background: transparent url('../images/sprite.png') no-repeat -250px -558px; - padding-left: 24px; - } - - div#zp-Browse-Collections a.zp-List-Subcollection.child span.name, - div#zp-Browse-Collections a.zp-List-Subcollection.child:active span.name, - div#zp-Browse-Collections a.zp-List-Subcollection.child:hover span.name { - background: transparent url('../images/sprite.png') no-repeat 0 -730px; - padding-left: 10px; - } - div#zp-Browse-Collections a.zp-List-Subcollection.child.down span.name, - div#zp-Browse-Collections a.zp-List-Subcollection.child.down:hover span.name { - background: transparent url('../images/sprite.png') no-repeat -490px -730px; - padding-left: 10px; - } - div#zp-Browse-Collections a.zp-List-Subcollection.child span.item_key, - div#zp-Browse-Collections a.zp-List-Subcollection.child span.meta { - padding-left: 10px; - } - - div#zp-Browse-Collections a.zp-List-Subcollection span.item_key, - div#zp-Browse-Collections a.zp-List-Subcollection span.meta { - display: block; - font-size: 0.75em; - text-transform: uppercase; - } - div#zp-Browse-Collections a.zp-List-Subcollection span.item_key { - padding-bottom: 3px; - } - - div#zp-Browse-Collections a.zp-List-Subcollection.back span, - div#zp-Browse-Collections a.zp-List-Subcollection.back:hover span { - background: transparent url('../images/sprite.png') no-repeat 0 -812px; - padding-left: 15px; - } - div#zp-Browse-Collections a.zp-List-Subcollection.back:active span, - div#zp-Browse-Collections a.zp-List-Subcollection.back.down span, - div#zp-Browse-Collections a.zp-List-Subcollection.back.down:hover span { - background: transparent url('../images/sprite.png') no-repeat -490px -812px; - padding-left: 15px; - } - - div#zp-Browse-Collections a.zp-List-Subcollection.last { - border-bottom: none; - } - - div.zp-Collection-Title { - background-color: #fff; - border-bottom: 1px solid #eee; - color: #444; - font: normal 400 1em/1.75em "Droid Serif", serif; - padding: 0.9% 2%; - padding-right: 15px; - text-transform: uppercase; - } - div.zp-Collection-Title .item_key { - float: right; - color: #ccc; - } - div.zp-Collection-Title .item_key_inner { - float: right; - } - div.zp-Collection-Title .item_key_inner input, - div.zp-Collection-Title .item_key_inner span { - color: #444; - cursor: pointer; - display: block; - float: right; - text-align: right; - width: 6em; - } - div.zp-Collection-Title .item_key_inner input { - background: none; - border: none; - display: none; - font: normal 400 1em/1em "Droid Serif", serif; - margin: 0; - padding: 0; - } - div.zp-Collection-Title .item_key_inner input:focus { - border: none; - box-shadow: none; - margin-top: 0.3em; - } - - /* Browse Tags */ - - div#zp-Browse-Tags { - background-color: #ACBAD5; - border-top: 1px solid #687384; - padding: 0.05em 0 5%; - width: 100%; - } - div#zp-Browse-Tags:before, - div#zp-Browse-Tags:after { - content: ""; - display: table; - } - div#zp-Browse-Tags:after { - clear: both; - } - div#zp-Browse-Tags label span { - background: transparent url('../images/sprite.png') no-repeat -483px -556px; - padding-left: 22px; - } - select#zp-List-Tags { - background: #99abcc; - border: none; - border: 1px solid #8798b4; - box-shadow: 0 1px 2px #8798b4 inset; - color: #fff; - font-size: 0.9em; - margin: 4% 6%; - width: 88%; - } - select#zp-List-Tags.active { - background-color: #fff; - color: #7988a2; - } - select#zp-List-Tags:focus { - border: 1px solid #8798b4; - box-shadow: none; - } - select#zp-List-Tags:focus { - background: #8397b8; - border-color: #7185a6; - color: #fff; - } - select#zp-List-Tags option { - background: #fff; - border-bottom: 1px solid #eee; - color: #666; - padding: 0.5em 1em; - } - - - /* Pagination */ - - div#zp-Zotpress div#zp-Pagination { - position: relative; - background-color: #fff; - /*border-top: 1px solid #eee;*/ - clear: both; - min-height: 3em; - } - div#zp-Pagination span { - display: block; - font-size: 12px; - font-family: "Droid Serif", serif; - padding: 1em; - text-align: right; - text-shadow: 0 1px 0 #FAFAFA; - } - - /* END BROWSE */ - - - - /* START CITATION LISTS */ - - div#zp-Zotpress div#zp-List { - float: right; - border-top: 1px solid #E5E5E5; - border-bottom: 1px solid #eee; - width: 75%; - } - - div#zp-Zotpress div#zp-List h3 { - display: block; - color: #bbb; - background: #333; - font: 400 19px/24px "Oswald","Times New Roman","Bitstream Charter",Times,serif; - margin: -3px 0 0; - padding: 10px 15px; - } - div#zp-Zotpress div#zp-List h3 em { - color: #fff; - font-style: normal; - } - - div#zp-Zotpress div#zp-List p { - margin: 1em; - } - - div#zp-Zotpress div#zp-List a, - div#zp-Zotpress div#zp-List a:visited - { - color: #E14D43; /* bae1fe */ - text-decoration: none; - } - div#zp-Zotpress div#zp-List h3 a { - float: right; - } - div#zp-Zotpress div#zp-List a:hover { - color: #fff; - } - div#zp-Zotpress div#zp-List a:active { - color: #999; - } - - /* END CITATION LISTS */ - - - - /* START CITATIONS */ - - div#zp-Zotpress div#zp-List div.zp-Entry { - background-color: #fff; - padding: 15px; - } - div#zp-Zotpress div#zp-List div.zp-Entry:before, - div#zp-Zotpress div#zp-List div.zp-Entry:after { - content: ""; - display: table; - } - div#zp-Zotpress div#zp-List div.zp-Entry:after { - clear: both; - } - div#zp-Zotpress div#zp-List div.zp-Entry.odd { - background-color: transparent; - } - - div#zp-Zotpress div#zp-List div.zp-Entry-Image { - position: relative; - float: right; - margin-left: 15px; - overflow: hidden; - text-align: center; - width: 100px; - height: 100px; - } - - div#zp-Zotpress div#zp-List div.zp-Entry-Image a.upload, - div#zp-Zotpress div#zp-List div.zp-Entry-Image a.upload:link, - div#zp-Zotpress div#zp-List div.zp-Entry-Image a.upload:visited, - div#zp-Zotpress div#zp-List div.zp-Entry-Image a.upload:active - { - z-index: 2; - top: 0; - left: 0; - position: absolute; - background-color: #F6F6F6; - border: 2px dashed #eee; - color: #ccc; - display: block; - font-size: 0.9em; - font-weight: bold; - line-height: 96px; - text-decoration: none; - width: 96px; - height: 96px; - } - div#zp-Zotpress div#zp-List div.zp-Entry-Image.hasimage a.upload { - background: transparent; - border: none; - color: #fff; - opacity: 0; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; - filter: alpha(opacity=0); - -moz-opacity: 0; - -khtml-opacity: 0; - text-shadow: 0px 0px 3px rgba(0, 0, 0, 1.0); - width: 100px; - height: 100px; - } - div#zp-Zotpress div#zp-List div.zp-Entry-Image a.upload:hover { - background-color: #a8cf30; - border: 2px solid #a8cf30; - color: #fff; - } - div#zp-Zotpress div#zp-List div.zp-Entry-Image.hasimage a.upload:hover { - background: transparent; - border: none; - opacity: 1; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; - filter: alpha(opacity=100); - -moz-opacity: 1; - -khtml-opacity: 1; - width: 100px; - height: 100px; - } - div#zp-Zotpress div#zp-List div.zp-Entry-Image a.delete { - position: absolute; - z-index: 3; - top: 0; - right: 0; - left: auto; - border: none; - background-color: #E14D43; - color: #fff; - display: none; - font-size: 14pt; - font-weight: bold; - line-height: 25px; - text-align: center; - width: 25px; - height: 25px; - } - div#zp-Zotpress div#zp-List div.zp-Entry-Image.hover.hasimage a.delete { - display: block; - } - - div#zp-Zotpress div#zp-List div.zp-Entry-Image img { - z-index: 1; - position: absolute; - top: 0; - left: 0; - width: 100px; - height: 100px; - } - - div#zp-Zotpress div.zp-Entry div.csl-bib-body { - font-size: 0.9em; - margin: 0 0 15px; - } - - div#zp-Zotpress div.zp-Entry div.zp-Entry-ID { - /*border-top: 1px dashed #EEEEEE;*/ - color: #999; - font-size: 10px; - display: block; - margin: 0; - } - div#zp-Zotpress div.zp-Entry div.zp-Entry-ID span.title { - /*color: #ccc;*/ - text-transform: uppercase; - } - div#zp-Zotpress div.zp-Entry div.zp-Entry-ID div { - display: inline-block; - } - div#zp-Zotpress div.zp-Entry div.zp-Entry-ID-Text span { - cursor: pointer; - } - div#zp-Zotpress div.zp-Entry div.zp-Entry-ID input { - border: 0; - background: transparent; - color: #999; - display: none; - font-size: 10px; - padding: 0; - margin: 0; - } - - /* END CITATIONS */ - - - - /* START IMAGE FORM */ - - div#zp-Zotpress form#zp-Image { - -moz-border-radius: 10px; - background-color: #fafafa; - margin: 0.75em 0 30px 0; - width: 780px; - } - - div#zp-Zotpress form#zp-Image fieldset { - padding: 10px 20px; - } - - div#zp-Zotpress form#zp-Image div.section { - margin: 10px 0; - } - - div#zp-Zotpress form#zp-Image div.zp-Image-Current { - float: right; - overflow: hidden; - margin: 20px; - max-width: 310px; - max-height: 310px; - } - - div#zp-Zotpress div.zp-Citation { - width: 780px; - } - div#zp-Zotpress div.zp-Citation div.csl-bib-body { - margin: 0; - } - div#zp-Zotpress div.zp-Citation div.zp-Entry { - min-height: 0; - } - - div#zp-Zotpress form#zp-Image span.help { - color: #999; - font: italic 11px/14px 'Georgia', serif; - } - - div#zp-Zotpress form#zp-Image #zp-Submit, - div#zp-Zotpress form#zp-Image #zp-Cancel { - float: left; - } - div#zp-Zotpress form#zp-Image #zp-Submit { - margin-right: 4px; - } - - div#zp-Zotpress form#zp-Image div.zp-Loading { - display: none; - float: left; - margin: 0 0 0 4px; - } - - div#zp-Zotpress form#zp-Image div.zp-Errors, - div#zp-Zotpress form#zp-Image div.zp-Success { - margin-left: 140px; - padding-left: 35px; - } - div#zp-Zotpress form#zp-Image div.zp-Errors p, - div#zp-Zotpress form#zp-Image div.zp-Success p { - padding: 6px 0 1px; - } - - /* END IMAGE FORM */ - - - - /* START OF HIDDEN URL CSS */ - - span#ZOTPRESS_PLUGIN_URL { - display: none; - } - - /* END OF HIDDEN URL CSS */ - - - - /* START ACCOUNTS */ - - div#zp-ManageAccounts { - clear: both; - } - div#zp-ManageAccounts h3 { - width: 50%; - } - - a.zp-AddAccountButton, - a.zp-AddAccountButton:link, - a.zp-AddAccountButton:visited, - a.zp-AddAccountButton:active, - a.zp-AddAccountButton:hover { - float: right; - margin-top: -2.55em; - text-shadow: none; - } - a.zp-AddAccountButton span { - background: transparent url('../images/sprite.png') no-repeat 0 -351px; - padding: 0 2px 0 16px; - } - a.zp-AddAccountButton:hover { - background: #ceec8a; - } - a.zp-AddAccountButton:hover span { - background-position: -161px -351px; - } - a.zp-AddAccountButton:active { - background: #777; - color: #000; - } - a.zp-AddAccountButton:active span { - background-position: -161px -350px; - } - - #zp-Accounts { - margin: 1.55em 0; - } - - #zp-Accounts th { - font: 300 1.1em/1.1em "Droid Serif", sans-serif; - } - - #zp-Accounts .account_type { - width: 3em; - } - #zp-Accounts .api_user_id { - width: 4em; - } - #zp-Accounts .public_key { - width: 13.5em; - } - #zp-Accounts .status { - text-align: center; - width: 5em; - } - #zp-Accounts .status .status_good { - color: #008000; - font-weight: bold; - } - #zp-Accounts .status .status_bad { - color: #DD3D36; - font-weight: bold; - } - #zp-Accounts .actions { - width: 22.5em; - } - - #zp-AccountsList .default a, - #zp-AccountsList .actions a { - display: block; - float: left; - outline: none; - margin: 0 1.25em 0 0; - height: 25px; - } - #zp-AccountsList .default a:focus, - #zp-AccountsList .actions a:focus { - box-shadow: none; - } - @media only screen and (max-width: 1200px) - { - #zp-AccountsList .default a, - #zp-AccountsList .actions a { - margin-right: 0.25em; - width: 25px; - height: 25px; - overflow: hidden; - } - #zp-Accounts th.default { - width: 50px; - } - #zp-Accounts .actions { - width: 94px; - } - } - #zp-AccountsList .default a:before, - #zp-AccountsList .actions a:before { - background-image: url('../images/sprite.png'); - background-repeat: no-repeat; - padding: 0.15em 0 0.15em 2em; - vertical-align: middle; - - content: ""; - width: 25px; - height: 25px; - } - #zp-AccountsList .default a:hover:before, - #zp-AccountsList .actions a:hover:before { - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; - filter: alpha(opacity=50); - -moz-opacity: 0.5; - -khtml-opacity: 0.5; - opacity: 0.5; - } - #zp-AccountsList .actions a.sync span.icon { - background-position: -31px -422px; - } - #zp-AccountsList .actions a.sync.syncing span.icon { - background: transparent url('../images/syncing.gif') no-repeat 0 0; - } - #zp-AccountsList .actions a.sync.error span.icon { - background-position: -51px -422px; - } - #zp-AccountsList .actions a.sync.success span.icon { - background-position: -61px -422px; - } - #zp-AccountsList .actions a.selective:before { - background-position: -252px -423px; - } - #zp-AccountsList .actions a.import:before { - background-position: 0 -423px; - } - #zp-AccountsList .actions a.delete:before { - background-position: -105px 0; - } - #zp-AccountsList .actions a.delete { - margin-right: 0; - } - - #zp-AccountsList .default a.default { - float: none; - margin: 0 auto; - } - #zp-AccountsList .default.selected a.default:before { - background-position: -282px -423px !important; - } - #zp-AccountsList .default a.default:before { - background-position: -312px -423px !important; - } - #zp-AccountsList .default a.default.loading:before { - background-position: 2px center !important; - background-image: url('../images/loading_default.gif'); - background-repeat: no-repeat; - } - #zp-AccountsList .default a.default.success:before { - background-position: 2px center !important; - background-image: url('../images/checkmark-green.png'); - background-repeat: no-repeat; - } - - /* END ACCOUNTS */ - - - - - - - /* START OF MODAL CSS */ - - .zp-Modal #adminmenu, - .zp-Modal #footer, - .zp-Modal #wphead - { - display: none; - } - .zp-Modal #wpbody { - margin-left: 25px; - } - body.wp-admin.zp-Modal { - min-width: 400px; - } - - /* END OF MODAL CSS */ - - - - /* START OF DOCUMENTATION CSS */ - - div#zp-Intext-Example { - background-color: #fff; - -moz-box-shadow: 0 0 1px #aaa; - -webkit-box-shadow: 0 0 1px#aaa; - box-shadow: 0 0 1px #aaa; - float: right; - font: normal 400 12px/18px "Droid Serif","Georgia",serif; - margin: 1em 0 0 2em; - padding: 2em; - width: 24%; - } - div#zp-Intext-Example .title { - font-weight: 600; - font-style: italic; - } - - div#zp-Zotpress code { - background: #ddd; - border-radius: 3px; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - font-family: "Monaco", monospace; - padding: 2px 3px; - } - - .zp-Documentation { - border: none; - background-color: #fff; - margin: 2em 0; - padding: 0; - } - - .zp-Documentation strong { - font-weight: bold; - } - div#zp-Zotpress .zp-Documentation code { - background: #eaeaea; - } - - .zp-Documentation tr, - .zp-Documentation th, - .zp-Documentation td { - border: none; - font-weight: 300; - margin: 0; - padding: 8px 16px; - text-align: left; - vertical-align: top; - } - .zp-Documentation td { - border-bottom: 1px solid #f1f1f1; - padding: 12px 16px; - } - .zp-Documentation .zebra td { - background-color: #f9f9f9; - border-bottom: 1px solid #eee; - } - .zp-Documentation p { - margin: 0; - } - - .zp-Documentation .main { - background-color: #333; - border-bottom: none; - color: #fff; - font: 400 1.5em/1.5em "Oswald", sans-serif; - text-transform: uppercase; - } - - .zp-Documentation .category, - .zp-Documentation .type { - /*font: 400 1.25em/1.25em "Source Sans Pro", sans-serif;*/ - font: 600 1em/1.25em "Source Sans Pro", sans-serif; - text-transform: uppercase; - } - - .zp-Documentation .category, - .zp-Documentation .zebra .category { - background-color: #666; - border-bottom: 1px solid #999; - color: #fff; - } - - .zp-Documentation .type { - background-color: #ACBAD5; - border-bottom: 1px solid #859ac2; - } - .zp-Documentation .zebra .type { - background-color: #99abcc; - border-bottom: 1px solid #859ac2; - } - - .zp-Documentation .code { - background-color: #ffcb15; - border-bottom: 1px solid #f9a93e; - } - .zp-Documentation .zebra .code { - background-color: #ffb915; - border-bottom: 1px solid #f2aa00; - } - .zp-Documentation .example { - min-width: 20em; - padding-right: 0; - } - .zp-Documentation .example p { - margin-bottom: 0.25em; - } - - .zp-Documentation p.break { - margin-top: 1em; - } - - /*.zp-Documentation tr.last td,*/ - .zp-Documentation td.last { - border-bottom: none; - } - - /* END OF DOCUMENTATION CSS */ - - - - /* START OF MESSAGE CSS */ - - div.zp-Message { - background-color: #ffcb15; - display: block; - float: right; - margin-left: 20px; - margin-top: -30px; - overflow: hidden; - width: 275px; - } - div#zp-Zotpress div.zp-Message h3 { - font-size: 21px; - line-height: 1.4em; - padding: 1.2em; - padding-bottom: 0; - } - div.zp-Message p { - font: italic 400 14px/21px "Droid Serif", "Georgia", serif; - margin: 0; - padding: 2em; - } - div.zp-Message p.rate { - background-color: #333; - color: #fff; - text-shadow: 0 1px 0 #000; - } - div.zp-Message p.version { - color: #333; - font-size: 0.9em; - padding-top: 1em; - } - div.zp-Message p.version a, - div.zp-Message p.version a:visited, - div.zp-Message p.version a:active { - color: #666; - } - div.zp-Message p.version a:hover { - color: #999; - } - div.zp-Message p.version strong { - font: 600 11px/1em "Source Sans Pro","HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue",sans-serif; - text-transform: uppercase; - } - a.zp-FiveStar { - background: transparent url('../images/sprite.png') no-repeat -160px -1px; - color: #ffd900; - padding-left: 95px; - } - - ol.zp-WaysToUseZotpress { - list-style: none; - margin: 2em; - } - ol.zp-WaysToUseZotpress li { - background: transparent url('../images/sprite.png') no-repeat -300px 2px; - list-style-position: inside; - padding-left: 5px; - margin-bottom: 12px; - } - ol.zp-WaysToUseZotpress li span.number { - float: left; - font-size: 10px; - margin-left: 1px; - margin-top: 3px; - margin-right: 14px; - } - ol.zp-WaysToUseZotpress li strong { - font: 600 1em/1em "Source Sans Pro","HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue",sans-serif; - text-transform: uppercase; - } - ol.zp-WaysToUseZotpress li p.indent { - margin-top: -12px; - margin-bottom: 14px; - text-indent: 21px; - } - - /* END OF MESSAGE CSS */ - - - - /* START OF OPTIONS PAGE CSS */ - - div.zp-Zotpress-Options { - border-left: 0.35em solid #000; - margin: 20px 0 30px; - padding: 0.6em 1em; - } - div.zp-Zotpress-Options:before, - div.zp-Zotpress-Options:after { - content: ""; - display: table; - } - div.zp-Zotpress-Options:after { - clear: both; - } - - div#zp-Zotpress div.zp-Column-1 { - border-right: 1px solid #ddd; - float: left; - margin-right: 4%; - width: 47.5% - } - div#zp-Zotpress div.zp-Column-2 { - float: left; - width: 47.5% - } - - div.zp-Zotpress-Options label { - font: 300 0.9em/1em "Droid Serif", sans-serif; - margin: 0 0 0.5em 0; - text-transform: uppercase; - } - - div.zp-Zotpress-Options label, - div.zp-Zotpress-Options select { - display: block; - } - div.zp-Zotpress-Options select { - margin-bottom: 0.5em; - } - - div.zp-Zotpress-Options input.button-secondary { - float: left; - margin-top: 10px; - } - - div#zp-Zotpress div.zp-Zotpress-Options div.zp-Loading { - display: none; - float: left; - margin: 0.6em 0 0 0.25em; - } - div#zp-Zotpress div.zp-Zotpress-Options div.zp-Success, - div#zp-Zotpress div.zp-Zotpress-Options div.zp-Errors { - margin: 0.6em 0 0; - padding: 6px 0 4px 32px; - float: left; - } - - div#zp-Zotpress-Options-Style-New-Container { - display: none; - margin: 1.5em 0 0.5em; - } - select#zp-Zotpress-Options-Style option#new { - border-top: 1px dotted #CCCCCC; - font-weight: bold; - font-style: italic; - } - - div#zp-Zotpress .zp-Column-1 p.note { - /*margin-right: 1em;*/ - } - - div#zp-Zotpress-Options-Reset { - border-left: 0; - padding: 0; - } - - div.zp-CPT-Checkbox { - float: left; - width: 50%; - } - div.zp-Zotpress-Options div.zp-CPT-Checkbox label { - display: inline; - line-height: 2em; - vertical-align: 0.05em; - } - div.zp-Zotpress-Options div.zp-CPT-Checkbox label.dis { - color: #ccc; - } - - /* END OF OPTIONS PAGE CSS */ - - - .ui-tooltip-tipsy .ui-tooltip-titlebar, .ui-tooltip-tipsy .ui-tooltip-content { - font-weight: normal !important; - width: 300px !important; - } - \ No newline at end of file diff --git a/css/zotpress.help.css b/css/zotpress.help.css new file mode 100644 index 0000000..fd2048a --- /dev/null +++ b/css/zotpress.help.css @@ -0,0 +1,325 @@ + +/* START OF HELP CSS */ + +div#zp-Zotero-API { + background-color: #fff; +} + +div#zp-Zotpress ul#zp-Zotero-API-Menu { + background-color: #26292c; + display: block; + margin: 3em 0 0; +} +div#zp-Zotpress ul#zp-Zotero-API-Menu:before, +div#zp-Zotpress ul#zp-Zotero-API-Menu:after { + content: ""; + display: table; +} +div#zp-Zotpress ul#zp-Zotero-API-Menu:after { + clear: both; +} + +div#zp-Zotpress ul#zp-Zotero-API-Menu li { + background: none; + display: block; + float: left; + margin: 0; + padding: 0; +} +div#zp-Zotpress ul#zp-Zotero-API-Menu li a { + color: #fff; + display: block; + font: normal 1em/2.15em "Helvetica", "Arial", sans-serif; + padding: 1em 2em; + text-transform: uppercase; + text-decoration: none; +} + +div#zp-Zotpress ul#zp-Zotero-API-Menu li.ui-tabs-active { + background-color: #e14d43; +} +div#zp-Zotpress ul#zp-Zotero-API-Menu li a:focus { + box-shadow: none; +} + + +div.zp-Zotero-API-Explanation { + background: #fff; + padding: 1em 2em 1em; +} +div.zp-Zotero-API-Explanation:after { + clear: both; + content: ""; + display: table; +} + + +div.zp-Zotero-API-Attributes { + background-color: #e3e3e3; + padding: 1px 5px; +} +div.zp-Zotero-API-Attributes-Search { + background-color: transparent; + margin: 5px 0; +} +div.zp-Zotero-API-Attributes-Search:after { + content: ""; + display: table; + clear: both; +} +input[type="text"].zp-Zotero-API-Attributes-Search-Input { + background-color: #fff; + border: 0; + border-radius: 0; + box-shadow: none; + color: #e14d43; + float: left; + font-size: 26px; /* 2em 14px */ + font-weight: bold; + margin: 0; + padding: 14px 1em; + width: 92.5%; +} +input[type="text"].zp-Zotero-API-Attributes-Search-Input::placeholder { + color: #aaa; + font-weight: normal; + font-style: italic; +} +div.zp-Zotero-API-Attributes-Search-Status { + background: #fff; + float: left; + padding: 10px 0 11px; + width: 7.5%; +} +div.zp-Zotero-API-Attributes-Search-Status .zp-Loading, +div.zp-Zotero-API-Attributes-Search-Status .dashicons { + font-size: 30px; + float: right; + line-height: 2.1; + width: 2.1em; + height: 1.96em; +} +div.zp-Zotero-API-Attribute { + border-bottom: 1px solid #eee; + background-color: #fff; + margin: 5px 0; + padding: 2em; +} +div#zp-Zotpress div.zp-Zotero-API-Attribute h4 { + font: 600 1em/1em "Helvetica", Arial, sans-serif; + margin-top: 0.5em; + text-transform: uppercase; +} +div#zp-Zotpress div.zp-Zotero-API-Attribute h4 strong { + text-transform: lowercase; + font-size: 2em; +} + +/* END OF HELP CSS */ + + + + +/* START OF MESSAGE CSS */ + +div.zp-Message { + /*background-color: #ffcb15;*/ + background-color: #e14d43; + display: block; + float: right; + margin-left: 20px; + margin-top: -30px; + overflow: hidden; + width: 278px; +} +div#zp-Zotpress div.zp-Message h3 { + color: #fff; + font-size: 21px; + line-height: 1.4em; + padding: 1.2em; + padding-bottom: 0; +} +div.zp-Message p { + color: #fff; + font: italic 400 14px/21px "Georgia", serif; + margin: 0; + padding: 2em; +} +div.zp-Message p.rate { + background-color: #26292c; + text-shadow: 0 1px 0 #000; +} +div.zp-Message p.version { + font-size: 1em; + padding-top: 1em; +} +div.zp-Message p.version a, +div.zp-Message p.version a:visited, +div.zp-Message p.version a:active { + color: #fff; +} +div.zp-Message p.version a:hover { + color: #fff; +} +div.zp-Message p.version a#zp-Donate { + background: transparent url('../images/pp.png') no-repeat right center; + padding-right: 16px; +} +div.zp-Message p.version strong { + color: #fff; + font: 600 10px/1em "Helvetica", Arial, sans-serif; + text-transform: uppercase; +} +a.zp-FiveStar { + background: transparent url('../images/sprite.png') no-repeat -160px -1px; + color: #ffd900; + padding-left: 95px; +} + +/* END OF MESSAGE CSS */ + + + +/* START OF DOCUMENTATION CSS */ + +div#zp-InText-Example { + background-color: #fff; + -moz-box-shadow: 0 0 1px #aaa; + -webkit-box-shadow: 0 0 1px#aaa; + box-shadow: 0 0 1px #aaa; + display: flex; + flex-wrap: wrap; + justify-content: space-evenly; + align-items: stretch; + float: right; + font: normal 400 12px/18px "Georgia", serif; + margin: 0.5em; + padding: 0.5em; + width: 50%; +} +div#zp-InText-Example:after { + clear: both; + content: ""; + display: table; +} +div.zp-InText-Example-Col { + padding: 0 2%; + width: calc(45.5% - 4px); +} +div.zp-InText-Example-Col:nth-child(1) { + margin-right: 1.5%; +} +div.zp-InText-Example-Col.alt { + background-color: #f3f3f3; +} +div#zp-Zotpress div.zp-InText-Example-Col h4 { + font-size: 1.25em; + margin: 0; + padding: 1em 0 0; +} +div#zp-InText-Example .title { + font-weight: 600; + font-style: italic; +} + +div#zp-Zotpress code { + background: #ddd; + border-radius: 3px; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + font-family: "Monaco", monospace; + padding: 2px 3px; +} + +.zp-Documentation { + border: none; + background-color: #fff; + margin: 2em 0; + padding: 0; +} + +.zp-Documentation strong { + font-weight: bold; +} +div#zp-Zotpress .zp-Documentation code { + background: #eaeaea; +} + +.zp-Documentation tr, +.zp-Documentation th, +.zp-Documentation td { + border: none; + font-weight: 300; + margin: 0; + padding: 8px 16px; + text-align: left; + vertical-align: top; +} +.zp-Documentation td { + border-bottom: 1px solid #f1f1f1; + padding: 12px 16px; +} +.zp-Documentation .zebra td { + background-color: #f9f9f9; + border-bottom: 1px solid #eee; +} +.zp-Documentation p { + margin: 0; +} + +.zp-Documentation .main { + background-color: #333; + border-bottom: none; + color: #fff; + font: 400 1.5em/1.5em "Helvetica", "Helvetica Neue", "Arial", sans-serif; + text-transform: uppercase; +} + +.zp-Documentation .category, +.zp-Documentation .type { + font: 600 1em/1.25em "Helvetica", Arial, sans-serif; + text-transform: uppercase; +} + +.zp-Documentation .category, +.zp-Documentation .zebra .category { + background-color: #666; + border-bottom: 1px solid #999; + color: #fff; +} + +.zp-Documentation .type { + background-color: #ACBAD5; + border-bottom: 1px solid #859ac2; +} +.zp-Documentation .zebra .type { + background-color: #99abcc; + border-bottom: 1px solid #859ac2; +} + +.zp-Documentation .code { + background-color: #ffcb15; + border-bottom: 1px solid #f9a93e; +} +.zp-Documentation .zebra .code { + background-color: #ffb915; + border-bottom: 1px solid #f2aa00; +} +.zp-Documentation .example { + min-width: 20em; + padding-right: 0; +} +.zp-Documentation .example p { + margin-bottom: 0.25em; +} + +.zp-Documentation p.break { + margin-top: 1em; +} + +/*.zp-Documentation tr.last td,*/ +.zp-Documentation td.last { + border-bottom: none; +} + +/* END OF DOCUMENTATION CSS */ diff --git a/css/zotpress.help.min.css b/css/zotpress.help.min.css new file mode 100644 index 0000000..699dec5 --- /dev/null +++ b/css/zotpress.help.min.css @@ -0,0 +1 @@ +div#zp-Zotero-API{background-color:#fff}div#zp-Zotpress ul#zp-Zotero-API-Menu{background-color:#26292c;display:block;margin:3em 0 0}div#zp-Zotpress ul#zp-Zotero-API-Menu:after,div#zp-Zotpress ul#zp-Zotero-API-Menu:before{content:"";display:table}div#zp-Zotpress ul#zp-Zotero-API-Menu:after{clear:both}div#zp-Zotpress ul#zp-Zotero-API-Menu li{background:0 0;display:block;float:left;margin:0;padding:0}div#zp-Zotpress ul#zp-Zotero-API-Menu li a{color:#fff;display:block;font:normal 1em/2.15em Helvetica,Arial,sans-serif;padding:1em 2em;text-transform:uppercase;text-decoration:none}div#zp-Zotpress ul#zp-Zotero-API-Menu li.ui-tabs-active{background-color:#e14d43}div#zp-Zotpress ul#zp-Zotero-API-Menu li a:focus{box-shadow:none}div.zp-Zotero-API-Explanation{background:#fff;padding:1em 2em 1em}div.zp-Zotero-API-Explanation:after{clear:both;content:"";display:table}div.zp-Zotero-API-Attributes{background-color:#e3e3e3;padding:1px 5px}div.zp-Zotero-API-Attributes-Search{background-color:transparent;margin:5px 0}div.zp-Zotero-API-Attributes-Search:after{content:"";display:table;clear:both}input[type=text].zp-Zotero-API-Attributes-Search-Input{background-color:#fff;border:0;border-radius:0;box-shadow:none;color:#e14d43;float:left;font-size:26px;font-weight:700;margin:0;padding:14px 1em;width:92.5%}input[type=text].zp-Zotero-API-Attributes-Search-Input::placeholder{color:#aaa;font-weight:400;font-style:italic}div.zp-Zotero-API-Attributes-Search-Status{background:#fff;float:left;padding:10px 0 11px;width:7.5%}div.zp-Zotero-API-Attributes-Search-Status .dashicons,div.zp-Zotero-API-Attributes-Search-Status .zp-Loading{font-size:30px;float:right;line-height:2.1;width:2.1em;height:1.96em}div.zp-Zotero-API-Attribute{border-bottom:1px solid #eee;background-color:#fff;margin:5px 0;padding:2em}div#zp-Zotpress div.zp-Zotero-API-Attribute h4{font:600 1em/1em Helvetica,Arial,sans-serif;margin-top:.5em;text-transform:uppercase}div#zp-Zotpress div.zp-Zotero-API-Attribute h4 strong{text-transform:lowercase;font-size:2em}div.zp-Message{background-color:#e14d43;display:block;float:right;margin-left:20px;margin-top:-30px;overflow:hidden;width:278px}div#zp-Zotpress div.zp-Message h3{color:#fff;font-size:21px;line-height:1.4em;padding:1.2em;padding-bottom:0}div.zp-Message p{color:#fff;font:italic 400 14px/21px Georgia,serif;margin:0;padding:2em}div.zp-Message p.rate{background-color:#26292c;text-shadow:0 1px 0 #000}div.zp-Message p.version{font-size:1em;padding-top:1em}div.zp-Message p.version a,div.zp-Message p.version a:active,div.zp-Message p.version a:visited{color:#fff}div.zp-Message p.version a:hover{color:#fff}div.zp-Message p.version a#zp-Donate{background:transparent url(../images/pp.png) no-repeat right center;padding-right:16px}div.zp-Message p.version strong{color:#fff;font:600 10px/1em Helvetica,Arial,sans-serif;text-transform:uppercase}a.zp-FiveStar{background:transparent url(../images/sprite.png) no-repeat -160px -1px;color:#ffd900;padding-left:95px}div#zp-InText-Example{background-color:#fff;-moz-box-shadow:0 0 1px #aaa;-webkit-box-shadow:0 0 1px#aaa;box-shadow:0 0 1px #aaa;display:flex;flex-wrap:wrap;justify-content:space-evenly;align-items:stretch;float:right;font:normal 400 12px/18px Georgia,serif;margin:.5em;padding:.5em;width:50%}div#zp-InText-Example:after{clear:both;content:"";display:table}div.zp-InText-Example-Col{padding:0 2%;width:calc(45.5% - 4px)}div.zp-InText-Example-Col:nth-child(1){margin-right:1.5%}div.zp-InText-Example-Col.alt{background-color:#f3f3f3}div#zp-Zotpress div.zp-InText-Example-Col h4{font-size:1.25em;margin:0;padding:1em 0 0}div#zp-InText-Example .title{font-weight:600;font-style:italic}div#zp-Zotpress code{background:#ddd;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;font-family:Monaco,monospace;padding:2px 3px}.zp-Documentation{border:none;background-color:#fff;margin:2em 0;padding:0}.zp-Documentation strong{font-weight:700}div#zp-Zotpress .zp-Documentation code{background:#eaeaea}.zp-Documentation td,.zp-Documentation th,.zp-Documentation tr{border:none;font-weight:300;margin:0;padding:8px 16px;text-align:left;vertical-align:top}.zp-Documentation td{border-bottom:1px solid #f1f1f1;padding:12px 16px}.zp-Documentation .zebra td{background-color:#f9f9f9;border-bottom:1px solid #eee}.zp-Documentation p{margin:0}.zp-Documentation .main{background-color:#333;border-bottom:none;color:#fff;font:400 1.5em/1.5em Helvetica,"Helvetica Neue",Arial,sans-serif;text-transform:uppercase}.zp-Documentation .category,.zp-Documentation .type{font:600 1em/1.25em Helvetica,Arial,sans-serif;text-transform:uppercase}.zp-Documentation .category,.zp-Documentation .zebra .category{background-color:#666;border-bottom:1px solid #999;color:#fff}.zp-Documentation .type{background-color:#acbad5;border-bottom:1px solid #859ac2}.zp-Documentation .zebra .type{background-color:#99abcc;border-bottom:1px solid #859ac2}.zp-Documentation .code{background-color:#ffcb15;border-bottom:1px solid #f9a93e}.zp-Documentation .zebra .code{background-color:#ffb915;border-bottom:1px solid #f2aa00}.zp-Documentation .example{min-width:20em;padding-right:0}.zp-Documentation .example p{margin-bottom:.25em}.zp-Documentation p.break{margin-top:1em}.zp-Documentation td.last{border-bottom:none} diff --git a/css/zotpress.metabox.css b/css/zotpress.metabox.css index 8526db2..1c891d8 100644 --- a/css/zotpress.metabox.css +++ b/css/zotpress.metabox.css @@ -1,534 +1,667 @@ - - - /* START OF AUTOCOMPLETE CSS */ - - .ui-autocomplete.zp-autocomplete { - background: none; - background-color: #fff; - border: 1px solid #ddd; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); - -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); - margin: 0; - padding: 0; - max-height: 200px; - width: 253px !important; - overflow-y: auto; - overflow-x: hidden; /* prevent horizontal scrollbar */ - } - .ui-autocomplete.zp-autocomplete-wide { - width: 775px !important; - } - - .ui-autocomplete.zp-autocomplete li { - background: none; - border: none; - font-weight: 400; - font-size: 0.75rem; - line-height: 1.2; - margin: 0; - padding: 0; - white-space: normal; - /*width: 253px;*/ - } - .ui-autocomplete.zp-autocomplete-wide li { - /*width: 775px;*/ - } - - .ui-autocomplete.zp-autocomplete-wide li strong { - font-weight: 600; - } - - .ui-autocomplete.zp-autocomplete li a { - background: none; - border: none; - border-bottom: 1px solid #ddd; - color: #666; - margin: 0; - padding: 6px 10px 6px 10px; - } - .ui-autocomplete.zp-autocomplete li a.ui-state-focus, - .ui-autocomplete.zp-autocomplete li a.ui-state-hover { - background: none; - background-color: #eee; /* 8ec5fb */ - margin: 0; - - border-radius: 0; - -moz-border-radius: 0; - -webkit-border-radius: 0; - } - - .ui-tabs .ui-tabs-nav li a, - .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { - outline: none; - } - - /* END OF AUTOCOMPLETE CSS */ - - - - /* START OF IN-TEXT CSS */ - - div#zp-ZotpressMetaBox-Biblio-Citations, - div#zp-ZotpressMetaBox-Citations { - border: 5px solid #E14D43; - margin: 0.5em; - - border-radius: 5px; - -moz-border-radius: 5px; - -webkit-border-radius: 5px; - } - div#zp-ZotpressMetaBox-Citations { - border: 5px solid #0080c0; - } - - input#zp-ZotpressMetaBox-Biblio-Citations-Search, - input#zp-ZotpressMetaBox-Citations-Search { - border: none; - background: #fff; - font-size: 1em; - margin: 0; - width: 100%; - } - input#zp-ZotpressMetaBox-Biblio-Citations-Search.ui-autocomplete-loading, - input#zp-ZotpressMetaBox-Citations-Search.ui-autocomplete-loading { - background: #fff url("../images/loading_default.gif") no-repeat 225px center; - } - input#zp-ZotpressMetaBox-Biblio-Citations-Search.help, - input#zp-ZotpressMetaBox-Citations-Search.help { - color: #aaa; - } - - div#zp-ZotpressMetaBox-Biblio-Shortcode, - div#zp-ZotpressMetaBox-InTextCreator-Shortcode { - padding: 0.75em; - } - div#zp-ZotpressMetaBox-Biblio-Shortcode-Inner, - div#zp-ZotpressMetaBox-InTextCreator-Shortcode-Inner { - background-color: #f6f6f6; - display: none; - margin: 0.75em 0 0 0; - padding: 0.75em; - } - - #ZotpressMetaBox .ui-widget-content a#zp-ZotpressMetaBox-Biblio-Generate-Button, - #ZotpressMetaBox .ui-widget-content a#zp-ZotpressMetaBox-InTextCreator-Generate-Button { - color: #fff; - float: right; - line-height: 1.75em; - height: auto; - } - #ZotpressMetaBox .ui-widget-content a#zp-ZotpressMetaBox-Biblio-Clear-Button, - #ZotpressMetaBox .ui-widget-content a#zp-ZotpressMetaBox-InTextCreator-Clear-Button { - float: left; - line-height: 1.75em; - height: auto; - } - - div#zp-ZotpressMetaBox-Biblio-Shortcode hr.clear, - div#zp-ZotpressMetaBox-InTextCreator-Shortcode hr.clear { - border: none; - clear: both; - margin: 0; - padding: 0; - visibility: hidden; - height: 1px; - } - - div#ZotpressMetaBox div#zp-ZotpressMetaBox-Biblio-Shortcode label, - div#ZotpressMetaBox div#zp-ZotpressMetaBox-InTextCreator-Shortcode label - { - font-size: 0.85em; - display: block; - line-height: 1em; - margin-bottom: 0.5em; - padding: 0; - } - - #zp-ZotpressMetaBox-Biblio-Shortcode-Text, - #zp-ZotpressMetaBox-InTextCreator-Text-Bib, - #zp-ZotpressMetaBox-InTextCreator-InText { - font-size: 0.85em; - width: 100%; - } - - div#zp-ZotpressMetaBox-InTextCreator-Text-Bib-Container { - margin-top: 0.75em; - } - div#zp-ZotpressMetaBox-Biblio-Text-Bib-Container label span, - div#zp-ZotpressMetaBox-InTextCreator-Text-Bib-Container label span { - color: #999; - font-weight: normal; - } - - /* Start of Visual Indicator Item CSS */ - - div#zp-ZotpressMetaBox-Biblio-Citations-List, - div#zp-ZotpressMetaBox-Citations-List { - padding: 0 1rem; - } - - div#zp-ZotpressMetaBox-Biblio-Citations-List div.item, - div#zp-ZotpressMetaBox-Citations-List div.item { - position: relative; - border-top: 1px solid #eee; - font-weight: 400; - font-size: 0.7rem; - line-height: 1.2; - padding: 0.5rem 0; - width: 100%; - } - div#zp-ZotpressMetaBox-Biblio-Citations-List div.item:first-child, - div#zp-ZotpressMetaBox-Citations-List div.item:first-child { - border-top: none; - } - - div#zp-ZotpressMetaBox-Biblio-Citations-List div.item .label, - div#zp-ZotpressMetaBox-Citations-List div.item .label { - display: block; - width: 90%; - } - - div#zp-ZotpressMetaBox-Biblio-Citations-List div.item .options, - div#zp-ZotpressMetaBox-Citations-List div.item .options { - margin: 0.5rem 0; - display: block; - width: 90%; - } - div#zp-ZotpressMetaBox-Biblio-Citations-List div.item .options:before, - div#zp-ZotpressMetaBox-Biblio-Citations-List div.item .options:after, - div#zp-ZotpressMetaBox-Citations-List div.item .options:before, - div#zp-ZotpressMetaBox-Citations-List div.item .options:after { - content: ""; - display: table; - } - div#zp-ZotpressMetaBox-Biblio-Citations-List div.item .options:after, - div#zp-ZotpressMetaBox-Citations-List div.item .options:after { - clear: both; - } - div#zp-ZotpressMetaBox-Biblio-Citations-List div.item .options label, - div#zp-ZotpressMetaBox-Citations-List div.item .options label { - float: left; - line-height: 1.5; - margin-right: 0.2rem; - } - div#zp-ZotpressMetaBox-Biblio-Citations-List div.item .options input, - div#zp-ZotpressMetaBox-Citations-List div.item .options input { - text-transform: uppercase; - font-weight: 600; - float: left; - font-size: 0.7rem; - padding: 0 0.2rem; - width: 40%; - } - - div#zp-ZotpressMetaBox-Biblio-Citations-List div.item .item_key, - div#zp-ZotpressMetaBox-Citations-List div.item .item_key { - display: block; - font-weight: 600; - margin-top: 0.25rem; - } - - div#zp-ZotpressMetaBox-Biblio-Citations-List div.item .delete, - div#zp-ZotpressMetaBox-Citations-List div.item .delete { - position: absolute; - top: 0.5rem; - right: 0; - background-color: #e14d43; - color: #fff; - cursor: pointer; - font-size: 0.8rem; - line-height: 1; - padding: 0.05rem 0.25rem; - - border-radius: 10px; - -moz-border-radius: 10px; - -webkit-border-radius: 10px; - } - - div#zp-ZotpressMetaBox-Biblio-Citations-List hr.clear, - div#zp-ZotpressMetaBox-Citations-List hr.clear { - background: none; - border: none; - height: 1px; - margin: 0; - padding: 0; - visibility: hidden; - } - - - /* Start of Account CSS */ - - div#zp-ZotpressMetaBox-Biblio-Account, - div#zp-ZotpressMetaBox-Account { - color: #999; - font-size: 0.85em; - margin: 0.5em 1em; - } - - - /* Start of Options CSS */ - - div#zp-ZotpressMetaBox-Biblio-Options, - div#zp-ZotpressMetaBox-InTextCreator-Options { - border-top: 1px solid #EEEEEE; - border-bottom: 1px solid #EEEEEE; - margin: 0; - } - - div#ZotpressMetaBox div#zp-ZotpressMetaBox-Biblio-Options h4, - div#ZotpressMetaBox div#zp-ZotpressMetaBox-InTextCreator-Options h4 { - margin: 0.75em; - } - - div#zp-ZotpressMetaBox-Biblio-Options-Inner, - div#zp-ZotpressMetaBox-InTextCreator-Options-Inner { - border-top: 1px solid #EEEEEE; - display: none; - padding: 0.25em 0; - } - div.zp-ZotpressMetaBox-Field { - font-size: 0.85em; - padding: 0.5em 1em; - } - div.zp-ZotpressMetaBox-Field-Radio { - font-size: 1.15em; - float: right; - margin-top: -0.2em; - } - div#ZotpressMetaBox div.zp-ZotpressMetaBox-Field-Radio label { - padding: 0; - } - div#zp-ZotpressMetaBox-Biblio-Options-Inner input, - div#zp-ZotpressMetaBox-Biblio-Options-Inner select, - div#zp-ZotpressMetaBox-InTextCreator-Options-Inner input, - div#zp-ZotpressMetaBox-InTextCreator-Options-Inner select { - font-size: 0.85em; - margin: 0.5em 1em 0.5em 0; - line-height: 1em; - } - div#zp-ZotpressMetaBox-Biblio-Options-Inner select, - div#zp-ZotpressMetaBox-InTextCreator-Options-Inner select { - height: auto; - } - - div#zp-ZotpressMetaBox-Biblio-Options div.right, - div#zp-ZotpressMetaBox-InTextCreator-Options div.right { - float: right; - line-height: 1; - } - - div#ZotpressMetaBox div#zp-ZotpressMetaBox-Biblio-Options h5, - div#ZotpressMetaBox div#zp-ZotpressMetaBox-InTextCreator-Options h5 { - background-color: #f9f9f9; - border-top: 1px solid #eee; - border-bottom: 1px solid #eee; - font-size: 1em; - font-weight: normal; - margin: 0.5em 0; - padding: 0.5em 0.75em; - } - div#ZotpressMetaBox div#zp-ZotpressMetaBox-InTextCreator-Options h5.first { - margin-top: -0.3em; - } - - div#zp-ZotpressMetaBox-Biblio-Options h4 span.toggle, - div#zp-ZotpressMetaBox-InTextCreator-Options h4 span.toggle { - background: #f7f7f7 url('../images/sprite.png') no-repeat -22px -466px; - border: 1px solid #dadada; - cursor: pointer; - display: inline-block; - line-height: 1em; - margin-left: 0.35em; - padding: 0; - /*padding: 0 0.65em;*/ - vertical-align: bottom; - width: 1.3em; - height: 1.3em; - - border-radius: 1em; - -moz-border-radius: 1em; - -webkit-border-radius: 1em; - } - div#zp-ZotpressMetaBox-Biblio-Options h4 span.toggle.active, - div#zp-ZotpressMetaBox-InTextCreator-Options h4 span.toggle.active { - background-color: #dadada; - } - - div#zp-ZotpressMetaBox-Biblio-Options hr, - div#zp-ZotpressMetaBox-InTextCreator-Options hr { - border: none; - background-color: #fff; - border-bottom: 1px solid #f6f6f6; - margin: 0.25em 0; - padding: 0; - height: 1px; - } - - input#zp-ZotpressMetaBox-Biblio-Options-Format, - input#zp-ZotpressMetaBox-InTextCreator-Options-Format { - min-width: 185px; - } - - div#zp-ZotpressMetaBox-Biblio-Options p.note, - div#zp-ZotpressMetaBox-InTextCreator-Options p.note { - color: #999; - font-size: 0.75em; - margin: 0 1em 0.75em; - } - - /* END OF IN-TEXT CSS */ - - - - /* START OF GENERIC METABOX CSS */ - - div#ZotpressMetaBox.postbox div.inside { - /*padding: 0 6px;*/ - margin: 0; - padding: 0; - } - - div#ZotpressMetaBox h3.hndle span { - background: transparent url('../images/icon.png') no-repeat left center; - padding-left: 22px; - } - - div.zp-ZotpressMetaBox-Tabs { - border-radius: 5px; - -moz-border-radius: 5px; - border: 1px solid #ccc; - padding: 1px; - margin-bottom: 10px; - } - div.zp-ZotpressMetaBox-Tabs ul.ui-tabs-nav { - display: none; - border-radius: 4px 4px 0 0; - -moz-border-radius: 4px 4px 0 0; - background-color: #f6f6f6; - padding: 3px; - padding-bottom: 0; - overflow: hidden; - /*height: 20px;*/ - } - div.zp-ZotpressMetaBox-Tabs ul li, - div.zp-ZotpressMetaBox-Tabs ul.ui-tabs-nav li { - margin: 0; - padding: 5px 5px 0; - float: left; - height: 13px; - } - div.zp-ZotpressMetaBox-Tabs ul.ui-tabs-nav li.ui-state-active { - border-radius: 4px 4px 0 0; - -moz-border-radius: 4px 4px 0 0; - background-color: #fff; - height: 13px; - } - div.zp-ZotpressMetaBox-Tabs ul.ui-tabs-nav li a { - /*font: 9px/10px 'Arial', sans-serif;*/ - letter-spacing: 1px; - padding: 0 3px; - text-decoration: none; - text-transform: uppercase; - vertical-align: top; - } - div.zp-ZotpressMetaBox-Tabs ul.ui-tabs-nav li.ui-state-active a { - color: #333; - } - div.zp-ZotpressMetaBox-Tabs input[type="radio"] { - vertical-align: text-top; - } - - div#ZotpressMetaBox h4 { - margin: 0; - padding: 0; - } - - div#zp-ZotpressMetaBox-Biblio-Options label, - div#zp-ZotpressMetaBox-InTextCreator-Options label{ - font-size: 0.85em; - margin: 0; - padding: 0 1em; - font-weight: bold; - } - div#ZotpressMetaBox div.zp-Tab label { - font-size: 12px; - display: block; - margin: 0; - padding: 0 0 5px 0; - } - div#ZotpressMetaBox div.zp-Tab select { - width: 100%; - height: 5em !important; - } - - div.zp-Tab { - background-color: #fff; - padding: 0.6em !important; - } - p.zp-Note { - font-size: 9px !important; - font-style: italic !important; - color: #aaaaaa !important; - margin-top: 0 !important; - } - p.zp-Note { - font-size: 10px !important; - color: #888 !important; - } - div.zp-Tab span.label { - margin-top: 5px; - font-weight: bold; - } - div.zp-Tab span.label em { - font-style: normal; - text-decoration: underline; - } - - .postbox div.zp-Tab input[type="text"], - div.zp-Tab select { - margin-bottom: 10px; - } - - /* MAIN */ - #normal-sortables .zp-ZotpressMetaBox-Tabs .sm { - display: none; - } - #normal-sortables .zp-ZotpressMetaBox-Tabs .wide { - display: block; - } - /* MAIN */ - - /* SIDEBAR */ - #side-sortables .zp-ZotpressMetaBox-Tabs .sm { - display: block; - } - #side-sortables .zp-ZotpressMetaBox-Tabs .wide { - display: none; - } - /* SIDEBAR */ - - .bibOnly { - display: none; - } - - - - /* START OF CKEDIT STYLES */ - - span.zp-Zotpress-Citation { - background-color: #eee !important; - } - span.zp-Zotpress-Citation:hover { - background-color: #ddd !important; - } - - span.zp-Zotpress-Citation span.zp-Zotpress-Citation-Shortcode { - display: none !important; - } - - span.zp-Zotpress-Citation span.zp-Zotpress-Citation-Info { - display: inline !important; - } - - /* END OF CKEDIT STYLES */ - \ No newline at end of file + +/* START OF SHORTCODE BUILDER CSS */ + +#zp-ZotpressMetaBox.zp-ShortcodeBuilder { + z-index: 100; + position: absolute; + top: calc(50% - 25vh); + left: calc(50% - 18vw); + width: 34vw; + height: auto; + max-height: 50vh; + + background-color: #fff; + border: 1px solid #333; + filter: drop-shadow(3px 3px 0 rgba(0, 0, 0, 0.1)); + overflow-y: auto; +} +.is-sidebar-opened #zp-ZotpressMetaBox.zp-ShortcodeBuilder { + left: calc(((100% - 280px) / 2) - 18vw); +} +#zp-ZotpressMetaBox.zp-ShortcodeBuilder #zp-ZotpressMetaBox-Inner { + padding: 6px 15px 15px 15px; +} + +#zp-ShortcodeBuilder-Close { + display: none; +} +#zp-ZotpressMetaBox.zp-ShortcodeBuilder #zp-ShortcodeBuilder-Close { + position: absolute; + top: 3px; + right: 3px; + display: inline-block; +} + +/* search autocomplete */ + +#zp-ZotpressMetaBox.zp-ShortcodeBuilder select#zp-ZotpressMetaBox-Acccount-Select { + border: none; + font-size: 0.9em; + width: auto; +} + +#zp-ZotpressMetaBox.zp-ShortcodeBuilder #zp-ZotpressMetaBox-Account, +#zp-ZotpressMetaBox.zp-ShortcodeBuilder #zp-ZotpressMetaBox-Search-Inner, +#zp-ZotpressMetaBox.zp-ShortcodeBuilder #zp-ZotpressMetaBox-List, +#zp-ZotpressMetaBox.zp-ShortcodeBuilder #zp-ZotpressMetaBox-Type, +#zp-ZotpressMetaBox.zp-ShortcodeBuilder #zp-ZotpressMetaBox-Biblio-Options, +#zp-ZotpressMetaBox.zp-ShortcodeBuilder #zp-ZotpressMetaBox-Biblio-Generate, +#zp-ZotpressMetaBox.zp-ShortcodeBuilder #zp-ZotpressMetaBox-InText-Options, +#zp-ZotpressMetaBox.zp-ShortcodeBuilder #zp-ZotpressMetaBox-InText-Generate, +#zp-ZotpressMetaBox.zp-ShortcodeBuilder #zp-ZotpressMetaBox-InTextBib-Options, +#zp-ZotpressMetaBox.zp-ShortcodeBuilder #zp-ZotpressMetaBox-InTextBib-Generate { + margin-left: 0; + margin-right: 0; +} + +#zp-ZotpressMetaBox-Type { + border: none; + margin: 0 15px; + padding: 0; +} +#zp-ZotpressMetaBox.zp-ShortcodeBuilder #zp-ZotpressMetaBox-Type { + margin: 0; + padding: 0; + overflow: auto; +} +#zp-ZotpressMetaBox-Type h4 { + display: none; +} +#zp-ZotpressMetaBox-Type ul, +#zp-ZotpressMetaBox-Type ul li { + margin: 0; + padding: 0; +} +#zp-ZotpressMetaBox-Type ul li.ui-tab a { + box-shadow: none !important; + color: #1e1e1e; + float: left; + padding: 8px 14px; + text-decoration: none; +} +#zp-ZotpressMetaBox-Type ul li.ui-tabs-active a { + border-bottom: 3px solid var(--wp-admin-theme-color); + padding-bottom: 5px; +} + +/* options */ + +#zp-ZotpressMetaBox.zp-ShortcodeBuilder #zp-ZotpressMetaBox-Biblio-Options-Inner, +#zp-ZotpressMetaBox.zp-ShortcodeBuilder #zp-ZotpressMetaBox-InText-Options-Inner, +#zp-ZotpressMetaBox.zp-ShortcodeBuilder #zp-ZotpressMetaBox-InTextBib-Options-Inner { + padding: 8px 0; +} + +#zp-ZotpressMetaBox.zp-ShortcodeBuilder .zp-ZotpressMetaBox-Sub { + margin: 0; + padding: 8px 12px; +} +#zp-ZotpressMetaBox.zp-ShortcodeBuilder .zp-ZotpressMetaBox-Sub h4 { + margin: 0; + padding: 0; +} +#zp-ZotpressMetaBox.zp-ShortcodeBuilder .zp-ZotpressMetaBox-Sub h4 span.toggle { + padding: 0; +} +#zp-ZotpressMetaBox.zp-ShortcodeBuilder .zp-ZotpressMetaBox-Sub h4 span.toggle-button { + margin: 4px 0 0 0; +} +#zp-ZotpressMetaBox.zp-ShortcodeBuilder .zp-ZotpressMetaBox-Sub-Inner { + padding: 10px 0 0; +} +#zp-ZotpressMetaBox.zp-ShortcodeBuilder .zp-ZotpressMetaBox-Sub label { + display: block; + padding: 0; +} +#zp-ZotpressMetaBox.zp-ShortcodeBuilder .zp-ZotpressMetaBox-Sub p.note { + margin: 0.5em 0 0.75em 14px; +} +#zp-ZotpressMetaBox.zp-ShortcodeBuilder .zp-ZotpressMetaBox-Sub .zp-ZotpressMetaBox-Field-Radio label { + padding: 0 0 0 1em; +} +#zp-ZotpressMetaBox.zp-ShortcodeBuilder .zp-ZotpressMetaBox-Sub .zp-ZotpressMetaBox-Field-Radio input { + margin: 0 4px; +} +#zp-ZotpressMetaBox.zp-ShortcodeBuilder div.zp-ZotpressMetaBox-Sub hr { + margin: 5px 0; +} +#zp-ZotpressMetaBox.zp-ShortcodeBuilder div#zp-ZotpressMetaBox-Biblio-Generate, +#zp-ZotpressMetaBox.zp-ShortcodeBuilder div#zp-ZotpressMetaBox-InText-Generate, +#zp-ZotpressMetaBox.zp-ShortcodeBuilder div#zp-ZotpressMetaBox-InTextBib-Generate { + margin-bottom: 0; +} + +/* There's a CSS gap/bug where Dashicons aren't styled in the editor menu */ + +#editor .components-dropdown-menu__menu .components-button.has-icon .dashicon { + margin-right: 12px; +} + +/* END OF SHORTCODE BUILDER CSS */ + + + +/* + THE BELOW IS POTENTIALLY LEGACY CODE + and should be incorporated above +*/ + + + +/* START OF AUTOCOMPLETE CSS */ + +.ui-autocomplete.zp-autocomplete { + background: none; + background-color: #fff; + border: 1px solid #ddd; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); + -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); + margin: 0; + padding: 0; + max-height: 200px; + width: 253px !important; + overflow-y: auto; + overflow-x: hidden; /* prevent horizontal scrollbar */ +} +.ui-autocomplete.zp-autocomplete-wide { + width: 775px !important; +} + +.ui-autocomplete.zp-autocomplete li { + background: none; + border: none; + font-weight: 400; + font-size: 0.75rem; + line-height: 1.2; + margin: 0; + padding: 0; + white-space: normal; +} + +.ui-autocomplete.zp-autocomplete-wide li strong { + font-weight: 600; +} + +.ui-autocomplete.zp-autocomplete li a { + background: none; + border: none; + border-bottom: 1px solid #ddd; + display: block; + color: #666; + margin: 0; + padding: 6px 10px 6px 10px; +} +.ui-autocomplete.zp-autocomplete li a.ui-state-focus, +.ui-autocomplete.zp-autocomplete li a.ui-state-hover { + background: none; + background-color: #eee; /* 8ec5fb */ + margin: 0; + + border-radius: 0; + -moz-border-radius: 0; + -webkit-border-radius: 0; +} + +.ui-tabs .ui-tabs-nav li a, +.ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { + outline: none; +} + +/* END OF AUTOCOMPLETE CSS */ + + + +/* START OF CREATOR BASICS */ + +.zp-ZotpressMetaBox-Sub { + border: 1px solid #EEEEEE; + margin: 0 15px; + padding: 0 5px; +} + +/* END OF CREATOR BASICS */ + + + +/* START OF IN-TEXT CREATOR CSS */ + +div#zp-ZotpressMetaBox-InText { + display: none; +} + + +/* START OF SEARCH CSS */ + +div#zp-ZotpressMetaBox-Search { + margin-bottom: 10px; +} +div#zp-ZotpressMetaBox-Search-Inner { + border: 5px solid #E14D43; + margin: 5px 15px; + + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; +} + +input#zp-ZotpressMetaBox-Search-Input { + border: none; + box-shadow: none !important; + background: #fff; + font-size: inherit; + margin: 0; + padding: 4px 10px; + width: calc(100% - 4px); + height: 22px; +} +input#zp-ZotpressMetaBox-Search-Input.ui-autocomplete-loading { + background: #fff url("../images/loading_default.gif") no-repeat right center; +} +/* input#zp-ZotpressMetaBox-Search-Input.help { + color: #aaa; +} */ + + +/* Start of generate */ + +div#zp-ZotpressMetaBox-Biblio-Generate, +div#zp-ZotpressMetaBox-InText-Generate, +div#zp-ZotpressMetaBox-InTextBib-Generate { + background: none; + margin: 15px; +} +div#zp-ZotpressMetaBox-Biblio-Generate-Inner, +div#zp-ZotpressMetaBox-InText-Generate-Inner, +div#zp-ZotpressMetaBox-InTextBib-Generate-Inner { + display: none; + margin: 15px 0 0 0; +} + +#ZotpressMetaBox .ui-widget-content a#zp-ZotpressMetaBox-Biblio-Generate-Button, +#ZotpressMetaBox .ui-widget-content a#zp-ZotpressMetaBox-InText-Generate-Button, +#ZotpressMetaBox .ui-widget-content a#zp-ZotpressMetaBox-InTextBib-Generate-Button { + color: #fff; + height: auto; +} +#ZotpressMetaBox .ui-widget-content a#zp-ZotpressMetaBox-Biblio-Clear-Button, +#ZotpressMetaBox .ui-widget-content a#zp-ZotpressMetaBox-InText-Clear-Button, +#ZotpressMetaBox .ui-widget-content a#zp-ZotpressMetaBox-InTextBib-Clear-Button { + float: right; + height: auto; +} + +div#zp-ZotpressMetaBox-Biblio-Generate hr.clear, +div#zp-ZotpressMetaBox-InText-Generate hr.clear, +div#zp-ZotpressMetaBox-InTextBib-Generate hr.clear { + border: none; + clear: both; + margin: 0; + padding: 0; + visibility: hidden; + height: 1px; +} + +div#ZotpressMetaBox div#zp-ZotpressMetaBox-Biblio-Generate label, +div#ZotpressMetaBox div#zp-ZotpressMetaBox-InText-Generate label, +div#ZotpressMetaBox div#zp-ZotpressMetaBox-InTextBib-Generate label { + font-size: 13px; + display: block; + line-height: 1em; + margin-bottom: 0.5em; + padding: 0; +} + +#zp-ZotpressMetaBox-Biblio-Generate-Text, +#zp-ZotpressMetaBox-InText-Generate-Text, +#zp-ZotpressMetaBox-InTextBib-Generate-Text { + font-size: 13px; + width: 100%; +} + +/* Start of Visual Indicator Item CSS */ + +div#zp-ZotpressMetaBox-List { + margin-bottom: 10px; + padding: 0 20px; +} + +div#zp-ZotpressMetaBox-List div.item { + position: relative; + border-top: 1px solid #eee; + font-weight: 400; + font-size: 0.7rem; + line-height: 1.2; + padding: 0.5rem 0; + width: 100%; +} +div#zp-ZotpressMetaBox-List div.item:first-child { + border-top: none; +} + +div#zp-ZotpressMetaBox-List div.item .label { + display: block; + width: 90%; +} + +div#zp-ZotpressMetaBox-List div.item .options { + margin: 0.5rem 0; + display: none; + width: 90%; +} +div#zp-ZotpressMetaBox-List.intext div.item .options { + display: block; +} +div#zp-ZotpressMetaBox-List div.item .options:before, +div#zp-ZotpressMetaBox-List div.item .options:after { + content: ""; + display: table; +} +div#zp-ZotpressMetaBox-List div.item .options:after { + clear: both; +} +div#zp-ZotpressMetaBox-List div.item .options label { + float: left; + line-height: 1.5; + margin-right: 0.2rem; +} +div#zp-ZotpressMetaBox-List div.item .options input { + text-transform: uppercase; + font-weight: 600; + float: left; + font-size: 0.7rem; + padding: 0 0.2rem; + width: 40%; +} + +div#zp-ZotpressMetaBox-List div.item .item_key, +div#zp-ZotpressMetaBox-List div.item .account { + display: block; + margin-top: 0.25rem; +} +div#zp-ZotpressMetaBox-List div.item .account { + margin-top: 0; +} + +div#zp-ZotpressMetaBox-List div.item .delete { + position: absolute; + top: 0.5rem; + right: 0; + background-color: #e14d43; + color: #fff; + cursor: pointer; + font-size: 1.25em; + line-height: 1; + padding: 0.05em 0.35em 0.25em 0.35em; + + border-radius: 1em; + -moz-border-radius: 1em; + -webkit-border-radius: 1em; +} + +div#zp-ZotpressMetaBox-List hr.clear { + background: none; + border: none; + height: 1px; + margin: 0; + padding: 0; + visibility: hidden; +} + + +/* Start of Account CSS */ + +.edit-post-meta-boxes-area #poststuff div#ZotpressMetaBox h2.hndle { + color: #191e23; /* 555d66 */ + font-size: inherit; + border-bottom: 0; +} + +#zp-ZotpressMetaBox-Account { + margin: 0 15px; +} +#zp-ZotpressMetaBox-Account label { + display: none; +} +select#zp-ZotpressMetaBox-Acccount-Select { + /* width: calc(100% - 4px); */ + width: calc(100% - 35px); + height: 22px; +} + + +/* START OF OPTIONS CSS */ + +#zp-ZotpressMetaBox #zp-ZotpressMetaBox-Biblio-Options-Inner, +#zp-ZotpressMetaBox #zp-ZotpressMetaBox-InText-Options-Inner, +#zp-ZotpressMetaBox #zp-ZotpressMetaBox-InTextBib-Options-Inner { + display: none; + font-size: 0.9em; + line-height: 2; + padding: 5px; +} +#zp-ZotpressMetaBox .zp-ZotpressMetaBox-Sub h4 { + color: #555d66; + font-weight: normal; + margin: 0; + padding: 0; +} + +#zp-ZotpressMetaBox .zp-ZotpressMetaBox-Field { + font-size: inherit; + display: flex; + align-items: center; + justify-content: space-between; +} +#zp-ZotpressMetaBox .zp-ZotpressMetaBox-Field-Radio { + display: flex; + align-items: center; + justify-content: space-between; +} +#zp-ZotpressMetaBox .zp-ZotpressMetaBox-Field-Radio label { + font-size: 0.9em; + text-transform: uppercase; + margin: 0 4px 0 15px; + padding: 0; +} + +#zp-ZotpressMetaBox .zp-ZotpressMetaBox-Sub input, +#zp-ZotpressMetaBox .zp-ZotpressMetaBox-Sub select { + font-size: inherit; +} +#zp-ZotpressMetaBox .zp-ZotpressMetaBox-Sub select { + height: auto; + min-height: 1em; +} + +#zp-ZotpressMetaBox .zp-ZotpressMetaBox-Sub .right { + float: right; + line-height: 1; +} + +#zp-ZotpressMetaBox .zp-ZotpressMetaBox-Sub h5 { + border-top: 1px solid #eee; + font-size: 1em; + font-weight: bold; + margin: 0.5em 0; + padding: 1em 0 0.25em; +} + +#zp-ZotpressMetaBox .zp-ZotpressMetaBox-Sub span.toggle { + cursor: pointer; + display: block; + font-size: 0.8em; + font-weight: normal; + line-height: 2; + padding: 5px; + text-transform: uppercase; + width: 100%; +} +#zp-ZotpressMetaBox .zp-ZotpressMetaBox-Sub span.toggle-button { + content: "\f347"; + cursor: pointer; + display: inline-block; + float: right; + font-size: 15px; + line-height: 15px; + margin: 4px 8px 0 0; + padding: 0; + text-align: right; + width: auto; + height: 16px; +} +#zp-ZotpressMetaBox .zp-ZotpressMetaBox-Sub span.toggle-button.dashicons-arrow-up-alt2 { + content: "\f343"; +} + +#zp-ZotpressMetaBox .zp-ZotpressMetaBox-Sub hr { + border: none; + background-color: #fff; + clear: both; + margin: 10px 0 0; + padding: 0; + height: 1px; +} +div#ZotpressMetaBox div#zp-ZotpressMetaBox-Biblio-Options select#zp-ZotpressMetaBox-Biblio-Options-Style { + float: none; +} + +input#zp-ZotpressMetaBox-Biblio-Options-Format, +input#zp-ZotpressMetaBox-InText-Options-Format, +input#zp-ZotpressMetaBox-InTextBib-Options-Format { + min-width: 185px; +} + +#zp-ZotpressMetaBox .zp-ZotpressMetaBox-Sub p.note { + color: #666; + font-size: 0.8em; + margin: 0.5em 1em 1em; +} +#zp-ZotpressMetaBox .zp-ZotpressMetaBox-Sub p.note code { + font-size: 1.1em; +} + +/* END OF IN-TEXT CSS */ + + + +/* START OF GENERIC METABOX CSS */ + +div#zp-ZotpressMetaBox-Inner { + padding: 15px 0; +} + +div#ZotpressMetaBox.postbox div.inside { + margin: 0; + padding: 0; +} + +div#ZotpressMetaBox h3.hndle span { + background: transparent url('../images/icon.png') no-repeat left center; + padding-left: 22px; +} + +div.zp-ZotpressMetaBox-Tabs { + border-radius: 5px; + -moz-border-radius: 5px; + border: 1px solid #ccc; + padding: 1px; + margin-bottom: 10px; +} +div.zp-ZotpressMetaBox-Tabs ul.ui-tabs-nav { + display: none; + border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + background-color: #f6f6f6; + padding: 3px; + padding-bottom: 0; + overflow: hidden; +} +div.zp-ZotpressMetaBox-Tabs ul li, +div.zp-ZotpressMetaBox-Tabs ul.ui-tabs-nav li { + margin: 0; + padding: 5px 5px 0; + float: left; + height: 13px; +} +div.zp-ZotpressMetaBox-Tabs ul.ui-tabs-nav li.ui-state-active { + border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + background-color: #fff; + height: 13px; +} +div.zp-ZotpressMetaBox-Tabs ul.ui-tabs-nav li a { + /*font: 9px/10px 'Arial', sans-serif;*/ + letter-spacing: 1px; + padding: 0 3px; + text-decoration: none; + text-transform: uppercase; + vertical-align: top; +} +div.zp-ZotpressMetaBox-Tabs ul.ui-tabs-nav li.ui-state-active a { + color: #333; +} +div.zp-ZotpressMetaBox-Tabs input[type="radio"] { + vertical-align: text-top; +} + +div#ZotpressMetaBox h4 { + margin: 0; + padding: 0; +} + +div#ZotpressMetaBox div.zp-Tab label { + font-size: 12px; + display: block; + margin: 0; + padding: 0 0 5px 0; +} +div#ZotpressMetaBox div.zp-Tab select { + width: 100%; + height: 5em !important; +} + +div.zp-Tab { + background-color: #fff; + padding: 0.6em !important; +} +p.zp-Note { + font-size: 9px !important; + font-style: italic !important; + color: #aaaaaa !important; + margin-top: 0 !important; +} +p.zp-Note { + font-size: 10px !important; + color: #888 !important; +} +div.zp-Tab span.label { + margin-top: 5px; + font-weight: bold; +} +div.zp-Tab span.label em { + font-style: normal; + text-decoration: underline; +} + +.postbox div.zp-Tab input[type="text"], +div.zp-Tab select { + margin-bottom: 10px; +} + +/* MAIN */ +#normal-sortables .zp-ZotpressMetaBox-Tabs .sm { + display: none; +} +#normal-sortables .zp-ZotpressMetaBox-Tabs .wide { + display: block; +} +/* MAIN */ + +/* SIDEBAR */ +#side-sortables .zp-ZotpressMetaBox-Tabs .sm { + display: block; +} +#side-sortables .zp-ZotpressMetaBox-Tabs .wide { + display: none; +} +/* SIDEBAR */ diff --git a/css/zotpress.metabox.min.css b/css/zotpress.metabox.min.css new file mode 100644 index 0000000..1d2a73a --- /dev/null +++ b/css/zotpress.metabox.min.css @@ -0,0 +1 @@ +#zp-ZotpressMetaBox.zp-ShortcodeBuilder{z-index:100;position:absolute;top:calc(50% - 25vh);left:calc(50% - 18vw);width:34vw;height:auto;max-height:50vh;background-color:#fff;border:1px solid #333;filter:drop-shadow(3px 3px 0 rgba(0, 0, 0, .1));overflow-y:auto}.is-sidebar-opened #zp-ZotpressMetaBox.zp-ShortcodeBuilder{left:calc(((100% - 280px)/ 2) - 18vw)}#zp-ZotpressMetaBox.zp-ShortcodeBuilder #zp-ZotpressMetaBox-Inner{padding:6px 15px 15px 15px}#zp-ShortcodeBuilder-Close{display:none}#zp-ZotpressMetaBox.zp-ShortcodeBuilder #zp-ShortcodeBuilder-Close{position:absolute;top:3px;right:3px;display:inline-block}#zp-ZotpressMetaBox.zp-ShortcodeBuilder select#zp-ZotpressMetaBox-Acccount-Select{border:none;font-size:.9em;width:auto}#zp-ZotpressMetaBox.zp-ShortcodeBuilder #zp-ZotpressMetaBox-Account,#zp-ZotpressMetaBox.zp-ShortcodeBuilder #zp-ZotpressMetaBox-Biblio-Generate,#zp-ZotpressMetaBox.zp-ShortcodeBuilder #zp-ZotpressMetaBox-Biblio-Options,#zp-ZotpressMetaBox.zp-ShortcodeBuilder #zp-ZotpressMetaBox-InText-Generate,#zp-ZotpressMetaBox.zp-ShortcodeBuilder #zp-ZotpressMetaBox-InText-Options,#zp-ZotpressMetaBox.zp-ShortcodeBuilder #zp-ZotpressMetaBox-InTextBib-Generate,#zp-ZotpressMetaBox.zp-ShortcodeBuilder #zp-ZotpressMetaBox-InTextBib-Options,#zp-ZotpressMetaBox.zp-ShortcodeBuilder #zp-ZotpressMetaBox-List,#zp-ZotpressMetaBox.zp-ShortcodeBuilder #zp-ZotpressMetaBox-Search-Inner,#zp-ZotpressMetaBox.zp-ShortcodeBuilder #zp-ZotpressMetaBox-Type{margin-left:0;margin-right:0}#zp-ZotpressMetaBox-Type{border:none;margin:0 15px;padding:0}#zp-ZotpressMetaBox.zp-ShortcodeBuilder #zp-ZotpressMetaBox-Type{margin:0;padding:0;overflow:auto}#zp-ZotpressMetaBox-Type h4{display:none}#zp-ZotpressMetaBox-Type ul,#zp-ZotpressMetaBox-Type ul li{margin:0;padding:0}#zp-ZotpressMetaBox-Type ul li.ui-tab a{box-shadow:none!important;color:#1e1e1e;float:left;padding:8px 14px;text-decoration:none}#zp-ZotpressMetaBox-Type ul li.ui-tabs-active a{border-bottom:3px solid var(--wp-admin-theme-color);padding-bottom:5px}#zp-ZotpressMetaBox.zp-ShortcodeBuilder #zp-ZotpressMetaBox-Biblio-Options-Inner,#zp-ZotpressMetaBox.zp-ShortcodeBuilder #zp-ZotpressMetaBox-InText-Options-Inner,#zp-ZotpressMetaBox.zp-ShortcodeBuilder #zp-ZotpressMetaBox-InTextBib-Options-Inner{padding:8px 0}#zp-ZotpressMetaBox.zp-ShortcodeBuilder .zp-ZotpressMetaBox-Sub{margin:0;padding:8px 12px}#zp-ZotpressMetaBox.zp-ShortcodeBuilder .zp-ZotpressMetaBox-Sub h4{margin:0;padding:0}#zp-ZotpressMetaBox.zp-ShortcodeBuilder .zp-ZotpressMetaBox-Sub h4 span.toggle{padding:0}#zp-ZotpressMetaBox.zp-ShortcodeBuilder .zp-ZotpressMetaBox-Sub h4 span.toggle-button{margin:4px 0 0 0}#zp-ZotpressMetaBox.zp-ShortcodeBuilder .zp-ZotpressMetaBox-Sub-Inner{padding:10px 0 0}#zp-ZotpressMetaBox.zp-ShortcodeBuilder .zp-ZotpressMetaBox-Sub label{display:block;padding:0}#zp-ZotpressMetaBox.zp-ShortcodeBuilder .zp-ZotpressMetaBox-Sub p.note{margin:.5em 0 .75em 14px}#zp-ZotpressMetaBox.zp-ShortcodeBuilder .zp-ZotpressMetaBox-Sub .zp-ZotpressMetaBox-Field-Radio label{padding:0 0 0 1em}#zp-ZotpressMetaBox.zp-ShortcodeBuilder .zp-ZotpressMetaBox-Sub .zp-ZotpressMetaBox-Field-Radio input{margin:0 4px}#zp-ZotpressMetaBox.zp-ShortcodeBuilder div.zp-ZotpressMetaBox-Sub hr{margin:5px 0}#zp-ZotpressMetaBox.zp-ShortcodeBuilder div#zp-ZotpressMetaBox-Biblio-Generate,#zp-ZotpressMetaBox.zp-ShortcodeBuilder div#zp-ZotpressMetaBox-InText-Generate,#zp-ZotpressMetaBox.zp-ShortcodeBuilder div#zp-ZotpressMetaBox-InTextBib-Generate{margin-bottom:0}#editor .components-dropdown-menu__menu .components-button.has-icon .dashicon{margin-right:12px}.ui-autocomplete.zp-autocomplete{background:0 0;background-color:#fff;border:1px solid #ddd;box-shadow:0 1px 1px rgba(0,0,0,.04);-moz-box-shadow:0 1px 1px rgba(0,0,0,.04);margin:0;padding:0;max-height:200px;width:253px!important;overflow-y:auto;overflow-x:hidden}.ui-autocomplete.zp-autocomplete-wide{width:775px!important}.ui-autocomplete.zp-autocomplete li{background:0 0;border:none;font-weight:400;font-size:.75rem;line-height:1.2;margin:0;padding:0;white-space:normal}.ui-autocomplete.zp-autocomplete-wide li strong{font-weight:600}.ui-autocomplete.zp-autocomplete li a{background:0 0;border:none;border-bottom:1px solid #ddd;display:block;color:#666;margin:0;padding:6px 10px 6px 10px}.ui-autocomplete.zp-autocomplete li a.ui-state-focus,.ui-autocomplete.zp-autocomplete li a.ui-state-hover{background:0 0;background-color:#eee;margin:0;border-radius:0;-moz-border-radius:0;-webkit-border-radius:0}.ui-tabs .ui-tabs-nav li a,.ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a{outline:0}.zp-ZotpressMetaBox-Sub{border:1px solid #eee;margin:0 15px;padding:0 5px}div#zp-ZotpressMetaBox-InText{display:none}div#zp-ZotpressMetaBox-Search{margin-bottom:10px}div#zp-ZotpressMetaBox-Search-Inner{border:5px solid #e14d43;margin:5px 15px;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px}input#zp-ZotpressMetaBox-Search-Input{border:none;box-shadow:none!important;background:#fff;font-size:inherit;margin:0;padding:4px 10px;width:calc(100% - 4px);height:22px}input#zp-ZotpressMetaBox-Search-Input.ui-autocomplete-loading{background:#fff url(../images/loading_default.gif) no-repeat right center}div#zp-ZotpressMetaBox-Biblio-Generate,div#zp-ZotpressMetaBox-InText-Generate,div#zp-ZotpressMetaBox-InTextBib-Generate{background:0 0;margin:15px}div#zp-ZotpressMetaBox-Biblio-Generate-Inner,div#zp-ZotpressMetaBox-InText-Generate-Inner,div#zp-ZotpressMetaBox-InTextBib-Generate-Inner{display:none;margin:15px 0 0 0}#ZotpressMetaBox .ui-widget-content a#zp-ZotpressMetaBox-Biblio-Generate-Button,#ZotpressMetaBox .ui-widget-content a#zp-ZotpressMetaBox-InText-Generate-Button,#ZotpressMetaBox .ui-widget-content a#zp-ZotpressMetaBox-InTextBib-Generate-Button{color:#fff;height:auto}#ZotpressMetaBox .ui-widget-content a#zp-ZotpressMetaBox-Biblio-Clear-Button,#ZotpressMetaBox .ui-widget-content a#zp-ZotpressMetaBox-InText-Clear-Button,#ZotpressMetaBox .ui-widget-content a#zp-ZotpressMetaBox-InTextBib-Clear-Button{float:right;height:auto}div#zp-ZotpressMetaBox-Biblio-Generate hr.clear,div#zp-ZotpressMetaBox-InText-Generate hr.clear,div#zp-ZotpressMetaBox-InTextBib-Generate hr.clear{border:none;clear:both;margin:0;padding:0;visibility:hidden;height:1px}div#ZotpressMetaBox div#zp-ZotpressMetaBox-Biblio-Generate label,div#ZotpressMetaBox div#zp-ZotpressMetaBox-InText-Generate label,div#ZotpressMetaBox div#zp-ZotpressMetaBox-InTextBib-Generate label{font-size:13px;display:block;line-height:1em;margin-bottom:.5em;padding:0}#zp-ZotpressMetaBox-Biblio-Generate-Text,#zp-ZotpressMetaBox-InText-Generate-Text,#zp-ZotpressMetaBox-InTextBib-Generate-Text{font-size:13px;width:100%}div#zp-ZotpressMetaBox-List{margin-bottom:10px;padding:0 20px}div#zp-ZotpressMetaBox-List div.item{position:relative;border-top:1px solid #eee;font-weight:400;font-size:.7rem;line-height:1.2;padding:.5rem 0;width:100%}div#zp-ZotpressMetaBox-List div.item:first-child{border-top:none}div#zp-ZotpressMetaBox-List div.item .label{display:block;width:90%}div#zp-ZotpressMetaBox-List div.item .options{margin:.5rem 0;display:none;width:90%}div#zp-ZotpressMetaBox-List.intext div.item .options{display:block}div#zp-ZotpressMetaBox-List div.item .options:after,div#zp-ZotpressMetaBox-List div.item .options:before{content:"";display:table}div#zp-ZotpressMetaBox-List div.item .options:after{clear:both}div#zp-ZotpressMetaBox-List div.item .options label{float:left;line-height:1.5;margin-right:.2rem}div#zp-ZotpressMetaBox-List div.item .options input{text-transform:uppercase;font-weight:600;float:left;font-size:.7rem;padding:0 .2rem;width:40%}div#zp-ZotpressMetaBox-List div.item .account,div#zp-ZotpressMetaBox-List div.item .item_key{display:block;margin-top:.25rem}div#zp-ZotpressMetaBox-List div.item .account{margin-top:0}div#zp-ZotpressMetaBox-List div.item .delete{position:absolute;top:.5rem;right:0;background-color:#e14d43;color:#fff;cursor:pointer;font-size:1.25em;line-height:1;padding:.05em .35em .25em .35em;border-radius:1em;-moz-border-radius:1em;-webkit-border-radius:1em}div#zp-ZotpressMetaBox-List hr.clear{background:0 0;border:none;height:1px;margin:0;padding:0;visibility:hidden}.edit-post-meta-boxes-area #poststuff div#ZotpressMetaBox h2.hndle{color:#191e23;font-size:inherit;border-bottom:0}#zp-ZotpressMetaBox-Account{margin:0 15px}#zp-ZotpressMetaBox-Account label{display:none}select#zp-ZotpressMetaBox-Acccount-Select{width:calc(100% - 35px);height:22px}#zp-ZotpressMetaBox #zp-ZotpressMetaBox-Biblio-Options-Inner,#zp-ZotpressMetaBox #zp-ZotpressMetaBox-InText-Options-Inner,#zp-ZotpressMetaBox #zp-ZotpressMetaBox-InTextBib-Options-Inner{display:none;font-size:.9em;line-height:2;padding:5px}#zp-ZotpressMetaBox .zp-ZotpressMetaBox-Sub h4{color:#555d66;font-weight:400;margin:0;padding:0}#zp-ZotpressMetaBox .zp-ZotpressMetaBox-Field{font-size:inherit;display:flex;align-items:center;justify-content:space-between}#zp-ZotpressMetaBox .zp-ZotpressMetaBox-Field-Radio{display:flex;align-items:center;justify-content:space-between}#zp-ZotpressMetaBox .zp-ZotpressMetaBox-Field-Radio label{font-size:.9em;text-transform:uppercase;margin:0 4px 0 15px;padding:0}#zp-ZotpressMetaBox .zp-ZotpressMetaBox-Sub input,#zp-ZotpressMetaBox .zp-ZotpressMetaBox-Sub select{font-size:inherit}#zp-ZotpressMetaBox .zp-ZotpressMetaBox-Sub select{height:auto;min-height:1em}#zp-ZotpressMetaBox .zp-ZotpressMetaBox-Sub .right{float:right;line-height:1}#zp-ZotpressMetaBox .zp-ZotpressMetaBox-Sub h5{border-top:1px solid #eee;font-size:1em;font-weight:700;margin:.5em 0;padding:1em 0 .25em}#zp-ZotpressMetaBox .zp-ZotpressMetaBox-Sub span.toggle{cursor:pointer;display:block;font-size:.8em;font-weight:400;line-height:2;padding:5px;text-transform:uppercase;width:100%}#zp-ZotpressMetaBox .zp-ZotpressMetaBox-Sub span.toggle-button{content:"\f347";cursor:pointer;display:inline-block;float:right;font-size:15px;line-height:15px;margin:4px 8px 0 0;padding:0;text-align:right;width:auto;height:16px}#zp-ZotpressMetaBox .zp-ZotpressMetaBox-Sub span.toggle-button.dashicons-arrow-up-alt2{content:"\f343"}#zp-ZotpressMetaBox .zp-ZotpressMetaBox-Sub hr{border:none;background-color:#fff;clear:both;margin:10px 0 0;padding:0;height:1px}div#ZotpressMetaBox div#zp-ZotpressMetaBox-Biblio-Options select#zp-ZotpressMetaBox-Biblio-Options-Style{float:none}input#zp-ZotpressMetaBox-Biblio-Options-Format,input#zp-ZotpressMetaBox-InText-Options-Format,input#zp-ZotpressMetaBox-InTextBib-Options-Format{min-width:185px}#zp-ZotpressMetaBox .zp-ZotpressMetaBox-Sub p.note{color:#666;font-size:.8em;margin:.5em 1em 1em}#zp-ZotpressMetaBox .zp-ZotpressMetaBox-Sub p.note code{font-size:1.1em}div#zp-ZotpressMetaBox-Inner{padding:15px 0}div#ZotpressMetaBox.postbox div.inside{margin:0;padding:0}div#ZotpressMetaBox h3.hndle span{background:transparent url(../images/icon.png) no-repeat left center;padding-left:22px}div.zp-ZotpressMetaBox-Tabs{border-radius:5px;-moz-border-radius:5px;border:1px solid #ccc;padding:1px;margin-bottom:10px}div.zp-ZotpressMetaBox-Tabs ul.ui-tabs-nav{display:none;border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;background-color:#f6f6f6;padding:3px;padding-bottom:0;overflow:hidden}div.zp-ZotpressMetaBox-Tabs ul li,div.zp-ZotpressMetaBox-Tabs ul.ui-tabs-nav li{margin:0;padding:5px 5px 0;float:left;height:13px}div.zp-ZotpressMetaBox-Tabs ul.ui-tabs-nav li.ui-state-active{border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;background-color:#fff;height:13px}div.zp-ZotpressMetaBox-Tabs ul.ui-tabs-nav li a{letter-spacing:1px;padding:0 3px;text-decoration:none;text-transform:uppercase;vertical-align:top}div.zp-ZotpressMetaBox-Tabs ul.ui-tabs-nav li.ui-state-active a{color:#333}div.zp-ZotpressMetaBox-Tabs input[type=radio]{vertical-align:text-top}div#ZotpressMetaBox h4{margin:0;padding:0}div#ZotpressMetaBox div.zp-Tab label{font-size:12px;display:block;margin:0;padding:0 0 5px 0}div#ZotpressMetaBox div.zp-Tab select{width:100%;height:5em!important}div.zp-Tab{background-color:#fff;padding:.6em!important}p.zp-Note{font-size:9px!important;font-style:italic!important;color:#aaa!important;margin-top:0!important}p.zp-Note{font-size:10px!important;color:#888!important}div.zp-Tab span.label{margin-top:5px;font-weight:700}div.zp-Tab span.label em{font-style:normal;text-decoration:underline}.postbox div.zp-Tab input[type=text],div.zp-Tab select{margin-bottom:10px}#normal-sortables .zp-ZotpressMetaBox-Tabs .sm{display:none}#normal-sortables .zp-ZotpressMetaBox-Tabs .wide{display:block}#side-sortables .zp-ZotpressMetaBox-Tabs .sm{display:block}#side-sortables .zp-ZotpressMetaBox-Tabs .wide{display:none} diff --git a/css/zotpress.shortcode.css b/css/zotpress.shortcode.css index dbeaed4..ac1365d 100644 --- a/css/zotpress.shortcode.css +++ b/css/zotpress.shortcode.css @@ -1,196 +1,316 @@ +/* START OF BASIC SHORTCODES */ - /* START OF BASIC SHORTCODE CSS */ - - div.zp-Zotpress { - margin: 0 0 1em; - } - - /* Thanks to http://css-tricks.com/snippets/css/prevent-long-urls-from-breaking-out-of-container/ */ - div.zp-Zotpress a { - -ms-word-break: break-all; - word-break: break-all; - word-break: break-word; - -webkit-hyphens: auto; - -moz-hyphens: auto; - hyphens: auto; - } - - div.zp-Zotpress div.zp-Entry.zp-HasImage { - clear: both; - min-height: 150px; - } - div.zp-Zotpress div.zp-Entry-Image { - float: left; - } - - div.zp-Zotpress div.zp-Entry .csl-left-margin { - width: auto !important; - } - - div.zp-Zotpress div.zp-Entry.zp-HasImage div.csl-bib-body { - margin-left: 170px; - } - - div.zp-Zotpress span.zp-Loading { - border: 1px solid #ddd; - border-radius: 5px; - -moz-border-radius: 5px; - background: #f3f3f3 url('images/loading_list.gif') no-repeat top left; - display: block; - margin: auto; - overflow: hidden; - width: 33px; - height: 32px; - } - div.zp-Zotpress span.zp-Loading span { - visibility: hidden; - } - div.zp-Zotpress p.zp-NoCitations { - margin: 0; - } - - a.zp-CiteRIS, - a.zp-DownloadURL { - font-size: 0.9em; - text-transform: uppercase; - } - a.zp-CiteRIS:before, - a.zp-DownloadURL:before { - content: "("; - } - a.zp-CiteRIS:after, - a.zp-DownloadURL:after { - content: ")"; - } - - - /* In-Text Citations */ - - .zp-ZotpressShortcode.cite .summary, - .zp-ZotpressShortcode.bib .summary { - display: none; - } - - - - /* START OF BROWSE LIB */ - - #zp-Browse-Bar { - background-color: #fff; - border: 2px solid #000; - } - #zp-Browse-Bar:before, - #zp-Browse-Bar:after { - content: ""; - display: table; - } - #zp-Browse-Bar:after { - clear: both; - } - - #zp-Browse-Collections, - #zp-Browse-Tags { - float: left; - width: 50%; - } - - .zp-Browse-Select { - overflow: hidden; - width: 100%; - height: 34px; - } - .zp-Browse-Select select { - background: transparent; - border: none; - color: #000; - cursor: pointer; - font-size: 1em; - margin: 0; - padding: 0 0.5em; - width: 100%; - height: 34px; - } - #zp-Browse-Collections-Select { - border-right: 2px solid #000; - } - - #zp-Pagination, - .zp-Collection-Title { - letter-spacing: 0.15em; - font-size: 0.9em; - font-weight: bold; - margin: 3em 0 2em; - text-transform: uppercase; - } - #zp-Pagination { - margin: 2em 0 0; - } - - .zp-Entry-Image { - float: right; - margin: 0 0 1em 1em; - } - - #zp-Zotpress-SearchBox input[type="radio"] { - cursor: pointer; - margin: 0.5em; - vertical-align: middle; - } - #zp-Zotpress-SearchBox label { - cursor: pointer; - } - #zp-Zotpress-SearchBox .zp-SearchBy { - margin-left: 0.5em; - } - - .zpSearchLoading { - visibility: hidden; - display: block; - margin: 1em auto; - } - .zpSearchLoading.show { - visibility: visible; - } - - .zpSearchResultsItem .item_key { - display: block; - font-weight: bold; - margin-bottom: 2em; - } - - .zpSearchResultsItem.hidden { - display: none; - } - - #zpSearchResultsPaging:before, - #zpSearchResultsPaging:after { - content: ""; - display: table; - } - #zpSearchResultsPaging:after { - clear: both; - } - #zpSearchResultsPaging span.title { - display: block; - float: left; - font-weight: bold; - margin: 2px; margin-left: 0; - padding: 0.5em 1em 0.5em 0; - text-transform: uppercase; - } - #zpSearchResultsPaging a { - border: none; - display: block; - float: left; - margin: 2px; - padding: 0.5em 1em; - text-decoration: none; - } - #zpSearchResultsPaging a.selected { - border: 2px solid #000; - margin: 0; - } - - /* END OF BROWSE LIB */ - \ No newline at end of file +div.zp-Zotpress { + /* Modified to fit with WP 2020 theme */ + margin-top: 0; + margin-bottom: 1em; + /* margin: 0 0 1em; */ +} +div.zp-Zotpress div.zp-List.loading { + background: transparent url('../images/loading_default.gif') no-repeat center bottom; + padding-bottom: 21px; + min-height: 2em; +} + +/* Thanks to http://css-tricks.com/snippets/css/prevent-long-urls-from-breaking-out-of-container/ */ +div.zp-Zotpress a { + -ms-word-break: break-all; + word-break: break-all; + word-break: break-word; + -webkit-hyphens: auto; + -moz-hyphens: auto; + hyphens: auto; +} + +div.zp-Zotpress div.zp-Entry.zp-HasImage { + clear: both; +} +div.zp-Zotpress div.zp-Entry-Image { + float: right; +} + +a.zp-CiteRIS, +a.zp-DownloadURL { + font-size: 0.8em; + text-transform: uppercase; +} +a.zp-CiteRIS:before, +a.zp-DownloadURL:before { + content: "("; +} +a.zp-CiteRIS:after, +a.zp-DownloadURL:after { + content: ")"; +} + +.zp-List p.hide { + display: none; +} + +.zp-Info { + background: #ffeaa7 url('../images/icon-64x64.png') no-repeat top 0.4em right 0.4em; + background-size: auto 2em; + border: 1px solid #fdcb6e; + padding: 0.5em; + padding-right: 3em; +} + + +/* In-Text Citations */ + +.zp-ZotpressShortcode.cite .summary, +.zp-ZotpressShortcode.bib .summary { + display: none; +} + +.zp-InText-Citation.loading { + background: transparent url('../images/loading_default.gif') no-repeat center; + background-size: contain; + display: inline-block; + margin: 0 !important; + width: 1em; + height: 1em; +} + +/* END OF BASIC SHORTCODES */ + + + +/* START OF BROWSE LIB */ + +.zp-Browse-Bar { + background-color: #fff; + border: 2px solid #000; +} +.zp-Browse-Bar:before, +.zp-Browse-Bar:after { + content: ""; + display: table; +} +.zp-Browse-Bar:after { + clear: both; +} + +.zp-Browse-Collections, +.zp-Browse-Tags { + float: left; + width: 50%; +} + +.zp-Browse-Select { + overflow: hidden; + width: 100%; + /* height: 34px; */ +} +.zp-Browse-Select select { + background: transparent; + border: none; + color: #000; + cursor: pointer; + font-size: 1em; + margin: 0; + padding: 0 0.5em; + width: 100%; + height: 34px; +} +.zp-Browse-Collections-Select { + border-right: 2px solid #000; +} + +.zp-Collection-Title { + letter-spacing: 0.15em; + font-size: 0.9em; + font-weight: bold; + margin: 3em 0 0 0; + padding: 0 0 2em; + text-transform: uppercase; +} + +.zp-Entry-Image { + float: right; + margin: 0 0 1em 1em; +} + +.zp-Zotpress-SearchBox .zp-SearchBy-Container { + border-top: 1px solid #ccc; + display: flex; + justify-content: flex-start; + align-items: center; + padding: 0.5em 0; +} +.zp-Zotpress-SearchBox .zpSearchFilterContainer { + display: flex; + justify-content: space-evenly; + align-items: center; + margin: 0 0.5em; +} +.zp-Zotpress-SearchBox input[type="radio"] { + cursor: pointer; + margin: 0 0.5em 0 0; + vertical-align: middle; +} +.zp-Zotpress-SearchBox label { + cursor: pointer; + margin: 0; +} +.zp-Zotpress-SearchBox .zp-SearchBy { + margin: 0 1.5em; +} +.zp-Zotpress-SearchBox label, +.zp-Zotpress-SearchBox .zp-SearchBy { + font-size: 0.5em; + letter-spacing: 0.1em; + text-transform: uppercase; +} + +.zpSearchLoading { + visibility: hidden; + display: block; + margin: 1em auto; +} +.zpSearchLoading.show { + visibility: visible; +} + +.zpSearchResultsItem:after { + clear: both; + content: ""; + display: table; +} + +.zpSearchResultsItem .item_key { + display: block; + font-weight: bold; + margin-bottom: 2em; +} + +.zpSearchResultsItem.hidden { + display: none; +} + +.zp-Zotpress-SearchBox-Input { + border: none; + width: 100%; +} + +.zpSearchResultsPagingContainer { + display: none; + margin: 2rem 0; +} + +.zpSearchResultsPagingContainer:before, +.zpSearchResultsPagingContainer:after { + content: ""; + display: table; +} +.zpSearchResultsPagingContainer:after { + clear: both; +} +.zpSearchResultsPagingContainerInner { + display: flex; + align-items: center; + justify-content: flex-start; +} +.zpSearchResultsPagingContainer span.title { + /* display: block; */ + /* float: left; */ + font-size: 0.8em; + font-weight: bold; + line-height: 2.6; + margin-right: 2rem; + /* margin: 2px; */ + /* margin-left: 0; */ + /* padding: 0 20px 0; */ + text-transform: uppercase; +} + +.zpSearchResultsPagingCrop { + position: relative; + /* float: left; */ + overflow: hidden; + width: calc(3.5rem * 5); + /* width: 13em; */ + height: 3.5rem; +} + +.zpSearchResultsPaging { + /* z-index: 0; */ + position: absolute; + top: 0; + left: 0; + /* height: inherit; */ + display: flex; +} + +.zpSearchResultsPaging a, +.zpSearchResultsPaging a:link { + display: block; + /* float: left; */ + line-height: 0.9; + margin: 0; + text-align: center; + text-decoration: none; + flex-shrink: 0; + /* width: 50px; */ + width: 3.5rem; +} +.zpSearchResultsPaging a:focus { + box-shadow: none; + outline: none; +} +.zpSearchResultsPaging a span { + border: 2px solid transparent; + display: block; + padding: calc(1rem - 4px) calc(1.2rem - 4px); +} +.zpSearchResultsPaging a.selected span { + border-color: #000; +} + +.zpSearchResultsPagingScroller { + /* float: left; */ + /* background-color: #fff; */ + margin-left: 2rem; + text-align: center; + /* width: 4.2em; */ + /* height: 3rem; */ +} +.zpSearchResultsPagingScroller span { + cursor: pointer; + display: inline-block; + font-size: 3.5rem; + line-height: 0.8; + /* padding: 5px 10px; */ + padding: 0 1rem; + + -webkit-user-select: none; /* Chrome all / Safari all */ + -moz-user-select: none; /* Firefox all */ + -ms-user-select: none; /* IE 10+ */ + user-select: none; +} +.zpSearchResultsPagingScroller span:active { + opacity: 0.2; +} + + +div.zp-List .zp_display_progress { + background: transparent url('../images/loading_default.gif') no-repeat center left; + font-size: 0.7em; + line-height: 2; + padding-left: 3em; + text-transform: uppercase; +} +div.zp-List .csl-left-margin { + text-align: left; + width: 2.5em !important; +} +div.zp-List .csl-right-inline { + margin-left: 2.75em !important; +} + +.ui-helper-hidden-accessible { + display: none; +} + +/* END OF BROWSE LIB */ diff --git a/css/zotpress.shortcode.min.css b/css/zotpress.shortcode.min.css new file mode 100644 index 0000000..9acb3f8 --- /dev/null +++ b/css/zotpress.shortcode.min.css @@ -0,0 +1 @@ +div.zp-Zotpress{margin-top:0;margin-bottom:1em}div.zp-Zotpress div.zp-List.loading{background:transparent url('../images/loading_default.gif') no-repeat center bottom;padding-bottom:21px;min-height:2em}div.zp-Zotpress a{-ms-word-break:break-all;word-break:break-all;word-break:break-word;-webkit-hyphens:auto;-moz-hyphens:auto;hyphens:auto}div.zp-Zotpress div.zp-Entry.zp-HasImage{clear:both}div.zp-Zotpress div.zp-Entry-Image{float:right}a.zp-CiteRIS,a.zp-DownloadURL{font-size:.8em;text-transform:uppercase}a.zp-CiteRIS:before,a.zp-DownloadURL:before{content:"("}a.zp-CiteRIS:after,a.zp-DownloadURL:after{content:")"}.zp-List p.hide{display:none}.zp-Info{background:#ffeaa7 url('../images/icon-64x64.png') no-repeat top .4em right .4em;background-size:auto 2em;border:1px solid #fdcb6e;padding:.5em;padding-right:3em}.zp-ZotpressShortcode.bib .summary,.zp-ZotpressShortcode.cite .summary{display:none}.zp-InText-Citation.loading{background:transparent url('../images/loading_default.gif') no-repeat center;background-size:contain;display:inline-block;margin:0!important;width:1em;height:1em}.zp-Browse-Bar{background-color:#fff;border:2px solid #000}.zp-Browse-Bar:after,.zp-Browse-Bar:before{content:"";display:table}.zp-Browse-Bar:after{clear:both}.zp-Browse-Collections,.zp-Browse-Tags{float:left;width:50%}.zp-Browse-Select{overflow:hidden;width:100%}.zp-Browse-Select select{background:0 0;border:none;color:#000;cursor:pointer;font-size:1em;margin:0;padding:0 .5em;width:100%;height:34px}.zp-Browse-Collections-Select{border-right:2px solid #000}.zp-Collection-Title{letter-spacing:.15em;font-size:.9em;font-weight:700;margin:3em 0 0 0;padding:0 0 2em;text-transform:uppercase}.zp-Entry-Image{float:right;margin:0 0 1em 1em}.zp-Zotpress-SearchBox .zp-SearchBy-Container{border-top:1px solid #ccc;display:flex;justify-content:flex-start;align-items:center;padding:.5em 0}.zp-Zotpress-SearchBox .zpSearchFilterContainer{display:flex;justify-content:space-evenly;align-items:center;margin:0 .5em}.zp-Zotpress-SearchBox input[type=radio]{cursor:pointer;margin:0 .5em 0 0;vertical-align:middle}.zp-Zotpress-SearchBox label{cursor:pointer;margin:0}.zp-Zotpress-SearchBox .zp-SearchBy{margin:0 1.5em}.zp-Zotpress-SearchBox .zp-SearchBy,.zp-Zotpress-SearchBox label{font-size:.5em;letter-spacing:.1em;text-transform:uppercase}.zpSearchLoading{visibility:hidden;display:block;margin:1em auto}.zpSearchLoading.show{visibility:visible}.zpSearchResultsItem:after{clear:both;content:"";display:table}.zpSearchResultsItem .item_key{display:block;font-weight:700;margin-bottom:2em}.zpSearchResultsItem.hidden{display:none}.zp-Zotpress-SearchBox-Input{border:none;width:100%}.zpSearchResultsPagingContainer{display:none;margin:2rem 0}.zpSearchResultsPagingContainer:after,.zpSearchResultsPagingContainer:before{content:"";display:table}.zpSearchResultsPagingContainer:after{clear:both}.zpSearchResultsPagingContainerInner{display:flex;align-items:center;justify-content:flex-start}.zpSearchResultsPagingContainer span.title{font-size:.8em;font-weight:700;line-height:2.6;margin-right:2rem;text-transform:uppercase}.zpSearchResultsPagingCrop{position:relative;overflow:hidden;width:calc(3.5rem * 5);height:3.5rem}.zpSearchResultsPaging{position:absolute;top:0;left:0;display:flex}.zpSearchResultsPaging a,.zpSearchResultsPaging a:link{display:block;line-height:.9;margin:0;text-align:center;text-decoration:none;flex-shrink:0;width:3.5rem}.zpSearchResultsPaging a:focus{box-shadow:none;outline:0}.zpSearchResultsPaging a span{border:2px solid transparent;display:block;padding:calc(1rem - 4px) calc(1.2rem - 4px)}.zpSearchResultsPaging a.selected span{border-color:#000}.zpSearchResultsPagingScroller{margin-left:2rem;text-align:center}.zpSearchResultsPagingScroller span{cursor:pointer;display:inline-block;font-size:3.5rem;line-height:.8;padding:0 1rem;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.zpSearchResultsPagingScroller span:active{opacity:.2}div.zp-List .zp_display_progress{background:transparent url('../images/loading_default.gif') no-repeat center left;font-size:.7em;line-height:2;padding-left:3em;text-transform:uppercase}div.zp-List .csl-left-margin{text-align:left;width:2.5em!important}div.zp-List .csl-right-inline{margin-left:2.75em!important}.ui-helper-hidden-accessible{display:none} diff --git a/images/bullet.gif b/images/bullet.gif deleted file mode 100644 index 9ff1fb22591b314104e6570d8f1ca49781a0ab6c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 270 zcmZ?wbhEHbWM^P!xXQrL+}gf-&w<{cL&tFfSJ~v^~l)LvH zo<4iw!J{Y5t!-7+bw`e!Sh95a@l)sCfBgFO+xJta&wl#+?fj+dSFT>aefR#p1Bc#z z_&j~ath@K_-@5zg>-QhG?%ezG?Z>J$>wfq@^!iX@iK>f{7U+jFnd$8LR=d18PA4 diff --git a/images/help.png b/images/help.png deleted file mode 100644 index da1889e963c6dd72464c4ab235437db80fdd02a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 479 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 literal 0 HcmV?d00001 diff --git a/images/icon-add.png b/images/icon-add.png deleted file mode 100644 index 3b425a8c1d7b7964be9844a96c4a3721f0838985..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 701 zcmV;u0z&3DhgdQCDcyDLE@6EhNC22N;Hdb%F6E8jTL}`Ml9=HjRG2FMvIKh=BvHsUgX%V1cojN~JvE zaG2WdHg!53>UO&#iOpssyWLKzs!}$arFcC4lid#(A0@Mbt#mpa^!a?$V)1(6IlZr! zsM>3b16(Imy6N!K#+CbYk`F1D%M^>nzDkmGRmPqDet!U&4|ScEvrp;8&L`UY)1m>F z31AN&V&H%a4YV?6Urr{I5;CpjH|cY|GU|`E@=9Q6h=Bux23m#7xZrd;NtR`LyR$XX zV2i~v{X&AHC<;LXt%4pw4BI_uh}C%XWIeM43$H zd!bNR75}rx<9Qei26v0aqH&yo11>aT49ro-_4GBWyeaBxUHfBxJ>Mn)$7_wV2PK79CK zKWWk={9fkp@hktaZR^$_TQ^JdclG{av#^||p`r0xQc}`|ot@o7Q&W?Hlate&hlj`8 z#Khzu)TOu$1bX>B(7+;|>|6%UfWSnM20=l=i*Me%F@O8^t-h_T?YS2(UTA#&{Mmtz zkM9)TNC6rq$jHvVk=4YMjkl_%6DYJAB(AEey5rTWS1N!0{NXV+HZEsnW#t6%LE?A~ zWKmMK|Nrx+^snQ`Sb>I@1Mz)YQIKRU}R)u3rrf*pi(Y&c6MeU3}S=if$5JEWH?a03r-gT(-+^Z zTet226?FpB+e{Z17gm@YFAyO4q!Sp!8bAxJmn>O=KVg6S_DvdSSU58?Guz|GkDp=- zCy+chH@5{B7uP?a;rJ7_fq}vI_V)HWZfTEj?F-jd_zOSWnj|zDK0Laj<;~w zvuBSGFpOM)E|5%2O#Fwg(%&YHDiwjx2|sY(TN81dU-($ubLyL5f_F)a-%E mgVcds_#T&mgRg)E2rvL0`wu`f-Xc{10000o-_4GBWyeaBxUHfBxJ>Mn)$7_wV2PK79CK zKWWk={9fkp@hktaZR^$_TQ^JdclG{av#^||p`r0xQc}`|ot@o7Q&W?Hlate&hlj`8 z#Khzu)TOu$1bX>B(7+;|>|6%UfWSnM20=l=i*Me%F@O8^t-h_T?YS2(UTA#&{Mmtz zkM9)TNC6rq$jHvVk=4YMjkl_%6DYJAB(AEey5rTWS1N!0{NXV+HZEsnW#t6%LE?A~ zWKmMK|Nrx+^snQ`Sb>I@1Mz)YQIlTAQCKpKz=1>&0-2GKk)Lkex@EC%-@Xi>umCWG6S{r-HXl%fN@;27 zIc8>NiT(Tct3G-1#4IW*>JG>ZkQm&Bz%*4B6BF~n#l@xB-Q8Wu#>U1NXo(;&7WvrN z*f_1Nt;^rNdlwE=ssdsI>GwyE9&H91!gB4}wUr<S+fR| zS6zTM*9Hd%uO<`$;^N}}+S=Ogz>+cCg}|^|@#)hi+t;sOzXPWJd#S0ZjKCc60m+3} z0nodg(1-)O92mxXVChE?nzsH!(_1K1d^b`$gr!lKo^rJGx|=5Hkm?02K!5=N|1^7k Tp@POm00000NkvXXu0mjfmnC(E diff --git a/images/icon-edit.png b/images/icon-edit.png deleted file mode 100644 index 130538768e0ecdd918bd124d9f4f0123074c3bac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 787 zcmV+u1MK{XP)5%xu68%w+Sp}#>%D!wvoX4ox30}F~myr&vkWmPU=iuWm(om z@qK&<7o5BCelmbW^A%XcYPemsATKe&V6a!@mCpC|^$7$JNL@*0q@k@YKymHG)uu@_ ztv|v~sR9*>q8BHISV<6sgH=^k5JeG^Bo#LI^Q)&&Iy!-rA4rE$zUIUAGV#Q1*^Umw_vf@O&(uV32x9}n8z=77@ZQUt|Ay(vPc|Q;c%+1cu z>WPG=LDLc#elv_3!8yjP#f;{9U zMjr!X7AkEv+a-RLLo`g$Xq4r0xdKG*v_?7dke8U^VZzkZR3(4ZI2?}47K^2opYwix zQ7p!+&`B+))9H~=DD;>w&2uhJIibYS+UTNj?cg#QYdNk>t~IWuV)H)%1^|p5XN!002ovPDHLkV1h%GaEkx{ diff --git a/images/icon-list.png b/images/icon-list.png deleted file mode 100644 index 6b7c191a6de2b4a4034e2f6afbc4da0be97e2173..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 710 zcmV;%0y+JOP)o-_4GBWyeaBxUHfBxJ>Mn)$7_wV2PK79CK zKWWk={9fkp@hktaZR^$_TQ^JdclG{av#^||p`r0xQc}`|ot@o7Q&W?Hlate&hlj`8 z#Khzu)TOu$1bX>B(7+;|>|6%UfWSnM20=l=i*Me%F@O8^t-h_T?YS2(UTA#&{Mmtz zkM9)TNC6rq$jHvVk=4YMjkl_%6DYJAB(AEey5rTWS1N!0{NXV+HZEsnW#t6%LE?A~ zWKmMK|Nrx+^snQ`Sb>I@1Mz)YQIlTAQCKnExSHf-213rTD@G|hoPC=e?F@mZjn zPN*C*0Et(?!w{IZ!p+Ui-O&`e*xA{cv9Ymj^!N8Sm_L6$8!)+)0S!wlEiDxS(h49o zAa+GXg#?NVfoY2msF4%h3%o#}qM{l9G}FNtM5Q_bwbrt5{oG zmjmhdMCawUwzi{@k&z5yVq!sASy{3`mw|-$0Mp}bsFFP(FB5Gb(17 + + + \ No newline at end of file diff --git a/images/loading_import.GIF b/images/loading_import.gif similarity index 100% rename from images/loading_import.GIF rename to images/loading_import.gif diff --git a/images/loading_import_lg.gif b/images/loading_import_lg.gif deleted file mode 100644 index c49f4d852e45cf9570afeecf22a9783220c57e9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6804 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 L+W)IRSq}XJvNz1C diff --git a/images/loading_list.gif b/images/loading_list.gif deleted file mode 100644 index bce8e071b83d0c3b0e1957ffdbdb4275328978bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9427 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 diff --git a/images/pp.png b/images/pp.png new file mode 100644 index 0000000000000000000000000000000000000000..2900df784fc27b572afd3c859db688ab25456d4c GIT binary patch literal 571 zcmV-B0>u4^P)JP00064NklwbY`CiMH0!fI`Hj=%8~27f}!q;vfa7Tfm_>*-kDlcJZ?< zbW()k7ZtQxC?rH7q($1A#8UI=`?&A^9by7bJ#e=3I~+KSuHOTG6oJQgEd+czOuIzn zg6Tq+zjrh^PJt}*s#W;5%)MOz5rK%3w2Nvl=WaBY7Qu1&>_FA6g)@I9V1tKD9zM9=$7!u%c38*$3?ItqKmR$)Y9k@zD)f+HIFNC-e zoc5%TCxO`DEV_*rP^&6Zl5wE}%7qv>1nJt!lUZTPV|>@()q%cHXDjpfaN+L;2^~z+ zK#oJzg(oZ=i9sqb4N?Z76u>zEkh7jwN?M$YE@oG@m9zSp$-2pK@iJ=Z)N2g~2lo97 zgOrQP+#}9ljZIjq zpO70%Je<6Fi$%QvM{4Y3JMR=X;5Zfni3FZc-ku6XjxdkmXTAf6uZ6W%hGX$-tPM!B z<{>GW^Rt9ey}qQTQ!t|O{|@9RmM;M~O7q#U?_&miCo2$quPpTXYh?ak+Yy{)3WCz}HRyqicP?gz>y@E2VQ6VgaUhP(g(002ov JPDHLkV1g_H1)u-` literal 0 HcmV?d00001 diff --git a/images/sprite.png b/images/sprite.png index 24e24cb29384c0cd27a51b4a1c21ae68d0a8144e..ae35f901a29512b25039d5efce75c50dec25163a 100644 GIT binary patch literal 48758 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 mj13Goi@{aJ4*Fz%f7{zA?u_;_b|#D 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 diff --git a/images/syncing_bw.gif b/images/syncing_bw.gif deleted file mode 100644 index 0443387c3e252aeb3cbe90c9631eefc3cc6ac5bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 847 zcmZ?wbhEHb6krfw_`<;O|NsA)GiUz({d@iT^=HqXojrT@iWMu~y?b~2_U(lW7al); z{NTZZpFe-TdiCn_=g+rp-MV}CZU$0-;(u;G*N|Xm#{gF&Jp*P&pkBp)QqD!Gi6yBi z3gww4848J6i4{5di79%Sd1?6!ia%L6xqzy4K(>G!$-o+*pwO3+Id7?fNRFabOTwzP zGenL}lrnAjz;?5vA-b2vhAFc(V4^@PV`uB4zBQUU4W3ay7O5nC*yS;4fdgv-pu5*<>|Hn(-{gjt4u>v0=H?uP};XReTu;fv2}|U_B&<^oL6>a z;I;`cH(Wp`0?>!bpC@SC67kUDIuanlsk@}z@V#*(mzDEr zL+>pfElm&EJoIL$+}v2nz#*{j;u+Q(S=@S!;Vuq$_#zn=8F+Atwdxr3IbGrE%NFo@ z_Le8q-n5*VrA8&2H%616ryHxKL6Bf=P?*AGD00+cMYFRU+Zyp>+1*WZ7!{qKB-k@F zZfDvzLD{v*qRJ^Sq9J*A?xHeoA*F>1FAptFXiRA14Ru>4S#(E|Z)w46&ChB78?agf z@*6PrRygpu8VVdbDUlm1aeSwQN6&?}8yf5aT`VR{3ePokB$l};CVDVL1kd1T%r#xI zl`+Z1V+$L@s-1~RI$V9K4F$$x$w!nosQ=)7qr`4vW*(rX6`|jt(bKDf)zWyVr5-?! zaV&E%VK}tun4^;CM2-!!7AA1m<+ZYU8mM$g^vZdgZ{qdPVL#ZZThgr6)a)uHBCzDJ t?!|-^9SH}RehL_Na!72L?$FQYY@WfPZ^)9y8l&0Wqo&AU4N9J1002!R5v%|J diff --git a/js/jquery.livequery.js b/js/jquery.livequery.js deleted file mode 100644 index dde8ad8..0000000 --- a/js/jquery.livequery.js +++ /dev/null @@ -1,250 +0,0 @@ -/*! Copyright (c) 2008 Brandon Aaron (http://brandonaaron.net) - * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) - * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses. - * - * Version: 1.0.3 - * Requires jQuery 1.1.3+ - * Docs: http://docs.jquery.com/Plugins/livequery - */ - -(function($) { - -$.extend($.fn, { - livequery: function(type, fn, fn2) { - var self = this, q; - - // Handle different call patterns - if ($.isFunction(type)) - fn2 = fn, fn = type, type = undefined; - - // See if Live Query already exists - $.each( $.livequery.queries, function(i, query) { - if ( self.selector == query.selector && self.context == query.context && - type == query.type && (!fn || fn.$lqguid == query.fn.$lqguid) && (!fn2 || fn2.$lqguid == query.fn2.$lqguid) ) - // Found the query, exit the each loop - return (q = query) && false; - }); - - // Create new Live Query if it wasn't found - q = q || new $.livequery(this.selector, this.context, type, fn, fn2); - - // Make sure it is running - q.stopped = false; - - // Run it immediately for the first time - q.run(); - - // Contnue the chain - return this; - }, - - expire: function(type, fn, fn2) { - var self = this; - - // Handle different call patterns - if ($.isFunction(type)) - fn2 = fn, fn = type, type = undefined; - - // Find the Live Query based on arguments and stop it - $.each( $.livequery.queries, function(i, query) { - if ( self.selector == query.selector && self.context == query.context && - (!type || type == query.type) && (!fn || fn.$lqguid == query.fn.$lqguid) && (!fn2 || fn2.$lqguid == query.fn2.$lqguid) && !this.stopped ) - $.livequery.stop(query.id); - }); - - // Continue the chain - return this; - } -}); - -$.livequery = function(selector, context, type, fn, fn2) { - this.selector = selector; - this.context = context || document; - this.type = type; - this.fn = fn; - this.fn2 = fn2; - this.elements = []; - this.stopped = false; - - // The id is the index of the Live Query in $.livequery.queries - this.id = $.livequery.queries.push(this)-1; - - // Mark the functions for matching later on - fn.$lqguid = fn.$lqguid || $.livequery.guid++; - if (fn2) fn2.$lqguid = fn2.$lqguid || $.livequery.guid++; - - // Return the Live Query - return this; -}; - -$.livequery.prototype = { - stop: function() { - var query = this; - - if ( this.type ) - // Unbind all bound events - this.elements.unbind(this.type, this.fn); - else if (this.fn2) - // Call the second function for all matched elements - this.elements.each(function(i, el) { - query.fn2.apply(el); - }); - - // Clear out matched elements - this.elements = []; - - // Stop the Live Query from running until restarted - this.stopped = true; - }, - - run: function() { - // Short-circuit if stopped - if ( this.stopped ) return; - var query = this; - - var oEls = this.elements, - els = $(this.selector, this.context), - nEls = els.not(oEls); - - // Set elements to the latest set of matched elements - this.elements = els; - - if (this.type) { - // Bind events to newly matched elements - nEls.bind(this.type, this.fn); - - // Unbind events to elements no longer matched - if (oEls.length > 0) - $.each(oEls, function(i, el) { - if ( $.inArray(el, els) < 0 ) - $.event.remove(el, query.type, query.fn); - }); - } - else { - // Call the first function for newly matched elements - nEls.each(function() { - query.fn.apply(this); - }); - - // Call the second function for elements no longer matched - if ( this.fn2 && oEls.length > 0 ) - $.each(oEls, function(i, el) { - if ( $.inArray(el, els) < 0 ) - query.fn2.apply(el); - }); - } - } -}; - -$.extend($.livequery, { - guid: 0, - queries: [], - queue: [], - running: false, - timeout: null, - - checkQueue: function() { - if ( $.livequery.running && $.livequery.queue.length ) { - var length = $.livequery.queue.length; - // Run each Live Query currently in the queue - while ( length-- ) - $.livequery.queries[ $.livequery.queue.shift() ].run(); - } - }, - - pause: function() { - // Don't run anymore Live Queries until restarted - $.livequery.running = false; - }, - - play: function() { - // Restart Live Queries - $.livequery.running = true; - // Request a run of the Live Queries - $.livequery.run(); - }, - - registerPlugin: function() { - $.each( arguments, function(i,n) { - // Short-circuit if the method doesn't exist - if (!$.fn[n]) return; - - // Save a reference to the original method - var old = $.fn[n]; - - // Create a new method - $.fn[n] = function() { - // Call the original method - var r = old.apply(this, arguments); - - // Request a run of the Live Queries - $.livequery.run(); - - // Return the original methods result - return r; - } - }); - }, - - run: function(id) { - if (id != undefined) { - // Put the particular Live Query in the queue if it doesn't already exist - if ( $.inArray(id, $.livequery.queue) < 0 ) - $.livequery.queue.push( id ); - } - else - // Put each Live Query in the queue if it doesn't already exist - $.each( $.livequery.queries, function(id) { - if ( $.inArray(id, $.livequery.queue) < 0 ) - $.livequery.queue.push( id ); - }); - - // Clear timeout if it already exists - if ($.livequery.timeout) clearTimeout($.livequery.timeout); - // Create a timeout to check the queue and actually run the Live Queries - $.livequery.timeout = setTimeout($.livequery.checkQueue, 20); - }, - - stop: function(id) { - if (id != undefined) - // Stop are particular Live Query - $.livequery.queries[ id ].stop(); - else - // Stop all Live Queries - $.each( $.livequery.queries, function(id) { - $.livequery.queries[ id ].stop(); - }); - } -}); - -// Register core DOM manipulation methods -$.livequery.registerPlugin('append', 'prepend', 'after', 'before', 'wrap', 'attr', 'removeAttr', 'addClass', 'removeClass', 'toggleClass', 'empty', 'remove'); - -// Run Live Queries when the Document is ready -$(function() { $.livequery.play(); }); - - -// Save a reference to the original init method -var init = $.prototype.init; - -// Create a new init method that exposes two new properties: selector and context -$.prototype.init = function(a,c) { - // Call the original init and save the result - var r = init.apply(this, arguments); - - // Copy over properties if they exist already - if (a && a.selector) - r.context = a.context, r.selector = a.selector; - - // Set properties - if ( typeof a == 'string' ) - r.context = c || document, r.selector = a; - - // Return the result - return r; -}; - -// Give the init function the jQuery prototype for later instantiation (needed after Rev 4091) -$.prototype.init.prototype = $.prototype; - -})(jQuery); \ No newline at end of file diff --git a/js/zotpress.accounts.js b/js/zotpress.accounts.js deleted file mode 100644 index dc27960..0000000 --- a/js/zotpress.accounts.js +++ /dev/null @@ -1,347 +0,0 @@ -jQuery(document).ready( function() -{ - - - /* - - SETUP BUTTONS - - */ - - jQuery("input#zp-Zotpress-Setup-Options-Next").click(function() - { - window.parent.location = "admin.php?page=Zotpress&setup=true&setupstep=three"; - return false; - }); - - jQuery("input#zp-Zotpress-Setup-Options-Complete").click(function() - { - if ( jQuery(this).hasClass("import") ) - window.parent.location = "admin.php?page=Zotpress"; - else - window.parent.location = "admin.php?page=Zotpress&accounts=true"; - return false; - }); - - - - /* - - SYNC ACCOUNT WITH ZOTPRESS - - */ - - jQuery('#zp-Connect').click(function () - { - var data = 'connect=true' - + '&account_type=' + jQuery('select[name=account_type] option:selected').val() - + '&api_user_id=' + jQuery('input[name=api_user_id]').val() - + '&public_key=' + jQuery('input[name=public_key]').val() - + '&nickname=' + escape(jQuery('input[name=nickname]').val()); - - // Disable all the text fields - jQuery('input[name!=update], textarea, select').attr('disabled','true'); - - // Show the loading sign - jQuery('.zp-Errors').hide(); - jQuery('.zp-Success').hide(); - jQuery('.zp-Loading').show(); - - // Set up uri - var xmlUri = jQuery('input[name=ZOTPRESS_PLUGIN_URL]').val() + 'lib/actions/actions.php?'+data; - - if (jQuery('input[name=update]').val() !== undefined) - xmlUri += "&update=" + jQuery('input[name=update]').val(); - - // AJAX - jQuery.get(xmlUri, {}, function(xml) - { - var $result = jQuery('result', xml).attr('success'); - - if ($result == "true") - { - jQuery('div.zp-Errors').hide(); - jQuery('.zp-Loading').hide(); - jQuery('div.zp-Success').html("

Success! Your Zotero account has been validated.

\n"); - - jQuery('div.zp-Success').show(); - - // SETUP - if (jQuery("div#zp-Setup").length > 0) - { - jQuery.doTimeout(1000,function() { - window.parent.location = "admin.php?page=Zotpress&setup=true&setupstep=two"; - }); - } - - // REGULAR - else - { - jQuery.doTimeout(1000,function() - { - jQuery('div#zp-AddAccount').slideUp("fast"); - jQuery('form#zp-Add')[0].reset(); - jQuery('input[name!=update], textarea, select').removeAttr('disabled'); - jQuery('div.zp-Success').hide(); - - DisplayAccounts(); - }); - } - } - else // Show errors - { - jQuery('input, textarea, select').removeAttr('disabled'); - jQuery('div.zp-Errors').html("

Oops! "+jQuery('errors', xml).text()+"

\n"); - jQuery('div.zp-Errors').show(); - jQuery('.zp-Loading').hide(); - } - }); - - return false; - }); - - - - /* - - OAUTH MODAL - - */ - - jQuery('a.zp-OAuth-Button').livequery('click', function() { - tb_show('', jQuery(this).attr('href')+'&TB_iframe=true'); - return false; - }); - - - - - /* - - REMOVE ACCOUNT - - */ - - jQuery('#zp-Accounts').delegate(".actions a.delete", "click", function () { - - $this = jQuery(this); - $thisProject = $this.parent().parent(); - - var confirmDelete = confirm("Are you sure you want to remove this account?"); - - if (confirmDelete==true) - { - var xmlUri = jQuery('#ZOTPRESS_PLUGIN_URL').text() + 'lib/actions/actions.php?delete=' + $this.attr("href").replace("#", ""); - - jQuery.get(xmlUri, {}, function(xml) - { - if ( jQuery('result', xml).attr('success') == "true" ) - { - if ( jQuery('result', xml).attr('total_accounts') == 0 ) - window.location = 'admin.php?page=Zotpress'; - else - window.location = 'admin.php?page=Zotpress&accounts=true'; - } - else - { - alert( "Sorry - couldn't delete that account." ); - } - }); - } - - }); - - - - /* - - SET UP IMPORT BUTTON - - */ - - jQuery("iframe#zp-Setup-Import").ready(function() - { - jQuery("input#zp-Zotpress-Setup-Import").removeAttr('disabled'); - jQuery("input.zp-Import-Button").removeAttr('disabled'); - - // IMPORT ITEMS - jQuery("input#zp-Zotpress-Setup-Import-Items").click(function() - { - jQuery(".import .zp-Loading-Initial").show(); - jQuery(".import .zp-Import-Messages").show(); - jQuery("input[type=button]").attr('disabled', 'true'); - - jQuery("iframe#zp-Setup-Import").attr('src', jQuery("iframe#zp-Setup-Import").attr('src') + "&go=true&step=items&singlestep=true"); - - return false; - }); - - // IMPORT COLLECTIONS - jQuery("input#zp-Zotpress-Setup-Import-Collections").click(function() - { - jQuery(".import .zp-Loading-Initial").show(); - jQuery(".import .zp-Import-Messages").text("Importing collections 1-50 ...").show(); - jQuery("input[type=button]").attr('disabled', 'true'); - - jQuery("iframe#zp-Setup-Import").attr('src', jQuery("iframe#zp-Setup-Import").attr('src') + "&go=true&step=collections&singlestep=true"); - - return false; - }); - - // IMPORT TAGS - jQuery("input#zp-Zotpress-Setup-Import-Tags").click(function() - { - jQuery(".import .zp-Loading-Initial").show(); - jQuery(".import .zp-Import-Messages").text("Importing tags 1-50 ...").show(); - jQuery("input[type=button]").attr('disabled', 'true'); - - jQuery("iframe#zp-Setup-Import").attr('src', jQuery("iframe#zp-Setup-Import").attr('src') + "&go=true&step=tags&singlestep=true"); - - return false; - }); - - // IMPORT EVERYTHING - jQuery("input#zp-Zotpress-Setup-Import").click(function() - { - jQuery(".import .zp-Loading-Initial").show(); - jQuery(".import .zp-Import-Messages").show(); - jQuery("input[type=button]").attr('disabled', 'true'); - - jQuery("iframe#zp-Setup-Import").attr('src', jQuery("iframe#zp-Setup-Import").attr('src') + "&go=true&step=items"); - - return false; - }); - }); - - - - /* - - SET UP SYNC BUTTON - - */ - - //jQuery('div#zp-AccountsList div.zp-Account .actions a.sync').click(function(e) - //{ - // var $this = jQuery(this); - // - // // Disable sync link until done - // e.preventDefault(); - // - // // Prep and show loading sign - // $this.removeClass("success"); - // $this.removeClass("error"); - // $this.addClass("syncing"); - // - // // Add sync iframe to DOM - // if (jQuery("iframe#zp-Sync-" + jQuery("span", $this).text()).length == 0) - // { - // jQuery(' - - - - -
-
-
Importing selected collection(s) ...
-
- - - - - - - - - - - - \ No newline at end of file + + +
+ +
+ +
+ +
+ + + +
+ +
+ + +
+

!

+
+ + +
+ +
+ +
+ +
+ + + + + +
+ +
+ +
+ +
+ + + +
+ +
+ +

+ + + +
+ +
+ +
+ +
+ + diff --git a/lib/import/import.actions.php b/lib/import/import.actions.php deleted file mode 100644 index a20d499..0000000 --- a/lib/import/import.actions.php +++ /dev/null @@ -1,230 +0,0 @@ -array(0,"User ID was left blank."), - "api_user_id_format"=>array(0,"User ID was formatted incorrectly."), - "step_blank"=>array(0,"Step was not set."), - "step_format"=>array(0,"Step was not formatted correctly."), - "start_blank"=>array(0,"Start were not set."), - "start_format"=>array(0,"Start were not formatted correctly.") - ); - - - // CHECK API USER ID - - if ($_GET['api_user_id'] != "") - if (preg_match("/^[0-9]+$/", $_GET['api_user_id']) == 1) - $api_user_id = htmlentities($_GET['api_user_id']); - else - $errors['api_user_id_format'][0] = 1; - else - $errors['api_user_id_blank'][0] = 1; - - - // CHECK STEP - - if ($_GET['step'] != "") - if (preg_match("/^[a-z]+$/", $_GET['step']) == 1) - $step = htmlentities($_GET['step']); - else - $errors['step_format'][0] = 1; - else - $errors['step_blank'][0] = 1; - - - // CHECK START - - if ($_GET['start'] != "") - if (preg_match("/^[a-zA-Z0-9,]+$/", $_GET['start']) == 1) - if ( $step == "selective") - $start = htmlentities($_GET['start']); - else - $start = intval(htmlentities($_GET['start'])); - else - $errors['start_format'][0] = 1; - else - $errors['start_blank'][0] = 1; - - - // CHECK ERRORS - - $errorCheck = false; - foreach ($errors as $field => $error) { - if ($error[0] == 1) { - $errorCheck = true; - break; - } - } - - - // IMPORT - - if ($errorCheck == false) - { - // Setup - - $GLOBALS['zp_session'][$api_user_id]['items']['query_params'] = array(); - $GLOBALS['zp_session'][$api_user_id]['items']['query_total_entries'] = 0; - - $GLOBALS['zp_session'][$api_user_id]['collections']['query_params'] = array(); - $GLOBALS['zp_session'][$api_user_id]['collections']['query_total_entries'] = 0; - - $GLOBALS['zp_session'][$api_user_id]['tags']['query_params'] = array(); - $GLOBALS['zp_session'][$api_user_id]['tags']['query_total_entries'] = 0; - - - // ITEMS - - if ( isset($_GET['step']) && $_GET['step'] == "items") - { - global $wpdb; - - $zp_selective = false; - if ( isset($_GET['selective']) && preg_match("/^[a-zA-Z0-9,]+$/", $_GET['selective']) && $_GET['selective'] != "false" ) - $zp_selective = $_GET['selective']; - - $zp_continue = zp_get_items ($wpdb, $api_user_id, $start, $zp_selective); - - if ($zp_continue === true) - { - zp_save_items ($wpdb, $api_user_id, true); - - $xml = "\n"; - } - else if ($zp_continue === false) // Execute import query, then move on - { - zp_save_items ($wpdb, $api_user_id, false); - - $xml = "\n"; - } - else // error - { - $xml = "\n"; - $xml = "". $zp_continue ."\n"; - } - } - - - // COLLECTIONS - - else if ( isset($_GET['step']) && $_GET['step'] == "collections") - { - global $wpdb; - - $zp_selective = false; - if ( isset($_GET['selective']) && preg_match("/^[a-zA-Z0-9,]+$/", $_GET['selective']) && $_GET['selective'] != "false" ) - $zp_selective = $_GET['selective']; - - $zp_continue = zp_get_collections ($wpdb, $api_user_id, $start, false, $zp_selective); - - if ($zp_continue["continue"] === true) - { - zp_save_collections ($wpdb, $api_user_id, true); - - $xml = "\n"; - - if ( $zp_selective) $xml .= "" . $zp_continue["collections"] . "\n"; - } - else // Execute import query, then move on - { - zp_save_collections ($wpdb, $api_user_id, false); - //zp_link_collections ($wpdb, $api_user_id); for wp custom types - - $xml = "\n"; - - if ( $zp_selective ) $xml .= "" . $zp_continue["collections"] . "\n"; - } - } - - - // TAGS - - else if ( isset($_GET['step']) && $_GET['step'] == "tags") - { - global $wpdb; - - $zp_selective = false; - if ( isset($_GET['selective']) && preg_match("/^[a-zA-Z0-9,]+$/", $_GET['selective']) && $_GET['selective'] != "false" ) - $zp_selective = $_GET['selective']; - - $zp_continue = zp_get_tags ($wpdb, $api_user_id, $start, $zp_selective); - - if ($zp_continue === true) - { - zp_save_tags ($wpdb, $api_user_id, true); - - $xml = "\n"; - } - else // Execute import query, then move on - { - zp_save_tags ($wpdb, $api_user_id, false); - - $xml = "\n"; - } - } - - } - - - // DISPLAY ERRORS - - else - { - $xml .= "\n"; - $xml .= "\n"; - $xml .= "\n"; - foreach ($errors as $field => $error) - if ($error[0] == 1) - $xml .= $error[1]."\n"; - $xml .= "\n"; - $xml .= "\n"; - } - } - - - - /* - - DISPLAY XML - - */ - - header('Content-Type: application/xml; charset=ISO-8859-1'); - echo "\n"; - echo "\n"; - echo $xml; - echo ""; - - exit; - - } // nonce - } - - add_action( 'wp_ajax_zotpress_import_ajax', 'zotpress_import_ajax' ); - -?> \ No newline at end of file diff --git a/lib/import/import.collection.php b/lib/import/import.collection.php deleted file mode 100644 index b96bbb0..0000000 --- a/lib/import/import.collection.php +++ /dev/null @@ -1,131 +0,0 @@ - 403 ) ); - -// Check api user id -$api_user_id = false; -if ($_GET['api_user_id'] != "") - if (preg_match("/^[0-9]+$/", $_GET['api_user_id']) == 1) $api_user_id = htmlentities($_GET['api_user_id']); - else wp_die( __('Only editors can access this page.'), __('Zotpress: Access Denied'), array( 'response' => '403' ) ); -else - wp_die( __('Only editors can access this page.'), __('Zotpress: Access Denied'), array( 'response' => '403' ) ); - -// Check nonce -if ( check_admin_referer( 'zp_importing_' . intval($api_user_id) . '_' . date('Y-j-G'), 'zp_nonce' ) ) -{ - // Access WordPress db - global $wpdb; - - // Ignore user abort - ignore_user_abort(true); - set_time_limit(60); // 1 minute (vs. 60*10) - - // Include Request Functionality - require("../request/rss.request.php"); - - // Include Import Functions - require("import.functions.php"); - - $GLOBALS['zp_session'][$api_user_id]['collections']['last_set'] = 0; - $GLOBALS['zp_session'][$api_user_id]['collections']['query_params'] = array(); - $GLOBALS['zp_session'][$api_user_id]['collections']['query_total_entries'] = 0; - - $zp_current_set = 0; - - while ( $zp_current_set <= $GLOBALS['zp_session'][$api_user_id]['collections']['last_set'] ) - { - $zp_continue = zp_get_collections ($wpdb, $api_user_id, $zp_current_set, true); - //zp_save_collections ($wpdb, $api_user_id, true, true); // saving now might be confusing to users because it doesn't import items or subcollections - $zp_current_set += 50; - } - - $output = "\n\n"; - $output .= ''; - $output .= ''; - $output .= "\n"; - $output .= "\n\n"; - - // Display - if ( $GLOBALS['zp_session'][$api_user_id]['collections']['query_total_entries'] > 0 ) - { - $output .= "
\n"; - for ($i = 0; $i <= ($GLOBALS['zp_session'][$api_user_id]['collections']['query_total_entries'] - 1); $i++ ) - { - $mod = $i * 7; - - $output .= "
"; - $output .= "" . $GLOBALS['zp_session'][$api_user_id]['collections']['query_params'][1+$mod] . ""; - $output .= "" . $GLOBALS['zp_session'][$api_user_id]['collections']['query_params'][6+$mod] . " items, "; - $output .= $GLOBALS['zp_session'][$api_user_id]['collections']['query_params'][5+$mod] . " subcollections"; - $output .= "
\n"; - } - $output .= "
\n\n"; - } - else // No collections exist - { - $output .= "

Sorry, no collections to display.

"; - } - - $output .= "\n"; - - echo $output; - - // Unset - $GLOBALS['zp_session'][$api_user_id]['collections']['query_params'] = array(); - $GLOBALS['zp_session'][$api_user_id]['collections']['query_total_entries'] = 0; - -} // nonce - -?> \ No newline at end of file diff --git a/lib/import/import.functions.php b/lib/import/import.functions.php deleted file mode 100644 index 93685e4..0000000 --- a/lib/import/import.functions.php +++ /dev/null @@ -1,1271 +0,0 @@ - 0 ): - preg_match_all( '/(\d{4})/', $date, $matches ); - if ( isset($matches[0][0]) ): - return $matches[0][0]; - else: - return ""; - endif; - else: - return ""; - endif; - } - - - - function zp_set_update_time ($time) - { - update_option("Zotpress_LastAutoUpdate", $time); - } - - - - function zp_get_api_user_id ($api_user_id_incoming=false) - { - if (isset($_GET['api_user_id']) && preg_match("/^[0-9]+$/", $_GET['api_user_id']) == 1) - $api_user_id = htmlentities($_GET['api_user_id']); - else if ($api_user_id_incoming !== false) - $api_user_id = $api_user_id_incoming; - else - $api_user_id = false; - - return $api_user_id; - } - - - - function zp_get_account ($wpdb, $api_user_id_incoming=false) - { - if ($api_user_id_incoming !== false) - $zp_account = $wpdb->get_results("SELECT * FROM ".$wpdb->prefix."zotpress WHERE api_user_id='".$api_user_id_incoming."'"); - else - $zp_account = $wpdb->get_results("SELECT * FROM ".$wpdb->prefix."zotpress ORDER BY id DESC LIMIT 1"); - - return $zp_account; - } - - - - function zp_get_accounts ($wpdb) - { - $zp_accounts = $wpdb->get_results("SELECT api_user_id FROM ".$wpdb->prefix."zotpress"); - - return $zp_accounts; - } - - - - //function zp_delete_collection ($term_id) - //{ - // wp_delete_term( $term_id, 'zp_collections' ); - // delete_option( 'zp_collection-'.$term_id.'-api_user_id' ); - // delete_option( 'zp_collection-'.$term_id.'-retrieved' ); - // delete_option( 'zp_collection-'.$term_id.'-parent' ); - // delete_option( 'zp_collection-'.$term_id.'-item_key' ); - // delete_option( 'zp_collection-'.$term_id.'-numCollections' ); - // delete_option( 'zp_collection-'.$term_id.'-numItems' ); - // delete_option( 'zp_collection-'.$term_id.'-items' ); - //} - // - // - // - //function zp_delete_tag ($term_id) - //{ - // wp_delete_term( $term_id, 'zp_tags' ); - // delete_option( 'zp_tag-'.$term_id.'-api_user_id' ); - // delete_option( 'zp_tag-'.$term_id.'-retrieved' ); - // delete_option( 'zp_tag-'.$term_id.'-numItems' ); - // delete_option( 'zp_tag-'.$term_id.'-items' ); - //} - - - // Function to recursively delete collections and their items - function zp_selectively_delete_collection ( $wpdb, $api_user_id, $collection ) - { - $collection_item_list = array(); - - // First, get items - $items = $wpdb->get_results( - " - SELECT ".$wpdb->prefix."zotpress_zoteroRelItemColl.item_key - FROM ".$wpdb->prefix."zotpress_zoteroRelItemColl - WHERE api_user_id='".$api_user_id."' - AND ".$wpdb->prefix."zotpress_zoteroRelItemColl.collection_key='".$collection."' - ", - OBJECT - ); - - if ( count($items) > 0 ) - { - foreach ( $items as $item ) - { - // Remember item to check tags later - $collection_item_list[count($collection_item_list)] = $item->item_key; - - // Delete item's children - $wpdb->query( - " - DELETE FROM ".$wpdb->prefix."zotpress_zoteroItems - WHERE api_user_id='".$api_user_id."' AND parent='".$item->item_key."' - " - ); - } - // Then delete items - $wpdb->query( - " - DELETE FROM ".$wpdb->prefix."zotpress_zoteroItems - WHERE api_user_id='".$api_user_id."' AND item_key IN ( '".implode("','", $collection_item_list)."' ) - " - ); - // And their relationships with collections - $wpdb->query( - " - DELETE FROM ".$wpdb->prefix."zotpress_zoteroRelItemColl - WHERE api_user_id='".$api_user_id."' AND item_key IN ( '".implode("','", $collection_item_list)."' ) - " - ); - } - - unset( $items ); - - // Then delete collection - $wpdb->query( - $wpdb->prepare( - " - DELETE FROM ".$wpdb->prefix."zotpress_zoteroCollections WHERE api_user_id='%s' AND item_key='%s' - ", - $api_user_id, $collection - ) - ); - - // Next, delete subcollections - $subcollections = $wpdb->get_results( - " - SELECT item_key FROM ".$wpdb->prefix."zotpress_zoteroCollections - WHERE api_user_id='".$api_user_id."' AND parent='".$collection."' - " - ); - - if ( count($subcollections) > 0 ) - { - foreach ( $subcollections as $subcollection ) - { - $temp = zp_selectively_delete_collection( $wpdb, $api_user_id, $subcollection->item_key ); - - if ( $temp ) $GLOBALS['zp_session'][$api_user_id]['collection_item_list'] = array_merge( $temp, $GLOBALS['zp_session'][$api_user_id]['collection_item_list'] ); - } - } - - unset( $subcollections ); - - if ( count($collection_item_list) > 0) return $collection_item_list; else return false; - } - - - - function zp_clear_last_import ($wpdb, $api_user_id, $step, $collections=false) - { - switch ($step) - { - case "items": - $wpdb->query("DELETE FROM ".$wpdb->prefix."zotpress_zoteroItems WHERE api_user_id='".$api_user_id."'"); - $wpdb->query("DELETE FROM ".$wpdb->prefix."zotpress_zoteroRelItemColl WHERE api_user_id='".$api_user_id."'"); - $wpdb->query("DELETE FROM ".$wpdb->prefix."zotpress_zoteroRelItemTags WHERE api_user_id='".$api_user_id."'"); - //$zp_entry_array = get_posts( - // array( - // 'posts_per_page' => -1, - // 'post_type' => 'zp_entry', - // 'meta_key' => 'api_user_id', - // 'meta_value' => $api_user_id - // ) - //); - //foreach ($zp_entry_array as $zp_entry) wp_delete_post( $zp_entry->ID, true ); - break; - - case "collections": - $wpdb->query("DELETE FROM ".$wpdb->prefix."zotpress_zoteroCollections WHERE api_user_id='".$api_user_id."'"); - //$zp_collections_array = get_terms( - // 'zp_collections', - // array( - // 'hide_empty' => false - // ) - //); - //foreach ($zp_collections_array as $zp_collection_term) - // if ( get_option( 'zp_collection-'.$zp_collection_term->term_id.'-api_user_id' ) ) - // zp_delete_collection ($zp_collection_term->term_id); - break; - - case "tags": - $wpdb->query("DELETE FROM ".$wpdb->prefix."zotpress_zoteroTags WHERE api_user_id='".$api_user_id."'"); - //$zp_tags_array = get_terms( - // 'zp_tags', - // array( - // 'hide_empty' => false - // ) - //); - //foreach ($zp_tags_array as $zp_tag_term) - // if ( get_option( 'zp_tag-'.$zp_tag_term->term_id.'-api_user_id' ) ) - // zp_delete_tag ($zp_tag_term->term_id); - break; - - case "selective": - if ( $collections !== false ) - { - $collection_item_list = array(); // for tags - //$collections = str_replace( ",", "', '", $collections ); - //$collections = explode( ",", $collections ); - //$all_top_level_collections = get_terms( 'zp_collections', array( 'hide_empty' => false, 'parent' => 0 ) ); - //$all_top_level_collections = $wpdb->get_results( - // " - // SELECT item_key FROM ".$wpdb->prefix."zotpress_zoteroCollections - // WHERE api_user_id='".$api_user_id."' AND item_key IN ( '".$collections."' ) - // " - //); - $collections = explode(",", $collections); - $GLOBALS['zp_session'][$api_user_id]['collection_item_list'] = array(); - - // Delete selected top level collection, items, subcollections and their items - if ( count($collections) > 0 ) - { - foreach ( $collections as $top_level_collection ) - { - $temp = zp_selectively_delete_collection( $wpdb, $api_user_id, $top_level_collection ); - - if ( $temp ) $collection_item_list = array_merge( $temp, $collection_item_list ); - } - } - - // Merge item lists from top level collection with subcollection item lists - $collection_item_list = array_merge( $collection_item_list, $GLOBALS['zp_session'][$api_user_id]['collection_item_list'] ); - - // Remove items from tags, delete tags if no items - // This means that once imported, tags will remain if there's another item key, even if the item itself isn't imported - if ( count($collection_item_list) > 0 ) - { - foreach ( $collection_item_list as $item_key ) - { - // Get this item's tags - $item_tags = $wpdb->get_results( - " - SELECT tag_title FROM ".$wpdb->prefix."zotpress_zoteroRelItemTags - WHERE api_user_id='".$api_user_id."' AND item_key='".$item_key."' - " - ); - - if ( count($item_tags) > 0 ) - { - foreach ( $item_tags as $item_tag ) - { - // Delete relationship with item - $wpdb->query( - " - DELETE FROM ".$wpdb->prefix."zotpress_zoteroRelItemTags - WHERE api_user_id='".$api_user_id."' - AND (item_key = '".$item_key."' AND tag_title = '".$item_tag->tag_title."') - " - ); - - // Delete tags if they don't have items - $tag_itemrel_count = $wpdb->get_results( - " - SELECT COUNT(*) AS itemrel_count FROM ".$wpdb->prefix."zotpress_zoteroRelItemTags - WHERE api_user_id='".$api_user_id."' AND tag_title='".$item_tag->tag_title."' - " - ); - - if ( $tag_itemrel_count[0]->itemrel_count < 1) - { - $wpdb->query( - " - DELETE FROM ".$wpdb->prefix."zotpress_zoteroTags - WHERE api_user_id='".$api_user_id."' - AND title = '".$item_tag->tag_title."' - " - ); - } - - //$tag_items = str_replace( $item_key.",", "", $item_tag->listItems."," ); - // - //// Update tag's item list - //if ( strlen($tag_items) > 0 ) - //{ - // $wpdb->query( - // $wpdb->prepare( - // " - // UPDATE ".$wpdb->prefix."zotpress_zoteroTags - // SET listItems=%s - // WHERE id=%d - // ", - // rtrim( $tag_items, "," ), $item_tag->id - // ) - // ); - //} - //else // No items, so delete - //{ - // $wpdb->query( - // $wpdb->prepare( - // " - // DELETE FROM ".$wpdb->prefix."zotpress_zoteroTags WHERE id=%d - // ", - // $item_tag->id - // ) - // ); - //} - } - } - unset($item_tags); - } - unset($collection_item_list); - - /* - $all_tags = $wpdb->get_results( - " - SELECT id, title, listItems FROM ".$wpdb->prefix."zotpress_zoteroTags WHERE api_user_id='".$api_user_id."' - " - ); - - foreach ( $all_tags as $zp_tag ) - { - $zp_tag_items = explode( ',', $zp_tag->listItems ); - $updated_item_list = $zp_tag->listItems; - - // Create new item list for tag - foreach ( $zp_tag_items as $zp_tag_item ) { - if ( in_array( $zp_tag_item, $collection_item_list ) ) { - $updated_item_list = str_replace( $zp_tag_item.',', '', $updated_item_list ); - } - } - - if ( strlen($updated_item_list) > 0 ) - { - // Update tag's item list - $wpdb->query( - $wpdb->prepare( - " - UPDATE ".$wpdb->prefix."zotpress_zoteroTags - SET listItems=%s - WHERE id=%s - ", - rtrim( $updated_item_list, "," ), $zp_tag->id - ) - ); - } - else // No items left, so delete tag - { - $wpdb->query( - $wpdb->prepare( - " - DELETE FROM ".$wpdb->prefix."zotpress_zoteroTags WHERE id=%s - ", - $zp_tag->id - ) - ); - } - - unset($zp_tag_items); - unset($updated_item_list); - } - - unset($all_tags); - unset($collection_item_list); - unset($all_top_level_collections); - */ - } - - /* - if ( count($all_top_level_collections) > 0 ) - { - // Delete selected top level collection, items, subcollections and their items - foreach ( $all_top_level_collections as $top_level_collection ) - { - if ( in_array( $top_level_collection->description, $collections ) ) - { - // Get subcollections - $subcollections = get_terms( 'zp_collections', array( 'hide_empty' => true, 'child_of' => $top_level_collection->term_id ) ); - - if ( count($subcollections) > 0 ) - { - foreach ( $subcollections as $subcollection ) - { - // Get subcollection items - $subcollection_items = get_option( 'zp_collection-'.$subcollection->term_id.'-items' ); - if ( $subcollection_items !== false && strlen(trim($subcollection_items)) > 0 ) $collection_item_list .= trim($subcollection_items).','; // add to item list - unset($subcollection_items); - - // Delete subcollection - wp_delete_term( $subcollection->term_id, 'zp_collections' ); - } - } - unset($subcollections); - - // Get collection items - $collection_items = get_option( 'zp_collection-'.$top_level_collection->term_id.'-items' ); - if ( $collection_items !== false && strlen(trim($collection_items)) > 0 ) $collection_item_list .= trim($collection_items).','; // add to item list - unset($collection_items); - - // Delete collection - wp_delete_term( $top_level_collection->term_id, 'zp_collections' ); - } - } - - if ( trim($collection_item_list) != '' ) - { - $collection_item_list_arr = explode( ',', rtrim( $collection_item_list, ',' ) ); - $all_tags = get_terms( 'zp_tags', array( 'hide_empty' => false ) ); - - // Remove items and thier children - foreach ( $collection_item_list_arr as $c_item ) - { - // Get item's data - $c_item_data = get_posts( array( 'posts_per_page' => 1, 'post_type' => 'zp_entry', 'meta_key' => 'item_key', 'meta_value' => $c_item ) ); - - // Get item's children - $c_item_children = get_posts( array( 'posts_per_page' => -1, 'post_type' => 'zp_entry', 'meta_key' => 'parent', 'meta_value' => $c_item ) ); - - if ( count($c_item_children) > 0 ) - { - foreach ( $c_item_children as $c_item_child ) - { - $collection_item_list .= get_metadata( 'zp_entry', $c_item_child->ID, 'item_key' ).','; - wp_delete_post( $c_item_child->ID, true ); - } - unset($c_item_children); - } - foreach ( $c_item_data as $i ) wp_delete_post( $i->ID, true ); - unset($c_item_data); - } - unset($collection_item_list_arr); - - - // Remove items from tags, delete tags if no items - foreach ( $all_tags as $zp_tag ) - { - $zp_tag_items = explode( ',', $zp_tag->description ); - $updated_item_list = $zp_tag->description; - - // Create new item list for tag - foreach ( $zp_tag_items as $zp_tag_item ) if ( in_array( $zp_tag_item, $collection_item_list ) ) $updated_item_list = str_replace( $zp_tag_item.',', '', $updated_item_list ); - - if ( strlen($updated_item_list) > 0 ) - { - // Update tag's item list - wp_update_term( $zp_tag->term_id, 'zp_tags', array( 'description' => rtrim( $updated_item_list, ',' ) ) ); - } - else // No items left, so delete tag - { - wp_delete_term( $tag_to_delete->term_id, 'zp_tags' ); - } - - unset($zp_tag_items); - unset($updated_item_list); - } - unset($all_tags); - - } // collection items exist - } // top level collections exist - */ - } // collections to review exist - - break; - } - } - - - - /**************************************************************************************** - * - * ZOTPRESS IMPORT ITEMS - * - ****************************************************************************************/ - - function zp_get_items ($wpdb, $api_user_id, $zp_start, $zp_collection=false) - { - $zp_import_contents = new ZotpressRequest(); - $zp_account = zp_get_account($wpdb, $api_user_id); - - - // Get default style - $zp_default_style = "apa"; - if (get_option("Zotpress_DefaultStyle")) $zp_default_style = strtolower( get_option("Zotpress_DefaultStyle") ); - - // Build request URL - if ( $zp_collection ) $zp_collection_url = '/collections/'.$zp_collection; else $zp_collection_url = ''; - $zp_import_url = "https://api.zotero.org/".$zp_account[0]->account_type."/".$zp_account[0]->api_user_id.$zp_collection_url."/items?"; - if ( is_null($zp_account[0]->public_key) === false && trim($zp_account[0]->public_key) != "" ) - $zp_import_url .= "key=".$zp_account[0]->public_key."&"; - $zp_import_url .= "format=atom&content=json,bib&style=".$zp_default_style."&limit=50&start=".$zp_start; - - - // Make the request - $zp_xml = $zp_import_contents->get_request_contents( $zp_import_url, false ); - - // Stop in our tracks if there's a request error - if ($zp_import_contents->request_error) return $zp_import_contents->request_error; - - // Report any errors returned from Zotero - if ( trim(strtolower($zp_xml)) == "forbidden" ) - { - return "Zotero is telling Zotpress that access is forbidden. Are you sure that the Zotero API key you're using for this account is correct?"; - } - else if ( trim(strtolower($zp_xml)) == "invalid style" ) - { - return "Zotero is telling Zotpress that the style you're using is invalid. Are you sure that the name of the default style you've selected is correct?"; - } - - - // Make it DOM-traversable - $doc_citations = new DOMDocument(); - $doc_citations->loadXML($zp_xml); - - - // Get last set - if (!isset($GLOBALS['zp_session'][$api_user_id]['items']['last_set'])) - { - $last_set = ""; - $links = $doc_citations->getElementsByTagName("link"); - - foreach ($links as $link) - { - if ($link->getAttribute('rel') == "last") - { - if (stripos($link->getAttribute('href'), "start=") !== false) - { - $last_set = explode("start=", $link->getAttribute('href')); - $GLOBALS['zp_session'][$api_user_id]['items']['last_set'] = intval($last_set[1]); - } - else - { - $GLOBALS['zp_session'][$api_user_id]['items']['last_set'] = 0; - } - } - } - } - - - // PREPARE EACH ENTRY FOR DB INSERT - // Entries can be items or attachments (e.g. notes) - - $entries = $doc_citations->getElementsByTagName("entry"); - - foreach ($entries as $entry) - { - $item_key = $entry->getElementsByTagNameNS("http://zotero.org/ns/api", "key")->item(0)->nodeValue; - - //// For selective import: Keep track of and skip duplicates - //// Not working for some reason - ////if ( $zp_collection ) - ////{ - // if ( array_key_exists( $item_key, $GLOBALS['zp_session'][$api_user_id]['duplicates']['items'] ) ) - // continue; - // else - // $GLOBALS['zp_session'][$api_user_id]['duplicates']['items'][$item_key] = true; - ////} - - $retrieved = $entry->getElementsByTagName("updated")->item(0)->nodeValue; - $item_type = $entry->getElementsByTagNameNS("http://zotero.org/ns/api", "itemType")->item(0)->nodeValue; - - // Get citation content (json and bib) - - $citation_content = ""; - $citation_content_temp = new DOMDocument(); - - foreach($entry->getElementsByTagNameNS("http://zotero.org/ns/api", "subcontent") as $child) - { - if ($child->attributes->getNamedItem("type")->nodeValue == "json") - { - $json_content = $child->nodeValue; - } - else // Styled citation - { - foreach($child->childNodes as $child_content) { - $citation_content_temp->appendChild($citation_content_temp->importNode($child_content, true)); - $citation_content = $citation_content_temp->saveHTML(); - } - } - } - - // Get basic metadata from JSON - $json_content_decoded = json_decode($json_content); - - $author = ""; - $author_other = ""; - $date = ""; - $year = ""; - $title = ""; - $numchildren = 0; - $parent = ""; - $link_mode = ""; - - - if ( isset($json_content_decoded->creators) ) - { - if ( count($json_content_decoded->creators) > 0 ) - { - foreach ($json_content_decoded->creators as $creator) - if ($creator->creatorType == "author") - if (isset($creator->name)) // One-name authors - $author .= $creator->name . ", "; - else - $author .= $creator->lastName . ", "; - else - if (isset($creator->name)) // One-name authors - $author_other .= $creator->name . ", "; - else - $author_other .= $creator->lastName . ", "; - } - else // no creator - { - $author = ""; - //if (isset($creator->name)) // One-name authors - // $author .= $creator->creators["name"]; - //else - // $author .= $creator->creators["lastName"]; - } - } - else // no creator - { - $author = ""; - } - - // Determine if we use author or other author type - if (trim($author) == "") $author = $author_other; - - // Remove last comma - $author = preg_replace('~(.*)' . preg_quote(', ', '~') . '~', '$1' . '', $author, 1); - - $date = ""; if ( isset($json_content_decoded->date) ) $date = $json_content_decoded->date; - $year = zp_extract_year($date); - - if (trim($year) == "") $year = "0000"; - - $title = ""; if ( isset($json_content_decoded->title) ) $title = $json_content_decoded->title; - - $numchildren = 0; if ( isset($entry->getElementsByTagNameNS("http://zotero.org/ns/api", "numChildren")->item(0)->nodeValue) ) $numchildren = intval($entry->getElementsByTagNameNS("http://zotero.org/ns/api", "numChildren")->item(0)->nodeValue); - - // DOWNLOAD: Find URL - // for attachments, look at zapi:subcontent zapi:type="json" - linkMode - either imported_file or linked_url - if ($item_type == "attachment") - if (isset($json_content_decoded->linkMode)) $link_mode = $json_content_decoded->linkMode; - - // PARENT - //if ( $zp_collection ) // This was setting the parent of attachments to the collection - //{ - // $parent = $zp_collection; - //} - //else // Regular - //{ - foreach($entry->getElementsByTagName("link") as $entry_link) - { - if ($entry_link->getAttribute('rel') == "up") { - $temp = explode("items/", $entry_link->getAttribute('href')); - $temp = explode("?", $temp[1]); - $parent = $temp[0]; - } - - // Get download URL - if ($link_mode == "imported_file" && $entry_link->getAttribute('rel') == "self") { - $citation_content = substr($entry_link->getAttribute('href'), 0, strpos($entry_link->getAttribute('href'), "?")); - } - } - //} - - // Prep for insert into db - array_push($GLOBALS['zp_session'][$api_user_id]['items']['query_params'], - $zp_account[0]->api_user_id, - $item_key, - zp_db_prep($retrieved), - zp_db_prep($json_content), - zp_db_prep($author), - zp_db_prep($date), - zp_db_prep($year), - zp_db_prep($title), - $item_type, - $link_mode, - zp_db_prep($citation_content), - zp_db_prep($zp_default_style), - $numchildren, - $parent); - - $GLOBALS['zp_session'][$api_user_id]['items']['query_total_entries']++; - - } // foreach entry - - - // LAST SET - if ($GLOBALS['zp_session'][$api_user_id]['items']['last_set'] == $zp_start) - { - return false; - } - else // continue to next set of items - { - return true; - } - - unset($zp_import_contents); - unset($zp_import_url); - unset($zp_xml); - unset($doc_citations); - unset($entries); - - } // FUNCTION: zp_get_items - - - - function zp_save_items ($wpdb, $api_user_id, $not_done=false) - { - if ($GLOBALS['zp_session'][$api_user_id]['items']['query_total_entries'] > 0) - { - // Prepare query strings - $zp_relItemColl = ""; - $zp_relItemTags = ""; - - // Determine item-collection and item-tag relationships with JSON - for ( $i = 3; $i < count($GLOBALS['zp_session'][$api_user_id]['items']['query_params']); $i += 14 ) - { - $i_json = json_decode($GLOBALS['zp_session'][$api_user_id]['items']['query_params'][$i]); - - if ( isset($i_json->collections) && count($i_json->collections) > 0 ) - foreach ( $i_json->collections as $i_collection ) - $zp_relItemColl .= "('" . $GLOBALS['zp_session'][$api_user_id]['items']['query_params'][$i-3] . "', '" . $i_json->itemKey . "', '" . htmlentities($i_collection, ENT_QUOTES ) . "'), "; - - if ( isset($i_json->tags) && count($i_json->tags) > 0 ) - foreach ( $i_json->tags as $i_tag ) - if ( trim($i_tag->tag) != "" ) - $zp_relItemTags .= "('" . $GLOBALS['zp_session'][$api_user_id]['items']['query_params'][$i-3] . "', '" . $i_json->itemKey . "', '" . htmlentities(str_replace("&", "__and__", $i_tag->tag), ENT_QUOTES ) . "'), "; - } - - // Prepare string: remove extra comma and space OR set to blank if nothing to add - if ( strlen($zp_relItemColl) > 0 ) - { - $zp_relItemColl = "INSERT IGNORE INTO ".$wpdb->prefix."zotpress_zoteroRelItemColl - ( api_user_id, item_key, collection_key ) VALUES " . substr( $zp_relItemColl, 0, -2 ) . "; "; - } - - if ( strlen($zp_relItemTags) > 0 ) - { - $zp_relItemTags = "INSERT IGNORE INTO ".$wpdb->prefix."zotpress_zoteroRelItemTags - ( api_user_id, item_key, tag_title ) VALUES " . substr( $zp_relItemTags, 0, -2 ) . "; "; - } - - // Execute queries - if ( strlen($zp_relItemColl) > 0 ) $wpdb->query( $zp_relItemColl ); - if ( strlen($zp_relItemTags) > 0 ) $wpdb->query( $zp_relItemTags ); - $wpdb->query( - $wpdb->prepare( - " INSERT IGNORE INTO ".$wpdb->prefix."zotpress_zoteroItems - ( api_user_id, item_key, retrieved, json, author, zpdate, year, title, itemType, linkMode, citation, style, numchildren, parent ) - VALUES ( %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %d, %s )" . str_repeat(", ( %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %d, %s )", $GLOBALS['zp_session'][$api_user_id]['items']['query_total_entries']-1) .";", - $GLOBALS['zp_session'][$api_user_id]['items']['query_params'] - ) - ); - - $wpdb->flush(); - } - /*if ($GLOBALS['zp_session'][$api_user_id]['items']['query_total_entries'] > 0) - { - global $user_ID; - - for ($i = 0; $i <= ($GLOBALS['zp_session'][$api_user_id]['items']['query_total_entries'] - 1); $i++ ) - { - $mod = $i * 14; - - $post_id = wp_insert_post(array( - 'post_title' => $GLOBALS['zp_session'][$api_user_id]['items']['query_params'][7+$mod], - 'post_content' => $GLOBALS['zp_session'][$api_user_id]['items']['query_params'][10+$mod], - 'post_status' => 'publish', - 'post_date' => date('Y-m-d H:i:s'), - 'post_author' => $user_ID, - 'post_type' => 'zp_entry' - )); - - update_post_meta($post_id, 'api_user_id', $GLOBALS['zp_session'][$api_user_id]['items']['query_params'][0+$mod]); - update_post_meta($post_id, 'item_key', $GLOBALS['zp_session'][$api_user_id]['items']['query_params'][1+$mod]); - update_post_meta($post_id, 'retrieved', $GLOBALS['zp_session'][$api_user_id]['items']['query_params'][2+$mod]); - update_post_meta($post_id, 'json_content', $GLOBALS['zp_session'][$api_user_id]['items']['query_params'][3+$mod]); - update_post_meta($post_id, 'author', $GLOBALS['zp_session'][$api_user_id]['items']['query_params'][4+$mod]); - update_post_meta($post_id, 'date', $GLOBALS['zp_session'][$api_user_id]['items']['query_params'][5+$mod]); - update_post_meta($post_id, 'year', $GLOBALS['zp_session'][$api_user_id]['items']['query_params'][6+$mod]); - update_post_meta($post_id, 'item_type', $GLOBALS['zp_session'][$api_user_id]['items']['query_params'][8+$mod]); - update_post_meta($post_id, 'link_mode', $GLOBALS['zp_session'][$api_user_id]['items']['query_params'][9+$mod]); - update_post_meta($post_id, 'style', $GLOBALS['zp_session'][$api_user_id]['items']['query_params'][11+$mod]); - update_post_meta($post_id, 'numchildren', $GLOBALS['zp_session'][$api_user_id]['items']['query_params'][12+$mod]); - update_post_meta($post_id, 'parent', $GLOBALS['zp_session'][$api_user_id]['items']['query_params'][13+$mod]); - } - }*/ - - if ($not_done) // reset everything - { - $GLOBALS['zp_session'][$api_user_id]['items']['query_params'] = array(); - $GLOBALS['zp_session'][$api_user_id]['items']['query_total_entries'] = 0; - } - else // unset everything - { - unset($GLOBALS['zp_session'][$api_user_id]['items']); - } - } - - - - /**************************************************************************************** - * - * ZOTPRESS IMPORT COLLECTIONS - * - ****************************************************************************************/ - - function zp_get_collections ($wpdb, $api_user_id, $zp_start, $toplevel=false, $zp_collection=false, $zp_single=false) - { - $zp_import_contents = new ZotpressRequest(); - $zp_account = zp_get_account($wpdb, $api_user_id); - $zp_collection_keys = ""; - - // Build request URL - if ( $toplevel === true ) $toplevel = '/top'; else $toplevel = ''; - if ( $zp_single ) $zp_single = '/'.$zp_single; else $zp_single = ''; - if ( $zp_collection ) $zp_collection = '/'.$zp_collection.'/collections'; else $zp_collection = ''; - - $zp_import_url = "https://api.zotero.org/".$zp_account[0]->account_type."/".$zp_account[0]->api_user_id."/collections".$toplevel.$zp_collection.$zp_single."?"; - if (is_null($zp_account[0]->public_key) === false && trim($zp_account[0]->public_key) != "") $zp_import_url .= "key=".$zp_account[0]->public_key."&"; - $zp_import_url .= "limit=50&start=".$zp_start; - - // Grab contents - $zp_xml = $zp_import_contents->get_request_contents( $zp_import_url, false ); - - // Report any errors returned from Zotero - if ( trim(strtolower($zp_xml)) == "forbidden" ) - { - return "Zotero is telling Zotpress that access is forbidden. Are you sure that the Zotero API key you're using for this account is correct?"; - } - - // Make it DOM-traversable - $doc_citations = new DOMDocument(); - $doc_citations->loadXML($zp_xml); - - - // Get last set - if (!isset($GLOBALS['zp_session'][$api_user_id]['collections']['last_set']) ) - { - $last_set = ""; - $links = $doc_citations->getElementsByTagName("link"); - - foreach ($links as $link) - { - if ($link->getAttribute('rel') == "last") - { - if (stripos($link->getAttribute('href'), "start=") !== false) - { - $last_set = explode("start=", $link->getAttribute('href')); - $GLOBALS['zp_session'][$api_user_id]['collections']['last_set'] = intval($last_set[1]); - } - else - { - $GLOBALS['zp_session'][$api_user_id]['collections']['last_set'] = 0; - } - } - } - } - - - - // GET COLLECTION META - - $entries = $doc_citations->getElementsByTagName("entry"); - - foreach ($entries as $entry) - { - $title = $entry->getElementsByTagName("title")->item(0)->nodeValue; - $retrieved = $entry->getElementsByTagName("updated")->item(0)->nodeValue; - $parent = ""; - - // Get parent collection - foreach($entry->getElementsByTagName("link") as $link) - { - if ($link->attributes->getNamedItem("rel")->nodeValue == "up") - { - $parent_temp = explode("/", $link->attributes->getNamedItem("href")->nodeValue); - $parent = $parent_temp[count($parent_temp)-1]; - } - } - - $item_key = $entry->getElementsByTagNameNS("http://zotero.org/ns/api", "key")->item(0)->nodeValue; - $numCollections = $entry->getElementsByTagNameNS("http://zotero.org/ns/api", "numCollections")->item(0)->nodeValue; - $numItems = $entry->getElementsByTagNameNS("http://zotero.org/ns/api", "numItems")->item(0)->nodeValue; - - unset($zp_import_contents); - unset($zp_import_url); - unset($zp_xml); - - - - // GET LIST OF ITEM KEYS - now dealt with in Items import -// $zp_import_contents = new ZotpressRequest(); -// -// // Build request URL -// $zp_import_url = "https://api.zotero.org/".$zp_account[0]->account_type."/".$zp_account[0]->api_user_id."/collections/".$item_key."/items?format=keys"; -// if (is_null($zp_account[0]->public_key) === false && trim($zp_account[0]->public_key) != "") $zp_import_url .= "&key=".$zp_account[0]->public_key; -// -// // Import item keys -// $zp_xml = $zp_import_contents->get_request_contents( $zp_import_url, false ); -// -// $zp_collection_itemkeys = rtrim(str_replace("\n", ",", $zp_xml), ","); -// -// unset($zp_import_contents); -// unset($zp_import_url); -// unset($zp_xml); - - - - // Prep for insert into db - array_push($GLOBALS['zp_session'][$api_user_id]['collections']['query_params'], - $zp_account[0]->api_user_id, - zp_db_prep($title), - zp_db_prep($retrieved), - zp_db_prep($parent), - $item_key, - $numCollections, - $numItems - ); - - $zp_collection_keys .= $item_key . ","; - - $GLOBALS['zp_session'][$api_user_id]['collections']['query_total_entries']++; - - unset($title); - unset($retrieved); - unset($parent); - unset($item_key); - unset($numCollections); - unset($numItems); - //unset($zp_collection_itemkeys); - - } // entry - - - // LAST SET - if ( - isset($GLOBALS['zp_session'][$api_user_id]['collections']['last_set']) - && $GLOBALS['zp_session'][$api_user_id]['collections']['last_set'] == $zp_start - ) - { - return array( "continue" => false, "collections" => rtrim( $zp_collection_keys, "," ) ); - } - else // continue to next set of collections - { - return array( "continue" => true, "collections" => rtrim( $zp_collection_keys, "," ) ); - } - - unset($doc_citations); - unset($entries); - - } // FUNCTION: zp_get_collections - - - - function zp_save_collections ($wpdb, $api_user_id, $not_done=false, $selective=false) - { - if ($GLOBALS['zp_session'][$api_user_id]['collections']['query_total_entries'] > 0) - { - $wpdb->query( $wpdb->prepare( - " - INSERT INTO ".$wpdb->prefix."zotpress_zoteroCollections - ( api_user_id, title, retrieved, parent, item_key, numCollections, numItems ) - VALUES ( %s, %s, %s, %s, %s, %d, %d )".str_repeat(", ( %s, %s, %s, %s, %s, %d, %d )", $GLOBALS['zp_session'][$api_user_id]['collections']['query_total_entries']-1), - $GLOBALS['zp_session'][$api_user_id]['collections']['query_params'] - ) ); - - $wpdb->flush(); - } - /*if ($GLOBALS['zp_session'][$api_user_id]['collections']['query_total_entries'] > 0) - { - for ($i = 0; $i <= ($GLOBALS['zp_session'][$api_user_id]['collections']['query_total_entries'] - 1); $i++ ) - { - $mod = $i * 8; - - $collection_id = get_term_by( "name", $GLOBALS['zp_session'][$api_user_id]['collections']['query_params'][1+$mod], 'zp_collections', 'ARRAY_A' ); - if ( $collection_id === false ) $collection_id = wp_insert_term( $GLOBALS['zp_session'][$api_user_id]['collections']['query_params'][1+$mod], 'zp_collections', array( 'description' => $GLOBALS['zp_session'][$api_user_id]['collections']['query_params'][4+$mod] ) ); // description is collection key - - if ( get_option( 'zp_collection-'.$collection_id['term_id'].'-api_user_id' ) ) delete_option( 'zp_collection-'.$collection_id['term_id'].'-api_user_id' ); - add_option( 'zp_collection-'.$collection_id['term_id'].'-api_user_id', $GLOBALS['zp_session'][$api_user_id]['collections']['query_params'][0+$mod], '', false ); - - if ( get_option( 'zp_collection-'.$collection_id['term_id'].'-retrieved' ) ) delete_option( 'zp_collection-'.$collection_id['term_id'].'-retrieved' ); - add_option( 'zp_collection-'.$collection_id['term_id'].'-retrieved', $GLOBALS['zp_session'][$api_user_id]['collections']['query_params'][2+$mod], '', false ); - - if ( get_option( 'zp_collection-'.$collection_id['term_id'].'-parent' ) ) delete_option( 'zp_collection-'.$collection_id['term_id'].'-parent' ); - add_option( 'zp_collection-'.$collection_id['term_id'].'-parent', $GLOBALS['zp_session'][$api_user_id]['collections']['query_params'][3+$mod], '', false ); - - if ( get_option( 'zp_collection-'.$collection_id['term_id'].'-item_key' ) ) delete_option( 'zp_collection-'.$collection_id['term_id'].'-item_key' ); - add_option( 'zp_collection-'.$collection_id['term_id'].'-item_key', $GLOBALS['zp_session'][$api_user_id]['collections']['query_params'][4+$mod], '', false ); - - if ( get_option( 'zp_collection-'.$collection_id['term_id'].'-numCollections' ) ) delete_option( 'zp_collection-'.$collection_id['term_id'].'-numCollections' ); - add_option( 'zp_collection-'.$collection_id['term_id'].'-numCollections', $GLOBALS['zp_session'][$api_user_id]['collections']['query_params'][5+$mod], '', false ); - - if ( get_option( 'zp_collection-'.$collection_id['term_id'].'-numItems' ) ) delete_option( 'zp_collection-'.$collection_id['term_id'].'-numItems' ); - add_option( 'zp_collection-'.$collection_id['term_id'].'-numItems', $GLOBALS['zp_session'][$api_user_id]['collections']['query_params'][6+$mod], '', false ); - - if ( get_option( 'zp_collection-'.$collection_id['term_id'].'-items' ) ) delete_option( 'zp_collection-'.$collection_id['term_id'].'-items' ); - add_option( 'zp_collection-'.$collection_id['term_id'].'-items', $GLOBALS['zp_session'][$api_user_id]['collections']['query_params'][7+$mod], '', false ); - - // Link collections to entries - if ( trim($GLOBALS['zp_session'][$api_user_id]['collections']['query_params'][7+$mod]) != "" ) - { - foreach ( explode(',', $GLOBALS['zp_session'][$api_user_id]['collections']['query_params'][7+$mod]) as $zp_entry ) - { - $zp_entry = get_posts( array( 'meta_key' => 'item_key', 'meta_value' => $zp_entry, 'post_type' => 'zp_entry' ) ); - wp_set_object_terms( $zp_entry[0]->ID, $collection_id['term_id'], 'zp_collections' ); - } - } - } - }*/ - - if (!$selective) - { - if ($not_done) // reset everything - { - $GLOBALS['zp_session'][$api_user_id]['collections']['query_params'] = array(); - $GLOBALS['zp_session'][$api_user_id]['collections']['query_total_entries'] = 0; - } - else // unset everything - { - unset($GLOBALS['zp_session'][$api_user_id]['collections']); - } - } - } - - - - /*function zp_link_collections ($wpdb, $api_user_id) - { - delete_option('zp_collections_children'); - $collection_terms = get_terms( 'zp_collections', array( 'hide_empty' => false ) ); - - // Find parent, if exists - foreach ($collection_terms as $collection_term) - { - if ( strlen(trim(get_option( 'zp_collection-'.$collection_term->term_id.'-parent' ))) > 0 ) - { - foreach ($collection_terms as $collection_term_parent) - { - if ( get_option( 'zp_collection-'.$collection_term_parent->term_id.'-item_key' ) == - get_option( 'zp_collection-'.$collection_term->term_id.'-parent' ) ) - { - wp_update_term( $collection_term->term_id, 'zp_collections', - array( - 'parent' => $collection_term_parent->term_id - ) - ); - } - } - } - } - }*/ - - - - /**************************************************************************************** - * - * ZOTPRESS IMPORT TAGS - * - ****************************************************************************************/ - - function zp_get_tags ($wpdb, $api_user_id, $zp_start, $zp_collection=false) - { - $zp_import_contents = new ZotpressRequest(); - $zp_account = zp_get_account($wpdb, $api_user_id); - - // Get import url - if ( $zp_collection ) $zp_collection = '/collections/'.$zp_collection; else $zp_collection = ''; - - $zp_import_url = "https://api.zotero.org/".$zp_account[0]->account_type."/".$zp_account[0]->api_user_id.$zp_collection."/tags?limit=50&start=".$zp_start; - if (is_null($zp_account[0]->public_key) === false && trim($zp_account[0]->public_key) != "") - $zp_import_url .= "&key=".$zp_account[0]->public_key; - - // Import content - $zp_xml = $zp_import_contents->get_request_contents( $zp_import_url, false ); - - // Report any errors returned from Zotero - if ( trim(strtolower($zp_xml)) == "forbidden" ) - { - return "Zotero is telling Zotpress that access is forbidden. Are you sure that the Zotero API key you're using for this account is correct?"; - } - - // Make it DOM-traversable - $doc_citations = new DOMDocument(); - $doc_citations->loadXML($zp_xml); - - - // Get last set - if (!isset($GLOBALS['zp_session'][$api_user_id]['tags']['last_set'])) - { - $last_set = ""; - $links = $doc_citations->getElementsByTagName("link"); - - foreach ($links as $link) - { - if ($link->getAttribute('rel') == "last") - { - if (stripos($link->getAttribute('href'), "start=") !== false) - { - $last_set = explode("start=", $link->getAttribute('href')); - $GLOBALS['zp_session'][$api_user_id]['tags']['last_set'] = intval($last_set[1]); - } - else - { - $GLOBALS['zp_session'][$api_user_id]['tags']['last_set'] = 0; - } - } - } - } - - - // PREPARE EACH ENTRY FOR DB INSERT - - $entries = $doc_citations->getElementsByTagName("entry"); - - foreach ($entries as $entry) - { - $title = str_replace("&", "__and__", $entry->getElementsByTagName("title")->item(0)->nodeValue); - $retrieved = $entry->getElementsByTagName("updated")->item(0)->nodeValue; - $numItems = $entry->getElementsByTagNameNS("http://zotero.org/ns/api", "numItems")->item(0)->nodeValue; - - unset($zp_import_contents); - unset($zp_import_url); - unset($zp_xml); - - - // GET LIST OF ITEM KEYS - now handled in Items import -// $zp_import_contents = new ZotpressRequest(); -// -// $zp_import_url = "https://api.zotero.org/".$zp_account[0]->account_type."/".$zp_account[0]->api_user_id."/tags/".urlencode($title)."/items?format=keys"; -// if (is_null($zp_account[0]->public_key) === false && trim($zp_account[0]->public_key) != "") -// $zp_import_url .= "&key=".$zp_account[0]->public_key; -// -// // Import content -// $zp_xml = $zp_import_contents->get_request_contents( $zp_import_url, false ); -// -// $zp_tag_itemkeys = rtrim(str_replace("\n", ",", $zp_xml), ","); -// -// unset($zp_import_contents); -// unset($zp_import_url); -// unset($zp_xml); - - - // Prep for insert into db - array_push($GLOBALS['zp_session'][$api_user_id]['tags']['query_params'], - $zp_account[0]->api_user_id, - zp_db_prep($title), - zp_db_prep($retrieved), - $numItems - ); - - $GLOBALS['zp_session'][$api_user_id]['tags']['query_total_entries']++; - - unset($title); - unset($retrieved); - unset($numItems); - //unset($zp_tag_itemkeys); - - } // entry - - - // LAST SET - if ($GLOBALS['zp_session'][$api_user_id]['tags']['last_set'] == $zp_start) - { - return false; - } - else // continue to next set of collections - { - return true; - } - - unset($entries); - unset($doc_citations); - - } // FUNCTION: zp_get_tags - - - - function zp_save_tags ($wpdb, $api_user_id, $not_done=false) - { - if ($GLOBALS['zp_session'][$api_user_id]['tags']['query_total_entries'] > 0) - { - $wpdb->query( $wpdb->prepare( - " - INSERT INTO ".$wpdb->prefix."zotpress_zoteroTags - ( api_user_id, title, retrieved, numItems ) - VALUES ( %s, %s, %s, %d )".str_repeat(", ( %s, %s, %s, %d )", $GLOBALS['zp_session'][$api_user_id]['tags']['query_total_entries']-1) ." - ON DUPLICATE KEY UPDATE - api_user_id = VALUES(api_user_id), - title = VALUES(title), - retrieved = VALUES(retrieved), - numItems = VALUES(numItems) - ", - $GLOBALS['zp_session'][$api_user_id]['tags']['query_params'] - ) ); - - $wpdb->flush(); - } - /*if ($GLOBALS['zp_session'][$api_user_id]['tags']['query_total_entries'] > 0) - { - for ($i = 0; $i <= ($GLOBALS['zp_session'][$api_user_id]['tags']['query_total_entries'] - 1); $i++ ) - { - $mod = $i * 5; - - $tag_id = get_term_by( "name", $GLOBALS['zp_session'][$api_user_id]['tags']['query_params'][1+$mod], 'zp_tags', 'ARRAY_A' ); - if ( $tag_id === false ) $tag_id = wp_insert_term( $GLOBALS['zp_session'][$api_user_id]['tags']['query_params'][1+$mod], 'zp_tags', array( 'description' => $GLOBALS['zp_session'][$api_user_id]['collections']['query_params'][4+$mod] ) ); // description is list of items (note: different from collections, where description is collection key) - - if ( get_option( 'zp_tag-'.$tag_id['term_id'].'-api_user_id' ) ) delete_option( 'zp_tag-'.$tag_id['term_id'].'-api_user_id' ); - add_option( 'zp_tag-'.$tag_id['term_id'].'-api_user_id', $GLOBALS['zp_session'][$api_user_id]['tags']['query_params'][0+$mod], '', false ); - - if ( get_option( 'zp_tag-'.$tag_id['term_id'].'-retrieved' ) ) delete_option( 'zp_tag-'.$tag_id['term_id'].'-retrieved' ); - add_option( 'zp_tag-'.$tag_id['term_id'].'-retrieved', $GLOBALS['zp_session'][$api_user_id]['tags']['query_params'][2+$mod], '', false ); - - //if ( get_option( 'zp_tag-'.$tag_id['term_id'].'-numItems' ) ) delete_option( 'zp_tag-'.$tag_id['term_id'].'-numItems' ); - //add_option( 'zp_tag-'.$tag_id['term_id'].'-numItems', $GLOBALS['zp_session'][$api_user_id]['tags']['query_params'][3+$mod], '', false ); - - if ( get_option( 'zp_tag-'.$tag_id['term_id'].'-items' ) ) delete_option( 'zp_tag-'.$tag_id['term_id'].'-items' ); - add_option( 'zp_tag-'.$tag_id['term_id'].'-items', $GLOBALS['zp_session'][$api_user_id]['tags']['query_params'][4+$mod], '', false ); - - // Link tags to entries - if ( trim($GLOBALS['zp_session'][$api_user_id]['tags']['query_params'][4+$mod]) != "" ) - { - foreach ( explode(',', $GLOBALS['zp_session'][$api_user_id]['tags']['query_params'][4+$mod]) as $zp_entry ) - { - $zp_entry = get_posts( array( 'meta_key' => 'item_key', 'meta_value' => $zp_entry, 'post_type' => 'zp_entry' ) ); - wp_set_object_terms( $zp_entry[0]->ID, $tag_id['term_id'], 'zp_tags', true ); - } - } - } - }*/ - - if ($not_done) // reset everything - { - $GLOBALS['zp_session'][$api_user_id]['tags']['query_params'] = array(); - $GLOBALS['zp_session'][$api_user_id]['tags']['query_total_entries'] = 0; - } - else // unset everything - { - unset($GLOBALS['zp_session'][$api_user_id]['tags']); - } - } - - - -?> \ No newline at end of file diff --git a/lib/import/import.iframe.php b/lib/import/import.iframe.php deleted file mode 100644 index c6641ba..0000000 --- a/lib/import/import.iframe.php +++ /dev/null @@ -1,470 +0,0 @@ - 403 ) ); - - -/* -* IMPORT PSEUDOCODE: -* -* Get list of all item keys -* Import items in sets of 50 -* Import categories in sets of 50 -* Get list of all item keys for each tag -* Import tags in sets of 50 -* Get list of all item keys for each tag -* -* Requests to Zotero given 100 of each: -* 1 + 2 + 2 + 100 + 2 + 100 = 207 -* -*/ - -if ( isset($_GET['go']) && $_GET['go'] == "true" - && check_admin_referer( 'zp_importing_' . intval($_GET['api_user_id']) . '_' . date('Y-j-G'), 'zp_nonce' ) ) -{ - // Access WordPress db - global $wpdb; - - // Ignore user abort - ignore_user_abort(true); - set_time_limit(60*10); // ten minutes - - // Include Request Functionality - require( dirname(__FILE__) . '/../request/rss.request.php' ); - - // Include Import Functions - require( dirname(__FILE__) . '/import.functions.php' ); - - - ?> - - - - - Importing - - - - - ID, 'zotpress_5_2_ignore_notice') ) - add_user_meta($current_user->ID, 'zotpress_5_2_ignore_notice', 'true', true); - - ?> - - - \ No newline at end of file diff --git a/lib/import/import.php b/lib/import/import.php deleted file mode 100644 index 12003d7..0000000 --- a/lib/import/import.php +++ /dev/null @@ -1,55 +0,0 @@ -get_row("SELECT * FROM ".$wpdb->prefix."zotpress WHERE api_user_id='".$api_user_id."'", OBJECT); - -?> - -
- - \ No newline at end of file diff --git a/lib/import/import.selective.php b/lib/import/import.selective.php deleted file mode 100644 index bc17621..0000000 --- a/lib/import/import.selective.php +++ /dev/null @@ -1,54 +0,0 @@ -get_row("SELECT * FROM ".$wpdb->prefix."zotpress WHERE api_user_id='".$api_user_id."'", OBJECT); - -?> - -
- - - -
- -

Selective Import

-

nickname) > 0) { echo $api_user_id_data->nickname; } else { echo $api_user_id; }?>'s Library

- -
- -

- You can selectively import top-level collections (which includes their items, subcollections, and subcollection items) below. You may need to wait a few moments if you have several top-level collections. -

- -
- -
- - - -
-
-
Importing selected collection(s) ...
-
- -
- - - - - -
- -
- - \ No newline at end of file diff --git a/lib/import/sync.functions.php b/lib/import/sync.functions.php deleted file mode 100644 index 4c26537..0000000 --- a/lib/import/sync.functions.php +++ /dev/null @@ -1,864 +0,0 @@ - 403 ) ); - - - /**************************************************************************************** - * - * ZOTPRESS BASIC SYNC FUNCTIONS - * - ****************************************************************************************/ - - function zp_autoupdate() - { - // Get interval - $zp_default_autoupdate = "weekly"; - if (get_option("Zotpress_DefaultAutoUpdate")) - $zp_default_autoupdate = get_option("Zotpress_DefaultAutoUpdate"); - - // Get last update date - $zp_last_autoupdate = date('Y-m-d-'); - if (get_option("Zotpress_LastAutoUpdate")) - $zp_last_autoupdate= get_option("Zotpress_LastAutoUpdate"); - - // Find difference - $diff_in_days = intval( floor((strtotime(date('Y-m-d')) - strtotime($zp_last_autoupdate))/3600/24) ); - - $to_update_or_not = false; - - // Determine whether to update - if (($zp_default_autoupdate == "weekly" && $diff_in_days > 7) || - ($zp_default_autoupdate == "daily" && $diff_in_days > 1)) - $to_update_or_not = true; - - return $to_update_or_not; - } - - - - /**************************************************************************************** - * - * ZOTPRESS SYNC ITEMS - * - ****************************************************************************************/ - - function zp_get_local_items ($wpdb, $api_user_id) - { - $query = "SELECT * FROM ".$wpdb->prefix."zotpress_zoteroItems WHERE api_user_id='".$api_user_id."'"; - - $results = $wpdb->get_results( $query, OBJECT ); - $items = array(); - - // Set item key as id, updated to false - foreach ($results as $item) { - $item->updated = 0; - $items[$item->item_key] = $item; - } - - unset($results); - return $items; - } - - - - function zp_get_server_items ($wpdb, $api_user_id, $zp_start) - { - $zp_import_contents = new ZotpressRequest(); - $zp_account = zp_get_account($wpdb, $api_user_id); - //$zp_account = $GLOBALS['zp_session'][$api_user_id]['zp_account']; - - - // See if default exists - $zp_default_style = "apa"; - if (get_option("Zotpress_DefaultStyle")) - $zp_default_style = get_option("Zotpress_DefaultStyle"); - - // Build request URL - $zp_import_url = "https://api.zotero.org/".$zp_account[0]->account_type."/".$api_user_id."/items?"; - if (is_null($zp_account[0]->public_key) === false && trim($zp_account[0]->public_key) != "") - $zp_import_url .= "key=".$zp_account[0]->public_key."&"; - $zp_import_url .= "format=atom&content=json,bib&style=".$zp_default_style."&limit=50&start=".$zp_start; - //var_dump($zp_import_url); - - // Read the external data - $zp_xml = $zp_import_contents->get_request_contents( $zp_import_url, false ); - - // Stop in our tracks if there's a request error - if ($zp_import_contents->request_error) - return $zp_import_contents->request_error; - - // Make it DOM-traversable - $doc_citations = new DOMDocument(); - $doc_citations->loadXML($zp_xml); - - // Get last set - if (!isset($GLOBALS['zp_session'][$api_user_id]['items']['last_set'])) - { - $last_set = ""; - $links = $doc_citations->getElementsByTagName("link"); - - foreach ($links as $link) - { - if ($link->getAttribute('rel') == "last") - { - if (stripos($link->getAttribute('href'), "start=") !== false) - { - $last_set = explode("start=", $link->getAttribute('href')); - $GLOBALS['zp_session'][$api_user_id]['items']['last_set'] = intval($last_set[1]); - } - else - { - $GLOBALS['zp_session'][$api_user_id]['items']['last_set'] = 0; - } - } - } - } - - $entries = $doc_citations->getElementsByTagName("entry"); - - - // COMPARE EACH ENTRY TO LOCAL - // Entries can be items or attachments (e.g. notes) - - foreach ($entries as $entry) - { - $item_key = $entry->getElementsByTagNameNS("http://zotero.org/ns/api", "key")->item(0)->nodeValue; - $retrieved = $entry->getElementsByTagName("updated")->item(0)->nodeValue; - - // Check to see if item key exists in local - if (array_key_exists( $item_key, $GLOBALS['zp_session'][$api_user_id]['items']['zp_local_items'] )) - { - // Check to see if it needs updating - if ($retrieved != $GLOBALS['zp_session'][$api_user_id]['items']['zp_local_items'][$item_key]->retrieved) - { - $GLOBALS['zp_session'][$api_user_id]['items']['zp_items_to_update'][$item_key] = $GLOBALS['zp_session'][$api_user_id]['items']['zp_local_items'][$item_key]->id; - //unset($GLOBALS['zp_session'][$api_user_id]['items']['zp_local_items'][$item_key]); // Leave only the local ones that should be deleted - update_option('ZOTPRESS_DELETE_'.$api_user_id, get_option('ZOTPRESS_DELETE_'.$api_user_id) . "," . $item_key); - } - else // ignore - { - //unset($GLOBALS['zp_session'][$api_user_id]['items']['zp_local_items'][$item_key]); // Leave only the local ones that should be deleted - update_option('ZOTPRESS_DELETE_'.$api_user_id, get_option('ZOTPRESS_DELETE_'.$api_user_id) . "," . $item_key); - continue; - } - } - - // Item key doesn't exist in local, or needs updating, so collect metadata and add - $item_type = $entry->getElementsByTagNameNS("http://zotero.org/ns/api", "itemType")->item(0)->nodeValue; - - // Get citation content (json and bib) - - $citation_content = ""; - $citation_content_temp = new DOMDocument(); - - foreach($entry->getElementsByTagNameNS("http://zotero.org/ns/api", "subcontent") as $child) - { - if ($child->attributes->getNamedItem("type")->nodeValue == "json") - { - $json_content = $child->nodeValue; - } - else // Styled citation - { - foreach($child->childNodes as $child_content) { - $citation_content_temp->appendChild($citation_content_temp->importNode($child_content, true)); - $citation_content = $citation_content_temp->saveHTML(); - } - } - } - - // Get basic metadata from JSON - $json_content_decoded = json_decode($json_content); - - $author = ""; - $author_other = ""; - $date = ""; - $year = ""; - $title = ""; - $numchildren = 0; - $parent = ""; - $link_mode = ""; - - if (count($json_content_decoded->creators) > 0) - foreach ( $json_content_decoded->creators as $creator ) - if ($creator->creatorType == "author") - $author .= $creator->lastName . ", "; - else - $author_other .= $creator->lastName . ", "; - else - $author .= $creator->creators["lastName"]; - - // Determine if we use author or other author type - if (trim($author) == "") - $author = $author_other; - - // Remove last comma - $author = preg_replace('~(.*)' . preg_quote(', ', '~') . '~', '$1' . '', $author, 1); - - $date = $json_content_decoded->date; - $year = zp_extract_year($date); - - if (trim($year) == "") - $year = "1977"; - - $title = $json_content_decoded->title; - - $numchildren = intval($entry->getElementsByTagNameNS("http://zotero.org/ns/api", "numChildren")->item(0)->nodeValue); - - // DOWNLOAD: Find URL - if ($item_type == "attachment") - { - if (isset($json_content_decoded->linkMode)) - $link_mode = $json_content_decoded->linkMode; - } - - // PARENT - foreach($entry->getElementsByTagName("link") as $entry_link) - { - if ($entry_link->getAttribute('rel') == "up") { - $temp = explode("items/", $entry_link->getAttribute('href')); - $temp = explode("?", $temp[1]); - $parent = $temp[0]; - } - - // Get download URL - if ($link_mode == "imported_file" && $entry_link->getAttribute('rel') == "self") { - $citation_content = substr($entry_link->getAttribute('href'), 0, strpos($entry_link->getAttribute('href'), "?")); - } - } - - - // If item key needs updating - if (array_key_exists( $item_key, $GLOBALS['zp_session'][$api_user_id]['items']['zp_items_to_update'] )) - { - $GLOBALS['zp_session'][$api_user_id]['items']['zp_items_to_update'][$item_key] = array ( - "api_user_id" => $zp_account[0]->api_user_id, - "item_key" => $item_key, - "retrieved" => zp_db_prep($retrieved), - "json" => zp_db_prep($json_content), - "author" => zp_db_prep($author), - "zpdate" => zp_db_prep($date), - "year" => zp_db_prep($year), - "title" => zp_db_prep($title), - "itemType" => $item_type, - "linkMode" => $link_mode, - "citation" => zp_db_prep($citation_content), - "style" => zp_db_prep($zp_default_style), - "numchildren" => $numchildren, - "parent" => $parent); - } - // If item key isn't in local, add it - else if (!array_key_exists( $item_key, $GLOBALS['zp_session'][$api_user_id]['items']['zp_local_items'] )) - { - array_push($GLOBALS['zp_session'][$api_user_id]['items']['zp_items_to_add'], - $zp_account[0]->api_user_id, - $item_key, - zp_db_prep($retrieved), - zp_db_prep($json_content), - zp_db_prep($author), - zp_db_prep($date), - zp_db_prep($year), - zp_db_prep($title), - $item_type, - $link_mode, - zp_db_prep($citation_content), - zp_db_prep($zp_default_style), - $numchildren, - $parent); - - $GLOBALS['zp_session'][$api_user_id]['items']['query_total_items_to_add']++; - } - - } // foreach entry - - // LAST ITEM - if ($GLOBALS['zp_session'][$api_user_id]['items']['last_set'] == $zp_start) - { - return false; - } - else // continue to next set of items - { - return true; - } - - unset($zp_import_contents); - unset($zp_import_url); - unset($zp_xml); - unset($doc_citations); - unset($entries); - - } // FUNCTION: zp_get_server_items - - - - function zp_save_synced_items ($wpdb, $api_user_id, $done=true) - { - // RUN QUERIES: UPDATE - - if (count($GLOBALS['zp_session'][$api_user_id]['items']['zp_items_to_update']) > 0) - { - foreach ($GLOBALS['zp_session'][$api_user_id]['items']['zp_items_to_update'] as $item_params) - { - $wpdb->update( - $wpdb->prefix.'zotpress_zoteroItems', - $item_params, - array( 'item_key' => $item_params["item_key"], 'api_user_id' => $item_params["api_user_id"] ), - array( '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%d', '%s' ), - array( '%s', '%s' ) - ); - } - - $wpdb->flush(); - } - - // ADD - if (count($GLOBALS['zp_session'][$api_user_id]['items']['zp_items_to_add']) > 0) - { - $wpdb->query( $wpdb->prepare( - " - INSERT INTO ".$wpdb->prefix."zotpress_zoteroItems - ( api_user_id, item_key, retrieved, json, author, zpdate, year, title, itemType, linkMode, citation, style, numchildren, parent ) - VALUES ( %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %d, %s )".str_repeat(", ( %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %d, %s )", $GLOBALS['zp_session'][$api_user_id]['items']['query_total_items_to_add']-1), - $GLOBALS['zp_session'][$api_user_id]['items']['zp_items_to_add'] - ) ); - - $wpdb->flush(); - } - - // REMOVE: Only at the last set - - if ($done && count($GLOBALS['zp_session'][$api_user_id]['items']['zp_local_items']) > 0) - { - $zp_delete_items = explode(",", get_option('ZOTPRESS_DELETE_'.$api_user_id)); - - foreach ($zp_delete_items as $item_params) - //foreach ($GLOBALS['zp_session'][$api_user_id]['items']['zp_local_items'] as $item_params) - { - $wpdb->query( $wpdb->prepare( - " - DELETE FROM ".$wpdb->prefix."zotpress_zoteroItems - WHERE item_key = %s - AND api_user_id = %s - ", - $item_params->item_key, $item_params->api_user_id - ) ); - } - - $wpdb->flush(); - } - - if ($done) // unset everything - { - unset($GLOBALS['zp_session'][$api_user_id]['items']); - } - else // reset add and update - { - $GLOBALS['zp_session'][$api_user_id]['items']['zp_items_to_add'] = array(); - $GLOBALS['zp_session'][$api_user_id]['items']['zp_items_to_update'] = array(); - $GLOBALS['zp_session'][$api_user_id]['items']['query_total_items_to_add'] = 0; - } - - } // FUNCTION: zp_save_synced_items - - - - /**************************************************************************************** - * - * ZOTPRESS SYNC COLLECTIONS - * - ****************************************************************************************/ - - function zp_get_local_collections ($wpdb, $api_user_id) - { - $query = "SELECT * FROM ".$wpdb->prefix."zotpress_zoteroCollections WHERE api_user_id='".$api_user_id."'"; - - $results = $wpdb->get_results( $query, OBJECT ); - $items = array(); - - // Set item key as id, updated to false - foreach ($results as $item) { - $item->updated = 0; - $items[$item->item_key] = $item; - } - - unset($results); - return $items; - } - - - - function zp_get_server_collections ($wpdb, $api_user_id, $zp_start) - { - $zp_import_contents = new ZotpressRequest(); - $zp_account = zp_get_account($wpdb, $api_user_id); - //$zp_account = $GLOBALS['zp_session'][$api_user_id]['zp_account']; - - $zp_import_url = "https://api.zotero.org/".$zp_account[0]->account_type."/".$zp_account[0]->api_user_id."/collections?limit=50&start=".$zp_start; - if (is_null($zp_account[0]->public_key) === false && trim($zp_account[0]->public_key) != "") - $zp_import_url .= "&key=".$zp_account[0]->public_key; - - $zp_xml = $zp_import_contents->get_request_contents( $zp_import_url, false ); - - - // Make it DOM-traversable - $doc_citations = new DOMDocument(); - $doc_citations->loadXML($zp_xml); - - // Get last set - if (!isset($GLOBALS['zp_session'][$api_user_id]['collections']['last_set'])) - { - $last_set = ""; - $links = $doc_citations->getElementsByTagName("link"); - - foreach ($links as $link) - { - if ($link->getAttribute('rel') == "last") - { - if (stripos($link->getAttribute('href'), "start=") !== false) - { - $last_set = explode("start=", $link->getAttribute('href')); - $GLOBALS['zp_session'][$api_user_id]['collections']['last_set'] = intval($last_set[1]); - } - else - { - $GLOBALS['zp_session'][$api_user_id]['collections']['last_set'] = 0; - } - } - } - } - - - // PREPARE EACH ENTRY FOR DB INSERT - - $entries = $doc_citations->getElementsByTagName("entry"); - - foreach ($entries as $entry) - { - $item_key = $entry->getElementsByTagNameNS("http://zotero.org/ns/api", "key")->item(0)->nodeValue; - $retrieved = $entry->getElementsByTagName("updated")->item(0)->nodeValue; - - // Check to see if item key exists in local - if (array_key_exists( $item_key, $GLOBALS['zp_session'][$api_user_id]['collections']['zp_local_collections'] )) - { - // Check to see if it needs updating - if ($retrieved != $GLOBALS['zp_session'][$api_user_id]['collections']['zp_local_collections'][$item_key]->retrieved) - { - $GLOBALS['zp_session'][$api_user_id]['collections']['zp_collections_to_update'][$item_key] = $GLOBALS['zp_session'][$api_user_id]['collections']['zp_local_collections'][$item_key]->id; - //unset($GLOBALS['zp_session'][$api_user_id]['collections']['zp_local_collections'][$item_key]); // Leave only the local ones that should be deleted - update_option('ZOTPRESS_DELETE_'.$api_user_id, get_option('ZOTPRESS_DELETE_'.$api_user_id) . "," . $item_key); - } - else // ignore - { - //unset($GLOBALS['zp_session'][$api_user_id]['collections']['zp_local_collections'][$item_key]); // Leave only the local ones that should be deleted - update_option('ZOTPRESS_DELETE_'.$api_user_id, get_option('ZOTPRESS_DELETE_'.$api_user_id) . "," . $item_key); - continue; - } - } - - $title = $entry->getElementsByTagName("title")->item(0)->nodeValue; - $parent = ""; - - // Get parent collection - foreach($entry->getElementsByTagName("link") as $link) - { - if ($link->attributes->getNamedItem("rel")->nodeValue == "up") - { - $parent_temp = explode("/", $link->attributes->getNamedItem("href")->nodeValue); - $parent = $parent_temp[count($parent_temp)-1]; - } - } - - $numCollections = $entry->getElementsByTagNameNS("http://zotero.org/ns/api", "numCollections")->item(0)->nodeValue; - $numItems = $entry->getElementsByTagNameNS("http://zotero.org/ns/api", "numItems")->item(0)->nodeValue; - - unset($zp_import_contents); - unset($zp_import_url); - unset($zp_xml); - - - - // GET LIST OF ITEM KEYS - $zp_import_contents = new ZotpressRequest(); - - $zp_import_url = "https://api.zotero.org/".$zp_account[0]->account_type."/".$zp_account[0]->api_user_id."/collections/".$item_key."/items?format=keys"; - if (is_null($zp_account[0]->public_key) === false && trim($zp_account[0]->public_key) != "") - $zp_import_url .= "&key=".$zp_account[0]->public_key; - - // Import content - $zp_xml = $zp_import_contents->get_request_contents( $zp_import_url, false ); - - $zp_collection_itemkeys = rtrim(str_replace("\n", ",", $zp_xml), ","); - - - - // If item key needs updating - if (array_key_exists( $item_key, $GLOBALS['zp_session'][$api_user_id]['collections']['zp_collections_to_update'] )) - { - $GLOBALS['zp_session'][$api_user_id]['collections']['zp_collections_to_update'][$item_key] = array ( - "api_user_id" => $zp_account[0]->api_user_id, - "title" => zp_db_prep($title), - "retrieved" => zp_db_prep($retrieved), - "parent" => $parent, - "item_key" => $item_key, - "numCollections" => $numCollections, - "numItems" => $numItems, - "listItems" => zp_db_prep($zp_collection_itemkeys) - ); - } - // If item key isn't in local, add it - else if (!array_key_exists( $item_key, $GLOBALS['zp_session'][$api_user_id]['collections']['zp_local_collections'] )) - { - array_push($GLOBALS['zp_session'][$api_user_id]['collections']['zp_collections_to_add'], - $zp_account[0]->api_user_id, - zp_db_prep($title), - zp_db_prep($retrieved), - $parent, - $item_key, - $numCollections, - $numItems, - zp_db_prep($zp_collection_itemkeys) - ); - $GLOBALS['zp_session'][$api_user_id]['collections']['query_total_collections_to_add']++; - } - - unset($title); - unset($retrieved); - unset($parent); - unset($item_key); - unset($numCollections); - unset($numItems); - unset($zp_collection_itemkeys); - - } // entry - - - // LAST SET - if ($GLOBALS['zp_session'][$api_user_id]['collections']['last_set'] == $zp_start) - { - return false; - } - else // continue to next set of collections - { - return true; - } - - unset($zp_import_contents); - unset($zp_import_url); - unset($zp_xml); - unset($doc_citations); - unset($entries); - - } // FUNCTION: zp_get_server_collections - - - - function zp_save_synced_collections ($wpdb, $api_user_id, $done=true) - { - // RUN QUERIES: UPDATE - - if (count($GLOBALS['zp_session'][$api_user_id]['collections']['zp_collections_to_update']) > 0) - { - foreach ($GLOBALS['zp_session'][$api_user_id]['collections']['zp_collections_to_update'] as $item_params) - { - $wpdb->update( - $wpdb->prefix.'zotpress_zoteroCollections', - $item_params, - array( 'item_key' => $item_params["item_key"], 'api_user_id' => $item_params["api_user_id"] ), - array( '%s', '%s', '%s', '%s', '%s', '%d', '%d', '%s' ), - array( '%s', '%s' ) - ); - } - - $wpdb->flush(); - } - - // ADD - - if (count($GLOBALS['zp_session'][$api_user_id]['collections']['zp_collections_to_add']) > 0) - { - $wpdb->query( $wpdb->prepare( - " - INSERT INTO ".$wpdb->prefix."zotpress_zoteroCollections - ( api_user_id, title, retrieved, parent, item_key, numCollections, numItems, listItems ) - VALUES ( %s, %s, %s, %s, %s, %d, %d, %s )".str_repeat(", ( %s, %s, %s, %s, %s, %d, %d, %s )", $GLOBALS['zp_session'][$api_user_id]['collections']['query_total_collections_to_add']-1), - $GLOBALS['zp_session'][$api_user_id]['collections']['zp_collections_to_add'] - ) ); - - $wpdb->flush(); - } - - // REMOVE - - if ($done && count($GLOBALS['zp_session'][$api_user_id]['collections']['zp_local_collections']) > 0) - { - $zp_delete_items = explode(",", get_option('ZOTPRESS_DELETE_'.$api_user_id)); - - foreach ($zp_delete_items as $item_params) - //foreach ($GLOBALS['zp_session'][$api_user_id]['collections']['zp_local_collections'] as $item_params) - { - $wpdb->query( $wpdb->prepare( - " - DELETE FROM ".$wpdb->prefix."zotpress_zoteroCollections - WHERE item_key = %s - AND api_user_id = %s - ", - $item_params->item_key, $item_params->api_user_id - ) ); - } - - $wpdb->flush(); - } - - if ($done) // unset everything - { - unset($GLOBALS['zp_session'][$api_user_id]['collections']); - } - else // reset add and update - { - $GLOBALS['zp_session'][$api_user_id]['collections']['zp_collections_to_update'] = array(); - $GLOBALS['zp_session'][$api_user_id]['collections']['zp_collections_to_add'] = array(); - $GLOBALS['zp_session'][$api_user_id]['collections']['query_total_collections_to_add'] = 0; - } - - } // FUNCTION: zp_save_synced_collections - - - - /**************************************************************************************** - * - * ZOTPRESS SYNC TAGS - * - ****************************************************************************************/ - - function zp_get_local_tags ($wpdb, $api_user_id) - { - $query = "SELECT * FROM ".$wpdb->prefix."zotpress_zoteroTags WHERE api_user_id='".$api_user_id."'"; - - $results = $wpdb->get_results( $query, OBJECT ); - $items = array(); - - // Set title as id, updated to false - foreach ($results as $item) { - $item->updated = 0; - $items[($item->title)] = $item; - } - - unset($results); - return $items; - } - - - - function zp_get_server_tags ($wpdb, $api_user_id, $zp_start) - { - $zp_import_contents = new ZotpressRequest(); - $zp_account = zp_get_account($wpdb, $api_user_id); - //$zp_account = $GLOBALS['zp_session'][$api_user_id]['zp_account']; - - // Build request URL - $zp_import_url = "https://api.zotero.org/".$zp_account[0]->account_type."/".$zp_account[0]->api_user_id."/tags?limit=50&start=".$zp_start; - if (is_null($zp_account[0]->public_key) === false && trim($zp_account[0]->public_key) != "") - $zp_import_url .= "&key=".$zp_account[0]->public_key; - - $zp_xml = $zp_import_contents->get_request_contents( $zp_import_url, false ); - - // Make it DOM-traversable - $doc_citations = new DOMDocument(); - $doc_citations->loadXML($zp_xml); - - // Get last set - if (!isset($GLOBALS['zp_session'][$api_user_id]['tags']['last_set'])) - { - $last_set = ""; - $links = $doc_citations->getElementsByTagName("link"); - - foreach ($links as $link) - { - if ($link->getAttribute('rel') == "last") - { - if (stripos($link->getAttribute('href'), "start=") !== false) - { - $last_set = explode("start=", $link->getAttribute('href')); - $GLOBALS['zp_session'][$api_user_id]['tags']['last_set'] = intval($last_set[1]); - } - else - { - $GLOBALS['zp_session'][$api_user_id]['tags']['last_set'] = 0; - } - } - } - } - - $entries = $doc_citations->getElementsByTagName("entry"); - - foreach ($entries as $entry) - { - $title = $entry->getElementsByTagName("title")->item(0)->nodeValue; - $retrieved = $entry->getElementsByTagName("updated")->item(0)->nodeValue; - - // Check to see if tags exists in local - if (array_key_exists( trim($title), $GLOBALS['zp_session'][$api_user_id]['tags']['zp_local_tags'] )) - { - // Check to see if it needs updating - if ($retrieved != $GLOBALS['zp_session'][$api_user_id]['tags']['zp_local_tags'][trim($title)]->retrieved) - { - $GLOBALS['zp_session'][$api_user_id]['tags']['zp_tags_to_update'][trim($title)] = $GLOBALS['zp_session'][$api_user_id]['tags']['zp_local_tags'][trim($title)]->id; - //unset($GLOBALS['zp_session'][$api_user_id]['tags']['zp_local_tags'][trim($title)]); // Leave only the local ones that should be deleted - update_option('ZOTPRESS_DELETE_'.$api_user_id, get_option('ZOTPRESS_DELETE_'.$api_user_id) . "," . $item_key); - } - else // ignore - { - //unset($GLOBALS['zp_session'][$api_user_id]['tags']['zp_local_tags'][trim($title)]); // Leave only the local ones that should be deleted - update_option('ZOTPRESS_DELETE_'.$api_user_id, get_option('ZOTPRESS_DELETE_'.$api_user_id) . "," . $item_key); - continue; - } - } - - $numItems = $entry->getElementsByTagNameNS("http://zotero.org/ns/api", "numItems")->item(0)->nodeValue; - - unset($zp_import_contents); - unset($zp_import_url); - unset($zp_xml); - - - - // GET LIST OF ITEM KEYS - $zp_import_contents = new ZotpressRequest(); - - $zp_import_url = "https://api.zotero.org/".$zp_account[0]->account_type."/".$zp_account[0]->api_user_id."/tags/".urlencode($title)."/items?format=keys"; - if (is_null($zp_account[0]->public_key) === false && trim($zp_account[0]->public_key) != "") - $zp_import_url .= "&key=".$zp_account[0]->public_key; - - // Import content - $zp_xml = $zp_import_contents->get_request_contents( $zp_import_url, false ); - - $zp_tag_itemkeys = rtrim(str_replace("\n", ",", $zp_xml), ","); - - - - // If item key needs updating - if (array_key_exists( trim($title), $GLOBALS['zp_session'][$api_user_id]['tags']['zp_tags_to_update'] )) - { - $GLOBALS['zp_session'][$api_user_id]['tags']['zp_tags_to_update'][trim($title)] = array ( - "api_user_id" => $zp_account[0]->api_user_id, - "title" => zp_db_prep($title), - "retrieved" => zp_db_prep($retrieved), - "numItems" => $numItems, - "listItems" => zp_db_prep($zp_tag_itemkeys) - ); - } - // If item key isn't in local, add it - else if (!array_key_exists( trim($title), $GLOBALS['zp_session'][$api_user_id]['tags']['zp_local_tags'] )) - { - array_push($GLOBALS['zp_session'][$api_user_id]['tags']['zp_tags_to_add'], - $zp_account[0]->api_user_id, - zp_db_prep($title), - zp_db_prep($retrieved), - $numItems, - zp_db_prep($zp_tag_itemkeys) - ); - $GLOBALS['zp_session'][$api_user_id]['tags']['query_total_tags_to_add']++; - } - - unset($title); - unset($retrieved); - unset($numItems); - unset($zp_tag_itemkeys); - - } // entry - - - // LAST SET - if ($GLOBALS['zp_session'][$api_user_id]['tags']['last_set'] == $zp_start) - { - return false; - } - else // continue to next set of tags - { - return true; - } - - unset($zp_import_contents); - unset($zp_import_url); - unset($zp_xml); - unset($doc_citations); - unset($entries); - - } // FUNCTION: zp_get_server_tags - - - - function zp_save_synced_tags ($wpdb, $api_user_id, $done=true) - { - // RUN QUERIES: UPDATE - - if (count($GLOBALS['zp_session'][$api_user_id]['tags']['zp_tags_to_update']) > 0) - { - foreach ($GLOBALS['zp_session'][$api_user_id]['tags']['zp_tags_to_update'] as $item_params) - { - $wpdb->update( - $wpdb->prefix.'zotpress_zoteroTags', - $item_params, - array( 'title' => trim($item_params["title"]), 'api_user_id' => $item_params["api_user_id"] ), - array( '%s', '%s', '%s', '%d', '%s' ), - array( '%s', '%s' ) - ); - } - - $wpdb->flush(); - } - - // ADD - - if (count($GLOBALS['zp_session'][$api_user_id]['tags']['zp_tags_to_add']) > 0) - { - $wpdb->query( $wpdb->prepare( - " - INSERT INTO ".$wpdb->prefix."zotpress_zoteroTags - ( api_user_id, title, retrieved, numItems, listItems ) - VALUES ( %s, %s, %s, %d, %s )".str_repeat(", ( %s, %s, %s, %d, %s )", $GLOBALS['zp_session'][$api_user_id]['tags']['query_total_tags_to_add']-1), - $GLOBALS['zp_session'][$api_user_id]['tags']['zp_tags_to_add'] - ) ); - - $wpdb->flush(); - } - - // REMOVE - - if ($done && count($GLOBALS['zp_session'][$api_user_id]['tags']['zp_local_tags']) > 0) - { - $zp_delete_items = explode(",", get_option('ZOTPRESS_DELETE_'.$api_user_id)); - - foreach ($zp_delete_items as $item_params) - //foreach ($GLOBALS['zp_session'][$api_user_id]['tags']['zp_local_tags'] as $item_params) - { - $wpdb->query( $wpdb->prepare( - " - DELETE FROM ".$wpdb->prefix."zotpress_zoteroTags - WHERE title = %s - AND api_user_id = %s - ", - trim($item_params->title), $item_params->api_user_id - ) ); - } - - $wpdb->flush(); - } - - if ($done) // unset everything - { - unset($GLOBALS['zp_session'][$api_user_id]['tags']); - } - else // reset add and update - { - $GLOBALS['zp_session'][$api_user_id]['tags']['zp_tags_to_update'] = array(); - $GLOBALS['zp_session'][$api_user_id]['tags']['zp_tags_to_add'] = array(); - $GLOBALS['zp_session'][$api_user_id]['tags']['query_total_tags_to_add'] = 0; - } - - } // FUNCTION: zp_save_synced_tags - - - -?> \ No newline at end of file diff --git a/lib/import/sync.php b/lib/import/sync.php deleted file mode 100644 index 5f0be27..0000000 --- a/lib/import/sync.php +++ /dev/null @@ -1,232 +0,0 @@ - 403 ) ); - - // Ignore user abort - ignore_user_abort(true); - set_time_limit(60*10); // ten minutes - - // Access WordPress db - global $wpdb; - - // Include Request Functionality - require("../request/rss.request.php"); - - // Include Import and Sync Functions - require("import.functions.php"); - require("sync.functions.php"); - - - -?> - - - - - Syncing - - - - - - - - \ No newline at end of file diff --git a/lib/request/request.cite.php b/lib/request/request.cite.php new file mode 100644 index 0000000..924cb5e --- /dev/null +++ b/lib/request/request.cite.php @@ -0,0 +1,62 @@ +account_type."/".$zp_api_user_id."/items/".$zp_item_key."?format=ris&key=".$zp_account[0]->public_key; + + // Read the external data + $zp_xml = $zp_import_contents->get_request_contents( $zp_import_url, true, 'ris' ); + + if ( $zp_xml !== false + && strlen(trim($zp_xml["json"])) > 0 ) + { + header('Content-Type: application/x-research-info-systems'); + header('Content-Disposition: attachment; filename="itemkey-'.$zp_item_key.'.ris"'); + header('Content-Description: Cite with RIS'); + echo $zp_xml["json"]; + } + else + { + echo "No RIS file found."; + } + } + else + { + echo $zp_xml; + } +?> diff --git a/lib/request/request.class.php b/lib/request/request.class.php new file mode 100644 index 0000000..394abf7 --- /dev/null +++ b/lib/request/request.class.php @@ -0,0 +1,427 @@ +update = $update; + + if ( $request_type != 'item' ) + $this->request_type = $request_type; + + // Get and set api user id + $divider = "users/"; + if ( strpos( $url, "groups" ) !== false ) + $divider = "groups/"; + $temp1 = explode( $divider, $url ); + $temp2 = explode( "/", $temp1[1] ); + $this->api_user_id = $temp2[0]; + } + + + // NOTE: used by shortcode.request.php + function get_request_cache( $url, $update, $request_type = 'item' ) + { + $this->set_request_meta( $url, $update, $request_type ); + + $data = $this->check_and_get_cache( $url ); + + // Check for request errors + if ( $this->request_error !== false ) + return 'Error: ' . $this->request_error; // exit(); + else // Otherwise, return the data + return $data; + } + + + function get_request_contents( $url, $update, $request_type = 'item' ) + { + $this->set_request_meta( $url, $update, $request_type ); + + $data = $this->get_xml_data( $url ); + + // Check for request errors + if ( $this->request_error !== false ) + return 'Error: ' . $this->request_error; // exit(); + else // Otherwise, return the data + return $data; + } + + + // Limit Zotero request calls based on elapsed time + function checkTime( $last_time ) + { + // Set time zone based on WP installation + date_default_timezone_set( wp_timezone_string() ); + + // Set up the dates to compare + $last_time = date_create($last_time); + $now = date_create(); + + // OLD: + // $last_time = explode( " ", $last_time ); + // $last_time = strtotime( $last_time[1] ); + // $now = strtotime( date('h:i:s') ); + // if ( round(abs($now - $last_time) / 60,2) > 10 ) + + $timeElapsed = date_diff($last_time, $now); + + // Convert to total minutes difference + $timeElapsedMin = ( $timeElapsed->y * 525600 ) + + ( $timeElapsed->m * 43800 ) + + ( $timeElapsed->d * 1440 ) + + ( $timeElapsed->i ) + + ( $timeElapsed->s * 0.0166667 ); + + if ( $timeElapsedMin > $this->checkEveryMin ) + return true; + else // Not time yet + return false; + } + + + function check_and_get_cache( $url ) + { + global $wpdb; + + // First, check db to see if cached version exists + $zp_query = + " + SELECT DISTINCT ".$wpdb->prefix."zotpress_cache.* + FROM ".$wpdb->prefix."zotpress_cache + WHERE ".$wpdb->prefix."zotpress_cache.request_id = '".md5( $url )."' + AND ".$wpdb->prefix."zotpress_cache.api_user_id = '".$this->api_user_id."' + "; + $zp_results = $wpdb->get_results( $zp_query, OBJECT ); + unset($zp_query); + + if ( count($zp_results) != 0 ) + { + $json = $this->zp_gzdecode( $zp_results[0]->json ); + $tags = $this->zp_gzdecode( $zp_results[0]->tags ); + $headers = $zp_results[0]->headers; + } + + else // No cache + { + $json = json_encode( array('status' => 'No Cache') ); + $tags = false; + $headers = false; + } + + $wpdb->flush(); + + return array( "json" => $json, "tags" => $tags, "headers" => $headers ); + } + + + function get_xml_data( $url ) + { + global $wpdb; + + // Just want to check for cached version + if ( $this->update === false ) + { + // First, check db to see if cached version exists + $zp_query = + " + SELECT DISTINCT ".$wpdb->prefix."zotpress_cache.* + FROM ".$wpdb->prefix."zotpress_cache + WHERE ".$wpdb->prefix."zotpress_cache.request_id = '".md5( $url )."' + AND ".$wpdb->prefix."zotpress_cache.api_user_id = '".$this->api_user_id."' + "; + $zp_results = $wpdb->get_results( $zp_query, OBJECT ); unset($zp_query); + + // Cache exists + if ( count($zp_results) > 0 ) + { + $json = $this->zp_gzdecode($zp_results[0]->json); + $tags = $this->zp_gzdecode($zp_results[0]->tags); + $headers = $zp_results[0]->headers; + } + + else // No cached + { + $regular = $this->getRegular( $wpdb, $url ); + + $json = $regular['data']; + $tags = $regular['tags']; + $headers = $regular['headers']; + } + + $wpdb->flush(); + } + + else // Normal or RIS + { + $regular = $this->getRegular( $wpdb, $url ); + + $json = $regular['data']; + $tags = $regular['tags']; + $headers = $regular['headers']; + } + + return array( "json" => $json, "tags" => $tags, "headers" => $headers ); + } + + + function getRegular( $wpdb, $url ) + { + // First, check db to see if cached version exists + $zp_query = + " + SELECT DISTINCT ".$wpdb->prefix."zotpress_cache.* + FROM ".$wpdb->prefix."zotpress_cache + WHERE ".$wpdb->prefix."zotpress_cache.request_id = '".md5( $url )."' + AND ".$wpdb->prefix."zotpress_cache.api_user_id = '".$this->api_user_id."' + "; + $zp_results = $wpdb->get_results($zp_query, OBJECT); unset($zp_query); + + // Then, if no cached version, proceed and save one. + // Or, if cached version exists, check to see if it's out of date, + // and return whichever is newer (and cache the newest). + // if ( count($zp_results) == 0 + // || ( property_exists($zp_results[0], 'retrieved') && $zp_results[0]->retrieved !== null + // && $this->checkTime($zp_results[0]->retrieved) ) ) + // { + if ( count($zp_results) == 0 + || ( isset($zp_results[0]->retrieved) + && $this->checkTime($zp_results[0]->retrieved) ) ) + { + $headers_arr = array ( "Zotero-API-Version" => "3" ); + + if ( count($zp_results) > 0 ) + $headers_arr["If-Modified-Since-Version"] = $zp_results[0]->libver; + + // Get response + $response = wp_remote_get( $url, array ( 'headers' => $headers_arr ) ); + + if ( is_wp_error($response) ) + $this->request_error = $response->get_error_message(); + else + $headers = json_encode( wp_remote_retrieve_headers( $response )->getAll() ); + } + + if ( ! $this->request_error ) + { + // Proceed if no cached version or to check server for newer + if ( count($zp_results) == 0 + || ( isset($response["response"]["code"]) + && $response["response"]["code"] != "304" ) ) + { + // Deal with errors + if ( is_wp_error($response) + || ! isset($response['body']) ) + { + $this->request_error = $response->get_error_message(); + if ( $response->get_error_code() == "http_request_failed" ) + { + // Try again with less restrictions + add_filter('https_ssl_verify', '__return_false'); + $response = wp_remote_get( $url, array( 'headers' => array("Zotero-API-Version" => "2") ) ); + + if (is_wp_error($response) || ! isset($response['body'])) { + $this->request_error = $response->get_error_message(); + } elseif ($response == "An error occurred" || ( isset($response['body']) && $response['body'] == "An error occurred")) { + $this->request_error = "WordPress was unable to import from Zotero. This is likely caused by an incorrect citation style name. For example, 'mla' is now 'modern-language-association'. Use the name found in the style's URL at the Zotero Style Repository."; + } else // no errors this time + { + $this->request_error = false; + } + } + } + + elseif ( $response == "An error occurred" + || ( isset($response['body']) + && $response['body'] == "An error occurred") ) + { + $this->request_error = "WordPress was unable to import from Zotero. This is likely caused by an incorrect citation style name. For example, 'mla' is now 'modern-language-association'. Use the name found in the style's URL at the Zotero Style Repository."; + } + + // Then, get actual data + $data = wp_remote_retrieve_body( $response ); // Thanks to Trainsmart.com developer! + + // Make sure tags didn't return an error -- redo if so + if ( $data == "Tag not found" ) + { + $url_break = explode("/", $url); + $url = $url_break[0]."//".$url_break[2]."/".$url_break[3]."/".$url_break[4]."/".$url_break[7]; + $url = str_replace("=50", "=5", $url); + + $data = $this->get_xml_data( $url ); + } + + // Add or update cache, if not attachment, etc. + if ( isset($response["headers"]["last-modified-version"]) ) + { + if ( $this->request_type != 'ris' ) + { + $data = json_decode($data); // will become 'json' + $tags = array(); // empty for now; by item key later + + // If not array, turn into one for simplicity + if ( ! is_array($data) ) $data = array($data); + + // Remove unncessary details + // REVIEW: Does this account for all unused metadata? Depends on item type ... + foreach( $data as $id => $item ) + { + if ( property_exists($data[$id], 'version') ) unset($data[$id]->version); + if ( property_exists($data[$id], 'links') ) unset($data[$id]->links); + + if ( property_exists($data[$id], 'library') ) + { + if ( property_exists($data[$id]->library, 'type') ) unset($data[$id]->library->type); + if ( property_exists($data[$id]->library, 'name') ) unset($data[$id]->library->name); + if ( property_exists($data[$id]->library, 'links') ) unset($data[$id]->library->links); + } + if ( property_exists($data[$id], 'data') ) + { + if ( property_exists($data[$id]->data, 'key') ) unset($data[$id]->data->key); + if ( property_exists($data[$id]->data, 'version') ) unset($data[$id]->data->version); + if ( property_exists($data[$id]->data, 'series') ) unset($data[$id]->data->series); + if ( property_exists($data[$id]->data, 'seriesNumber') ) unset($data[$id]->data->seriesNumber); + if ( property_exists($data[$id]->data, 'seriesTitle') ) unset($data[$id]->data->seriesTitle); + if ( property_exists($data[$id]->data, 'seriesText') ) unset($data[$id]->data->seriesText); + if ( property_exists($data[$id]->data, 'publicationTitle') ) unset($data[$id]->data->publicationTitle); + if ( property_exists($data[$id]->data, 'journalAbbreviation') ) unset($data[$id]->data->journalAbbreviation); + if ( property_exists($data[$id]->data, 'issue') ) unset($data[$id]->data->issue); + if ( property_exists($data[$id]->data, 'volume') ) unset($data[$id]->data->volume); + if ( property_exists($data[$id]->data, 'numberOfVolumes') ) unset($data[$id]->data->numberOfVolumes); + if ( property_exists($data[$id]->data, 'edition') ) unset($data[$id]->data->edition); + if ( property_exists($data[$id]->data, 'place') ) unset($data[$id]->data->place); + if ( property_exists($data[$id]->data, 'publisher') ) unset($data[$id]->data->publisher); + if ( property_exists($data[$id]->data, 'pages') ) unset($data[$id]->data->pages); + if ( property_exists($data[$id]->data, 'numPages') ) unset($data[$id]->data->numPages); + if ( property_exists($data[$id]->data, 'shortTitle') ) unset($data[$id]->data->shortTitle); + if ( property_exists($data[$id]->data, 'accessDate') ) unset($data[$id]->data->accessDate); + if ( property_exists($data[$id]->data, 'archive') ) unset($data[$id]->data->archive); + if ( property_exists($data[$id]->data, 'archiveLocation') ) unset($data[$id]->data->archiveLocation); + if ( property_exists($data[$id]->data, 'libraryCatalog') ) unset($data[$id]->data->libraryCatalog); + if ( property_exists($data[$id]->data, 'callNumber') ) unset($data[$id]->data->callNumber); + if ( property_exists($data[$id]->data, 'rights') ) unset($data[$id]->data->rights); + if ( property_exists($data[$id]->data, 'extra') ) unset($data[$id]->data->extra); + if ( property_exists($data[$id]->data, 'relations') ) unset($data[$id]->data->relations); + if ( property_exists($data[$id]->data, 'dateAdded') ) unset($data[$id]->data->dateAdded); + if ( property_exists($data[$id]->data, 'websiteTitle') ) unset($data[$id]->data->websiteTitle); + if ( property_exists($data[$id]->data, 'websiteType') ) unset($data[$id]->data->websiteType); + if ( property_exists($data[$id]->data, 'inPublications') ) unset($data[$id]->data->inPublications); + if ( property_exists($data[$id]->data, 'presentationType') ) unset($data[$id]->data->presentationType); + if ( property_exists($data[$id]->data, 'meetingName') ) unset($data[$id]->data->meetingName); + } + + // As of 7.1.4, tags are saved separately + // due to possibily large quantities and the + // limits of blob; so we always save now + // REVIEW: Do we need the account, too? + $tags[$item->key] = ""; + + if ( property_exists($data[$id], 'data') + && property_exists($data[$id]->data, 'tags') ) + { + $tags[$item->key] = $data[$id]->data->tags; + unset($data[$id]->data->tags); + } + + // if ( ! $this->showtags + // && property_exists($data[$id], 'data->tags') ) + // unset($data[$id]->data->tags); + } + + $json = json_encode($data); + $tags = json_encode($tags); + + $wpdb->query( $wpdb->prepare( + " + INSERT INTO ".$wpdb->prefix."zotpress_cache + ( request_id, api_user_id, json, tags, headers, libver, retrieved ) + VALUES ( %s, %s, %s, %s, %s, %d, %s ) + ON DUPLICATE KEY UPDATE + json = VALUES(json), + tags = VALUES(tags), + headers = VALUES(headers), + libver = VALUES(libver), + retrieved = VALUES(retrieved) + ", + array + ( + md5( $url ), + $this->api_user_id, + gzencode($json), + gzencode($tags), // 7.1.4: separated from $data + $headers, + $response["headers"]["last-modified-version"], + date('m/d/Y h:i:s a') + ) + ) ); + } + + else // assume 'ris' + { + // REVIEW: Eventually cache? + // NOTE: $data is everything / the RIS + $json = $data; + $tags = false; + // $headers = $response["headers"]; + } + } + + else // If not an item, e.g., if attachment, PDF, etc. + { + $json = $data; + $tags = false; + $headers = $response["headers"]; + } + } + + // Retrieve cached version + else + { + $json = $this->zp_gzdecode($zp_results[0]->json); + $tags = $this->zp_gzdecode($zp_results[0]->tags); + $headers = $zp_results[0]->headers; + } + } + + $wpdb->flush(); + + return array( "data" => $json, "tags" => $tags, "headers" => $headers ); + } + } +} + +?> diff --git a/lib/request/request.dl.php b/lib/request/request.dl.php new file mode 100644 index 0000000..6375264 --- /dev/null +++ b/lib/request/request.dl.php @@ -0,0 +1,87 @@ +account_type."/".$zp_api_user_id."/items/".$zp_item_key; + $zp_import_meta_url = $zp_import_baseurl."?key=".$zp_account[0]->public_key; + $zp_import_data_url = $zp_import_baseurl."/file/view?key=".$zp_account[0]->public_key; + + // Read the external data + $zp_meta_xml = $zp_import_filemeta->get_request_contents( $zp_import_meta_url, true ); // Unsure about "true" + $zp_data_xml = $zp_import_filedata->get_request_contents( $zp_import_data_url, true ); // Unsure about "true" + + // var_dump($zp_data_xml);exit; + + // Determine filename based on content type + // $zp_filename = "download-".$zp_item_key."."; + // if ( strpos( $zp_content_type, "pdf" ) ) $zp_filename .= "pdf"; + // else if ( strpos( $zp_content_type, "wordprocessingml.document" ) ) $zp_filename .= "docx"; + // else if ( strpos( $zp_content_type, "msword" ) ) $zp_filename .= "doc"; + // else if ( strpos( $zp_content_type, "latex" ) ) $zp_filename .= "latex"; + // else if ( strpos( $zp_content_type, "presentationml.presentation" ) ) $zp_filename .= "pptx"; + // else if ( strpos( $zp_content_type, "ms-powerpointtd" ) ) $zp_filename .= "ppt"; + // else if ( strpos( $zp_content_type, "rtf" ) ) $zp_filename .= "rtf"; + // else if ( strpos( $zp_content_type, "opendocument.text" ) ) $zp_filename .= "odt"; + // else if ( strpos( $zp_content_type, "opendocument.presentation" ) ) $zp_filename .= "odp"; + + if ( $zp_meta_xml !== false + && $zp_data_xml !== false + && strlen(trim($zp_meta_xml["json"])) > 0 + && strlen(trim($zp_data_xml["json"])) > 0 ) + { + $zp_meta_xml_json = json_decode($zp_meta_xml["json"]); + + header( "Content-Type:".$zp_content_type); + header( "Content-Disposition:inline;filename=".$zp_meta_xml_json[0]->data->filename ); + echo $zp_data_xml["json"]; + } + else { + $zp_data_xml = "No file found."; + } + } + else { + echo $zp_data_xml; + } +?> diff --git a/lib/request/request.functions.php b/lib/request/request.functions.php new file mode 100644 index 0000000..b18d8e7 --- /dev/null +++ b/lib/request/request.functions.php @@ -0,0 +1,185 @@ + 0 ): + preg_match_all( '/(\d{4})/', $date, $matches ); + if ( isset($matches[0][0]) ): + return $matches[0][0]; + else: + return ""; + endif; + else: + return ""; + endif; + } + } + + + if ( ! function_exists('zp_get_api_user_id') ) + { + function zp_get_api_user_id ($api_user_id_incoming=false) + { + if (isset($_GET['api_user_id']) && preg_match("/^\\d+\$/", $_GET['api_user_id']) == 1) { + $api_user_id = htmlentities($_GET['api_user_id']); + } elseif ($api_user_id_incoming !== false) { + $api_user_id = $api_user_id_incoming; + } else + $api_user_id = false; + + return $api_user_id; + } + } + + + if ( ! function_exists('zp_get_account') ) + { + function zp_get_account ($wpdb, $api_user_id_incoming=false) + { + if ($api_user_id_incoming !== false) + { + $zp_account = $wpdb->get_results( + $wpdb->prepare( + "SELECT * FROM ".$wpdb->prefix."zotpress WHERE api_user_id='%s'", + $api_user_id_incoming + ) + ); + } + else + { + $zp_account = $wpdb->get_results("SELECT * FROM ".$wpdb->prefix."zotpress ORDER BY id DESC LIMIT 1"); + } + + return $zp_account; + } + } + + + + if ( ! function_exists('zp_clear_cache_for_user') ) + { + function zp_clear_cache_for_user ($wpdb, $api_user_id) + { + $wpdb->query("DELETE FROM ".$wpdb->prefix."zotpress_cache WHERE api_user_id='".$api_user_id."'"); + } + } + + + if ( ! function_exists('zp_check_author_continue') ) + { + // Takes single author + function zp_check_author_continue( $item, $author ) + { + $author_continue = false; + $author = strtolower($author); + + // Accounts for last names with: de, van, el, seif + if (stripos( $author, "van " ) !== false) { + $author = explode( "van ", $author ); + $author[1] = "van ".$author[1]; + } elseif (stripos( $author, "de " ) !== false) { + $author = explode( "de ", $author ); + $author[1] = "de ".$author[1]; + } elseif (stripos( $author, "el " ) !== false) { + $author = explode( "el ", $author ); + $author[1] = "el ".$author[1]; + } elseif (stripos( $author, "seif " ) !== false) { + $author = explode( "seif ", $author ); + $author[1] = "seif ".$author[1]; + } elseif (stripos( $author, " " ) !== false) { + $author = explode( " ", $author ); + // Deal with multiple blanks + // NOTE: Previously assumed multiple first/middle names + // CHANGED: Check this possibility as well as multiple (7.3) + // last names; so keep array of 1-3+ items + // if ( count($author) > 2 ) + // { + // $new_name = array(); + // foreach ( $author as $num => $author_name ) + // { + // if ( $num == 0 ) $new_name[0] .= $author_name; + // else if ( $num != count($author)-1 ) $new_name[0] .= " ". $author_name; + // else if ( $num == count($author)-1 ) $new_name[1] .= $author_name; + // } + // $author = $new_name; + // } + } elseif (stripos( $author, "+" ) !== false) { + // $author = explode( "+", $author ); + $author = array( str_replace( "+", " ", $author ) ); + } else // Just last name + { + $author = array( $author ); + } + + // Deal with blank firstname + if ( $author[0] == "" ) + { + $author[0] = $author[1]; + unset( $author[1] ); + } + + // Trim firstname + // QUESTION: Is this needed? + $author[0] = trim($author[0]); + + // Check + foreach ( $item->data->creators as $creator ) + { + // NOTE: Assumes last name only + if ( count($author) == 1 ) + { + if ( ( property_exists($creator, 'lastName') && $creator->lastName !== null + && strtolower($creator->lastName) === $author[0] ) + || ( property_exists($creator, 'name') && $creator->name !== null + && strtolower($creator->name) === $author[0] ) ) + $author_continue = true; + } + + // NOTE: Assumes first and last names OR two last names + elseif ( count($author) == 2 ) + { + if ( ( property_exists($creator, 'firstName') && $creator->firstName !== null + && ( strtolower($creator->firstName) === $author[0] + && strtolower($creator->lastName) === $author[1] ) + ) + || ( strtolower($creator->lastName) === $author[0]." ".$author[1] ) + || ( property_exists($creator, 'name') && $creator->name !== null + && ( strtolower($creator->name) === implode(" ", $author) ) ) ) + $author_continue = true; + } + + elseif (( property_exists($creator, 'firstName') && $creator->firstName !== null + && ( strtolower($creator->firstName) === $author[0]." ".$author[1] + && strtolower($creator->lastName) === $author[2] ) ) + // One first name and two last names + || ( property_exists($creator, 'firstName') && $creator->firstName !== null + && ( strtolower($creator->firstName) === $author[0] + && strtolower($creator->lastName) === $author[1]." ".$author[2] ) ) + // All combined + || ( property_exists($creator, 'name') && $creator->name !== null + && strtolower($creator->name) === implode(" ", $author) )) { + $author_continue = true; + } + } + + return $author_continue; + + } // function zp_check_author_continue + } + +?> diff --git a/lib/request/rss.file.php b/lib/request/rss.file.php deleted file mode 100644 index cd80346..0000000 --- a/lib/request/rss.file.php +++ /dev/null @@ -1,52 +0,0 @@ -prefix."zotpress.public_key, ".$wpdb->prefix."zotpress_zoteroItems.citation - FROM ".$wpdb->prefix."zotpress - JOIN ".$wpdb->prefix."zotpress_zoteroItems ON ".$wpdb->prefix."zotpress.api_user_id = ".$wpdb->prefix."zotpress_zoteroItems.api_user_id - WHERE ".$wpdb->prefix."zotpress_zoteroItems.item_key='".$zp_item_key."' - AND ".$wpdb->prefix."zotpress_zoteroItems.api_user_id='".$zp_api_user_id."';"; - - $zp_download_url = $wpdb->get_results( $zp_download_url_query, OBJECT ); - - if (count($zp_download_url) > 0) - { - header("Location: ".$zp_download_url[0]->citation."/file?key=".$zp_download_url[0]->public_key); - exit; - } - else { - $zp_xml = "No file to download found."; - } - } - else { - echo $zp_xml; - } -?> \ No newline at end of file diff --git a/lib/request/rss.php b/lib/request/rss.php deleted file mode 100644 index 8284851..0000000 --- a/lib/request/rss.php +++ /dev/null @@ -1,286 +0,0 @@ -\n"; - - $image_xml = ""; - - global $wpdb; - - if (isset($_GET['displayImageByCitationID']) && preg_match("/^[a-zA-Z0-9]+$/", $_GET['displayImageByCitationID'])) - $images = $wpdb->get_results("SELECT * FROM ".$wpdb->prefix."zotpress_images WHERE citation_id='".trim($_GET['displayImageByCitationID'])."'"); - else - $images = $wpdb->get_results("SELECT * FROM ".$wpdb->prefix."zotpress_images"); - - $total = $wpdb->num_rows; - - foreach ($images as $image) - $image_xml .= " \n"; - - $zp_xml .= "\n\n"; - $zp_xml .= $image_xml; - $zp_xml .= ""; - } - else - { - - // DATA TYPE - - if ($mzr_data_type == false) - { - if (isset($_GET['data_type']) && $mzr_include == false && preg_match("/^[a-zA-Z]+$/", $_GET['data_type'])) - $urlDataType = $_GET['data_type']; - else - $urlDataType = "items/top"; - } - else - { - $urlDataType = $mzr_data_type; - - if ($urlDataType == "items") - $urlDataType = "items/top"; - } - - - // LIST - - // Collection ID - if ($mzr_collection_id == false) - { - if (isset($_GET['collection_id']) && $mzr_include == false && preg_match("/^[a-zA-Z0-9]+$/", $_GET['collection_id'])) { - $urlDataType = "collections/".$_GET['collection_id']."/items"; - } - } - else - { - $urlDataType = "collections/".$mzr_collection_id."/items"; - } - - // Item Key - if ($mzr_item_key != false) - { - $urlDataType = "items/".$mzr_item_key; - } - else if (isset($_GET['item_key']) && $mzr_include == false && preg_match("/^[a-zA-Z0-9]+$/", $_GET['item_key'])) { - $urlDataType = "items/".$_GET['item_key']; - } - - // Children - if ($mzr_get_children === true) - { - $urlDataType .= "/children"; - } - - - // Tag Name - if ($mzr_tag_name == false) - { - if (isset($_GET['tag_name']) && $mzr_include == false && preg_match("/^[a-zA-Z0-9 -_+]+$/", $_GET['tag_name'])) { - $urlDataType = "tags/".str_replace(" ", "+", trim($_GET['tag_name']))."/items"; - } - } - else - { - $mzr_tag_name = str_replace(" ", "+", trim($mzr_tag_name)); - $urlDataType = "tags/".$mzr_tag_name."/items"; - } - - - // PARAMETERS - - // Author - $author = false; - if (isset($_GET['author']) && preg_match("/^[a-zA-Z0-9 -_+]+$/", $_GET['author'])) - { - $author = $_GET['author']; - } - - // Year - $year = false; - if (isset($_GET['year']) && preg_match("/^[0-9]+$/", $_GET['year'])) - { - $year = $_GET['year']; - } - - // Content - if (isset($_GET['content']) && preg_match("/^[a-zA-Z]+$/", $_GET['content'])) - { - $content = "&content=" . $_GET['content']; - } - else - { - if ($mzr_get_meta == true) { - $content = "&content=json"; - } - else if ($mzr_get_children == true) { - $content = ""; - } - else { - $content = "&content=bib"; - } - } - - // Style - if (isset($_GET['style']) && preg_match("/^[a-zA-Z-_]+$/", $_GET['style'])) { - $style = "&style=" . $_GET['style']; - } - else { - $style = "&style=apa"; - } - if ($mzr_get_style == true) { - $style = "&style=".$mzr_get_style; - } - - // Order - $order = false; - if (isset($_GET['order']) && preg_match("/^[a-zA-Z]+$/", $_GET['order'])) - { - $order = "&order=" . $_GET['order']; - } - - // Sort - $sort = false; - if (isset($_GET['sort']) && preg_match("/^[a-zA-Z]+$/", $_GET['sort'])) { - $sort = "&sort=" . $_GET['sort']; - } - - // Limit - if ($mzr_limit != false) - { - if ($mzr_limit == -1) { - $mzr_limit = false; - } - else { - $mzr_limit = "&limit=".$mzr_limit; - } - } - else - { - if (isset($_GET['limit']) && $mzr_include == false && preg_match("/^[0-9]+$/", $_GET['limit'])) { - $mzr_limit = "&limit=".$_GET['limit']; - } - } - - if ($author || $year) - { - $mzr_limit = false; - } - - - - // PUBLIC KEY - $zp_account = $wpdb->get_results("SELECT * FROM ".$wpdb->prefix."zotpress WHERE api_user_id='".$mzr_api_user_id."'"); - $public_key = $zp_account[0]->public_key; - - - - // GENERATE URL: Users & Groups [& Children] ASSUMED TO BE SET AS: &format=bib - - if (isset($_GET['children']) && preg_match("/^[a-zA-Z0-9]+$/", $_GET['children'])) - $zp_url = "https://api.zotero.org/".$mzr_account_type."/".$mzr_api_user_id."/".$urlDataType."/".$_GET['children']."/children?key=".$public_key; - else if (isset($_GET['topLevel']) && trim($_GET['topLevel']) == "true") - $zp_url = str_replace("/items", "/items/top", "https://api.zotero.org/".$mzr_account_type."/".$mzr_api_user_id."/".$urlDataType."?key=".$public_key.$content.$style.$order.$sort.$mzr_limit); - else - $zp_url = "https://api.zotero.org/".$mzr_account_type."/".$mzr_api_user_id."/".$urlDataType."?key=".$public_key.$content.$style.$order.$sort.$mzr_limit; - - - //echo "
" . $zp_url . "
"; - - - - // GET & DISPLAY CITATIONS - - $zp_request = new ZotpressRequest(); - $zp_xml = $zp_request->get_request_contents( $zp_url, $mzr_force_recache ); - } - - return $zp_xml; - } - } - - - - // DISPLAY XML - - if (!isset($include)) - print MakeZotpressRequest(); - - - -?> \ No newline at end of file diff --git a/lib/request/rss.request.php b/lib/request/rss.request.php deleted file mode 100644 index d3775b8..0000000 --- a/lib/request/rss.request.php +++ /dev/null @@ -1,124 +0,0 @@ -update = $update; - return $this->doRequest( $url ); - } - - // DO REQUEST - function doRequest( $xml_url ) - { - //global $wpdb; - - // NOTE: When If-Modified-Since header 304 implemented, this needs to change ... - - // RECACHE IF PAST THE TIME OR IF FORCED - //if ($this->checkTime($zp_cache[0]->cache_time) === true || $this->update === true) // Every hour (3600), or when forced - //{ - // // UPDATE - //} - // - //// NOT TIME TO CHECK YET, SO JUST DISPLAY CACHED DATA - //else - //{ - // return $zp_cache[0]->xml_data; - // exit(); - //} - - // Get the data - $data = $this->getXmlData( $xml_url ); - - // Check for request errors - if ($this->request_error !== false) { - return $this->request_error; - exit(); - } - - // Otherwise, return the data - else { - return $data; - } - } - - - function checkTime( $cache_time ) - { - if (isset( $cache_time )) - { - $diff = time() - $cache_time; - - if ($diff >= $this->timelimit) - return true; - else - return false; - } - else // No cache time set - { - return false; - } - } - - function getXmlData( $url ) - { - $response = wp_remote_get( $url, array( 'headers' => array("Zotero-API-Version" => "2") ) ); - - if ( is_wp_error($response) || ! isset($response['body']) ) - { - $this->request_error = $response->get_error_message(); - - if ($response->get_error_code() == "http_request_failed") - { - // Try again with less restrictions - add_filter('https_ssl_verify', '__return_false'); //add_filter('https_local_ssl_verify', '__return_false'); - $response = wp_remote_get( $url, array( 'headers' => array("Zotero-API-Version" => "2") ) ); - - if ( is_wp_error($response) || ! isset($response['body']) ) - { - $this->request_error = $response->get_error_message(); - } - else if ( $response == "An error occurred" || ( isset($response['body']) && $response['body'] == "An error occurred") ) - { - $this->request_error = "WordPress was unable to import from Zotero. This is likely caused by an incorrect citation style name. For example, 'mla' is now 'modern-language-association'. Use the name found in the style's URL at the Zotero Style Repository."; - } - else // no errors this time - { - $this->request_error = false; - } - } - } - else if ( $response == "An error occurred" || ( isset($response['body']) && $response['body'] == "An error occurred") ) - { - $this->request_error = "WordPress was unable to import from Zotero. This is likely caused by an incorrect citation style name. For example, 'mla' is now 'modern-language-association'. Use the name found in the style's URL at the Zotero Style Repository."; - } - - $data = wp_remote_retrieve_body( $response ); // Thanks to Trainsmart.com developer! - - // Make sure tags didn't return an error -- redo if so - if ($data == "Tag not found") - { - $url_break = explode("/", $url); - $url = $url_break[0]."//".$url_break[2]."/".$url_break[3]."/".$url_break[4]."/".$url_break[7]; - $url = str_replace("=50", "=5", $url); - - $data = $this->getXmlData( $url ); - } - - return $data; - } - } -} - -?> \ No newline at end of file diff --git a/lib/shortcode/shortcode.class.lib.php b/lib/shortcode/shortcode.class.lib.php new file mode 100644 index 0000000..72d9ca9 --- /dev/null +++ b/lib/shortcode/shortcode.class.lib.php @@ -0,0 +1,503 @@ +account = $account; + } + + public function getAccount() + { + return $this->account; + } + + public function setType($type) + { + $this->type = $type; + } + + public function setFilters($filters) + { + $this->filters = $filters; + } + + public function setMinLength($minlength) + { + $this->minlength = $minlength; + } + + public function getMinLength() + { + return $this->minlength; + } + + public function setMaxResults($maxresults) + { + $this->maxresults = $maxresults; + } + + public function getMaxResults() + { + return $this->maxresults; + } + + public function setMaxPerPage($maxperpage) + { + $this->maxperpage = $maxperpage; + } + + public function getMaxPerPage() + { + return $this->maxperpage; + } + + public function setMaxTags($maxtags) + { + $this->maxtags = $maxtags; + } + + public function setCiteable($citeable) + { + $this->citeable = $citeable; + } + + public function setStyle($style) + { + $this->style = strtolower( $style ); + } + + public function setCollection($collection_id) + { + $this->collection = $collection_id; + } + + public function setSortBy($sortby) + { + $this->sortby = strtolower( $sortby ); + } + + public function setOrder($order) + { + $this->order = strtolower( $order ); + } + + public function setDownloadable($download) + { + $this->downloadable = $download; + } + + public function setShowTags($showtags) + { + $showtags = $showtags == "yes" || $showtags == "true" || $showtags === true; + + $this->showtags = $showtags; + } + + public function setShowImage($showimage) + { + $showimage = $showimage == "yes" || $showimage == "true" || $showimage === true; + + $this->showimage = $showimage; + } + + public function setAdmin($setAdmin) + { + $this->is_admin = $setAdmin; + } + + public function setURLWrap($urlwrap) + { + $this->urlwrap = $urlwrap; + } + + public function setTopLevel($toplevel) + { + $this->toplevel = $toplevel; + } + + public function setTarget($target) + { + $this->target = $target; + } + + + public function setMaxPages($maxpages) + { + $this->maxpages = $maxpages; + } + public function getMaxPages() + { + return $this->maxpages; + } + + public function setBrowseBar($browsebar) + { + if ( $browsebar == "show" || $browsebar == "active" || $browsebar == "visible" || $browsebar == "yes" || $browsebar == "true" || $browsebar === true || $browsebar == 1 ) $browsebar = true; + else $browsebar = false; + + $this->browsebar = $browsebar; + } + + public function getLib() + { + global $wpdb; + $content = ""; + + // Turn on/off minified versions if testing/live + $minify = ''; if ( ZOTPRESS_LIVEMODE ) $minify = '.min'; + + // Enqueue scripts + if ( $this->type == "dropdown" ) + { + wp_enqueue_script( 'zotpress.lib'.$minify.'.js' ); + wp_enqueue_script( 'zotpress.lib.dropdown'.$minify.'.js' ); + } + else + { + wp_enqueue_script( 'jquery-ui-autocomplete' ); + wp_enqueue_script( 'zotpress.lib'.$minify.'.js' ); + wp_enqueue_script( 'zotpress.lib.searchbar'.$minify.'.js' ); + } + + // API User ID + + global $api_user_id; + + if ( isset($_GET['page']) + && $_GET['page'] == "Zotpress" // REVIEW: only include GET if admin? + && isset($_GET['account_id']) + && preg_match("/^\\d+\$/", $_GET['account_id']) ) + $api_user_id = $wpdb->get_var("SELECT nickname FROM ".$wpdb->prefix."zotpress WHERE id='".$_GET['account_id']."'", OBJECT); + else + $api_user_id = $this->getAccount()->api_user_id; + + + // Collection ID + global $collection_id; + + if (isset($_GET['page']) + && $_GET['page'] == "Zotpress" // REVIEW: only include GET if admin? + && isset($_GET['collection_id']) + && preg_match("/^[0-9a-zA-Z]+$/", $_GET['collection_id'])) { + $collection_id = trim($_GET['collection_id']); + } elseif (isset($_GET['page']) + && $_GET['page'] == "Zotpress" // REVIEW: only include GET if admin? + && isset($_GET['subcollection_id']) + && preg_match("/^[0-9a-zA-Z]+$/", $_GET['subcollection_id'])) { + $collection_id = trim($_GET['subcollection_id']); + } else + $collection_id = $this->collection; // from false + + + // Collection Name + global $collection_name; + + // if ( isset($_GET['page']) + // && $_GET['page'] == "Zotpress" // REVIEW: only include GET if admin? + // && isset($_GET['collection_name']) ) + // if ( strpos( $_GET['collection_name'], "- " ) == 0 ) + // $collection_name = stripslashes(htmlentities(strip_tags(preg_replace( "/- /", "", urldecode($_GET['collection_name']), 1 )))); + // else + // $collection_name = stripslashes(htmlentities(strip_tags(urldecode(trim($_GET['collection_name']))))); + // else + if ( isset($_GET['subcollection_name']) ) + if ( strpos( $_GET['subcollection_name'], "- " ) == 0 ) + $collection_name = stripslashes(htmlentities(strip_tags(preg_replace( "/- /", "", urldecode(trim($_GET['subcollection_name'])), 1 )))); + else + $collection_name = stripslashes(htmlentities(strip_tags(urldecode(trim($_GET['subcollection_name']))))); + else + $collection_name = false; + + // Top Level + if ( isset($_GET['page']) + && $_GET['page'] == "Zotpress" // REVIEW: only include GET if admin? + && isset($_GET['toplevel']) ) + $this->toplevel = "toplevel"; + + + // Tag Name + + global $tag_id; + + // if ( isset($_GET['page']) + // && $_GET['page'] == "Zotpress" // REVIEW: only include GET if admin? + // && isset($_GET['tag_id']) + // && strlen(trim($_GET['tag_id'])) > 0 ) + // $tag_id = htmlentities(strip_tags(trim($_GET['tag_id']))); + // else if + if ( isset($_GET['lib_tag']) + && strlen(trim($_GET['lib_tag'])) > 0 ) + $tag_id = urldecode(htmlentities(strip_tags(trim($_GET['lib_tag'])))); + else + $tag_id = false; + // var_dump($tag_id); + + // Remove default collection if tag selected + // REVIEW: But we want tags within collections ... I think? + // if ( $tag_id ) { + // $collection_id = false; + // $collection_name = false; + // } + + + // Browse instance ID + // REVIEW: Added post ID + $instance_id = "zotpress-lib-" + .md5( + get_the_ID() + .$api_user_id + .$collection_id + .$collection_name + .$this->type + .$tag_id + .$this->style + .$this->sortby + .$this->order + .$this->citeable + .$this->downloadable + .$this->showtags + .$this->showimage + .$this->toplevel + .$this->target + .$this->urlwrap + .$this->is_admin + .$this->minlength + .$this->maxresults + .$this->maxperpage + .$this->maxtags + .$this->maxpages + .$this->filters + .$this->browsebar + ); + + $content .= "\n"; + $content .= "
\n"; + $content .= ''; + $content .= "\n"; + if ( $collection_id ) $content .= ''; + if ( $collection_name ) $content .= ''; + if ( $tag_id ) $content .= ''; + $content .= "\n"; + $content .= ''; + $content .= "\n"; + $content .= ''; + $content .= "\n"; + $content .= ''; + $content .= "\n"; + $content .= ''; + $content .= "\n"; + $content .= ''; + $content .= "\n"; + $content .= ''; + $content .= "\n"; + $content .= ''; + $content .= "\n"; + $content .= ''; + $content .= "\n"; + if ( $this->toplevel ) $content .= ''; + $content .= ''; + $content .= "\n"; + $content .= ''; + if ( $this->is_admin ) $content .= ''; + $content .= ''; + $content .= "\n"; + + // Deal with Browse Bar by Type + if ( $this->type == "dropdown" ): + + if ( $this->browsebar ): + + $content .= '
'; + $content .= '
'; + $content .= "
\n"; + $content .= "\n"; + $content .= "
\n\n"; + $content .= '
'; + $content .= "\n"; + + $content .= '
'; + $content .= "
\n"; + $content .= '\n"; + $content .= "
\n\n"; + $content .= '
'; + $content .= "\n"; + $content .= '
'; + + endif; // if Browse Bar + + else: // Search Bar needs the Browse Bar / search input to function + + $content .= '
'; + $content .= ''; + $content .= "\n"; + + $content .= '
'; + + endif; // Type + + $content .= "\n\n"; + + + $content .= '
\n"; + $content .= "
\n"; + } elseif ($tag_id) { + // Top Level + $content .= "
".__('Viewing items tagged','zotpress')." \"".str_replace("+", " ", $tag_id)."\"
\n"; + } elseif ($this->toplevel == "toplevel" || $this->toplevel === false) { + $content .= "
".__('Top Level Items','zotpress')."
\n"; + } else + $content .= "
".__('Default Collection Items','zotpress')."
\n"; + } + + // Searchbar + else + { + $content .= "\">"; + + // Autocomplete will fill this up + $content .= 'thinking'; + } + + // Container for results + $content .= '
'; + + // Pagination + $content .= '
'; + $content .= '
'; + $content .= '
'; + $content .= '
'; + $content .= '
'; + + $content .= '
'; + $content .= "\n"; + + $content .= ''; + + return $content . "\n\n"; + } +} + +?> diff --git a/lib/shortcode/shortcode.classes.php b/lib/shortcode/shortcode.classes.php deleted file mode 100644 index 52b6dee..0000000 --- a/lib/shortcode/shortcode.classes.php +++ /dev/null @@ -1,645 +0,0 @@ -account = $account; - } - - public function getAccount() - { - return $this->account; - } - - public function setType($type) - { - $this->type = $type; - } - - public function getType() - { - return $this->type; - } - - public function setFilters($filters) - { - $this->filters = $filters; - } - - public function getFilters() - { - return $this->filters; - } - - public function setMinLength($minlength) - { - $this->minlength = $minlength; - } - - public function getMinLength() - { - return $this->minlength; - } - - public function setMaxResults($maxresults) - { - $this->maxresults = $maxresults; - } - - public function getMaxResults() - { - return $this->maxresults; - } - - public function setMaxPerPage($maxperpage) - { - $this->maxperpage = $maxperpage; - } - - public function getMaxPerPage() - { - return $this->maxperpage; - } - - public function setCiteable($citeable) - { - $this->citeable = $citeable; - } - - public function getCiteable() - { - return $this->citeable; - } - - public function setDownloadable($download) - { - $this->downloadable = $download; - } - - public function getDownloadable() - { - return $this->downloadable; - } - - - - public function getLib() - { - global $wpdb; - - - // Account ID - - global $api_user_id; - - if ( isset($_GET['account_id']) && preg_match("/^[0-9]+$/", $_GET['account_id']) ) - { - $api_user_id = $wpdb->get_var("SELECT nickname FROM ".$wpdb->prefix."zotpress WHERE id='".$_GET['account_id']."'", OBJECT); - } - else - { - $api_user_id = $this->getAccount()->api_user_id; - } - - - // Collection ID - - global $collection_id; - - if (isset($_GET['collection_id']) && preg_match("/^[0-9a-zA-Z]+$/", $_GET['collection_id'])) - $collection_id = trim($_GET['collection_id']); - else - $collection_id = false; - - - // Tag Name and ID - - global $tag_id; - - if (isset($_GET['tag_id']) && preg_match("/^[0-9]+$/", $_GET['tag_id'])) - $tag_id = trim($_GET['tag_id']); - else - $tag_id = false; - - - ?> -
- -
- - getType() == "dropdown" ): ?> - -
- Collections'; - } - - // Display Collection List - - if ( $collection_id ) // parent - { - //$zp_collection = get_term( $collection_id, 'zp_collections', 'OBJECT' ); - if ( is_admin( ) ) $zp_top_collection = $wpdb->get_row("SELECT * FROM ".$wpdb->prefix."zotpress_zoteroCollections WHERE api_user_id='".$this->getAccount()->api_user_id."' AND id='".$collection_id."'", OBJECT); - if ( ! is_admin( ) ) $zp_top_collection = $wpdb->get_row("SELECT * FROM ".$wpdb->prefix."zotpress_zoteroCollections WHERE api_user_id='".$this->getAccount()->api_user_id."' AND item_key='".$collection_id."'", OBJECT); - } - - $zp_collections_query = "SELECT * FROM ".$wpdb->prefix."zotpress_zoteroCollections WHERE api_user_id='".$this->getAccount()->api_user_id."' "; - if ( $collection_id ) $zp_collections_query .= "AND parent='".$zp_top_collection->item_key."' "; else $zp_collections_query .= "AND parent='' "; - $zp_collections_query .= "ORDER BY title ASC"; - //$zp_collections = get_terms( 'zp_collections', array( 'parent' => $collection_id, 'hide_empty' => false ) ); - $zp_collections = $wpdb->get_results($zp_collections_query, OBJECT); - - if ( ! is_admin() ) - { - echo "
\n"; - } - ?> -
- - -
- Tags'; - - if ( ! is_admin() ) echo "
"; - echo '\n"; - - if ( ! is_admin() ) echo "
\n"; - ?> -
- - - - - - - -
- - -
- - getType() == "dropdown" ) - { - - // Display title if on collection page - - if ( $collection_id ) - { - echo "
"; - echo "".$zp_top_collection->title.""; - if ( is_admin() ) - { - echo "
"; - echo "Collection key:"; - echo "
"; - echo "".$zp_top_collection->item_key.""; - echo ""; - echo "
\n"; - echo "
\n"; - } - echo "
\n"; - } - else if ( $tag_id ) // Top Level - { - $tag_title = $wpdb->get_row("SELECT title FROM ".$wpdb->prefix."zotpress_zoteroTags WHERE api_user_id='".$this->getAccount()->api_user_id."' AND id='".$tag_id."'", OBJECT); - echo "
Viewing items with the \"".str_replace("__and__", "&", $tag_title->title)."\" tag
\n"; - } - else - { - echo "
Top Level Items
\n"; - } - - - /*$zp_citation_attr = - array( - 'posts_per_page' => -1, - 'post_type' => 'zp_entry', - 'orderby' => 'post_date', - 'order' => 'DESC', - 'meta_query' => array( - 'relation' => 'AND', - array( - 'key' => 'api_user_id', - 'value' => $account_id, - 'compare' => 'LIKE' - ), - array( - 'key' => 'item_type', - 'value' => array( 'attachment', 'note' ), - 'compare' => 'NOT IN' - ) - ) - ); - - // By Collection ID - if (isset($_GET['collection_id']) && preg_match("/^[a-zA-Z0-9]+$/", $_GET['collection_id']) == 1) - { - $zp_citation_attr = array_merge( $zp_citation_attr, - array( - 'tax_query' => array( - array( - 'taxonomy' => 'zp_collections', - 'field' => 'id', - 'terms' => $_GET['collection_id'], - 'include_children' => false - ) - ) - ) - ); - - // By Tag ID - } else if (isset($_GET['tag_id']) && preg_match("/^[0-9]+$/", $_GET['tag_id']) == 1) - { - $zp_citation_attr = array_merge( $zp_citation_attr, - array( - 'tax_query' => array( - array( - 'taxonomy' => 'zp_tags', - 'field' => 'id', - 'terms' => $_GET['tag_id'] - ) - ) - ) - ); - } - - $zp_citations = get_posts( $zp_citation_attr );*/ - - // By Collection ID - if (isset($_GET['collection_id']) && preg_match("/^[a-zA-Z0-9]+$/", $_GET['collection_id']) == 1) - { - $zp_citations_query = - " - SELECT ".$wpdb->prefix."zotpress_zoteroItems.*, - ".$wpdb->prefix."zotpress_zoteroItemImages.image AS itemImage - FROM ".$wpdb->prefix."zotpress_zoteroItems - LEFT JOIN ".$wpdb->prefix."zotpress_zoteroRelItemColl - ON ".$wpdb->prefix."zotpress_zoteroItems.item_key=".$wpdb->prefix."zotpress_zoteroRelItemColl.item_key - LEFT JOIN ".$wpdb->prefix."zotpress_zoteroItemImages - ON ".$wpdb->prefix."zotpress_zoteroItems.item_key=".$wpdb->prefix."zotpress_zoteroItemImages.item_key - AND ".$wpdb->prefix."zotpress_zoteroItems.api_user_id=".$wpdb->prefix."zotpress_zoteroItemImages.api_user_id - WHERE ".$wpdb->prefix."zotpress_zoteroRelItemColl.collection_key = '".$zp_top_collection->item_key."' - AND ".$wpdb->prefix."zotpress_zoteroItems.itemType != 'attachment' - AND ".$wpdb->prefix."zotpress_zoteroItems.itemType != 'note' - AND ".$wpdb->prefix."zotpress_zoteroItems.api_user_id = '".$this->getAccount()->api_user_id."' - ORDER BY author ASC - "; - $zp_citations = $wpdb->get_results( $zp_citations_query ); - } - // By Tag ID - else if (isset($_GET['tag_id']) && preg_match("/^[0-9]+$/", $_GET['tag_id']) == 1) - { - $zp_citations_query = - " - SELECT ".$wpdb->prefix."zotpress_zoteroItems.*, - ".$wpdb->prefix."zotpress_zoteroItemImages.image AS itemImage - FROM ".$wpdb->prefix."zotpress_zoteroItems - LEFT JOIN ".$wpdb->prefix."zotpress_zoteroRelItemTags - ON ".$wpdb->prefix."zotpress_zoteroItems.item_key=".$wpdb->prefix."zotpress_zoteroRelItemTags.item_key - LEFT JOIN ".$wpdb->prefix."zotpress_zoteroItemImages - ON ".$wpdb->prefix."zotpress_zoteroItems.item_key=".$wpdb->prefix."zotpress_zoteroItemImages.item_key - AND ".$wpdb->prefix."zotpress_zoteroItems.api_user_id=".$wpdb->prefix."zotpress_zoteroItemImages.api_user_id - WHERE ".$wpdb->prefix."zotpress_zoteroRelItemTags.tag_title = '".str_replace("__and__", "&", $tag_title->title)."' - AND ".$wpdb->prefix."zotpress_zoteroItems.itemType != 'attachment' - AND ".$wpdb->prefix."zotpress_zoteroItems.itemType != 'note' - AND ".$wpdb->prefix."zotpress_zoteroItems.api_user_id = '".$this->getAccount()->api_user_id."' - ORDER BY author ASC - "; - $zp_citations = $wpdb->get_results( $zp_citations_query ); - } - // Top-level - else - { - $zp_citations_query = - " - SELECT ".$wpdb->prefix."zotpress_zoteroItems.*, - ".$wpdb->prefix."zotpress_zoteroItemImages.image AS itemImage, - ".$wpdb->prefix."zotpress_zoteroRelItemColl.collection_key - FROM ".$wpdb->prefix."zotpress_zoteroItems - LEFT JOIN ".$wpdb->prefix."zotpress_zoteroRelItemColl - ON ".$wpdb->prefix."zotpress_zoteroItems.item_key=".$wpdb->prefix."zotpress_zoteroRelItemColl.item_key - LEFT JOIN ".$wpdb->prefix."zotpress_zoteroItemImages - ON ".$wpdb->prefix."zotpress_zoteroItems.item_key=".$wpdb->prefix."zotpress_zoteroItemImages.item_key - AND ".$wpdb->prefix."zotpress_zoteroItems.api_user_id=".$wpdb->prefix."zotpress_zoteroItemImages.api_user_id - WHERE ".$wpdb->prefix."zotpress_zoteroRelItemColl.collection_key IS NULL - AND ".$wpdb->prefix."zotpress_zoteroItems.itemType != 'attachment' - AND ".$wpdb->prefix."zotpress_zoteroItems.itemType != 'note' - AND ".$wpdb->prefix."zotpress_zoteroItems.api_user_id = '".$this->getAccount()->api_user_id."' - ORDER BY author ASC - "; - $zp_citations = $wpdb->get_results( $zp_citations_query ); - } - - - if ( $this->getDownloadable() !== false && $this->getDownloadable() != "no" ) - { - if (count($zp_citations) > 0) - { - $zp_downloads_count = ""; - - foreach ($zp_citations as $entry) - { - if ( $entry->numchildren > 0 ) // Might have downloads - { - if ( strlen($zp_downloads_count) >0 ) $zp_downloads_count .= ", "; - $zp_downloads_count .= "'".$entry->item_key."'"; - } - } - - // If there's items with children, create query - if ( strlen($zp_downloads_count) > 0 ) - { - $zp_downloads_query = - " - SELECT - ".$wpdb->prefix."zotpress_zoteroItems.parent AS parent, - ".$wpdb->prefix."zotpress_zoteroItems.citation AS content, - ".$wpdb->prefix."zotpress_zoteroItems.item_key AS item_key, - ".$wpdb->prefix."zotpress_zoteroItems.json AS data, - ".$wpdb->prefix."zotpress_zoteroItems.linkmode AS linkmode - FROM ".$wpdb->prefix."zotpress_zoteroItems - WHERE api_user_id='".$api_user_id."' AND - ".$wpdb->prefix."zotpress_zoteroItems.parent IN (".$zp_downloads_count.") AND - ".$wpdb->prefix."zotpress_zoteroItems.linkmode IN ( 'imported_file', 'linked_url' ) - ORDER BY linkmode ASC - "; - $zp_downloads = $wpdb->get_results( $zp_downloads_query ); - } - } - } - - - // DISPLAY EACH ENTRY - - $entry_zebra = true; - - if (count($zp_citations) == 0) - { - echo "

There are no citations to display."; - if ( is_admin() ) echo " If you think you're receiving this message in error, you may need to getAccount()->api_user_id."\" style=\"color: #f00000; text-shadow: none;\">import your Zotero library."; - echo "

"; - } - else // display - { - foreach ($zp_citations as $entry) - { - $citation_id = $entry->item_key; - $citation_content = htmlentities( $entry->citation, ENT_QUOTES, "UTF-8", true ); - - $zp_thumbnail = false; - //if ( has_post_thumbnail( $entry->ID ) ) $zp_thumbnail = wp_get_attachment_image_src( get_post_thumbnail_id( $entry->ID ) ); - if ( !is_null($entry->itemImage) ) $zp_thumbnail = wp_get_attachment_image_src($entry->itemImage); - - if ($entry_zebra === true) echo "
\n"; else echo "
\n"; - - - // CITEABLE - if ( $this->getCiteable() !== false && $this->getCiteable() != "no" ) - { - $cite_url = "https://api.zotero.org/".$this->getAccount()->account_type."/".$this->getAccount()->api_user_id."/items/".$citation_id."?format=ris"; - $citation_content = preg_replace('~(.*)' . preg_quote(htmlentities('
', ENT_QUOTES, "UTF-8", true ), '~') . '(.*?)~', '$1' . htmlentities(" Cite
", ENT_QUOTES, "UTF-8", true ) . '$2', $citation_content, 1); - } - - // DOWNLOADABLE - if ( $this->getDownloadable() !== false && $this->getDownloadable() != "no" && isset($zp_downloads) && count($zp_downloads) > 0 ) - { - foreach( $zp_downloads as $id => $zp_download ) - { - if ( $zp_download->parent == $entry->item_key ) - { - if ($zp_download->linkmode == "imported_file") - { - $zp_download_url = " "; - } - else // URL - { - $zp_download->data = json_decode($zp_download->data); - $zp_download_url = " "; - } - - $citation_content = preg_replace('~(.*)' . preg_quote(htmlentities('
', ENT_QUOTES, "UTF-8", true ), '~') . '(.*?)~', '$1' . $zp_download_url . "Download
" . '$2', $citation_content, 1); - } - } - } - - - // START OF DISPLAY IMAGE - - if ( is_admin() || $zp_thumbnail !== false ) echo "
\n"; - - $citation_image = ""; - - if ( is_admin() ) $citation_image .= "Set Image\n"; - - if ( $zp_thumbnail !== false ) - { - if ( is_admin() ) $citation_image .= "×\n"; - $citation_image .= "image\n"; - } - - echo $citation_image; - if ( is_admin() || $zp_thumbnail !== false ) echo "
\n"; - - // END OF DISPLAY IMAGE - - - // DISPLAY CONTENT - echo html_entity_decode($citation_content, ENT_QUOTES)."\n"; - - if ( is_admin() ) echo "
Item Key:
".$citation_id."
\n"; - echo "\n\n"; - - // Zebra striping - if ($entry_zebra === true) $entry_zebra = false; else $entry_zebra = true; - } - } - - } - - // Searchbar - else - { - // Autocomplete will fill this up - echo 'thinking'; - - // Container for results - echo '
'; - - // Pagination - echo '
'; - } - - ?> - - - - getType() == "dropdown" ): ?>
-
- - Showing - -
-
- - - \ No newline at end of file diff --git a/lib/shortcode/shortcode.functions.php b/lib/shortcode/shortcode.functions.php index c02b7c4..b2ea9c1 100644 --- a/lib/shortcode/shortcode.functions.php +++ b/lib/shortcode/shortcode.functions.php @@ -1,326 +1,751 @@ + ); + + // Fix the String + $clean_param = htmlspecialchars( $param, ENT_QUOTES ); + + return str_replace( $search, "", $clean_param ); +} + + +/** + * Gets the year from a date. + * + * Used by: In-Text Shortcode, In-Text Bibliography Shortcode + * + * @param str $date The date to search in. + * @param bol $yesnd Return with a "n.d." if no year found. + * + * @return str $date_return The year found or blank/n.d. if not found. + */ +function zp_get_year( $date, $yesnd=false ) +{ + $date_return = false; + + preg_match_all( '/(\d{4})/', $date, $matches ); + + if (is_null($matches[0][0])) + $date_return = $yesnd === true ? "n.d." : ""; + else + $date_return = $matches[0][0]; + + return $date_return; +} + + +/** + * Sorts by a secondary value. + * + * Used by: Bibliography Shortcode, In-Text Bibliography Shortcode + * + * @param arr $item_arr The date to format. + * @param str $sortby What attribute to sort by. + * @param str $order What is the order (direction of the sort): ASC, DESC. + * + * @return arr $item_arr The newly sorted array of items. + */ +function subval_sort( $item_arr, $sortby, $order ) +{ + // Format sort order + $order = strtolower($order) == "desc" ? SORT_DESC : SORT_ASC; + + // Author or date + if ($sortby == "author" || $sortby == "date") { + foreach ($item_arr as $key => $val) + { + $author[$key] = $val["author"]; + + $zpdate = ""; $zpdate = isset( $val["zpdate"] ) ? $val["zpdate"] : $val["date"]; + + $date[$key] = zp_date_format($zpdate); + } + } elseif ($sortby == "title") { + foreach ($item_arr as $key => $val) + { + $title[$key] = $val["title"]; + $author[$key] = $val["author"]; + } + } + + // NOTE: array_multisort seems to be ignoring second sort for date->author + if ($sortby == "author" && isset($author) && is_array($author)) { + array_multisort( $author, $order, $date, $order, $item_arr ); + } elseif ($sortby == "date" && isset($date) && is_array($date)) { + array_multisort( $date, $order, $author, SORT_ASC, $item_arr ); + } elseif ($sortby == "title" && isset($title) && is_array($title)) { + array_multisort( $title, $order, $author, $order, $item_arr ); + } + + return $item_arr; +} + + +/** + * Reformats the date in a standard format: yyyy-mm-dd. + * + * Can read the following: + * - yyyy/mm/dd, mm/dd/yyyy + * - the dash equivalents of the above + * - mmmm dd, yyyy + * - yyyy mmmm, yyyy mmm (and the reverse) + * - mm-mm yyyy + * + * Used by: subval_sort + * + * @param str $date The date to format. + * + * @return str The formatted date, or the original if formatting fails. + */ +function zp_date_format ($date) +{ + // Set up search lists + $list_month_long = array ( "01" => "January", "02" => "February", "03" => "March", "04" => "April", "05" => "May", "06" => "June", "07" => "July", "08" => "August", "09" => "September", "10" => "October", "11" => "November", "12" => "December" ); + $list_month_short = array ( "01" => "Jan", "02" => "Feb", "03" => "Mar", "04" => "Apr", "05" => "May", "06" => "Jun", "07" => "Jul", "08" => "Aug", "09" => "Sept", "10" => "Oct", "11" => "Nov", "12" => "Dec" ); + + + // Check if it's a mm-mm dash + if ( preg_match("/^[a-zA-Z]+[-][a-zA-Z]+[ ]\\d+\$/", $date ) == 1) { - $year = zp_get_year($date); // 4 digits - - preg_match_all( '/(\w)/', $date, $matches ); - //var_dump($matches); - - $month = date_parse( $matches[0][0] ); - - //var_dump($date['month']); - - //var_dump($month); + $temp1 = preg_split( "/-|\//", $date ); + $temp2 = preg_split( "[\s]", $temp1[1] ); + + $date = $temp1[0]." ".$temp2[1]; } - - - - // SUBVAL SORT - // Used by: Bibliography Shortcode, In-Text Bibliography Shortcode - function subval_sort($item_arr, $sortby, $order) - { - // Format sort order - if ( strtolower($order) == "desc" ) $order = SORT_DESC; else $order = SORT_ASC; - - // Author or date - if ( $sortby == "author" || $sortby == "date" ) - { - foreach ($item_arr as $key => $val) - { - $author[$key] = $val["author"]; - - $zpdate = ""; if ( isset( $val["zpdate"] ) ) $zpdate = $val["zpdate"]; else $zpdate = $val["date"]; - - $date[$key] = zp_date_format($zpdate); - } - } - - // Title - else if ( $sortby == "title" ) - { - foreach ($item_arr as $key => $val) - { - $title[$key] = $val["title"]; - $author[$key] = $val["author"]; - } - } - - // NOTE: array_multisort seems to be ignoring second sort for date->author - if ( $sortby == "author" && isset($author) && is_array($author) ) array_multisort( $author, $order, $date, $order, $item_arr ); - else if ( $sortby == "date" && isset($date) && is_array($date) ) array_multisort( $date, $order, $author, SORT_ASC, $item_arr ); - else if ( $sortby == "title" && isset($title) && is_array($title) ) array_multisort( $title, $order, $author, $order, $item_arr ); - - return $item_arr; - } - - - /** - * Returns the date in a standard format: yyyy-mm-dd. - * - * Can read the following: - * - yyyy/mm/dd, mm/dd/yyyy - * - the dash equivalents of the above - * - mmmm dd, yyyy - * - yyyy mmmm, yyyy mmm (and the reverse) - * - mm-mm yyyy - * - * Used by: subval_sort - * - * @param string $date the date to format - * - * @return string the formatted date, or the original if formatting fails - */ - function zp_date_format ($date) + + // If it's already formatted with a dash or forward slash + if (strpos( $date, "-" ) !== false || strpos( $date, "/" ) !== false) { + // Break it up + $temp = preg_split( "/-|\//", $date ); + // If year is last, switch it with first + if (strlen( $temp[0] ) != 4) { + // Just month and year + if ( count( $temp ) == 2 ) + $date_formatted = array( + "year" => $temp[1], + "month" => $temp[0], + "day" => false + ); + // Assuming mm dd yyyy + else + $date_formatted = array( + "year" => $temp[2], + "month" => $temp[0], + "day" => $temp[1] + ); + } elseif (isset($temp[2])) { + // day is set + $date_formatted = array( + "year" => $temp[0], + "month" => $temp[1], + "day" => $temp[2] + ); + } else + { + $date_formatted = array( + "year" => $temp[0], + "month" => $temp[1], + "day" => false + ); + } + } elseif (strpos( $date, "," )) { + $date = trim( str_replace( ", ", ",", $date ) ); + $temp = preg_split( "/,| /", $date ); + // Convert month + $month = array_search( $temp[0], $list_month_long ); + if ( !$month ) $month = array_search( $temp[0], $list_month_short ); + $date_formatted = array( + "year" => $temp[2], + "month" => $month, + "day" => $temp[1] + ); + } else { - // Set up search lists - $list_month_long = array ( "01" => "January", "02" => "February", "03" => "March", "04" => "April", "05" => "May", "06" => "June", "07" => "July", "08" => "August", "09" => "September", "10" => "October", "11" => "November", "12" => "December" ); - $list_month_short = array ( "01" => "Jan", "02" => "Feb", "03" => "Mar", "04" => "Apr", "05" => "May", "06" => "Jun", "07" => "Jul", "08" => "Aug", "09" => "Sept", "10" => "Oct", "11" => "Nov", "12" => "Dec" ); - - - // Check if it's a mm-mm dash - if ( preg_match("/^[a-zA-Z]+[-][a-zA-Z]+[ ][0-9]+$/", $date ) == 1) - { - $temp1 = preg_split( "/-|\//", $date ); - $temp2 = preg_split( "[\s]", $temp1[1] ); - - $date = $temp1[0]." ".$temp2[1]; - } - - // If it's already formatted with a dash or forward slash - if ( strpos( $date, "-" ) !== false || strpos( $date, "/" ) !== false ) + $date = trim( str_replace( " ", "-", $date ) ); + $temp = explode ( " ", $date ); + + // If there's at least two parts to the date + if ( $temp !== [] ) { - // Break it up - $temp = preg_split( "/-|\//", $date ); - - // If year is last, switch it with first - if ( strlen( $temp[0] ) != 4 ) - { - // Just month and year - if ( count( $temp ) == 2 ) - $date_formatted = array( - "year" => $temp[1], - "month" => $temp[0], - "day" => false - ); - // Assuming mm dd yyyy - else - $date_formatted = array( - "year" => $temp[2], - "month" => $temp[0], - "day" => $temp[1] - ); - } - else // Year is first - { - if ( isset($temp[2]) ) // day is set - { - $date_formatted = array( - "year" => $temp[0], - "month" => $temp[1], - "day" => $temp[2] - ); - } - else + // Check if name is first + if (!is_numeric( $temp[0] )) { + if (in_array( $temp[0], $list_month_long )) { + $date_formatted = array( + "year" => $temp[1], + "month" => array_search( $temp[0], $list_month_long ), + "day" => false + ); + } elseif (in_array( $temp[0], $list_month_short )) { + $date_formatted = array( + "year" => $temp[1], + "month" => array_search( $temp[0], $list_month_short ), + "day" => false + ); + } else // Not a recognizable month word + $date_formatted = array( + "year" => $temp[0], // $temp[1] + "month" => false, + "day" => false + ); + } elseif (count($temp) > 1) { + if (in_array( $temp[1], $list_month_long )) { + $date_formatted = array( + "year" => $temp[0], + "month" => array_search( $temp[1], $list_month_long ), + "day" => false + ); + } elseif (in_array( $temp[1], $list_month_short )) { + $date_formatted = array( + "year" => $temp[0], + "month" => array_search( $temp[1], $list_month_short ), + "day" => false + ); + } else // Not a recognizable month word + $date_formatted = array( + "year" => $temp[0], + "month" => false, + "day" => false + ); + } else // Only one part in the array { $date_formatted = array( "year" => $temp[0], - "month" => $temp[1], + "month" => false, "day" => false ); } - } } - - // If it's already formatted in mmmm dd, yyyy form - else if ( strpos( $date, "," ) ) + + // Otherwise, assume year + else { - $date = trim( str_replace( ", ", ",", $date ) ); - $temp = preg_split( "/,| /", $date ); - - // Convert month - $month = array_search( $temp[0], $list_month_long ); - if ( !$month ) $month = array_search( $temp[0], $list_month_short ); - $date_formatted = array( - "year" => $temp[2], - "month" => $month, - "day" => $temp[1] + "year" => $temp[0], + "month" => false, + "day" => false ); } - // Check for full names - else + } + + // Format date in standard form: yyyy-mm-dd + $date_formatted = implode( "-", array_filter( $date_formatted ) ); + + if ( !isset($date_formatted) ) $date_formatted = $date; + + return $date_formatted; +} + + +/** + * Processes the WP AJAX Zotero request variables. + * TODO: Is this necessary? + * + * Used by: shortcode.php + * + * @return string Array with the processed variables. + */ +function Zotpress_prep_ajax_request_vars() +{ + $zpr = array(); + + $zpr["limit"] = 50; // max 100, 22 seconds + $zpr["overwrite_request"] = false; + $zpr["overwrite_last_request"] = false; + + // Deal with incoming variables + $zpr["type"] = "basic"; if ( isset($_GET['type']) && $_GET['type'] != "" ) $zpr["type"] = $_GET['type']; + $zpr["api_user_id"] = isset( $_GET['api_user_id'] ) ? $_GET['api_user_id'] : false; + $zpr["item_type"] = "items"; if ( isset($_GET['item_type']) && $_GET['item_type'] != "" ) $zpr["item_type"] = $_GET['item_type']; + $zpr["get_top"] = false; if ( isset($_GET['get_top']) ) $zpr["get_top"] = true; + $zpr["sub"] = false; + $zpr["is_dropdown"] = false; if ( isset($_GET['is_dropdown']) ) $zpr["is_dropdown"] = true; + $zpr["update"] = false; if ( isset($_GET['update']) && $_GET['update'] == "true" ) $zpr["update"] = true; + + // instance id, item key, collection id, tag id + $zpr["instance_id"] = false; if ( isset($_GET['instance_id']) ) $zpr["instance_id"] = $_GET['instance_id']; + + $zpr["item_key"] = false; + if ( isset($_GET['item_key']) + && ( $_GET['item_key'] != "false" && $_GET['item_key'] !== false ) ) + $zpr["item_key"] = $_GET['item_key']; + + // REVIEW: Make sure item_key is formatting in the new style + // + // BIB FORMATS: + // [zotpress item="GMGCJU34"] + // [zotpress items="GMGCJU34,U9Z5JTKC"] + if ( $zpr["item_key"] != false + && strpos( $zpr["item_key"], ":" ) == false ) + { + $temp_reformatted = ""; + $temp_items = explode( ",", $zpr["item_key"] ); + + foreach ( $temp_items as $item ) + $temp_reformatted .= "{".$zpr["api_user_id"].":".$item."},"; + + $zpr["item_key"] = rtrim( $temp_reformatted, ',' ); + } + + $zpr["itemtype"] = false; + if ( isset($_GET['itemtype']) + && ( $_GET['itemtype'] != "false" && $_GET['itemtype'] !== false && $_GET['itemtype'] !== '' ) ) + $zpr["itemtype"] = $_GET['itemtype']; + + $zpr["collection_id"] = false; + if ( isset($_GET['collection_id']) + && ( $_GET['collection_id'] != "false" && $_GET['collection_id'] !== false && $_GET['collection_id'] !== '' ) ) + $zpr["collection_id"] = $_GET['collection_id']; + + $zpr["tag_id"] = false; + if ( isset($_GET['tag_id']) + && ( $_GET['tag_id'] != "false" && $_GET['tag_id'] !== false && $_GET['tag_id'] !== '' ) ) + { + $zpr["tag_id"] = $_GET['tag_id']; + // $zpr["collection_id"] = false; // Can have tags in collection + } + + // Author, year, style, limit, title + $zpr["author"] = false; if ( isset($_GET['author']) && $_GET['author'] != "false" && $_GET['author'] != "" ) $zpr["author"] = $_GET['author']; +// TESTING: urldecode + $zpr["author"] = urldecode($zpr["author"]); + + $zpr["year"] = false; if ( isset($_GET['year']) && $_GET['year'] != "false" && $_GET['year'] != "" ) $zpr["year"] = $_GET['year']; + $zpr["style"] = zp_Get_Default_Style(); if ( isset($_GET['style']) && $_GET['style'] != "false" && $_GET['style'] != "" && $_GET['style'] != "default" ) $zpr["style"] = $_GET['style']; + + // NOTE: With PHP 8, watch for URL params that are strings but need to be ints + if ( isset($_GET['limit']) + && (int) $_GET['limit'] != 0 ) + { + $zpr["limit"] = (int) $_GET['limit']; + $zpr["overwrite_request"] = true; + } + + $zpr["title"] = false; if ( isset($_GET['title']) ) $zpr["title"] = $_GET['title']; + + // Max tags, max results + $zpr["maxtags"] = false; if ( isset($_GET['maxtags']) ) $zpr["maxtags"] = (int) $_GET['maxtags']; + $zpr["maxresults"] = false; if ( isset($_GET['maxresults']) ) $zpr["maxresults"] = (int) $_GET['maxresults']; + + // Term, filter + $zpr["term"] = false; if ( isset($_GET['term']) ) $zpr["term"] = $_GET['term']; + $zpr["filter"] = false; if ( isset($_GET['filter']) ) $zpr["filter"] = $_GET['filter']; + + // Sorty by, order + $zpr["sortby"] = false; + $zpr["order"] = false; + $zpr["item_keys_order"] = array(); + + // Lib toplevel + // Set UNLESS there's a tag + $zpr["toplevel"] = false; + if ( isset($_GET['toplevel']) + && $zpr["tag_id"] === false ) + { + $zpr["toplevel"] = $_GET['toplevel']; + // $zpr["collection_id"] = false; + } + if ( $zpr["collection_id"] == "toplevel" ) + $zpr["collection_id"] = false; + + // SPECIAL SETTINGS + + if ( isset($_GET['sortby']) ) + { + if ($_GET['sortby'] == "author") { + $zpr["sortby"] = "creator"; + $zpr["order"] = "asc"; + } elseif ($_GET['sortby'] == "default") { + $zpr["sortby"] = "default"; + // entry order + } elseif ($_GET['sortby'] == "year") { + $zpr["sortby"] = "date"; + $zpr["order"] = "desc"; + } elseif ($zpr["type"] == "intext" && $_GET['sortby'] == "default") { + $zpr["sortby"] = "default"; + } else { + $zpr["sortby"] = $_GET['sortby']; + } + } + + if ( isset($_GET['order']) + && ( strtolower($_GET['order']) == "asc" || strtolower($_GET['order']) == "desc" ) ) + $zpr["order"] = strtolower($_GET['order']); + + // Show images, show tags, downloadable, inclusive, notes, abstracts, citeable + $zpr["showimage"] = false; + if ( isset($_GET['showimage']) ) + if ( $_GET['showimage'] == "yes" || $_GET['showimage'] == "true" + || $_GET['showimage'] === true || $_GET['showimage'] == 1 ) + $zpr["showimage"] = true; + elseif ( $_GET['showimage'] == "openlib" ) + $zpr["showimage"] = "openlib"; + + $zpr["showtags"] = false; + if ( isset($_GET['showtags']) + && ( $_GET['showtags'] == "yes" || $_GET['showtags'] == "true" + || $_GET['showtags'] === true || $_GET['showtags'] == 1 ) ) + $zpr["showtags"] = true; + + $zpr["downloadable"] = false; + if ( isset($_GET['downloadable']) + && ( $_GET['downloadable'] == "yes" || $_GET['downloadable'] == "true" || $_GET['downloadable'] === true || $_GET['downloadable'] == 1 ) ) + $zpr["downloadable"] = true; + + $zpr["inclusive"] = false; + if ( isset($_GET['inclusive']) + && ( $_GET['inclusive'] == "yes" || $_GET['inclusive'] == "true" || $_GET['inclusive'] === true || $_GET['inclusive'] == 1 ) ) + $zpr["inclusive"] = true; + + $zpr["shownotes"] = false; + if ( isset($_GET['shownotes']) + && ( $_GET['shownotes'] == "yes" || $_GET['shownotes'] == "true" || $_GET['shownotes'] === true || $_GET['shownotes'] == 1 ) ) + $zpr["shownotes"] = true; + + $zpr["showabstracts"] = false; + if ( isset($_GET['showabstracts']) + && ( $_GET['showabstracts'] == "yes" || $_GET['showabstracts'] == "true" || $_GET['showabstracts'] === true || $_GET['showabstracts'] == 1 ) ) + $zpr["showabstracts"] = true; + + $zpr["citeable"] = false; + if ( isset($_GET['citeable']) + && ( $_GET['citeable'] == "yes" || $_GET['citeable'] == "true" || $_GET['citeable'] === true || $_GET['citeable'] == 1 ) ) + $zpr["citeable"] = true; + + // Target, urlwrap, forcenum + $zpr["target"] = false; + if ( isset($_GET['target']) + && ( $_GET['target'] == "yes" || $_GET['target'] == "true" || $_GET['target'] === true || $_GET['target'] == 1 ) ) + $zpr["target"] = true; + + $zpr["urlwrap"] = false; + if ( isset($_GET['urlwrap']) && ( $_GET['urlwrap'] == "title" || $_GET['urlwrap'] == "image" ) ) + $zpr["urlwrap"] = $_GET['urlwrap']; + + $zpr["highlight"] = false; + if ( isset($_GET['highlight']) + && $_GET['highlight'] !== "" + && $_GET['highlight'] !== false + && $_GET['highlight'] !== 0 + && $_GET['highlight'] !== "false" ) $zpr["highlight"] = trim( htmlentities( $_GET['highlight'] ) ); + + $zpr["forcenumber"] = false; + if ( isset($_GET['forcenumber']) + && ( $_GET['forcenumber'] == "yes" || $_GET['forcenumber'] == "true" || $_GET['forcenumber'] === true || $_GET['forcenumber'] == 1 ) ) + $zpr["forcenumber"] = true; + + $zpr["request_start"] = 0; if ( isset($_GET['request_start']) ) $zpr["request_start"] = (int) $_GET['request_start']; + $zpr["request_last"] = 0; if ( isset($_GET['request_last']) ) $zpr["request_last"] = (int) $_GET['request_last']; + + return $zpr; + +} // function Zotpress_prep_ajax_request_vars + + +/** + * Preps and formats the Zotero API request URL. + * + * Handles all possible Zotpress parameters for bibliography + * shortcodes. Per user account. + * + * @param obj $wpdb WP DB object. + * @param arr $zpr Holds all params for request. + * @param arr $zp_request_queue Holds all requests for all accounts. + * @param str $api_user_id Optional. API user ID. + * + * @return arr $zp_request_queue The new request queue of formatted URLs. + */ +function Zotpress_prep_request_URL( $wpdb, $zpr, $zp_request_queue, $api_user_id=false, $zp_request_data=false ) +{ + $tempItemType = ""; + + // Get account and $api_user_id + if ($api_user_id) { + $zp_account = zp_get_account ($wpdb, $api_user_id); + } elseif ($zpr["api_user_id"]) { + $zp_account = zp_get_account ($wpdb, $zpr["api_user_id"]); + $api_user_id = $zpr["api_user_id"]; + } else + { + $zp_account = zp_get_account ($wpdb); + $api_user_id = $zp_account[0]->api_user_id; + } + + // Make sure account was founded (is synced) + if ( count($zp_account) > 0 ) + { + // Basic URL: User type, user id, item type + $zp_import_url = "https://api.zotero.org/".$zp_account[0]->account_type."/".$api_user_id."/".$zpr["item_type"]; + + // Deal with item type Items + if ( $zpr['item_type'] == 'items' ) + { + // Account for single item with new style + if (gettype( $zpr["item_key"] ) == "string" + && strlen($zpr["item_key"]) > 0 + && $zpr["item_key"][0] == "{") { + $zpr_temp = explode(':', $zpr["item_key"]); + $zpr_temp = count($zpr_temp) > 1 ? $zpr_temp[1] : $zpr_temp[0]; + $zpr["item_key"] = rtrim( $zpr_temp, "}"); + // Account for page numbers + if ( strpos( $zpr["item_key"], ',' ) ) + { + $zpr_temp = explode(',', $zpr["item_key"]); + $zpr["item_key"] = rtrim( $zpr_temp[0], "}"); + } + } elseif (gettype( $zpr["item_key"] ) == "array" + && count( $zpr["item_key"] ) == 1 + && $zpr["item_key"][0][0] == "{") { + // $zpr["item_key"] = rtrim( explode(':', $zpr["item_key"][0])[1] , "}"); + $zpr["item_key"] = ltrim( rtrim( $zpr["item_key"][0], "}" ), "{" ); + // Account for page numbers + if ( strpos( $zpr["item_key"], ',' ) ) + { + $zpr_temp = explode(',', $zpr["item_key"]); + $zpr["item_key"] = rtrim( $zpr_temp[0], "}" ); + } + } + } // item type Items + + // Top + if ( $zpr["get_top"] ) $zp_import_url .= "/top"; + + // Single item key + if ( ! empty( $zp_request_queue ) + && ( ! isset( $zp_request_queue[$api_user_id]["items"] ) + || strpos($zp_request_queue[$api_user_id]["items"], ',') == false ) + ) + { + if (isset( $zp_request_data["items"] )) { + $zp_import_url .= "/" . $zp_request_data["items"]; + } elseif (gettype( $zpr["item_key"] ) == "array" + && count( $zpr["item_key"] ) == 1 + && strpos( $zpr["item_key"][0], ',' ) == false) { + $zp_import_url .= "/" . $zpr["item_key"][0]; + } elseif (gettype( $zpr["item_key"] ) == "string" + && ( strpos( $zpr["item_key"], "," ) === false + && strpos( $zpr["item_key"], ";" ) === false )) { + $zp_import_url .= "/" . $zpr["item_key"]; + } + } + if ( $zpr["collection_id"] ) $zp_import_url .= "/" . $zpr["collection_id"]; + if ( $zpr["sub"] ) $zp_import_url .= "/" . $zpr["sub"]; + $zp_import_url .= "?"; + + // Public key, if needed + if (!is_null($zp_account[0]->public_key) && trim($zp_account[0]->public_key) != "") + $zp_import_url .= "key=".$zp_account[0]->public_key."&"; + + // Style + $zp_import_url .= "style=".$zpr["style"]; + + // Format, limit, etc. + $zp_import_url .= "&format=json&include=data,bib&limit=".$zpr["limit"]; + + // Sort and order + if ( $zpr["sortby"] && $zpr["sortby"] != "default" ) { - $date = trim( str_replace( " ", "-", $date ) ); - $temp = explode ( " ", $date ); - - // If there's at least two parts to the date - if ( count( $temp) > 0 ) + $zp_import_url .= "&sort=".$zpr["sortby"]; + if ( $zpr["order"] ) $zp_import_url .= "&direction=".$zpr["order"]; + } + + // Start if multiple + if ( $zpr["request_start"] != 0 ) $zp_import_url .= "&start=".$zpr["request_start"]; + + // Multiple item keys + // EVENTUAL TODO: Limited to 50 item keys at a time ... can I get around this? + // TODO: Test this with a bib that has 50+ items + // if ( $zpr["item_key"] && strpos( $zpr["item_key"],"," ) !== false ) $zp_import_url .= "&itemKey=" . $zpr["item_key"]; + if ( $zp_request_data ) + { + if ( substr_count($zp_request_data["items"], ",") >= 50 ) + { + // Split items by comma + $items = explode( ",", $zp_request_data["items"] ); + + $requests = array(); + $request_items = array(); + + foreach ( $items as $item ) { + if ( count($request_items) < 50 ) { + $request_items[] = $item; + } + else { + $requests[] = $request_items; + unset( $request_items ); + } + } + + $zp_request_queue[$api_user_id]["requests"] = $requests; + } + else { + // TODO: Is this necessary? + // $zp_request_queue[$api_user_id]["requests"] = explode( ",", $zp_request_data["items"] ); + } + } + + // Itemtype-specific + if ( $zpr["itemtype"] ) + { + $zp_import_url .= "&itemType=" . urlencode( stripslashes( $zpr["itemtype"] )); + } + + // Tag-specific + if ( $zpr["tag_id"] ) + { + if ( strpos($zpr["tag_id"], ",") !== false ) { - // Check if name is first - if ( !is_numeric( $temp[0] ) ) - { - if ( in_array( $temp[0], $list_month_long ) ) - $date_formatted = array( - "year" => $temp[1], - "month" => array_search( $temp[0], $list_month_long ), - "day" => false - ); - else if ( in_array( $temp[0], $list_month_short ) ) - $date_formatted = array( - "year" => $temp[1], - "month" => array_search( $temp[0], $list_month_short ), - "day" => false - ); - else // Not a recognizable month word - $date_formatted = array( - "year" => $temp[0], // $temp[1] - "month" => false, - "day" => false - ); - } - // Otherwise, check if name is last - else + $temp = explode( ",", $zpr["tag_id"] ); + + foreach ( $temp as $temp_tag ) { - if ( count($temp) > 1 ) - { - if ( in_array( $temp[1], $list_month_long ) ) - $date_formatted = array( - "year" => $temp[0], - "month" => array_search( $temp[1], $list_month_long ), - "day" => false - ); - else if ( in_array( $temp[1], $list_month_short ) ) - $date_formatted = array( - "year" => $temp[0], - "month" => array_search( $temp[1], $list_month_short ), - "day" => false - ); - else // Not a recognizable month word - $date_formatted = array( - "year" => $temp[0], - "month" => false, - "day" => false - ); - } - else // Only one part in the array - { - $date_formatted = array( - "year" => $temp[0], - "month" => false, - "day" => false - ); - } + $zp_import_url .= "&tag=" . urlencode( stripslashes( $temp_tag )); } } - - // Otherwise, assume year else { - $date_formatted = array( - "year" => $temp[0], - "month" => false, - "day" => false - ); + $zp_import_url .= "&tag=" . urlencode( stripslashes( $zpr["tag_id"] )); } } - - // Format date in standard form: yyyy-mm-dd - $date_formatted = implode( "-", array_filter( $date_formatted ) ); - - //var_dump($date, $date_formatted, "

"); - - if ( !isset($date_formatted) ) $date_formatted = $date; - - return $date_formatted; - } - - - - /** - * Returns HTML-formatted subcollections for parent collection. - * - * Used by: shortcode.php - * - * @param resource $wpdb the WP db resource link - * @param string $api_user_id the Zotero API user ID - * @param string $parent the parent collection - * @param string $sortby what to sort by - * @param string $order the order of the sort, e.g. asc, desc - * @param string $link whether to add the URL - * - * @return string the HTML-formatted subcollections - */ - function zp_get_subcollections ($wpdb, $api_user_id, $parent, $sortby, $order, $link=false) - { - $zp_query = "SELECT ".$wpdb->prefix."zotpress_zoteroCollections.* FROM ".$wpdb->prefix."zotpress_zoteroCollections"; - $zp_query .= " WHERE api_user_id='".$api_user_id."' AND parent = '".$parent."' "; - - // Sort by and sort direction - if ($sortby) - { - if ($sortby == "default") $sortby = "retrieved"; - else if ($sortby == "date" || $sortby == "author") continue; - - $zp_query .= " ORDER BY ".$sortby." " . $order; - } - - $zp_results = $wpdb->get_results($zp_query, OBJECT); - - $zp_output = ""; - - //$zp_output = "
    • \n"; - $zp_output .= "
        \n"; - - foreach ($zp_results as $zp_collection) + + // Filtering: collections and tags take priority over authors and year + // EVENTUAL TODO: Searching by two+ values is not supported on the Zotero side ... + // For now, we get all and manually filter below + $zp_author_or_year_multiple = false; + + if ($zpr["collection_id"] || $zpr["tag_id"]) { + // Check if author or year is set + if ( $zpr["year"] || $zpr["author"] ) + { + // Check if author year is set and multiple + if ( ( $zpr["author"] && strpos( $zpr["author"], "," ) !== false ) + || ( $zpr["year"] && strpos( $zpr["year"], "," ) !== false ) ) + { + $zp_author_or_year_multiple = $zpr["author"] && strpos( $zpr["author"], "," ) !== false ? "author" : "year"; + } + else // Set but not multiple + { + $zp_import_url .= "&qmode=titleCreatorYear"; + if ( $zpr["author"] ) $zp_import_url .= "&q=".urlencode( $zpr["author"] ); + if ( $zpr["year"] && ! $zpr["author"] ) $zp_import_url .= "&q=".$zpr["year"]; + } + } + } elseif ($zpr["year"] || $zpr["author"]) { + $zp_import_url .= "&qmode=titleCreatorYear"; + if ( $zpr["author"] ) + { + // REVIEW: Deal with authors with multi-part last names + // Replace plus signs with spaces + if ( strpos( $zpr["author"], "+" ) !== -1 ) + $zpr["author"] = str_replace( '+', ' ', $zpr["author"] ); + + if ( $zpr["inclusive"] === false ) + { + $zp_authors = explode( ",", $zpr["author"] ); + $zp_import_url .= "&q=".urlencode( $zp_authors[0] ); + unset( $zp_authors[0] ); + $zpr["author"] = $zp_authors; + } + else // inclusive + { + $zp_import_url .= "&q=".urlencode( $zpr["author"] ); + } + } + // CHANGED (7.3): For some reason, urlencode will replace apostrophes + // with ' and then encode that to %26%23039%3B + // which breaks ... so let's replace with %27 manually + $zp_import_url = str_replace("%26%23039%3B", "%27", $zp_import_url); + // Deal with just year, no author + if ( $zpr["year"] && ! $zpr["author"] ) $zp_import_url .= "&q=".$zpr["year"]; + } + + // Avoid attachments and notes, if not using itemtype filtering + if ( ! $zpr["itemtype"] + && $zpr["item_type"] == "items" + || ( $zpr["sub"] && $zpr["sub"] == "items" ) ) + $zp_import_url .= "&itemType=-attachment+||+note"; + + // Deal with possible term + if ( $zpr["term"] ) + if ( $zpr["filter"] && $zpr["filter"] == "tag") + $zp_import_url .= "&tag=".urlencode( $wpdb->esc_like($zpr["term"]) ); + else + $zp_import_url .= "&q=".urlencode( $wpdb->esc_like($zpr["term"]) ); + + + // DEAL WITH MULTIPLE REQUESTS + // if ( count($zp_request_queue) > 0 ) + if ($zp_request_queue + && array_key_exists($api_user_id, $zp_request_queue)) { + // Assume items + // if ( array_key_exists("requests", $zp_request_queue[$api_user_id]) + // && count($zp_request_queue[$api_user_id]["requests"]) > 1 ) + // Multiple requests + if (array_key_exists("requests", $zp_request_queue[$api_user_id]) + && count($zp_request_queue[$api_user_id]["requests"]) > 1) { + $item_keys = ""; + foreach ( $zp_request_queue[$api_user_id]["requests"] as $num => $request ) { + if ( $item_keys != "" ) $item_keys .= ","; + $item_keys .= $request; + } + $zp_request_queue[$api_user_id]["requests"][$num] = $zp_import_url . "&itemKey=" . $item_keys; + } elseif (strpos( $zp_request_queue[$api_user_id]["items"], "," ) !== false) { + if ( is_array($zp_request_queue[$api_user_id]["items"]) ) + $zp_request_queue[$api_user_id]["items"] = implode(",", $zp_request_queue[$api_user_id]["items"]); + $zp_request_queue[$api_user_id]["requests"] = array( $zp_import_url . "&itemKey=" . $zp_request_queue[$api_user_id]["items"] ); + } else // one item + { + $zp_request_queue[$api_user_id]["requests"] = array( $zp_import_url ); + } + } elseif (! $zp_request_queue + && $api_user_id) { + // Assume normal + $zp_request_queue[$api_user_id]["requests"] = array( $zp_import_url ); + } else { - $zp_output .= "
      • "; - if ($link == "yes") - { - $zp_output .= ""; - } - $zp_output .= $zp_collection->title; - if ($link == "yes") { $zp_output .= ""; } - - // Thanks to @mlwk for 2+ level nexted collections fix - if ($zp_collection->numCollections > 0) - $zp_output .= zp_get_subcollections($wpdb, $api_user_id, $zp_collection->item_key, $sortby, $order, $link); - - $zp_output .= "
      • \n"; + // Assume broken or no requests + $zp_request_queue = false; + // Assume normal + // $zp_request_queue[$api_user_id]["requests"] = array( $zp_import_url ); } - - //$zp_output .= "
      \n"; - $zp_output .= "
    \n"; - - return $zp_output; - } - - - -?> \ No newline at end of file + } // count($zp_account) > 0 + + else // account not synced + { + $zp_request_queue = false; + } + + return $zp_request_queue; + +} // function Zotpress_prep_request_URL + + + +?> diff --git a/lib/shortcode/shortcode.intext.php b/lib/shortcode/shortcode.intext.php index 00bf000..e6c7446 100644 --- a/lib/shortcode/shortcode.intext.php +++ b/lib/shortcode/shortcode.intext.php @@ -1,462 +1,196 @@ false, - 'items' => false, - - 'pages' => false, - 'format' => "(%a%, %d%, %p%)", - 'brackets' => false, - 'etal' => false, // default (false), yes, no - 'separator' => false, // default (comma), semicolon - 'and' => false, // default (no), and, comma-and - - 'userid' => false, - 'api_user_id' => false, - 'nickname' => false, - 'nick' => false - - ), $atts)); - - - - // PREPARE ATTRIBUTES - - if ($items) $items = str_replace('"','',html_entity_decode($items)); - else if ($item) $items = str_replace('"','',html_entity_decode($item)); - - $pages = str_replace('"','',html_entity_decode($pages)); - $format = str_replace('"','',html_entity_decode($format)); - $brackets = str_replace('"','',html_entity_decode($brackets)); - - $etal = str_replace('"','',html_entity_decode($etal)); - if ($etal == "default") { $etal = false; } - - $separator = str_replace('"','',html_entity_decode($separator)); - if ($separator == "default") { $separator = false; } - - $and = str_replace('"','',html_entity_decode($and)); - if ($and == "default") { $and = false; } - - if ($userid) { $api_user_id = str_replace('"','',html_entity_decode($userid)); } - if ($nickname) { $nickname = str_replace('"','',html_entity_decode($nickname)); } - if ($nick) { $nickname = str_replace('"','',html_entity_decode($nick)); } - - - - // GET ACCOUNTS - - global $wpdb; - - $zp_account = false; - - if ($nickname !== false) - { - $zp_account = $wpdb->get_row("SELECT * FROM ".$wpdb->prefix."zotpress WHERE nickname='".$nickname."'", OBJECT); +function zpStripQuotes($string) +{ + // Strip quotes and decode + $string = str_replace("”", "", str_replace('"','', html_entity_decode( $string ))); + return $string; +} + +function Zotpress_zotpressInText ($atts) +{ + /* + * GLOBAL VARIABLES + * + * $GLOBALS['zp_shortcode_instances'] {instantiated in zotpress.php} + * + */ + + extract(shortcode_atts(array( + + 'item' => false, + 'items' => false, + + 'pages' => false, + 'format' => "(%a%, %d%, %p%)", + 'brackets' => false, + 'etal' => false, // default (false), yes, no + 'separator' => false, // default (comma), semicolon + 'and' => false, // ampersand [default], and, comma, comma-amp, comma-and + + 'userid' => false, + 'api_user_id' => false, + 'nickname' => false, + 'nick' => false + + ), $atts)); + + + // PREPARE ATTRIBUTES + if ($items) { + $items = zpStripQuotes( str_replace(" ", "", $items )); + } elseif ($item) { + $items = zpStripQuotes( str_replace(" ", "", $item )); + } + + $pages = zpStripQuotes( $pages ); + $format = zpStripQuotes( $format ); + $brackets = zpStripQuotes( $brackets ); + + $etal = zpStripQuotes( $etal ); + if ( $etal == "default" ) $etal = false; + + $separator = zpStripQuotes( $separator ); + if ( $separator == "default" ) $separator = false; + + $and = zpStripQuotes( $and ); + if ( $and == "default" ) $and = false; + + if ( $userid ) $api_user_id = zpStripQuotes( $userid ); + if ( $nickname ) $nickname = zpStripQuotes( $nickname ); + if ( $nick ) $nickname = zpStripQuotes( $nick ); + + + + // GET ACCOUNTS + + global $wpdb; + + // Turn on/off minified versions if testing/live + $minify = ''; if ( ZOTPRESS_LIVEMODE ) $minify = '.min'; + + wp_enqueue_script( 'zotpress.shortcode.intext'.$minify.'.js' ); + + $zp_account = false; + + if ($nickname !== false) { + $zp_account = $wpdb->get_row("SELECT * FROM ".$wpdb->prefix."zotpress WHERE nickname='".$nickname."'", OBJECT); + if ( $zp_account !== null ) $api_user_id = $zp_account->api_user_id; + } elseif ($api_user_id !== false) { + $zp_account = $wpdb->get_row("SELECT * FROM ".$wpdb->prefix."zotpress WHERE api_user_id='".$api_user_id."'", OBJECT); + if ( $zp_account !== null ) + $api_user_id = $zp_account->api_user_id; + } elseif ($api_user_id === false && $nickname === false) { + if ( get_option("Zotpress_DefaultAccount") !== false ) + { + $api_user_id = get_option("Zotpress_DefaultAccount"); + $zp_account = $wpdb->get_row("SELECT * FROM ".$wpdb->prefix."zotpress WHERE api_user_id ='".$api_user_id."'", OBJECT); } - else if ($api_user_id !== false) + else // When all else fails ... { - $zp_account = $wpdb->get_row("SELECT * FROM ".$wpdb->prefix."zotpress WHERE api_user_id='".$api_user_id."'", OBJECT); + $zp_account = $wpdb->get_row("SELECT * FROM ".$wpdb->prefix."zotpress LIMIT 1", OBJECT); $api_user_id = $zp_account->api_user_id; } - else if ($api_user_id === false && $nickname === false) + } + + // Format in-text items: + // Handle the possible formats of item/s for in-text + // + // IN-TEXT FORMATS: + // [zotpressInText item="NCXAA92F"] + // [zotpressInText item="{NCXAA92F}"] + // [zotpressInText item="{NCXAA92F,10-15}"] + // [zotpressInText items="{NCXAA92F,10-15},{55MKF89B,1578},{3ITTIXHP}"] + // [zotpressInText items="{000001:NCXAA92F,10-15},{000003:3ITTIXHP}"] + // So no multiples without curlies or non-curlies in multiples + + $all_page_instances = array(); + + // // Add `ppp` in front of pages, so we can ignore pages later + // $intextitem["items"] = preg_replace( "/((?=[^}]),(?=[^{]))+/", ",ppp", $intextitem["items"] ); + // REVIEW: Actually, let's just remove pages + // $items = preg_replace( "/(((,))+([\w\d-]+(})+))++/", "}", $items ); + // REVIEW: Actually, we need them for now, remove later + // $items = preg_replace( "/((?=[^}]),(?=[^{]))+/", ",ppp", $items ); + + // Add api_user_id if not there + // if ( strpos( $items, $api_user_id ) === false ) // WRONG: assumes default/global api_user_id rather than the one for this shortcode + if ( strpos( $items, ":" ) === false ) + { + if (strpos( $items, "{" ) !== false) { + $items = str_replace( "{", "{".$api_user_id.":", $items ); + } elseif (strpos( $items, "," ) !== false) { + $items = "{".$api_user_id.":" . str_replace( ",", "},{".$api_user_id.":", $items )."}"; + } else // assume unformatted and single, so place at front { - if (get_option("Zotpress_DefaultAccount") !== false) - { - $api_user_id = get_option("Zotpress_DefaultAccount"); - $zp_account = $wpdb->get_row("SELECT * FROM ".$wpdb->prefix."zotpress WHERE api_user_id ='".$api_user_id."'", OBJECT); - } - else // When all else fails ... - { - $zp_account = $wpdb->get_row("SELECT * FROM ".$wpdb->prefix."zotpress LIMIT 1", OBJECT); - $api_user_id = $zp_account->api_user_id; - } + $items = "{".$api_user_id.":".$items."}"; } - - - // Generate instance id for shortcode - $zp_instance_id = "zotpress-".md5($api_user_id.$nickname.$pages.$items.$format); - - if ($items !== false) + } + + // Determine page instances and where + $temp_items = explode( "},{", $items ); + $all_np = true; + + foreach ( $temp_items as $id => $item ) + { + // if ( strpos( $item, "," ) !== false ) // assume page/s + // if ( preg_match( '/,(.)+\}/', $item, $match ) == 1 ) + if ( preg_match( '/,(.)+/', $item, $match ) == 1 ) { - - // PREPARE ITEM KEYS: Single, with or without curly bracket, or multiple - - if (strpos($items, "{") !== false) - { - if (strpos($items, "},") !== false) - { - $items = explode("},", $items); - foreach ($items as $id => $item) $items[$id] = explode(",", str_replace("{", "", str_replace("}", "", $item))); - } - else - { - $items = str_replace("{", "", str_replace("}", "", $items)); - if (strpos($items, ",") !== false) $items = explode(",", $items); - } - } - - - // PREPARE ITEM QUERY - - $zp_query = "SELECT items.*, ".$wpdb->prefix."zotpress_zoteroItemImages.image AS itemImage "; - - $zp_query .= "FROM ".$wpdb->prefix."zotpress_zoteroItems AS items "; - $zp_query .= "LEFT JOIN ".$wpdb->prefix."zotpress_zoteroItemImages - ON items.item_key=".$wpdb->prefix."zotpress_zoteroItemImages.item_key - AND items.api_user_id=".$wpdb->prefix."zotpress_zoteroItemImages.api_user_id "; - - $zp_query .= "WHERE items.api_user_id='".$api_user_id."' AND "; - - /*$zp_citation_attr = - array( - 'posts_per_page' => -1, - 'post_type' => 'zp_entry', - 'meta_key' => 'author', - 'orderby' => 'meta_value', - 'order' => 'ASC', - 'meta_query' => '' - ); - - $zp_citation_meta_query = - array( - 'relation' => 'AND', - array( - 'key' => 'api_user_id', - 'value' => $api_user_id, - 'compare' => '=' - ) - );*/ - - if ( is_array($items) ) - { - if ( count($items) == 2 && !is_array($items[0]) ) - { - $zp_query .= " items.item_key='" . $items[0] . "'"; - /*array_push( $zp_citation_meta_query, - array( - 'key' => 'item_key', - 'value' => $items[0], - 'compare' => '=' - ) - );*/ - } - else - { - $zp_query .= " items.item_key IN ( "; - foreach ($items as $id => $item) - { - $zp_query .= "'" . $item[0] . "'"; - if (count($items)-1 != $id) $zp_query .= ","; - /*array_push( $zp_citation_meta_query, - array( - 'key' => 'item_key', - 'value' => $items[0], - 'compare' => '=' - ) - );*/ - } - $zp_query .=" )"; - } - } - else // single item - { - $zp_query .= " items.item_key='" . $items . "'"; - /*array_push( $zp_citation_meta_query, - array( - 'key' => 'item_key', - 'value' => $items, - 'compare' => '=' - ) - );*/ - } - - //$zp_citation_attr['meta_query'] = $zp_citation_meta_query; - $zp_query .= " ORDER BY items.author ASC, items.zpdate ASC;"; - - - - // QUERY DATABASE - //var_dump($zp_query); - $zp_results = $wpdb->get_results($zp_query, OBJECT); - //var_dump($zp_results); - - $zp_intext_citation = ""; // Output for display - $zp_intext_citation_arr = array(); // Array for sorting - - - - // FORMAT IN-TEXT CITATION - - $prev_num = 1; - - foreach ($zp_results as $id => $item) - { - $zp_json = json_decode( $item->json ); - - // Determine author if "author" doesn't exist - if ( trim($item->author) == "" ) - { - if ( isset($zp_json->creators) && count($zp_json->creators) > 0 ) - { - foreach ( $zp_json->creators as $i => $zp_creator ) - { - $item->author = $zp_creator->name; - if ( $i != (count($zp_json->creators)-1) ) $item->author .= ", "; - } - } - else // assume no author exists; use title instead - { - $item->author .= "\"" . $item->title . "\""; - } - } - - // Shorten author ... - if ($etal) - { - if ($etal == "yes") $item->author = substr($item->author, 0, strpos($item->author, ",")) . " et al."; - } - else // default - { - if (isset($GLOBALS['zp_shortcode_instances'][get_the_ID()][$api_user_id.",".$item->item_key]) - && count(explode(",", $item->author)) > 3) - { - $item->author = substr($item->author, 0, strpos($item->author, ",")) . " et al."; - } - } - - // Deal with 'and' => false, // default (no), and, comma-and - if ($and) - { - if ($and == "and") - { - if ( strrpos($item->author, ",") !== false ) - $item->author = substr_replace( $item->author, " and", strrpos($item->author, ","), 1 ); - } - else if ($and == "comma-and") - { - if ( strrpos($item->author, ",") !== false ) - $item->author = substr_replace( $item->author, ", and", strrpos($item->author, ","), 1 ); - } - } - - // Determine %num% - // Determine if this citation has already been referenced - $num = false; - if (isset($GLOBALS['zp_shortcode_instances'][get_the_ID()]) && count($zp_results) >= 1) - { - $numloop = 1; - foreach ($GLOBALS['zp_shortcode_instances'][get_the_ID()] as $position => $instance) - { - if ($position == $api_user_id.",".$item->item_key) - { - $num = $numloop; - break; - } - $numloop++; - } - } - - // Determine what %num% is if not already referenced - if ($num === false) - if (isset($GLOBALS['zp_shortcode_instances'][get_the_ID()])) - $num = count($GLOBALS['zp_shortcode_instances'][get_the_ID()])+1; - else - $num = 1; - - // Fill in author, date and number - $citation = str_replace("%num%", $num, str_replace("%a%", $item->author, str_replace("%d%", zp_get_year($item->zpdate, true), $format))); - - // Deal with pages - if ($pages) - { - $citation = str_replace("%p%", $pages, $citation); - } - else // New way - { - if (is_array($items)) - { - if (count($items) == 2 && !is_array($items[0])) - { - $citation = str_replace("%p%", $items[1], $citation); - } - else - { - // Multiple citations -- shouldn't have page numbers - //if (isset($items[$id][1])) { - // $citation = str_replace("%p%", $items[$id][1], $citation); - //} - //else { - $citation = str_replace("%p%", "", str_replace(" %p%", "", str_replace(", %p%", "", $citation))); - //} - } - } - else // No pages - { - $citation = str_replace("%p%", "", str_replace(" %p%", "", str_replace(", %p%", "", $citation))); - } - } - - // Format for multiple (only expected characters) - if (count($zp_results) > 1) - { - if ($id == 0) - $citation = str_replace("]", "", str_replace(")", "", $citation)); - else if ($id == (count($zp_results)-1)) - $citation = str_replace("[", "", str_replace("(", " ", $citation)); - else - $citation = str_replace("]", "", str_replace("[", "", str_replace(")", "", str_replace("(", " ", $citation)))); - } - - // Deal with download - $item_download = false; if (isset($item->attachment_data)) $item_download = $item->attachment_data; - $item_download_key = false; if (isset($item->attachment_key)) $item_download_key = $item->attachment_key; - - // SET SORT ARRAY - $zp_intext_citation_arr[$api_user_id.",".$item->item_key] = array( - "instance_id" => $zp_instance_id, - "api_user_id" => $api_user_id, - "item_key" => $item->item_key, - "author" => $item->author, - "title" => $item->title, - "zpdate" => zp_get_year($item->zpdate), - "citation" => $citation, - "alphacount" => "" - ); - - // SET BIBLIOGRAPHY CITATIONS: Per item - $GLOBALS['zp_shortcode_instances'][get_the_ID()][$api_user_id.",".$item->item_key] = array( - "instance_id" => $zp_instance_id, - "userid" => $api_user_id, - "account_type" => $zp_account->account_type, - "public_key" => $zp_account->public_key, - "item_key" => $item->item_key, - "author" => $item->author, - "title" => $item->title, - "date" => zp_get_year($item->zpdate), - "download" => $item_download, - "download_key" => $item_download_key, - "image" => $item->itemImage, - "json" => $item->json, - "citation" => $item->citation, - "style" => $item->style, - "alphacount" => "" - ); - } - - // First, sort in-text items - //$zp_intext_citation_arr = subval_sort($zp_intext_citation_arr, "author", "asc"); - $zp_intext_citation_output_arr = array(); - - $zp_alphacount = ""; - $zp_alphacount_author = ""; - - // Then build output array - - foreach ( $zp_intext_citation_arr as $id => $item_arr ) - $zp_intext_citation_output_arr[count($zp_intext_citation_output_arr)] = $item_arr; - - - foreach ( $zp_intext_citation_output_arr as $i => $item ) - { - $zp_alphacount_this = ""; - - if ( isset($zp_intext_citation_output_arr[$i+1]["author"]) - && $item["author"] == $zp_intext_citation_output_arr[$i+1]["author"] - && $item["zpdate"] == $zp_intext_citation_output_arr[$i+1]["zpdate"] ) - { - if ( $zp_alphacount == "" ) - $zp_alphacount_this = "a"; - else - if ( $zp_alphacount_author != $item["author"] ) - $zp_alphacount_this = "a"; - else - $zp_alphacount_this = ++$zp_alphacount; - - $zp_alphacount_author = $item["author"]; - - // Update the counts on this and the next one - $item["alphacount"] = $zp_alphacount_this; - $GLOBALS['zp_shortcode_instances'][get_the_ID()][$item["api_user_id"].",".$item["item_key"]]["alphacount"] = $zp_alphacount_this; - $GLOBALS['zp_shortcode_instances'][get_the_ID()][$zp_intext_citation_output_arr[$i+1]["api_user_id"].",".$zp_intext_citation_output_arr[$i+1]["item_key"]]["alphacount"] = ++$zp_alphacount_this; - - $zp_alphacount = $zp_alphacount_this; - } - - $item["alphacount"] = $GLOBALS['zp_shortcode_instances'][get_the_ID()][$zp_intext_citation_output_arr[$i]["api_user_id"].",".$zp_intext_citation_output_arr[$i]["item_key"]]["alphacount"]; - - $zp_intext_citation .= "" . $item["citation"] . ""; - $zp_intext_citation = str_replace( "al..", "al.", $zp_intext_citation); - - // Determine delineation for multiple citations - if ( count($zp_intext_citation_arr) > 1 && $i != (count($zp_intext_citation_arr)-1) ) - if ( $separator && $separator == "comma" ) - $zp_intext_citation .= ","; - else - if ( isset($zp_intext_citation_output_arr[$i+1]["author"]) - && $item["author"] == $zp_intext_citation_output_arr[$i+1]["author"] ) - $zp_intext_citation .= ","; - else - if ( $brackets ) - $zp_intext_citation .= ", "; - else - $zp_intext_citation .= ";"; - } - - // Add brackets, if necessary - if ( $brackets ) $zp_intext_citation = "[" . $zp_intext_citation . "]"; - - return $zp_intext_citation; - - unset($zp_query); - unset($zp_results); - unset($zp_intext_citation); - unset($zp_intext_citation_arr); - unset($zp_intext_citation_output_arr); - - $wpdb->flush(); + // Remove curlies and commas + $all_page_instances[$id] = str_replace( "}", "", str_replace( ",", "", $match[0] ) ); + $all_np = false; } - - // Display notification if no citations found else { - return "\n
    Sorry, no citation(s) found.
    \n"; + $all_page_instances[$id] = "np"; } - - // Show theme scripts - $GLOBALS['zp_is_shortcode_displayed'] = true; - } - -?> \ No newline at end of file + // REVIEW: Replace ndashes and mdashes with dashes (7.3) + $items = str_replace("–", "-", str_replace("–", "-", $items)); + + // Remove pages from item key/s + $items = preg_replace( "/(((,))+([\w\d-]+(})+))++/", "}", $items ); + unset($temp_items); + + + // Generate instance id for shortcode + // REVIEW: Changed for new item format + // e.g., zp-ID--66010-FKNL6ECC-_-66010-FZF9BN8L--wp406 + // $instance_id = "zp-ID-".$api_user_id."-" . str_replace( " ", "_", str_replace( "&", "_", str_replace( "+", "_", str_replace( "/", "_", str_replace( "{", "-", str_replace( "}", "-", str_replace( ",", "_", $items ) ) ) ) ) ) ) ."-".get_the_ID(); + $instance_id = "zp-InText-zp-ID-" . str_replace( " ", "_", str_replace( "&", "_", str_replace( "+", "_", str_replace( "/", "_", str_replace( "{", "-", str_replace( "}", "-", str_replace( ":", "-", str_replace( ",", "_", $items ) ) ) ) ) ) ) ) ."-wp".get_the_ID(); + + // Set up array for this post, if it doesn't exist + if ( ! isset( $GLOBALS['zp_shortcode_instances'][get_the_ID()] ) ) + $GLOBALS['zp_shortcode_instances'][get_the_ID()] = array(); + + // Determine if all items are np + if ( $all_np ) + $all_page_instances = array("np"); + + // Then, add the instance to the array + // REVIEW: Don't need api_user_id ... or maybe need multiple? + // $GLOBALS['zp_shortcode_instances'][get_the_ID()][] = array( "instance_id" => $instance_id, "api_user_id" =>$api_user_id, "items" => $items ); + $GLOBALS['zp_shortcode_instances'][get_the_ID()][] = array( + "instance_id" => $instance_id, + "items" => $items, + "page_instances" => $all_page_instances + ); + + // Show theme scripts + $GLOBALS['zp_is_shortcode_displayed'] = true; + + // Output attributes and loading + // REVIEW: Changed for new format + // return ''; + $output = ''; + + return $output; +} + + +?> diff --git a/lib/shortcode/shortcode.intextbib.php b/lib/shortcode/shortcode.intextbib.php index c613620..b43109a 100644 --- a/lib/shortcode/shortcode.intextbib.php +++ b/lib/shortcode/shortcode.intextbib.php @@ -1,328 +1,219 @@ - false, - 'sortby' => "default", - 'sort' => false, - 'order' => false, - - 'image' => false, - 'images' => false, - 'showimage' => "no", - - 'showtags' => "no", - 'title' => "no", - 'download' => "no", - 'downloadable' => false, - 'notes' => false, - 'abstract' => false, - 'abstracts' => false, - 'cite' => false, - 'citeable' => false, - 'target' => false, - 'forcenumber' => false - ), $atts)); - - - - // FORMAT PARAMETERS - $style = str_replace('"','',html_entity_decode($style)); - $sortby = str_replace('"','',html_entity_decode($sortby)); - - if ($order) $order = str_replace('"','',html_entity_decode($order)); - else if ($sort) $order = str_replace('"','',html_entity_decode($sort)); - else $order = "ASC"; - - // Show image - if ($showimage) $showimage = str_replace('"','',html_entity_decode($showimage)); - if ($image) $showimage = str_replace('"','',html_entity_decode($image)); - if ($images) $showimage = str_replace('"','',html_entity_decode($images)); - - if ($showimage == "yes" || $showimage == "true" || $showimage === true) $showimage = true; - else $showimage = false; - - // Show tags - if ($showtags == "yes" || $showtags == "true" || $showtags === true) $showtags = true; - else $showtags = false; - - $title = str_replace('"','',html_entity_decode($title)); - - if ($download) $download = str_replace('"','',html_entity_decode($download)); - else if ($downloadable) $download = str_replace('"','',html_entity_decode($downloadable)); - if ($download == "yes" || $download == "true" || $download === true) $download = true; else $download = false; - - $notes = str_replace('"','',html_entity_decode($notes)); - - if ($abstracts) $abstracts = str_replace('"','',html_entity_decode($abstracts)); - else if ($abstract) $abstracts = str_replace('"','',html_entity_decode($abstract)); - - if ($cite) $cite = str_replace('"','',html_entity_decode($cite)); - else if ($citeable) $cite = str_replace('"','',html_entity_decode($citeable)); - - if ($target == "new" || $target == "yes" || $target == "_blank" || $target == "true" || $target === true) $target = true; - else $target = false; - - if ($forcenumber == "yes" || $forcenumber == "true" || $forcenumber === true) - $forcenumber = true; else $forcenumber = false; - - - // SORT BY AND SORT ORDER - if ( $sortby != "default" && isset($GLOBALS['zp_shortcode_instances'][get_the_ID()]) ) - $GLOBALS['zp_shortcode_instances'][get_the_ID()] = subval_sort( $GLOBALS['zp_shortcode_instances'][get_the_ID()], $sortby, $order ); - - // TITLE: Sort by date and add headings - if ( ( strtolower($title) == "yes" || strtolower($title) == "true" ) && isset($GLOBALS['zp_shortcode_instances'][get_the_ID()]) ) - $GLOBALS['zp_shortcode_instances'][get_the_ID()] = subval_sort( $GLOBALS['zp_shortcode_instances'][get_the_ID()], "date", $order ); - - - // DISPLAY IN-TEXT BIBLIOGRAPHY - - $current_title = ""; - $citation_abstract = ""; - $citation_tags = ""; - $citation_notes = array(); - $zp_notes_num = 1; - - $zp_output = "\n
    \n\n"; - $zp_output .= "" . ZOTPRESS_PLUGIN_URL . "\n\n"; - - //$zp_output .= "Checking ...\n\n"; - - // Add style, if set - if ($style) $zp_output .= "".$style."\n\n"; - - if ( isset($GLOBALS['zp_shortcode_instances'][get_the_ID()]) ) - { - foreach ($GLOBALS['zp_shortcode_instances'][get_the_ID()] as $item => $zp_citation) - { - $citation_image = false; - $has_citation_image = false; - $zp_this_meta = json_decode( $zp_citation["json"] ); - $zp_output .= "".$zp_citation['userid']."\n\n"; - - // AUTOUPDATE - //if (!isset($_SESSION['zp_session'][$zp_citation['userid']]['key'])) - // $_SESSION['zp_session'][$zp_citation['userid']]['key'] = substr(number_format(time() * rand(),0,'',''),0,10); /* Thanks to http://elementdesignllc.com/2011/06/generate-random-10-digit-number-in-php/ */ - //$zp_output .= "" . $_SESSION['zp_session'][$zp_citation['userid']]['key'] . "\n\n"; - - // IMAGE - if ($showimage == "yes" && is_null($zp_citation["image"]) === false && $zp_citation["image"] != "") - { - if ( is_numeric($zp_citation["image"]) ) - { - $zp_citation["image"] = wp_get_attachment_image_src( $zp_citation["image"], "full" ); - $zp_citation["image"] = $zp_citation["image"][0]; - } - - $citation_image = "
    "; - $citation_image .= "image"; - $citation_image .= "
    \n"; - $has_citation_image = " zp-HasImage"; - } - - // TAGS - // Grab tags associated with item - if ( $showtags ) - { - global $wpdb; - - $zp_showtags_query = "SELECT DISTINCT ".$wpdb->prefix."zotpress_zoteroTags.title FROM ".$wpdb->prefix."zotpress_zoteroTags LEFT JOIN ".$wpdb->prefix."zotpress_zoteroRelItemTags ON ".$wpdb->prefix."zotpress_zoteroRelItemTags.tag_title=".$wpdb->prefix."zotpress_zoteroTags.title WHERE ".$wpdb->prefix."zotpress_zoteroRelItemTags.item_key='".$zp_citation["item_key"]."' ORDER BY ".$wpdb->prefix."zotpress_zoteroTags.title ASC;"; - $zp_showtags_results = $wpdb->get_results($zp_showtags_query, ARRAY_A); - - if ( count($zp_showtags_results) > 0) - { - $citation_tags = "

    Tags: "; - - foreach ($zp_showtags_results as $i => $zp_showtags_tag) - { - $citation_tags .= "" . $zp_showtags_tag["title"] . ""; - if ( $i != (count($zp_showtags_results)-1) ) $citation_tags .= ", "; - } - $citation_tags .= "

    \n"; - } - unset($zp_showtags_results); - unset($zp_showtags_query); - } - - // ABSTRACT - if ($abstracts) - { - if (isset($zp_this_meta->abstractNote) && strlen(trim($zp_this_meta->abstractNote)) > 0) - { - $citation_abstract = "

    Abstract: " . sprintf($zp_this_meta->abstractNote) . "

    \n"; - } - } - - // NOTES - if ($notes == "yes") - { - global $wpdb; - - $zp_notes = $wpdb->get_results("SELECT json FROM ".$wpdb->prefix."zotpress_zoteroItems WHERE api_user_id='".$zp_citation['userid']."' - AND parent = '".$zp_citation["item_key"]."' AND itemType = 'note';", OBJECT); - - if (count($zp_notes) > 0) - { - $temp_notes = "
  • \n"; - - // Only create a list if there's more than one note for this item - if ( count($zp_notes) == 1 ) - { - $note_json = json_decode($zp_notes[0]->json); - $temp_notes .= $note_json->note . "\n"; - } - else if ( count($zp_notes) > 1 ) - { - $temp_notes .= "
      \n"; - - foreach ($zp_notes as $note) - { - $note_json = json_decode($note->json); - $temp_notes .= "
    • " . $note_json->note . "\n
    • \n"; - } - $temp_notes .= "\n
    "; - } - - $temp_notes .= "\n
  • \n\n"; - - $citation_notes[count($citation_notes)] = $temp_notes; - - // Add note reference - $zp_citation['citation'] = preg_replace('~(.*)' . preg_quote('', '~') . '(.*?)~', '$1' . " ".$zp_notes_num." " . '$2', $zp_citation['citation'], 1); - $zp_notes_num++; - } - unset($zp_notes); - } - - // Hyperlink URL: Has to go before Download - if (isset($zp_this_meta->url) && strlen($zp_this_meta->url) > 0) - { - $zp_url_replacement = "url)))."'>".urldecode(urlencode(htmlentities($zp_this_meta->url))).""; - - // Replace ampersands - $zp_citation['citation'] = str_replace(htmlspecialchars($zp_this_meta->url), $zp_this_meta->url, $zp_citation['citation']); - - // Then replace with linked URL - $zp_citation['citation'] = str_replace($zp_this_meta->url, $zp_url_replacement, $zp_citation['citation']); - } - - // DOWNLOAD - if ( $download ) - { - global $wpdb; - // - //$zp_download_url = $wpdb->get_row("SELECT item_key, citation, json, linkMode FROM ".$wpdb->prefix."zotpress_zoteroItems WHERE api_user_id='".$zp_citation['userid']."' - // AND parent = '".$zp_citation["item_key"]."' AND linkMode IN ( 'imported_file', 'linked_url' ) ORDER BY linkMode ASC LIMIT 1;", OBJECT); - - //$zp_download_url = json_decode($zp_citation["download"]); - - $zp_download = $wpdb->get_results( - " - SELECT * FROM - ( - SELECT - ".$wpdb->prefix."zotpress_zoteroItems.parent AS parent, - ".$wpdb->prefix."zotpress_zoteroItems.citation AS content, - ".$wpdb->prefix."zotpress_zoteroItems.item_key AS item_key, - ".$wpdb->prefix."zotpress_zoteroItems.json AS data, - ".$wpdb->prefix."zotpress_zoteroItems.linkmode AS linkmode - FROM ".$wpdb->prefix."zotpress_zoteroItems - WHERE api_user_id='".$zp_citation["userid"]."' - AND ".$wpdb->prefix."zotpress_zoteroItems.parent = '".$zp_citation["item_key"]."' - AND ".$wpdb->prefix."zotpress_zoteroItems.linkmode IN ( 'imported_file', 'linked_url' ) - ORDER BY linkmode ASC - ) - AS attachments_sub - GROUP BY parent; - " - , OBJECT - ); - - if ( count($zp_download) > 0 ) - { - $zp_download_url = json_decode($zp_download[0]->data); - - if ($zp_download_url->linkMode == "imported_file") - { - $zp_citation['citation'] = preg_replace('~(.*)' . preg_quote('', '~') . '(.*?)~', '$1' . " Download " . '$2', $zp_citation['citation'], 1); // Thanks to http://ideone.com/vR073 - } - else - { - $zp_citation['citation'] = preg_replace('~(.*)' . preg_quote('', '~') . '(.*?)~', '$1' . " Download " . '$2', $zp_citation['citation'], 1); - } - - unset($zp_download_url); - unset($zp_download); - } - } - - // CITE LINK - if ($cite == "yes" || $cite == "true" || $cite === true) - { - $cite_url = "https://api.zotero.org/".$zp_citation["account_type"]."/".$zp_citation['userid']."/items/".$zp_citation["item_key"]."?format=ris"; - $zp_citation['citation'] = preg_replace('~(.*)' . preg_quote('', '~') . '(.*?)~', '$1' . " Cite " . '$2', $zp_citation['citation'], 1); - } - - // TITLE - if (strtolower($title) == "yes" || strtolower($title) == "true") - { - if ($current_title == "" || (strlen($current_title) > 0 && $current_title != $zp_citation["date"])) - { - $current_title = $zp_citation["date"]; - $zp_output .= "

    ".$current_title."

    \n"; - } - } - - // HYPERLINK DOIs - if ( isset($zp_this_meta->DOI) ) - $zp_citation['citation'] = str_replace( 'http://doi.org/'.$zp_this_meta->DOI, "http://doi.org/".$zp_this_meta->DOI."", $zp_citation['citation'] ); - - // SHOW CURRENT STYLE AS REL - $zp_citation['citation'] = str_replace( "class=\"csl-bib-body\"", "rel=\"".$zp_citation['style']."\" class=\"csl-bib-body\"", $zp_citation['citation'] ); - - // Add alphabetical dates - $zp_citation['citation'] = str_replace( $zp_citation["date"], $zp_citation["date"].$zp_citation["alphacount"], $zp_citation['citation'] ); - - // OUTPUT - $zp_output .= "
    \n"; - $zp_output .= $citation_image . $zp_citation['citation'] . $citation_abstract . $citation_tags . "\n"; - $zp_output .= "
    \n\n"; - } - } - - // DISPLAY NOTES, if exist - if ( count($citation_notes) > 0 ) - { - $zp_output .= "
    \n

    Notes

    \n
      \n"; - - foreach ( $citation_notes as $citation_note ) - $zp_output .= $citation_note; - - $zp_output .= "
    \n
    \n\n"; - } - - $zp_output .= "\n\n"; - - // Show theme scripts - $GLOBALS['zp_is_shortcode_displayed'] = true; - - return $zp_output; - } - -?> \ No newline at end of file + false, + 'sortby' => "default", + 'sort' => false, + 'order' => false, + + 'image' => false, + 'images' => false, + 'showimage' => "no", + 'showtags' => "no", + + 'title' => "no", + + 'download' => "no", + 'downloadable' => false, + 'notes' => false, + 'abstract' => false, + 'abstracts' => false, + 'cite' => false, + 'citeable' => false, + + 'target' => false, + 'urlwrap' => false, + + 'highlight' => false, + 'forcenumber' => false, + 'forcenumbers' => false + + ), $atts)); + + + + // FORMAT PARAMETERS + $style = str_replace('"','',html_entity_decode($style)); + $sortby = str_replace('"','',html_entity_decode($sortby)); + + if ($order) { + $order = str_replace('"','',html_entity_decode($order)); + } elseif ($sort) { + $order = str_replace('"','',html_entity_decode($sort)); + } else $order = "asc"; + $order = strtolower($order); + + // Show image + if ($showimage) $showimage = str_replace('"','',html_entity_decode($showimage)); + if ($image) $showimage = str_replace('"','',html_entity_decode($image)); + if ($images) $showimage = str_replace('"','',html_entity_decode($images)); + + if ($showimage == "yes" || $showimage == "true" || $showimage === true) { + $showimage = true; + } elseif ($showimage === "openlib") { + $showimage = "openlib"; + } else $showimage = false; + + // Show tags + $showtags = $showtags == "yes" || $showtags == "true" || $showtags === true; + + $title = str_replace('"','',html_entity_decode($title)); + + if ($download) { + $download = str_replace('"','',html_entity_decode($download)); + } elseif ($downloadable) { + $download = str_replace('"','',html_entity_decode($downloadable)); + } + $download = $download == "yes" || $download == "true" || $download === true; + + $shownotes = str_replace('"','',html_entity_decode($notes)); + + if ($abstracts) { + $abstracts = str_replace('"','',html_entity_decode($abstracts)); + } elseif ($abstract) { + $abstracts = str_replace('"','',html_entity_decode($abstract)); + } + + if ($citeable) { + $citeable = str_replace('"','',html_entity_decode($citeable)); + } elseif ($cite) { + $citeable = str_replace('"','',html_entity_decode($cite)); + } + + if ($target == "new" || $target == "yes" || $target == "_blank" || $target == "true" || $target === true) $target = true; + else $target = false; + + $urlwrap = $urlwrap == "title" || $urlwrap == "image" ? str_replace('"','',html_entity_decode($urlwrap)) : false; + + $highlight = $highlight ? str_replace('"','',html_entity_decode($highlight)) : false; + + if ($forcenumber == "yes" || $forcenumber == "true" || $forcenumber === true) + $forcenumber = true; + if ($forcenumbers == "yes" || $forcenumbers == "true" || $forcenumbers === true) + $forcenumber = true; + + // Set up request vars + $request_start = 0; + $request_last = 0; + $overwrite_last_request = false; + $update = false; + + // Set up item key + $item_key = ""; + + + // Get in-text items + if ( isset( $GLOBALS['zp_shortcode_instances'][get_the_ID()] ) ) + { + // Handle the possible formats of item/s for in-text + // + // IN-TEXT FORMATS: + // [zotpressInText item="NCXAA92F"] + // [zotpressInText item="{NCXAA92F}"] + // [zotpressInText item="{NCXAA92F,10-15}"] + // [zotpressInText items="{NCXAA92F,10-15},{55MKF89B,1578},{3ITTIXHP}"] + // [zotpressInText items="{000001:NCXAA92F,10-15},{000003:3ITTIXHP}"] + // So no multiples without curlies or non-curlies in multiples + + foreach ( $GLOBALS['zp_shortcode_instances'][get_the_ID()] as $intextitem ) + { + // REVIEW: Actually, let's just remove pages + $intextitem["items"] = preg_replace( "/(((,))+([\w\d-]+(})+))++/", "}", $intextitem["items"] ); + + // Add separator if not the start + if ( $item_key != "" ) $item_key .= ";"; + + // Add to the item key + $item_key .= $intextitem["items"]; + } + } + + // Generate instance id for shortcode + // REVIEW: Added Post ID and newish attributes + $instance_id = "zotpress-".md5($item_key.$style.$sortby.$order.$title.$showimage.$showtags.$download.$shownotes.$abstracts.$citeable.$target.$urlwrap.$forcenumber.$highlight.get_the_ID()); + + + // GENERATE IN-TEXT BIB STRUCTURE + $zp_output = "\n
    "; + $zp_output .= ' + + + + + + + + + + + + + + + + '; + + // + // ' + + // $zp_output .= "
    \n\n"; + $zp_output .= "
    "; + + $_GET['instance_id'] = $instance_id; + // $_GET['api_user_id'] = $api_user_id; + $_GET['item_key'] = $item_key; + // $_GET['collection_id'] = $collection_id; + // $_GET['tag_id'] = $tag_id; + // $_GET['author'] = $author; + // $_GET['year'] = $year; + // $_GET['item_type'] = $item_type; + // $_GET['inclusive'] = $inclusive; + $_GET['style'] = $style; + // $_GET['limit'] = $limit; + $_GET['sortby'] = $sortby; + $_GET['order'] = $order; + $_GET['title'] = $title; + $_GET['showimage'] = $showimage; + $_GET['showtags'] = $showtags; + $_GET['downloadable'] = $downloadable; + $_GET['shownotes'] = $shownotes; + $_GET['abstracts'] = $abstracts; + $_GET['citeable'] = $citeable; + $_GET['target'] = $target; + $_GET['urlwrap'] = $urlwrap; + $_GET['forcenumber'] = $forcenumber; + $_GET['highlight'] = $highlight; + + $_GET['request_start'] = $request_start; + $_GET['request_last'] = $request_last; + // $_GET['is_dropdown'] = $is_dropdown; + // $_GET['maxresults'] = $maxresults; + // $_GET['maxperpage'] = $maxperpage; + // $_GET['maxtags'] = $maxtags; + // $_GET['term'] = $term; + $_GET['update'] = $update; + $_GET['overwrite_last_request'] = $overwrite_last_request; + + $zp_output .= "\n
    "; + $zp_output .= Zotpress_shortcode_request( true ); // Check catche first + $zp_output .= "
    \n"; + + // Show theme scripts + $GLOBALS['zp_is_shortcode_displayed'] = true; + + return $zp_output . "
    \n\n"; +} + +?> diff --git a/lib/shortcode/shortcode.lib.php b/lib/shortcode/shortcode.lib.php index 3e65282..99fc3dc 100644 --- a/lib/shortcode/shortcode.lib.php +++ b/lib/shortcode/shortcode.lib.php @@ -1,126 +1,188 @@ false, // deprecated - 'userid' => false, - 'nickname' => false, - 'nick' => false, - - 'type' => false, // dropdown, searchbar - 'searchby' => false, // searchbar only - all [default], collections, items, tags - 'minlength' => 3, // searchbar only - 3 [default] - 'maxresults' => 100, - 'maxperpage' => 10, - - 'cite' => false, - 'citeable' => false, - 'download' => false, - 'downloadable' => false - - ), $atts, "zotpress")); - - - // FORMAT PARAMETERS - - // Filter by account - if ($user_id) $api_user_id = str_replace('"','',html_entity_decode($user_id)); - else if ($userid) $api_user_id = str_replace('"','',html_entity_decode($userid)); - else $api_user_id = false; - - if ($nickname) $nickname = str_replace('"','',html_entity_decode($nickname)); - if ($nick) $nickname = str_replace('"','',html_entity_decode($nick)); - - - // Type of display - if ( $type ) $type = str_replace('"','',html_entity_decode($type)); - else $type = "dropdown"; - - // Enqueue autocomplete UI scripts if type is "searchbar" - if ( $type == "searchbar" ) - { - wp_enqueue_script( 'jquery-ui-autocomplete' ); - wp_enqueue_script( 'zotpress.lib.searchbar.js', ZOTPRESS_PLUGIN_URL . 'js/zotpress.lib.searchbar.js', array( 'jquery' ) ); - } - - - // Filters - if ( $searchby ) $searchby = str_replace('"','',html_entity_decode($searchby)); - - // Min length - if ( $minlength ) $minlength = str_replace('"','',html_entity_decode($minlength)); - - // Max results - if ( $maxresults ) $maxresults = str_replace('"','',html_entity_decode($maxresults)); - - // Max per page - if ( $maxperpage ) $maxperpage = str_replace('"','',html_entity_decode($maxperpage)); - - // Citeable - if ( $cite ) $cite = str_replace('"','',html_entity_decode($cite)); - if ( $citeable ) $cite = str_replace('"','',html_entity_decode($citeable)); - - // Downloadable - if ( $download ) $download = str_replace('"','',html_entity_decode($download)); - if ( $downloadable ) $download = str_replace('"','',html_entity_decode($downloadable)); - - - // Get API User ID - - global $wpdb; - - if ($nickname !== false) +require(__DIR__ . '/shortcode.class.lib.php'); + +function Zotpress_zotpressLib( $atts ) +{ + extract( shortcode_atts( array( + + 'user_id' => false, // deprecated + 'userid' => false, + 'nickname' => false, + 'nick' => false, + + 'type' => false, // dropdown, searchbar + 'searchby' => false, // searchbar only - all [default], collections, items, tags + 'minlength' => 3, // searchbar only - 3 [default] + 'maxresults' => 50, + 'maxperpage' => 10, + 'maxtags' => 100, // dropdown only + + 'sortby' => 'default', + 'order' => 'asc', + + 'collection_id' => false, + 'collection' => false, + 'collections' => false, // only single for now, though + + 'style' => false, + 'cite' => false, + 'citeable' => false, + 'download' => false, + 'downloadable' => false, + 'showimage' => false, + 'showimages' => false, + 'showtags' => false, // not implemented + 'abstract' => false, // not implemented + 'notes' => false, // not implemented + 'forcenumber' => false, // not implemented + + 'toplevel' => 'toplevel', + + 'target' => false, + 'urlwrap' => false, + + 'browsebar' => true // added 7.3.1 + + ), $atts, "zotpress")); + + + // FORMAT PARAMETERS + + // Filter by account + if ($user_id) { + $api_user_id = str_replace('"','',html_entity_decode($user_id)); + } elseif ($userid) { + $api_user_id = str_replace('"','',html_entity_decode($userid)); + } else $api_user_id = false; + + if ($nickname) $nickname = str_replace('"','',html_entity_decode($nickname)); + if ($nick) $nickname = str_replace('"','',html_entity_decode($nick)); + + + // Type of display + $type = $type ? str_replace('"','',html_entity_decode($type)) : "dropdown"; + + // Filter by collection + if ($collection_id) { + $collection_id = zp_clean_param( $collection_id ); + } elseif ($collection) { + $collection_id = zp_clean_param( $collection ); + } elseif ($collections) { + $collection_id = zp_clean_param( $collections ); + } elseif (isset($_GET['collection_id']) + && preg_match("/^[a-zA-Z0-9]+$/", $_GET['collection_id'])) { + $collection_id = zp_clean_param( $_GET['collection_id'] ); + } elseif (isset($_GET['subcollection_id']) + && preg_match("/^[a-zA-Z0-9]+$/", $_GET['subcollection_id'])) { + $collection_id = zp_clean_param( $_GET['subcollection_id'] ); + } + + // Filters + if ( $searchby ) $searchby = str_replace('"','',html_entity_decode($searchby)); + + // Style + if ( $style ) $style = str_replace('"','',html_entity_decode($style)); + + // Min length + if ( $minlength ) $minlength = str_replace('"','',html_entity_decode($minlength)); + + // Max results + if ( $maxresults ) $maxresults = str_replace('"','',html_entity_decode($maxresults)); + + // Max per page + if ( $maxperpage ) $maxperpage = str_replace('"','',html_entity_decode($maxperpage)); + + // Max tags + if ( $maxtags ) $maxtags = str_replace('"','',html_entity_decode($maxtags)); + + // Sortby + if ( $sortby ) $sortby = str_replace('"','',html_entity_decode($sortby)); + + // Order + if ( $order ) $order = str_replace('"','',html_entity_decode($order)); + + // Citeable + if ( $cite ) $cite = str_replace('"','',html_entity_decode($cite)); + if ( $citeable ) $cite = str_replace('"','',html_entity_decode($citeable)); + + // Downloadable + if ( $download ) $download = str_replace('"','',html_entity_decode($download)); + if ( $downloadable ) $download = str_replace('"','',html_entity_decode($downloadable)); + + // Show tags + if ( $showtags ) $showtags = str_replace('"','',html_entity_decode($showtags)); + if ( strpos( $searchby, "tags" ) !== false ) $showtags = true; + + // Show image + if ( $showimages ) $showimage = str_replace('"','',html_entity_decode($showimages)); + if ( $showimage ) $showimage = str_replace('"','',html_entity_decode($showimage)); + + if ( $urlwrap ) $urlwrap = str_replace('"','',html_entity_decode($urlwrap)); + + if ( $toplevel ) $toplevel = str_replace('"','',html_entity_decode($toplevel)); + + $target = $target && $target != "no"; + + if ( $browsebar ) $browsebar = str_replace('"','',html_entity_decode($browsebar)); + + + // Get API User ID + + global $wpdb; + + if ($nickname !== false) { + $zp_account = $wpdb->get_row("SELECT * FROM ".$wpdb->prefix."zotpress WHERE nickname='".$nickname."'", OBJECT); + if ( is_null($zp_account) ): echo "

    Sorry, but the selected Zotpress nickname can't be found.

    "; return false; endif; + $api_user_id = $zp_account->api_user_id; + } elseif ($api_user_id !== false) { + $zp_account = $wpdb->get_row("SELECT * FROM ".$wpdb->prefix."zotpress WHERE api_user_id='".$api_user_id."'", OBJECT); + if ( is_null($zp_account) ): echo $api_user_id."

    Sorry, but the selected Zotpress account can't be found.

    "; return false; endif; + $api_user_id = $zp_account->api_user_id; + } elseif ($api_user_id === false && $nickname === false) { + if (get_option("Zotpress_DefaultAccount") !== false) { - $zp_account = $wpdb->get_row("SELECT * FROM ".$wpdb->prefix."zotpress WHERE nickname='".$nickname."'", OBJECT); - - if ( is_null($zp_account) ): echo "

    Sorry, but the selected Zotpress nickname can't be found.

    "; return false; endif; - - $api_user_id = $zp_account->api_user_id; + $api_user_id = get_option("Zotpress_DefaultAccount"); + $zp_account = $wpdb->get_row("SELECT * FROM ".$wpdb->prefix."zotpress WHERE api_user_id ='".$api_user_id."'", OBJECT); } - else if ($api_user_id !== false) + else // When all else fails ... { - $zp_account = $wpdb->get_row("SELECT * FROM ".$wpdb->prefix."zotpress WHERE api_user_id='".$api_user_id."'", OBJECT); - - if ( is_null($zp_account) ): echo "

    Sorry, but the selected Zotpress account can't be found.

    "; return false; endif; - + $zp_account = $wpdb->get_row("SELECT * FROM ".$wpdb->prefix."zotpress LIMIT 1", OBJECT); $api_user_id = $zp_account->api_user_id; } - else if ($api_user_id === false && $nickname === false) - { - if (get_option("Zotpress_DefaultAccount") !== false) - { - $api_user_id = get_option("Zotpress_DefaultAccount"); - $zp_account = $wpdb->get_row("SELECT * FROM ".$wpdb->prefix."zotpress WHERE api_user_id ='".$api_user_id."'", OBJECT); - } - else // When all else fails ... - { - $zp_account = $wpdb->get_row("SELECT * FROM ".$wpdb->prefix."zotpress LIMIT 1", OBJECT); - $api_user_id = $zp_account->api_user_id; - } - } - - - // Use Browse class - - $zpLib = new zotpressBrowse; - - $zpLib->setAccount($zp_account); - $zpLib->setType($type); - if ( $searchby ) $zpLib->setFilters($searchby); - $zpLib->setMinLength($minlength); - $zpLib->setMaxResults($maxresults); - $zpLib->setMaxPerPage($maxperpage); - $zpLib->setCiteable($cite); - $zpLib->setDownloadable($download); - - $zpLib->getLib(); - } - - -?> \ No newline at end of file + } + + + // Use Browse class + + $zpLib = new zotpressLib; + + $zpLib->setAccount($zp_account); + $zpLib->setType($type); + if ( $searchby ) $zpLib->setFilters($searchby); + $zpLib->setMinLength($minlength); + $zpLib->setMaxResults($maxresults); + $zpLib->setMaxPerPage($maxperpage); + $zpLib->setMaxTags($maxtags); + $zpLib->setStyle($style); + $zpLib->setSortBy($sortby); + $zpLib->setOrder($order); + $zpLib->setCollection($collection_id); + $zpLib->setCiteable($cite); + $zpLib->setDownloadable($download); + $zpLib->setShowTags($showtags); + $zpLib->setShowImage($showimage); + $zpLib->setURLWrap($urlwrap); + $zpLib->setTopLevel($toplevel); + $zpLib->setTarget($target); + $zpLib->setBrowseBar($browsebar); + + // Show theme scripts + $GLOBALS['zp_is_shortcode_displayed'] = true; + + return $zpLib->getLib(); +} + + +?> diff --git a/lib/shortcode/shortcode.lib.search.php b/lib/shortcode/shortcode.lib.search.php deleted file mode 100644 index 693367c..0000000 --- a/lib/shortcode/shortcode.lib.search.php +++ /dev/null @@ -1,173 +0,0 @@ - 403 ) ); - - global $wpdb; - - header('Content-type: text/html; charset=utf-8'); - - - // Determine account - if ( isset($_GET['user']) && preg_match("/^[0-9]+$/", $_GET['user']) == 1 ) - { - $zp_api_user_id = $_GET['user']; - } - else // No user id passed through - { - if (get_option("Zotpress_DefaultAccount")) - { - $zp_api_user_id = get_option("Zotpress_DefaultAccount"); - } - else - { - $zp_account = $wpdb->get_row("SELECT * FROM ".$wpdb->prefix."zotpress LIMIT 1", OBJECT); - $zp_api_user_id = $zp_account->api_user_id; - } - } - - - // Determine filter, if any - $filter = "item"; if ( isset($_GET['filter']) && preg_match("/^[a-z]+$/", $_GET['filter']) == 1 ) $filter = $_GET['filter']; - - // Determine max results, if set - $limit = "100"; if ( isset($_GET['maxresults']) && preg_match("/^[0-9]+$/", $_GET['maxresults']) == 1 ) $limit = $_GET['maxresults']; - - - if ( $filter ) - { - if ( $filter == "item" ) - { - $tempquery = - " - SELECT DISTINCT ".$wpdb->prefix."zotpress_zoteroItems.author, - ".$wpdb->prefix."zotpress_zoteroItems.json, - ".$wpdb->prefix."zotpress_zoteroItems.citation AS item, - ".$wpdb->prefix."zotpress_zoteroItems.item_key - FROM ".$wpdb->prefix."zotpress_zoteroItems - - WHERE ".$wpdb->prefix."zotpress_zoteroItems.api_user_id='".$zp_api_user_id."' - AND ".$wpdb->prefix."zotpress_zoteroItems.itemType NOT IN ('attachment', 'note') - AND ".$wpdb->prefix."zotpress_zoteroItems.citation LIKE %s - - ORDER BY ".$wpdb->prefix."zotpress_zoteroItems.author ASC LIMIT ".$limit." - "; - - $zpSearchResults = $wpdb->get_results( - $wpdb->prepare( $tempquery, '%' . $wpdb->esc_like($_GET['term']) . '%' - ), OBJECT ); - } - elseif ( $filter == "collection" ) - { - // CONCAT( ".$wpdb->prefix."zotpress_zoteroCollections.title, ' (', ".$wpdb->prefix."zotpress_zoteroRelItemColl.collection_key, ')' ) AS item_key - $tempquery = - " - SELECT DISTINCT ".$wpdb->prefix."zotpress_zoteroItems.author, - ".$wpdb->prefix."zotpress_zoteroItems.json, - ".$wpdb->prefix."zotpress_zoteroItems.citation AS item, - ".$wpdb->prefix."zotpress_zoteroCollections.title AS item_key - FROM ".$wpdb->prefix."zotpress_zoteroRelItemColl - - LEFT JOIN ".$wpdb->prefix."zotpress_zoteroCollections - ON ".$wpdb->prefix."zotpress_zoteroRelItemColl.collection_key=".$wpdb->prefix."zotpress_zoteroCollections.item_key - - INNER JOIN ".$wpdb->prefix."zotpress_zoteroItems - ON ".$wpdb->prefix."zotpress_zoteroItems.item_key=".$wpdb->prefix."zotpress_zoteroRelItemColl.item_key - - WHERE ".$wpdb->prefix."zotpress_zoteroRelItemColl.api_user_id='".$zp_api_user_id."' - AND ".$wpdb->prefix."zotpress_zoteroRelItemColl.api_user_id=".$wpdb->prefix."zotpress_zoteroItems.api_user_id - AND ".$wpdb->prefix."zotpress_zoteroRelItemColl.api_user_id=".$wpdb->prefix."zotpress_zoteroCollections.api_user_id - AND ".$wpdb->prefix."zotpress_zoteroItems.itemType NOT IN ('attachment', 'note') - AND ".$wpdb->prefix."zotpress_zoteroCollections.title LIKE %s - - ORDER BY ".$wpdb->prefix."zotpress_zoteroItems.author ASC LIMIT ".$limit." - "; - - $zpSearchResults = $wpdb->get_results( - $wpdb->prepare( $tempquery, '%' . $wpdb->esc_like($_GET['term']) . '%' - ), OBJECT ); - } - elseif ( $filter == "tag" ) - { - $tempquery = - " - SELECT DISTINCT ".$wpdb->prefix."zotpress_zoteroItems.author, - ".$wpdb->prefix."zotpress_zoteroItems.json, - ".$wpdb->prefix."zotpress_zoteroItems.citation AS item, - ".$wpdb->prefix."zotpress_zoteroRelItemTags.tag_title AS item_key - FROM ".$wpdb->prefix."zotpress_zoteroItems - - INNER JOIN ".$wpdb->prefix."zotpress_zoteroRelItemTags - ON ".$wpdb->prefix."zotpress_zoteroItems.api_user_id=".$wpdb->prefix."zotpress_zoteroRelItemTags.api_user_id - AND ".$wpdb->prefix."zotpress_zoteroItems.item_key=".$wpdb->prefix."zotpress_zoteroRelItemTags.item_key - - WHERE ".$wpdb->prefix."zotpress_zoteroItems.api_user_id='".$zp_api_user_id."' - AND ".$wpdb->prefix."zotpress_zoteroItems.itemType NOT IN ('attachment', 'note') - AND ".$wpdb->prefix."zotpress_zoteroRelItemTags.tag_title LIKE %s - - ORDER BY ".$wpdb->prefix."zotpress_zoteroItems.author ASC LIMIT ".$limit." - "; - - $zpSearchResults = $wpdb->get_results( - $wpdb->prepare( $tempquery, '%' . $wpdb->esc_like($_GET['term']) . '%' - ), OBJECT ); - } - } - //else // ALL: How? Would be a really complex query - //{ - //} - - - // Format results for display - - $zpSearch = array(); - - if ( isset($zpSearchResults) && count($zpSearchResults) > 0 ) - { - foreach ( $zpSearchResults as $zpResult ) - { - // Deal with author - $author = $zpResult->author; - $zpResultJSON = json_decode( $zpResult->json ); - - if ( $author == "" ) - { - if ( isset($zpResultJSON->creators) && count($zpResultJSON->creators) > 0 ) - foreach ( $zpResultJSON->creators as $i => $creator ) - if ( $i != (count($zpResultJSON->creators)-1) ) - $author .= $creator->name . ', '; - else - $author .= $creator->name; - } - array_push( $zpSearch, array( "author" => $author, "item" => $zpResult->item, "item_key" => $zpResult->item_key, "url" => $zpResultJSON->url) ); - //array_push( $zpSearch, array( "author" => $author, "item" => $zpResult->item, "item_key" => $zpResult->item_key) ); - } - } - - echo json_encode($zpSearch); - - unset($zp_api_user_id); - unset($zp_account); - $wpdb->flush(); - -?> \ No newline at end of file diff --git a/lib/shortcode/shortcode.php b/lib/shortcode/shortcode.php index c9c9107..5539366 100644 --- a/lib/shortcode/shortcode.php +++ b/lib/shortcode/shortcode.php @@ -1,984 +1,453 @@ false, // deprecated + 'userid' => false, + 'nickname' => false, + 'nick' => false, + + 'author' => false, + 'authors' => false, + 'year' => false, + 'years' => false, + + 'itemtype' => false, // for selecting by itemtype; assumes one type + 'item_type' => 'items', + 'data_type' => false, // deprecated + 'datatype' => 'items', + + 'collection_id' => false, + 'collection' => false, + 'collections' => false, + + 'item_key' => false, + 'item' => false, + 'items' => false, + + 'inclusive' => 'yes', + + 'tag_name' => false, + 'tag' => false, + 'tags' => false, + + 'style' => false, + 'limit' => false, + + 'sortby' => 'default', + 'order' => false, + 'sort' => false, + + 'title' => 'no', + + 'image' => false, + 'images' => false, + 'showimage' => 'no', + + 'showtags' => 'no', + + 'downloadable' => 'no', + 'download' => 'no', + + 'shownotes' => false, + 'note' => false, + 'notes' => 'no', + + 'abstract' => false, + 'abstracts' => 'no', + + 'cite' => 'no', + 'citeable' => false, + + 'metadata' => false, + + 'target' => false, + 'urlwrap' => false, + + 'highlight' => false, + 'forcenumber' => false, + 'forcenumbers' => false + + ), $atts, 'zotpress')); + + + // +---------------------------+ + // | FORMAT & CLEAN PARAMETERS | + // +---------------------------+ + + // Filter by account + if ($user_id) { + $api_user_id = zp_clean_param( $user_id ); + } elseif ($userid) { + $api_user_id = zp_clean_param( $userid ); + } else $api_user_id = false; + + if ($nickname) $nickname = zp_clean_param( $nickname ); + if ($nick) $nickname = zp_clean_param( $nick ); + + // Filter by author + $author = zp_clean_param( $author ); + if ($authors) $author = zp_clean_param( $authors ); + + // Filter by year + if ($year) { + $year = zp_clean_param( $year ); + } elseif ($years) { + $year = zp_clean_param( $years ); + } elseif (strpos($year, ",") > 0) { + $year = explode(",", $year); + } else $year = ""; + + // Filter by itemtype + // TODO: Allow for a list of itemtypes in one shortcode? + $itemtype = zp_clean_param( $itemtype ); + if ( $itemtype !== false ) { - extract(shortcode_atts(array( - - 'user_id' => false, // deprecated - 'userid' => false, - 'nickname' => false, - 'nick' => false, - - 'author' => false, - 'authors' => false, - 'year' => false, - 'years' => false, - - 'data_type' => false, // deprecated - 'datatype' => "items", - - 'collection_id' => false, - 'collection' => false, - 'collections' => false, - - 'item_key' => false, - 'item' => false, - 'items' => false, - - 'inclusive' => "yes", - - 'tag_name' => false, - 'tag' => false, - 'tags' => false, - - 'content' => false, // deprecated - 'style' => false, - 'limit' => false, - - 'sortby' => "default", - 'order' => false, - 'sort' => false, - - 'title' => "no", - - 'image' => false, - 'images' => false, - 'showimage' => "no", - - 'showtags' => "no", - - 'downloadable' => "no", - 'download' => "no", - - 'note' => false, - 'notes' => "no", - - 'abstract' => false, - 'abstracts' => "no", - - 'cite' => "no", - 'citeable' => false, - - 'metadata' => false, - - 'link' => "no", - 'linkedlist' => "no", - - 'target' => false, - - 'forcenumber' => false, - - 'depth' => false - - ), $atts, "zotpress")); - - - // FORMAT PARAMETERS - - // Filter by account - if ($user_id) $api_user_id = str_replace('"','',html_entity_decode($user_id)); - else if ($userid) $api_user_id = str_replace('"','',html_entity_decode($userid)); - else $api_user_id = false; - - if ($nickname) $nickname = str_replace('"','',html_entity_decode($nickname)); - if ($nick) $nickname = str_replace('"','',html_entity_decode($nick)); - - // Filter by author - $author = str_replace('"','',html_entity_decode($author)); - if ($authors) $author = str_replace('"','',html_entity_decode($authors)); - - // Filter by year - $year = str_replace('"','',html_entity_decode($year)); - if ($years) $year = str_replace('"','',html_entity_decode($years)); - if (strpos($year, ",") > 0) $year = explode(",", $year); - - // Format with datatype and content - if ($data_type) $data_type = str_replace('"','',html_entity_decode($data_type)); - else $data_type = str_replace('"','',html_entity_decode($datatype)); - - // Filter by collection - if ($collection_id) $collection_id = str_replace('"','',html_entity_decode($collection_id)); - else if ($collection) $collection_id = str_replace('"','',html_entity_decode($collection)); - else if ($collections) $collection_id = str_replace('"','',html_entity_decode($collections)); - //else $collection_id = str_replace('"','',html_entity_decode($collection)); - - if (strpos($collection_id, ",") > 0) $collection_id = explode(",", $collection_id); - if ($data_type == "collections" && isset($_GET['zpcollection']) ) $collection_id = htmlentities( urldecode( $_GET['zpcollection'] ) ); - - // Filter by tag - if ($tag_name) $tag_name = str_replace('"','',html_entity_decode($tag_name)); - else if ($tags) $tag_name = str_replace('"','',html_entity_decode($tags)); - else $tag_name = str_replace('"','',html_entity_decode($tag)); - - $tag_name = str_replace("+", "", $tag_name); - if (strpos($tag_name, ",") > 0) $tag_name = explode(",", $tag_name); - if ($data_type == "tags" && isset($_GET['zptag']) ) $tag_name = htmlentities( urldecode( $_GET['zptag'] ) ); - - // Filter by itemkey - if ($item_key) $item_key = str_replace('"','',html_entity_decode($item_key)); - if ($items) $item_key = str_replace('"','',html_entity_decode($items)); - if ($item) $item_key = str_replace('"','',html_entity_decode($item)); - if (strpos($item_key, ",") > 0) $item_key = explode(",", $item_key); - - $content = str_replace('"','',html_entity_decode($content)); - $inclusive = str_replace('"','',html_entity_decode($inclusive)); - - // Format style - $style = str_replace('"','',html_entity_decode($style)); - - // Limit - $limit = str_replace('"','',html_entity_decode($limit)); - - // Order / sort - $sortby = str_replace('"','',html_entity_decode($sortby)); - - if ($order) $order = str_replace('"','',html_entity_decode($order)); - else if ($sort) $order = str_replace('"','',html_entity_decode($sort)); - if ($order === false) $order = "ASC"; - - // Show title - $title = str_replace('"','',html_entity_decode($title)); - if ($title == "yes" || $title == "true" || $title === true) - { - $title = true; - $sortby = "year"; - $order= "DESC"; - } - else { $title = false; } - - // Show image - if ($showimage) $showimage = str_replace('"','',html_entity_decode($showimage)); - if ($image) $showimage = str_replace('"','',html_entity_decode($image)); - if ($images) $showimage = str_replace('"','',html_entity_decode($images)); - - if ($showimage == "yes" || $showimage == "true" || $showimage === true) $showimage = true; - else $showimage = false; - - // Show tags - if ($showtags == "yes" || $showtags == "true" || $showtags === true) $showtags = true; - else $showtags = false; - - // Show download link - if ($download == "yes" || $download == "true" || $download === true - || $downloadable == "yes" || $downloadable == "true" || $downloadable === true) - $download = true; else $download = false; - - // Show notes - if ($notes) $notes = str_replace('"','',html_entity_decode($notes)); - else if ($note) $notes = str_replace('"','',html_entity_decode($note)); - - if ($notes == "yes" || $notes == "true" || $notes === true) $notes = true; - else $notes = false; - - // Show abstracts - if ($abstracts) $abstracts = str_replace('"','',html_entity_decode($abstracts)); - if ($abstract) $abstracts = str_replace('"','',html_entity_decode($abstract)); - - if ($abstracts == "yes" || $abstracts == "true" || $abstracts === true) $abstracts = true; - else $abstracts = false; - - // Show cite link - if ($cite) $cite = str_replace('"','',html_entity_decode($cite)); - if ($citeable) $cite = str_replace('"','',html_entity_decode($citeable)); - - if ($cite == "yes" || $cite == "true" || $cite === true) $cite = true; - else $cite = false; - - if ( !preg_match("/^[0-9a-zA-Z]+$/", $metadata) ) $metadata = false; - - if ( $link == "yes" || $link == "true" || $link === true ) $link = str_replace('"','',html_entity_decode($link)); - else if ( $linkedlist == "yes" || $linkedlist == "true" || $linkedlist === true ) $link = str_replace('"','',html_entity_decode($linkedlist)); - - if ($target == "yes" || $target == "_blank" || $target == "new" || $target == "true" || $target === true) - $target = true; else $target = false; - - if ($forcenumber == "yes" || $forcenumber == "true" || $forcenumber === true) + // Make sure it's one of the accepted types + $officialItemTypes = array( + 'book', + 'bookSection', + 'journalArticle', + 'conferencePaper', + 'thesis', + 'report', + 'encyclopediaArticle', + 'newspaperArticle', + 'magazineArticle', + 'presentation', + 'interview', + 'dictionaryEntry', + 'document', + 'manuscript', + 'patent', + 'map', + 'blogPost', + 'webpage', + 'artwork', + 'film', + 'audioRecording', + 'statute', + 'bill', + 'case', + 'hearing', + 'forumPost', + 'letter', + 'email', + 'instantMessage', + 'software', + 'podcast', + 'radioBroadcast', + 'tvBroadcast', + 'videoRecording', + 'attachment', + 'note' + ); + + $itemtypeCheck = false; + + foreach ($officialItemTypes as $type) + if ( $itemtype == $type ) $itemtypeCheck = true; + + if ( !$itemtypeCheck ) + $itemtype = false; // Default is no itemtype filter + } + + // Format with datatype and content + if ($item_type) { + $item_type = zp_clean_param( $item_type ); + } elseif ($data_type) { + $item_type = zp_clean_param( $data_type ); + } else $item_type = zp_clean_param( $datatype ); + + // Filter by collection + if ($collection_id) { + $collection_id = zp_clean_param( $collection_id ); + } elseif ($collection) { + $collection_id = zp_clean_param( $collection ); + } elseif ($collections) { + $collection_id = zp_clean_param( $collections ); + } + $collection_id = str_replace(" ", "", $collection_id ); + + if (strpos($collection_id, ",") > 0) $collection_id = explode(",", $collection_id); + if ($item_type == "collections" && isset($_GET['zpcollection']) ) $collection_id = htmlentities( urldecode( $_GET['zpcollection'] ) ); + + // Filter by tag + if ($tag_name) { + $tag_id = zp_clean_param( $tag_name ); + } elseif ($tags) { + $tag_id = zp_clean_param( $tags ); + } else $tag_id = zp_clean_param( $tag ); + + $tag_id = str_replace("+", "", $tag_id); + if (strpos($tag_id, ",") > 0) $tag_id = explode(",", $tag_id); + if ($item_type == "tags" && isset($_GET['zptag']) ) $tag_id = htmlentities( urldecode( $_GET['zptag'] ) ); + + // Filter by itemkey + if ($item_key) $item_key = zp_clean_param( $item_key ); + if ($items) $item_key = zp_clean_param( $items ); + if ($item) $item_key = zp_clean_param( $item ); + if (strpos($item_key, ", ") > 0) $item_key = str_replace(', ',',',html_entity_decode($item_key)); // remove spces after commas + // if (strpos($item_key, ",") > 0) $item_key = explode(",", $item_key); // ? break at commas? + $item_key = str_replace(" ", "", $item_key ); // remove any spaces + + // Inclusive (for multiple authors) + $inclusive = $inclusive == "yes" || $inclusive == "true" || $inclusive === true; + + // Format style + $style = zp_clean_param( $style ); + + // Limit + $limit = zp_clean_param( $limit ); + + // Order / sort + $sortby = zp_clean_param( $sortby ); + + if ($order) { + $order = strtolower(zp_clean_param( $order )); + } elseif ($sort) { + $order = strtolower(zp_clean_param( $sort )); + } + if ($order === false) $order = "asc"; + + // Show title + // Sorting by secondary sort + $title = zp_clean_param( $title ); + if ($title == "yes" || $title == "true" || $title === true) { + $title = "year"; + } elseif ($title == "no" || $title == "false") { + $title = false; + } + + // Show image + if ($showimage) $showimage = zp_clean_param( $showimage ); + if ($image) $showimage = zp_clean_param( $image ); + if ($images) $showimage = zp_clean_param( $images ); + + if ($showimage == "yes" || $showimage == "true" || $showimage === true) { + $showimage = true; + } elseif ($showimage === "openlib") { + $showimage = "openlib"; + } else $showimage = false; + + // Show tags + $showtags = $showtags == "yes" || $showtags == "true" || $showtags === true; + + // Show download link + if ($download == "yes" || $download == "true" || $download === true + || $downloadable == "yes" || $downloadable == "true" || $downloadable === true) + $downloadable = true; else $downloadable = false; + + // Show notes + if ($shownotes) { + $shownotes = zp_clean_param( $shownotes ); + } elseif ($notes) { + $shownotes = zp_clean_param( $notes ); + } elseif ($note) { + $shownotes = zp_clean_param( $note ); + } + + $shownotes = $notes == "yes" || $notes == "true" || $notes === true; + + // Show abstracts + if ($abstracts) $abstracts = zp_clean_param( $abstracts ); + if ($abstract) $abstracts = zp_clean_param( $abstract ); + + $abstracts = $abstracts == "yes" || $abstracts == "true" || $abstracts === true; + + // Show cite link + if ($cite) $citeable = zp_clean_param( $cite ); + if ($citeable) $citeable = zp_clean_param( $citeable ); + + $citeable = $citeable == "yes" || $citeable == "true" || $citeable === true; + + if ( ! preg_match("/^[0-9a-zA-Z]+$/", $metadata) ) $metadata = false; + + // URL attributes + if ($target == "yes" || $target == "_blank" || $target == "new" || $target == "true" || $target === true) + $target = true; else $target = false; + + $urlwrap = $urlwrap == "title" || $urlwrap == "image" ? zp_clean_param( $urlwrap ) : false; + + $highlight = $highlight ? zp_clean_param( $highlight ) : false; + + if ( $forcenumber == "yes" || $forcenumber == "true" || $forcenumber === true + || $forcenumbers == "yes" || $forcenumbers == "true" || $forcenumbers === true ) $forcenumber = true; else $forcenumber = false; - - if ($depth == "all" || $depth == "true" || $depth === true) - $depth = true; else $depth = false; - - - - // GET ACCOUNT - - global $wpdb; - - // Get account (api_user_id) - $zp_account = false; - - if ($nickname !== false) + + + // +-------------+ + // | GET ACCOUNT | + // +-------------+ + + global $wpdb; + + // Turn on/off minified versions if testing/live + $minify = ''; if ( ZOTPRESS_LIVEMODE ) $minify = '.min'; + + wp_enqueue_script( 'zotpress.shortcode.bib'.$minify.'.js' ); + + // Get account (api_user_id) + $zp_account = false; + + if ($nickname !== false) { + $zp_account = $wpdb->get_row("SELECT * FROM ".$wpdb->prefix."zotpress WHERE nickname='".$nickname."'", OBJECT); + if ( is_null($zp_account) ): + return "

    Sorry, but the selected Zotpress nickname can't be found.

    "; + endif; + $api_user_id = $zp_account->api_user_id; + } elseif ($api_user_id !== false) { + $zp_account = $wpdb->get_row("SELECT * FROM ".$wpdb->prefix."zotpress WHERE api_user_id='".$api_user_id."'", OBJECT); + if ( is_null($zp_account) ): + return "

    Sorry, but the selected Zotpress account can't be found.

    "; + endif; + $api_user_id = $zp_account->api_user_id; + } elseif ($api_user_id === false && $nickname === false) { + if (get_option("Zotpress_DefaultAccount") !== false) { - $zp_account = $wpdb->get_row("SELECT * FROM ".$wpdb->prefix."zotpress WHERE nickname='".$nickname."'", OBJECT); - - if ( is_null($zp_account) ): echo "

    Sorry, but the selected Zotpress nickname can't be found.

    "; return false; endif; - - $api_user_id = $zp_account->api_user_id; + $api_user_id = get_option("Zotpress_DefaultAccount"); + $zp_account = $wpdb->get_row("SELECT * FROM ".$wpdb->prefix."zotpress WHERE api_user_id ='".$api_user_id."'", OBJECT); } - else if ($api_user_id !== false) + else // When all else fails ... { - $zp_account = $wpdb->get_row("SELECT * FROM ".$wpdb->prefix."zotpress WHERE api_user_id='".$api_user_id."'", OBJECT); - - if ( is_null($zp_account) ): echo "

    Sorry, but the selected Zotpress account can't be found.

    "; return false; endif; - + $zp_account = $wpdb->get_row("SELECT * FROM ".$wpdb->prefix."zotpress LIMIT 1", OBJECT); $api_user_id = $zp_account->api_user_id; } - else if ($api_user_id === false && $nickname === false) - { - if (get_option("Zotpress_DefaultAccount") !== false) - { - $api_user_id = get_option("Zotpress_DefaultAccount"); - $zp_account = $wpdb->get_row("SELECT * FROM ".$wpdb->prefix."zotpress WHERE api_user_id ='".$api_user_id."'", OBJECT); - } - else // When all else fails ... - { - $zp_account = $wpdb->get_row("SELECT * FROM ".$wpdb->prefix."zotpress LIMIT 1", OBJECT); - $api_user_id = $zp_account->api_user_id; - } - } - - // Generate instance id for shortcode - $zp_instance_id = "zotpress-".md5($api_user_id.$nickname.$author.$year.$data_type.$collection_id.$item_key.$tag_name.$content.$style.$sortby.$order.$limit.$showimage.$download.$note.$cite); - - - - // GENERATE SHORTCODE - - if ($zp_account !== false) - { - - - // ITEMS - - if ( $data_type == "items" - || ($data_type == "tags" && isset($_GET['zptag']) ) - || ($data_type == "collections" && isset($_GET['zpcollection'])) ) - { - $zp_query = ""; - - if ($download) - { - $wpdb->get_results( - " - CREATE TEMPORARY TABLE attachments - SELECT * FROM - ( - SELECT - ".$wpdb->prefix."zotpress_zoteroItems.parent AS parent, - ".$wpdb->prefix."zotpress_zoteroItems.citation AS content, - ".$wpdb->prefix."zotpress_zoteroItems.item_key AS item_key, - ".$wpdb->prefix."zotpress_zoteroItems.json AS data, - ".$wpdb->prefix."zotpress_zoteroItems.linkmode AS linkmode - FROM ".$wpdb->prefix."zotpress_zoteroItems - WHERE api_user_id='".$api_user_id."' AND - ".$wpdb->prefix."zotpress_zoteroItems.linkmode IN ( 'imported_file', 'linked_url' ) - ORDER BY linkmode ASC - ) - AS attachments_sub - GROUP BY parent; - " - ); - } - - $zp_query .= "SELECT DISTINCT ".$wpdb->prefix."zotpress_zoteroItems.*"; - - if ($download) $zp_query .= ", attachments.content AS attachment_content, attachments.item_key AS attachment_key, attachments.data AS attachment_data, attachments.linkmode AS attachment_linkmode"; - - if ($showimage) $zp_query .= ", ".$wpdb->prefix."zotpress_zoteroItemImages.image AS itemImage"; - - $zp_query .= " FROM ".$wpdb->prefix."zotpress_zoteroItems "; - - - // JOINS: download, itemimage, collections, tags - - if ($download) - $zp_query .= " LEFT JOIN (attachments) ON (".$wpdb->prefix."zotpress_zoteroItems.item_key=attachments.parent) "; - - if ($showimage) - $zp_query .= " LEFT JOIN (".$wpdb->prefix."zotpress_zoteroItemImages) ON (".$wpdb->prefix."zotpress_zoteroItems.item_key=".$wpdb->prefix."zotpress_zoteroItemImages.item_key) "; - - if ($collection_id) - { - if ( is_array($collection_id) ) - { - // create inner joins - for ($i = 0; $i < count($collection_id); $i++) - $zp_query .= " INNER JOIN ".$wpdb->prefix."zotpress_zoteroRelItemColl AS zpRelItemColl".$i." ON ".$wpdb->prefix."zotpress_zoteroItems.item_key=zpRelItemColl".$i.".item_key "; - - // inclusive? - if ( $inclusive != "yes" ) - { - $zp_query .= " AND ( "; - - // exclusive to specific collections - for ($i = 0; $i < count($collection_id); $i++) - { - if ($i != 0) $zp_query .= " AND "; - $zp_query .= " zpRelItemColl".$i.".collection_key='".$collection_id[$i]."' "; - } - $zp_query .= " ) "; - } - } - else // single collection - { - $zp_query .= " LEFT JOIN ".$wpdb->prefix."zotpress_zoteroRelItemColl ON (".$wpdb->prefix."zotpress_zoteroItems.item_key=".$wpdb->prefix."zotpress_zoteroRelItemColl.item_key) "; - } -// if (!is_array($collection_id) -// || (is_array($collection_id) && $inclusive == "yes")) -// { -// $zp_query .= " LEFT JOIN ".$wpdb->prefix."zotpress_zoteroRelItemColl ON (".$wpdb->prefix."zotpress_zoteroItems.item_key=".$wpdb->prefix."zotpress_zoteroRelItemColl.item_key) "; -// } -// else if (is_array($collection_id) && $inclusive != "yes") -// { -// // create inner joins -// for ($i = 0; $i < count($collection_id); $i++) -// $zp_query .= " INNER JOIN ".$wpdb->prefix."zotpress_zoteroRelItemColl AS zpRelItemColl".$i." ON ".$wpdb->prefix."zotpress_zoteroItems.item_key=zpRelItemColl".$i.".item_key "; -// -// $zp_query .= " AND ( "; -// -// // exclusive to specific collections -// for ($i = 0; $i < count($collection_id); $i++) -// { -// if ($i != 0) $zp_query .= " AND "; -// $zp_query .= " zpRelItemColl".$i.".collection_key='".$collection_id[$i]."' "; -// } -// $zp_query .= " ) "; -// } - } - - if ($tag_name) - { - if (!is_array($tag_name) || (is_array($tag_name) && $inclusive == "yes")) - { - $zp_query .= " LEFT JOIN ".$wpdb->prefix."zotpress_zoteroRelItemTags ON (".$wpdb->prefix."zotpress_zoteroItems.item_key=".$wpdb->prefix."zotpress_zoteroRelItemTags.item_key) "; - } - else if (is_array($tag_name) && $inclusive != "yes") - { - // create inner joins - for ($i = 0; $i < count($tag_name); $i++) - $zp_query .= " INNER JOIN ".$wpdb->prefix."zotpress_zoteroRelItemTags AS zpRelItemTags".$i." ON ".$wpdb->prefix."zotpress_zoteroItems.item_key=zpRelItemTags".$i.".item_key "; - - $zp_query .= " AND ( "; - - // exclusive to specific tags - for ($i = 0; $i < count($tag_name); $i++) - { - if ($i != 0) $zp_query .= " AND "; - $zp_query .= " zpRelItemTags".$i.".tag_title='".str_replace("&", "__and__", $tag_name[$i])."' "; - } - $zp_query .= " ) "; - } - } - - // WHERE - - $zp_query .= " WHERE ".$wpdb->prefix."zotpress_zoteroItems.itemType != 'attachment' AND ".$wpdb->prefix."zotpress_zoteroItems.itemType != 'note' "; - - // Filter by collection(s) - if ($collection_id) - { - // Multiple inclusive collections - if (is_array($collection_id)) - { - if ($inclusive == "yes") - { - $zp_query .= " AND ("; - - foreach ($collection_id as $i => $id) - { - $zp_query .= "zpRelItemColl0.collection_key='".$id."' "; // for some reason, only need first reference to this table - - if ($i != count($collection_id)-1) $zp_query .= " OR "; - } - $zp_query .= ") "; - } - } - // Single collection - else - { - $zp_query .= " AND ".$wpdb->prefix."zotpress_zoteroRelItemColl.collection_key='".$collection_id."' "; - } - } // $collection_id - - // Filter by tag(s) - if ($tag_name) - { - // Multiple inclusive collections - if (is_array($tag_name)) - { - if ($inclusive == "yes") - { - $zp_query .= " AND ("; - - foreach ($tag_name as $i => $id) - { - $zp_query .= $wpdb->prefix."zotpress_zoteroRelItemTags.tag_title='".str_replace("&", "__and__", $id)."' "; - - if ($i != count($tag_name)-1) $zp_query .= " OR "; - } - $zp_query .= ") "; - } - } - // Single collection - else - { - $zp_query .= " AND ".$wpdb->prefix."zotpress_zoteroRelItemTags.tag_title='".str_replace("&", "__and__", $tag_name)."' "; - } - } // $tag_name - - // Filter by account - if ($api_user_id) - $zp_query .= " AND ".$wpdb->prefix."zotpress_zoteroItems.api_user_id='".$api_user_id."'"; - - // Filter by author - // Expects e.g. Name OR Name1,Name2 OR (NameLast,NameFirst) - // OR (Name1Last,Name1First),(Name1Last,Name1First) - if ($author) - { - $zp_query .= " AND ( "; - - $is_multiple_authors = false; - - // Deal with first and last name AND/OR multiple authors - if ( strpos($author, "(") > -1 ) - { - $author = str_replace("), (", "),(", $author); - - // If multiple authors and first name exists: - if ( strpos($author, "),(") > -1) - { - $author = explode("),(", $author); - - foreach ( $author as $id => $fullname ) - { - $author[$id] = explode(", ", str_replace("(", "", str_replace(")", "", $fullname))); - } - $is_multiple_authors = true; - } - else - { - // Just a single author - $author = array( explode(", ", str_replace("(", "", str_replace(")", "", $author))) ); - } - } - else if ( strpos($author, ",") > -1 ) - { - // Multiple last names - $author = explode(",", $author); - $is_multiple_authors = true; - } - - // Deal with multiple authors - if ($is_multiple_authors) - { - foreach ($author as $i => $zp_author) - { - // Prep author - if ( is_array($zp_author) ) $zp_author = $zp_author[0]; - $zp_author = strtolower(trim($zp_author)); - if (strpos($zp_author, " ") > 0) $zp_author = preg_split("/\s+(?=\S*+$)/", $zp_author); - - if (is_array($zp_author)) // full name (or multiple last names) - { - if ($inclusive == "yes" && $i != 0) $zp_query .= " OR "; else if ($inclusive != "yes" && $i != 0) $zp_query .= " AND "; - - $zp_query .= " FIND_IN_SET( '".$zp_author[1]."', REPLACE(".$wpdb->prefix."zotpress_zoteroItems.author, ', ', ',') )"; - $zp_query .= " OR FIND_IN_SET( '".implode(" ", $zp_author)."', REPLACE(".$wpdb->prefix."zotpress_zoteroItems.author, ', ', ',') )"; - } - else // last name only - { - if ($inclusive == "yes" && $i != 0) $zp_query .= " OR "; else if ($inclusive != "yes" && $i != 0) $zp_query .= " AND "; - - $zp_query .= " FIND_IN_SET( '".$zp_author."', REPLACE(".$wpdb->prefix."zotpress_zoteroItems.author, ', ', ',') )"; - } - } - } - else // Single author - { - // Prep author - if ( is_array($author) && is_array($author[0]) ) $zp_author = $author[0][0]; else $zp_author = $author; - $zp_author = strtolower(trim($zp_author)); - if ( strpos($zp_author, " ") > 0 ) $zp_author = preg_split("/\s+(?=\S*+$)/", $zp_author); - - // Full name in array (or multiple last names) - if (is_array($zp_author)) - { - $zp_query .= " FIND_IN_SET( '".$zp_author[1]."', REPLACE(".$wpdb->prefix."zotpress_zoteroItems.author, ', ', ',') )"; - $zp_query .= " OR FIND_IN_SET( '".implode(" ", $zp_author)."', REPLACE(".$wpdb->prefix."zotpress_zoteroItems.author, ', ', ',') )"; - } - // Last name only - else - { - $zp_query .= " FIND_IN_SET( '".$zp_author."', REPLACE(".$wpdb->prefix."zotpress_zoteroItems.author, ', ', ',') )"; - } - } - $zp_query .= " ) "; - } // $author - - // Filter by year: zpdate or year - if ($year) - { - if (is_array($year)) - { - $zp_query .= " AND FIND_IN_SET(".$wpdb->prefix."zotpress_zoteroItems.year, '".implode(",", $year)."')"; - } - else // single - { - $zp_query .= " AND ".$wpdb->prefix."zotpress_zoteroItems.year LIKE '%".$year."%'"; - } - } - - // Filter by item key - if ($item_key) - { - if (is_array($item_key)) - $zp_query .= " AND ".$wpdb->prefix."zotpress_zoteroItems.item_key IN('" . implode("','", $item_key) . "')"; - else // single - $zp_query .= " AND ".$wpdb->prefix."zotpress_zoteroItems.item_key='".$item_key."'"; - } - - // Sort by and sort direction - // Relies on db column and MySQL sorting - // Maybe sort by retrieved here, then do sorting after query execution? - if ($sortby) - { - if ($sortby == "default") - $sortby = "retrieved"; - else if ($sortby == "date") - $sortby = "year"; // zpdate -- MySQL doesn't understand - - if (($tag_name && $collection_id) || (is_array($year))) - $zp_query .= " ORDER BY ".$sortby." " . $order; - else - $zp_query .= " ORDER BY ".$wpdb->prefix."zotpress_zoteroItems.".$sortby." " . $order; - } - - // Limit - if ($limit) $zp_query .= " LIMIT ".$limit; - - - // Prep query -- still necessary? - - if ($item_key || $tag_name || $collection_id) - { - $zp_query = str_replace("AND AND", "AND", $zp_query); - } - else if ($author || $year) { - $zp_query = str_replace("OR ORDER BY", "ORDER BY", str_replace("OR AND", "OR", str_replace(" ", " ", $zp_query))); - } - - - - // GET ITEMS FROM DB - - //var_dump( $zp_query . "

    "); - $zp_results = $wpdb->get_results($zp_query, ARRAY_A); unset($zp_query); - //var_dump( $zp_results ); exit; - - - - /* - - DISPLAY CITATIONS - loop - - */ - - $current_title = ""; - $citation_notes = array(); - $zp_notes_num = 1; - - $zp_output = "\n
    \n\n"; - $zp_output .= "" . ZOTPRESS_PLUGIN_URL . "\n\n"; - //$zp_output .= "Checking ...\n\n"; - - // Add style, if set - if ($style) $zp_output .= "".$style."\n\n"; - - // TAG OR COLLECTION TITLE - if ( $data_type == "collections" && isset($_GET['zpcollection']) ) - { - $collection_title = $wpdb->get_row("SELECT title FROM ".$wpdb->prefix."zotpress_zoteroCollections WHERE item_key='".$collection_id."'"); - $zp_output .= "

    " . $collection_title->title . " / Back

    \n\n"; - } - if ( $data_type == "tags" && isset($_GET['zptag']) ) - { - $zp_output .= "

    " . $tag_name . " / Back

    \n\n"; - } - - // SORT - - if ($sortby) - { - if ($sortby == "default") - $sortby = "retrieved"; - else if ($sortby == "year") - $sortby = "date"; - - $zp_results = subval_sort( $zp_results, $sortby, $order ); - } - - if ( count($zp_results) > 0 ) - { - foreach ($zp_results as $zp_citation) - { - $citation_image = false; - $citation_tags = false; - $citation_abstract = ""; - $has_citation_image = false; - $zp_this_meta = json_decode( $zp_citation["json"] ); - $zp_output .= "".$zp_citation['api_user_id']."\n\n"; - //$zp_output .= "" . $_SESSION['zp_session'][$zp_citation['api_user_id']]['key'] . "\n\n"; - - - // If applicable, filter out authors with the wrong first name - $dont_skip_based_on_author = true; - $exclusive_author_count = 0; - - if ( is_array($author) && is_array($author[0]) ) - { - $dont_skip_based_on_author = false; - - foreach ( $author as $author_to_filter ) - { - foreach ( $zp_this_meta->creators as $creator ) - { - if ( $creator->lastName == $author_to_filter[0] - && $creator->firstName == $author_to_filter[1] ) - { - $dont_skip_based_on_author = true; - - // Count authors if exclusive - $exclusive_author_count++; - } - } - } - if ( $inclusive != "yes" && $exclusive_author_count != count($author) ) - $dont_skip_based_on_author = false; - } - - if ( $dont_skip_based_on_author ) - { - // IMAGE - if ($showimage && !is_null($zp_citation["itemImage"]) && $zp_citation["itemImage"] != "") - { - if ( is_numeric($zp_citation["itemImage"]) ) - { - $zp_citation["itemImage"] = wp_get_attachment_image_src( $zp_citation["itemImage"], "full" ); - $zp_citation["itemImage"] = $zp_citation["itemImage"][0]; - } - - $citation_image = "
    "; - $citation_image .= "image"; - $citation_image .= "
    \n"; - $has_citation_image = " zp-HasImage"; - } - - // TAGS - // Grab tags associated with item - if ( $showtags ) - { - $zp_showtags_query = "SELECT DISTINCT ".$wpdb->prefix."zotpress_zoteroTags.title FROM ".$wpdb->prefix."zotpress_zoteroTags LEFT JOIN ".$wpdb->prefix."zotpress_zoteroRelItemTags ON ".$wpdb->prefix."zotpress_zoteroRelItemTags.tag_title=".$wpdb->prefix."zotpress_zoteroTags.title WHERE ".$wpdb->prefix."zotpress_zoteroRelItemTags.item_key='".$zp_citation["item_key"]."' ORDER BY ".$wpdb->prefix."zotpress_zoteroTags.title ASC;"; - $zp_showtags_results = $wpdb->get_results($zp_showtags_query, ARRAY_A); - - if ( count($zp_showtags_results) > 0) - { - $citation_tags = "

    Tags: "; - - foreach ($zp_showtags_results as $i => $zp_showtags_tag) - { - $citation_tags .= "" . $zp_showtags_tag["title"] . ""; - if ( $i != (count($zp_showtags_results)-1) ) $citation_tags .= ", "; - } - $citation_tags .= "

    \n"; - } - unset($zp_showtags_query); - unset($zp_showtags_results); - } - - // ABSTRACT - if ( $abstracts && isset($zp_this_meta->abstractNote) && strlen(trim($zp_this_meta->abstractNote)) > 0 ) - { - $citation_abstract = "

    Abstract: " . sprintf($zp_this_meta->abstractNote) . "

    \n"; - } - - - // NOTES - if ($notes) - { - $zp_notes = $wpdb->get_results("SELECT json FROM ".$wpdb->prefix."zotpress_zoteroItems WHERE api_user_id='".$zp_citation['api_user_id']."' - AND parent = '".$zp_citation["item_key"]."' AND itemType = 'note';", OBJECT); - - if (count($zp_notes) > 0) - { - $temp_notes = "
  • \n"; - - // Only create a list if there's more than one note for this item - if ( count($zp_notes) == 1 ) - { - $note_json = json_decode($zp_notes[0]->json); - $temp_notes .= $note_json->note . "\n"; - } - else if ( count($zp_notes) > 1 ) - { - $temp_notes .= "
      \n"; - - foreach ($zp_notes as $note) - { - $note_json = json_decode($note->json); - $temp_notes .= "
    • " . $note_json->note . "\n
    • \n"; - } - $temp_notes .= "\n
    "; - } - - $temp_notes .= "\n
  • \n\n"; - - $citation_notes[count($citation_notes)] = $temp_notes; - - // Add note reference - $zp_citation['citation'] = preg_replace('~(.*)' . preg_quote('
    ', '~') . '(.*?)~', '$1' . " ".$zp_notes_num." " . '$2', $zp_citation['citation'], 1); - $zp_notes_num++; - } - unset($zp_notes); - - } // end notes - - - // Hyperlink URL: Has to go before Download - if (isset($zp_this_meta->url) && strlen($zp_this_meta->url) > 0) - { - $zp_url_replacement = "title) ."\" rel=\"external\" "; - if ( $target ) $zp_url_replacement .= "target=\"_blank\" "; - $zp_url_replacement .= "href=\"".urldecode(urlencode($zp_this_meta->url))."\">".urldecode(urlencode($zp_this_meta->url)).""; - - // Replace ampersands - $zp_citation['citation'] = str_replace(htmlspecialchars($zp_this_meta->url), $zp_this_meta->url, $zp_citation['citation']); - - // Then replace with linked URL - $zp_citation['citation'] = str_replace($zp_this_meta->url, $zp_url_replacement, $zp_citation['citation']); - } - - // DOWNLOAD - if ($download) - { - //$zp_download_url = $wpdb->get_row("SELECT item_key, citation, json, linkMode FROM ".$wpdb->prefix."zotpress_zoteroItems WHERE api_user_id='".$zp_citation['api_user_id']."' - // AND parent = '".$zp_citation["item_key"]."' AND linkMode IN ( 'imported_file', 'linked_url' ) ORDER BY linkMode ASC LIMIT 1;", OBJECT); - - if ( !is_null($zp_citation['attachment_data']) ) - { - $zp_download_url = json_decode($zp_citation['attachment_data']); - - if ($zp_download_url->linkMode == "imported_file") - { - $zp_citation['citation'] = preg_replace('~(.*)' . preg_quote('', '~') . '(.*?)~', '$1' . " Download " . '$2', $zp_citation['citation'], 1); // Thanks to http://ideone.com/vR073 - } - else - { - $zp_citation['citation'] = preg_replace('~(.*)' . preg_quote('', '~') . '(.*?)~', '$1' . " Download " . '$2', $zp_citation['citation'], 1); - } - } - unset($zp_download_url); - } - - - // CITE LINK - if ($cite == "yes" || $cite == "true" || $cite === true) - { - $cite_url = "https://api.zotero.org/".$zp_account->account_type."/".$zp_account->api_user_id."/items/".$zp_citation["item_key"]."?format=ris"; - $zp_citation['citation'] = preg_replace('~(.*)' . preg_quote('', '~') . '(.*?)~', '$1' . " Cite " . '$2', $zp_citation['citation'], 1); - } - - - // TITLE - if ($title) - { - if ($current_title == "" || (strlen($current_title) > 0 && $current_title != $zp_citation["year"])) - { - $current_title = $zp_citation["year"]; - - if ($zp_citation["year"] == "0000") - $zp_output .= "

    n.d.

    \n"; - else // regular year - $zp_output .= "

    ".$current_title."

    \n"; - } - } - - // HYPERLINK DOIs - if ( isset($zp_this_meta->DOI) ) - { - $zp_url_target = ""; if ( $target ) $zp_url_target = "target=\"_blank\" "; - - $zp_citation['citation'] = str_replace( 'http://doi.org/'.$zp_this_meta->DOI, "http://doi.org/".$zp_this_meta->DOI."", $zp_citation['citation'] ); - } - - // SHOW CURRENT STYLE AS REL - $zp_citation['citation'] = str_replace( "class=\"csl-bib-body\"", "rel=\"".$zp_citation['style']."\" class=\"csl-bib-body\"", $zp_citation['citation'] ); - - - // OUTPUT - - $zp_output .= "
    \n"; - $zp_output .= $citation_image . $zp_citation['citation'] . $citation_abstract . $citation_tags . "\n"; - $zp_output .= "
    \n\n"; - } - } - - // DISPLAY NOTES, if any exist - if ( count($citation_notes) > 0 ) - { - $zp_output .= "
    \n

    Notes

    \n
      \n"; - - foreach ( $citation_notes as $citation_note ) - $zp_output .= $citation_note; - - $zp_output .= "
    \n
    \n\n"; - } - } - - // No items to display - else - { - $zp_output .= "

    Sorry, there's no items to display.

    \n"; - } - - $zp_output .= "\n\n"; - - } // end items - - - - // COLLECTIONS - - else if ($data_type == "collections" && !isset($_GET['zpcollection'])) - { - $zp_query = "SELECT ".$wpdb->prefix."zotpress_zoteroCollections.* FROM ".$wpdb->prefix."zotpress_zoteroCollections "; - $zp_query .= "WHERE api_user_id='".$api_user_id."' AND parent = '' "; - - // Sort by and sort direction - if ($sortby) - { - if ($sortby == "default") - $sortby = "retrieved"; - else if ($sortby == "date" || $sortby == "author") - continue; - - $zp_query .= " ORDER BY ".$sortby." " . $order; - } - - // Limit - if ($limit) $zp_query .= " LIMIT ".$limit; - - $zp_results = $wpdb->get_results($zp_query, OBJECT); unset($zp_query); - - - // DISPLAY CITATIONS - - $zp_output = "\n
    \n\n"; - $zp_output .= "" . ZOTPRESS_PLUGIN_URL . "\n\n"; - $zp_output .= "
      \n"; - - foreach ($zp_results as $zp_collection) - { - $zp_output .= "
    • item_key . "\">"; - if ($link == "yes") - { - $zp_output .= ""; - } - $zp_output .= $zp_collection->title; - if ($link == "yes") { $zp_output .= ""; } - - // Place nested collections here - - if ($zp_collection->numCollections > 0) - $zp_output .= zp_get_subcollections($wpdb, $api_user_id, $zp_collection->item_key, $sortby, $order, $link); - - $zp_output .= "
    • \n"; - } - - $zp_output .= "
    \n"; - $zp_output .= "
    \n\n"; - - } // end collections - - - - // TAGS - - else if ($data_type == "tags" && !isset($_GET['zptag'])) - { - $zp_query = "SELECT * FROM ".$wpdb->prefix."zotpress_zoteroTags WHERE api_user_id='".$api_user_id."' "; - - // Sort by and sort direction - if ($sortby) - { - if ($sortby == "default") $sortby = "retrieved"; - else if ($sortby == "date" || $sortby == "author") continue; - - $zp_query .= " ORDER BY ".$sortby." " . $order; - } - - // Limit - if ($limit) $zp_query .= " LIMIT ".$limit; - - $zp_results = $wpdb->get_results($zp_query, OBJECT); unset($zp_query); - - - // DISPLAY CITATIONS - - $zp_output = "\n
    \n\n"; - $zp_output .= "" . ZOTPRESS_PLUGIN_URL . "\n\n"; - $zp_output .="\n"; - $zp_output .= "
    \n\n"; - - } // end tags - - - // FINISH UP - - // Clean up - $wpdb->flush(); unset($zp_results); - - // Show theme scripts - $GLOBALS['zp_is_shortcode_displayed'] = true; - - return $zp_output; - } - - - // Display notification if no citations found - else - { - return "\n
    Sorry, no citation(s) found.
    \n"; - } } - - -?> \ No newline at end of file + // Generate instance id for shortcode + $temp_item_key = is_array( $item_key ) ? implode( "-", $item_key) : $item_key; + $temp_collection_id = is_array( $collection_id ) ? implode( "-", $collection_id) : $collection_id; + $temp_tag_name = is_array( $tag_id ) ? implode( "-", $tag_id) : $tag_id; + $temp_author = is_array( $author ) ? implode( "-", $author) : $author; + $temp_year = is_array( $year ) ? implode( "-", $year) : $year; + $temp_sortby = is_array( $sortby ) ? implode( "-", $sortby) : $sortby; + + // REVIEW: Added post ID + $instance_id = "zotpress-".md5(get_the_ID().$api_user_id.$nickname.$temp_author.$temp_year.$itemtype.$item_type.$temp_collection_id.$temp_item_key.$temp_tag_name.$style.$temp_sortby.$order.$limit.$showimage.$showtags.$downloadable.$shownotes.$citeable.$inclusive); + + // Prepare item key + if ( $item_key && gettype( $item_key ) != "string" ) $item_key = implode( ",", $item_key ); + + // Prepare collection + if ( $collection_id && gettype( $collection_id ) != "string" ) $collection_id = implode( ",", $collection_id ); + + // Prepare tags + if ( $tag_id && gettype( $tag_id ) != "string" ) $tag_id = implode( ",", $tag_id ); + + // Set up request vars + $request_start = 0; + $request_last = 0; + $overwrite_last_request = false; + + // Set up Library vars + $is_dropdown = false; + $maxresults = 50; + $maxperpage = 10; + $maxtags = 100; + + // Set up Search vars + $term = false; + + // Set up Update vars + $update = false; + + $zp_output = '
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    '; + + + // +--------------------------------+ + // | GENERATE SHORTCODE PLACEHOLDER | + // +--------------------------------+ + + if ( $zp_account === false ) + { + $zp_output .= "\n
    Sorry, no citation(s) found for this account.
    \n"; + } + else // Make the first request via PHP for SEO purposes + { + $_GET['instance_id'] = $instance_id; + $_GET['api_user_id'] = $api_user_id; + $_GET['item_key'] = $item_key; + $_GET['collection_id'] = $collection_id; + $_GET['tag_id'] = $tag_id; + $_GET['author'] = $author; + $_GET['year'] = $year; + $_GET['itemtype'] = $itemtype; + $_GET['item_type'] = $item_type; + $_GET['inclusive'] = $inclusive; + $_GET['style'] = $style; + $_GET['limit'] = $limit; + $_GET['sortby'] = $sortby; + $_GET['order'] = $order; + $_GET['title'] = $title; + $_GET['showimage'] = $showimage; + $_GET['showtags'] = $showtags; + $_GET['downloadable'] = $downloadable; + $_GET['shownotes'] = $shownotes; + $_GET['abstracts'] = $abstracts; + $_GET['citeable'] = $citeable; + $_GET['target'] = $target; + $_GET['urlwrap'] = $urlwrap; + $_GET['forcenumber'] = $forcenumber; + $_GET['highlight'] = $highlight; + $_GET['request_start'] = $request_start; + $_GET['request_last'] = $request_last; + $_GET['is_dropdown'] = $is_dropdown; + $_GET['maxresults'] = $maxresults; + $_GET['maxperpage'] = $maxperpage; + $_GET['maxtags'] = $maxtags; + $_GET['term'] = $term; + $_GET['update'] = $update; + $_GET['overwrite_last_request'] = $overwrite_last_request; + + $zp_output .= "\n
    "; + $zp_output .= Zotpress_shortcode_request( true ); // Check catche first + $zp_output .= "
    \n"; + } + + + // Indicate that shortcode is displayed + + $GLOBALS['zp_is_shortcode_displayed'] = true; + + return $zp_output . "
    \n\n"; +} + +?> diff --git a/lib/shortcode/shortcode.request.php b/lib/shortcode/shortcode.request.php new file mode 100644 index 0000000..cbec098 --- /dev/null +++ b/lib/shortcode/shortcode.request.php @@ -0,0 +1,976 @@ + [items], [requests] + $zp_request_queue = array(); + + // Set up Zotpress request + $zp_import_contents = new ZotpressRequest(); + + // Set up request meta + $zp_request_meta = array( "request_last" => (int) $zpr["request_last"], "request_next" => 0 ); + + // Set up data variable + $zp_all_the_data = array(); + + + + // +---------------------------+ + // | Format Zotero request URL | + // +---------------------------+ + + // Account for items + collection_id + if ( $zpr["item_type"] == "items" + && $zpr["collection_id"] !== false ) + { + $zpr["item_type"] = "collections"; + $zpr["sub"] = "items"; + $zpr["get_top"] = false; + } + + // Account for items + zp_tag_id + if ( $zpr["item_type"] == "items" + && $zpr["tag_id"] !== false ) + $zpr["get_top"] = false; + + // Account for collection_id + get_top + if ( $zpr["get_top"] + && $zpr["collection_id"] !== false ) + { + $zpr["get_top"] = false; + $zpr["sub"] = "collections"; + } + + // Account for tag display - let's limit it + if ( $zpr["is_dropdown"] === true + && $zpr["item_type"] == "tags" ) + { + $zpr["sortby"] = "numItems"; // title + $zpr["order"] = "desc"; // asc + $zpr["limit"] = 100; if ( $zpr["maxtags"] ) $zpr["limit"] = $zpr["maxtags"]; + $zpr["overwrite_last_request"] = $zpr["limit"]; // QUESTION: Unsure + $zpr["overwrite_request"] = true; + + // REVIEW: we don't want tags within a collection, + // accounting for Library Dropdown browse bar (7.3.1.1) + // $zpr["get_top"] = false; + // $zpr["collection_id"] = false; + } + + // Account for $zpr["maxresults"] + if ( $zpr["maxresults"] ) + { + // If 50 or less, set as limit + if ( (int) $zpr["maxresults"] <= 50 ) + { + $zpr["limit"] = $zpr["maxresults"]; + $zpr["overwrite_request"] = true; + } + + // If over 50, then overwrite last_request + else + { + $zpr["overwrite_last_request"] = $zpr["maxresults"]; + } + } + + + // Handle the possible formats of item/s for bib and in-text + // REVIEW: Actually, removed page numbers (if any) in shortcode.intext.php + // + // IN-TEXT FORMATS: + // [zotpressInText item="NCXAA92F"] + // [zotpressInText item="{NCXAA92F}"] + // [zotpressInText item="{NCXAA92F,10-15}"] + // [zotpressInText items="{NCXAA92F,10-15},{55MKF89B,1578},{3ITTIXHP}"] + // [zotpressInText items="{000001:NCXAA92F,10-15},{000003:3ITTIXHP}"] + // So no multiples without curlies or non-curlies in multiples + // + // BIB FORMATS: + // [zotpress item="GMGCJU34"] + // [zotpress items="GMGCJU34,U9Z5JTKC"] + // [zotpress item="{000001:XH4BS8MA},{000001:CN73PTWE},{000003:CZR96TX9}"] + // BASICALLY: Create a list of unique item keys per API User ID + // REVIEW: Deal with everything!!!!!!! In the new format + if ( $zpr["item_key"] + && strpos( $zpr["item_key"], ":" ) !== false ) + { + $zp_items = preg_split( "/((;)|(,))+/", $zpr["item_key"] ); + + foreach ( $zp_items as $id => $zp_item_data ) + { + $zp_item = explode( ":", substr( $zp_item_data, 1, -1 ) ); + + // Create items queue for API User ID, if it doesn't exist + if ( ! array_key_exists( $zp_item[0], $zp_request_queue ) ) + $zp_request_queue[$zp_item[0]]["items"] = ""; + + // Add item if not in queue + if ( strpos( $zp_request_queue[$zp_item[0]]["items"], $zp_item[1] ) === false ) + { + $temp_item_key = $zp_item[1]; + + if ( strlen( $zp_request_queue[$zp_item[0]]["items"] ) != 0 ) + $temp_item_key = ",".$temp_item_key; + + $zp_request_queue[$zp_item[0]]["items"] .= $temp_item_key; + } + } + } + + + + // +--------------------+ + // | Build request URLs | + // +--------------------+ + + if ( $zp_request_queue !== [] ) + { + // REVIEW: Does setting $zp_request_queue here overwrite it for each account? + foreach ( $zp_request_queue as $api_user_id => $zp_request_data ) + $zp_request_queue = Zotpress_prep_request_URL( $wpdb, $zpr, $zp_request_queue, $api_user_id, $zp_request_data ); + } + else + { + $zp_request_queue = Zotpress_prep_request_URL( $wpdb, $zpr, $zp_request_queue ); + } + + + + + // +---------+ + // | TESTING | + // +---------+ + + // var_dump($zp_request_queue);exit; + + // if ( $zpr["request_start"] == 50 ) { + // var_dump("shortcode.request.php TESTING: "); + // print_r($_GET); var_dump("

    url: ".$zp_import_url); + // var_dump(" AFTER \n\n"); + // } + + + + + + + // +------------------+ + // | Request the data | + // +------------------+ + + $zp_request = array(); + $zp_error = false; + $zp_usecache = false; + + // Account for missing/unsynced accounts or no requests + if ( $zp_request_queue === false ) + $zp_error = "Zotpress account not found."; + + if ( ! $zp_error ) + { + foreach ( $zp_request_queue as $zp_request_account ) + { + if ( count($zp_request_account["requests"]) > 1 ) + { + foreach ( $zp_request_account["requests"] as $zp_request_url ) + { + // First, check the cache with PHP + if ( $checkcache ) + { + $zp_checkcache = $zp_import_contents->get_request_cache( $zp_request_url, $zpr["update"] ); + $zp_checkcache_json = json_decode( $zp_checkcache['json'] ); + + if ( gettype($zp_checkcache_json) != 'array' + && property_exists($zp_checkcache_json, 'status') + && $zp_checkcache_json->status == 'No Cache' ) + { + $zp_usecache = false; + } + else // Continue as normal with cache + { + $zp_imported = $zp_checkcache; + $zp_usecache = true; + } + } + else // Otherwise, assume JS Ajax + { + $zp_imported = $zp_import_contents->get_request_contents( $zp_request_url, $zpr["update"] ); + } + + // Stop and let JS Ajax take over + if ( $checkcache + && ! $zp_usecache ) + continue; + + // Deal with possible errors + if ( gettype($zp_imported) == "string" + && substr($zp_imported, 0, 5) == "Error" ) + { + $zp_error = substr($zp_imported, 7, -1); + continue; + } + + // Create all-requests json if doesn't exists + if ( empty($zp_request) ) + $zp_request = $zp_imported; + + // Add to existing all-requests json + $zp_request["json"] = rtrim($zp_request["json"], "]") . "," . $zp_imported["json"] . "]"; + } + } + + // Just one request + else + { + // First, check the cache with PHP + if ( $checkcache ) + { + $zp_checkcache = $zp_import_contents->get_request_cache( $zp_request_account["requests"][0], $zpr["update"] ); + $zp_checkcache_json = json_decode( $zp_checkcache['json'], false ); + + if ( gettype($zp_checkcache_json) != 'array' + && property_exists($zp_checkcache_json, 'status') + && $zp_checkcache_json->status == 'No Cache' ) + { + $zp_usecache = false; + } + else // Continue as normal with cache + { + $zp_imported = $zp_checkcache; + $zp_usecache = true; + } + + } + else // Otherwise, assume JS AJAX + { + $zp_imported = $zp_import_contents->get_request_contents( $zp_request_account["requests"][0], $zpr["update"] ); + } + + // Stop and let JS Ajax take over + if ( $checkcache + && ! $zp_usecache ) + continue; + + // Deal with possible error + if ( gettype($zp_imported) == "string" + && substr($zp_imported, 0, 5) == "Error" ) + { + $zp_error = substr($zp_imported, 7, -1); + } + + // Create all-requests json if doesn't exists + else + { + if ( empty($zp_request) ) + { + $zp_request = $zp_imported; + } + + else // Add to existing all-requests json + { + $zp_request["json"] = rtrim($zp_request["json"], "]") . "," . ltrim($zp_imported["json"], "[") . "]"; + } + } + if ( $zp_request["json"] == "Not found" ) + $zp_error = $zp_request["json"]; + // } elseif ( empty($zp_request) ) { + // $zp_request = $zp_imported; + // } else // Add to existing all-requests json + // { + // $zp_request["json"] = rtrim($zp_request["json"], "]") . "," . ltrim($zp_imported["json"], "[") . "]"; + // } + } // Just one request + } // Request the data (foreach) + } // If no error + + // Fix formatting quirk + if ( ( ! $checkcache && ! $zp_error ) + || ( $checkcache && $zp_usecache && ! $zp_error ) ) + $zp_request["json"] = str_replace("}}]]", "}}]", $zp_request["json"]); + + if ( ( ! $checkcache && ( ! $zp_error && $zp_request["json"] != "0" ) ) + || ( $checkcache && $zp_usecache && ( ! $zp_error && $zp_request["json"] != "0" ) ) ) + { + + // Decode the JSONs + // Thanks to Adnreea Onica @ StackOverflow + $temp_headers = json_decode( $zp_request["headers"] ); + // $temp_headers = json_encode( (array)$zp_request["headers"] ); + // $temp_headers = json_decode( str_replace('\u0000*\u0000','', $temp_headers) ); + + // $temp_data = json_encode( (array)$zp_request["json"] ); + // $temp_data = json_decode( str_replace('\u0000*\u0000','', $temp_data) ); + $temp_data = json_decode( $zp_request["json"] ); + + // Figure out if there's multiple requests and how many + // if ( $zpr["request_start"] == 0 + // && ( property_exists($temp_headers, 'link') + // && $temp_headers->link !== null ) + // && strpos( $temp_headers->link, 'rel="last"' ) !== false ) + + if ( $zpr["request_start"] == 0 + && isset( $temp_headers->link ) + && strpos( $temp_headers->link, 'rel="last"' ) !== false ) + { + $temp_link = explode( ";", $temp_headers->link ); + $temp_link = explode( "start=", $temp_link[1] ); + $temp_link = explode( "&", $temp_link[1] ); + + // // FIX: Accounted for limit ...? + // if ( $zpr["limit"] ) { + // $zp_request_meta["request_last"] = (int) $zpr["limit"]; + // } + // else { + $zp_request_meta["request_last"] = (int) $temp_link[0]; + // } + } + + // Figure out the next starting position for the next request, if any + // 7.3.3: Changed from >= to > + if ( $zp_request_meta["request_last"] >= ($zpr["request_start"] + $zpr["limit"]) ) + $zp_request_meta["request_next"] = $zpr["request_start"] + $zpr["limit"] ; + + // Overwrite request if limit + // 7.3.3: Fix for collections? + if ( ( $zpr["item_type"] == "items" || $zpr["item_type"] == "collections" ) + && $zpr["overwrite_request"] === true ) + { + $zp_request_meta["request_next"] = 0; + $zp_request_meta["request_last"] = 0; + } + + // Overwrite last_request + if ( $zpr["overwrite_last_request"] ) + { + // Make sure it's less than the total available items + if ( isset( $temp_headers->{"total-results"} ) + && $temp_headers->{"total-results"} < $zpr["overwrite_last_request"] ) + $zpr["overwrite_last_request"] = (int) (ceil( (int) $temp_headers->{"total-results"} / $zpr["limit"] ) - 1) * $zpr["limit"]; + else + $zpr["overwrite_last_request"] = (int) ceil( $zpr["overwrite_last_request"] / $zpr["limit"] ) * $zpr["limit"]; + + $zp_request_meta["request_last"] = $zpr["overwrite_last_request"]; + } +// var_dump($zpr["limit"]); +// var_dump( $zpr["request_start"], ((int) $zp_request_meta["request_next"]),$zp_request_meta["request_last"], $zpr["limit"],"

    "); + + + + // +-----------------+ + // | Format the data | + // +-----------------+ + + if ( count($temp_data) > 0 ) + { + // If single, place the object into an array + if ( gettype($temp_data) == "object" ) + { + $temp = $temp_data; + $temp_data = array(); + $temp_data[0] = $temp; + } + + // Set up conditional vars + if ( $zpr["shownotes"] ) $zp_notes_num = 1; + if ( $zpr["showimage"] ) $zp_showimage_keys = ""; + + // Get individual items + foreach ( $temp_data as $item ) + { + // Set target for links + $zp_target_output = ""; + if ( $zpr["target"] ) + $zp_target_output = "target='_blank' "; + + // Author filtering: skip non-matching authors + // TODO: Breaking with multi name + // EVENTUAL TODO: Zotero API 3 searches title and author, so wrong authors can appear + if ( $zpr["author"] + && count($item->data->creators) > 0 ) + { + $zp_authors_check = false; + + // Deal with multiple authors + if ( gettype($zpr["author"]) != "array" + && strpos($zpr["author"], ",") !== false ) + { + $zp_authors = explode( ",", $zpr["author"] ); + + foreach ( $zp_authors as $author ) + if ( zp_check_author_continue( $item, $author ) === true ) + $zp_authors_check = true; + } + + // Single author or inclusive + else + { + if ( $zpr["inclusive"] === false ) + { + $author_exists_count = 1; + + foreach ( $zpr["author"] as $author ) + if ( zp_check_author_continue( $item, $author ) === true ) + $author_exists_count++; + + if ( $author_exists_count === count($zpr["author"]) +1 ) + $zp_authors_check = true; + } + else // inclusive and single + { + if ( zp_check_author_continue( $item, $zpr["author"] ) === true ) + $zp_authors_check = true; + } + + // } elseif (zp_check_author_continue( $item, $zpr["author"] ) === true) { + // $zp_authors_check = true; + // } + } + + if ( $zp_authors_check === false ) + continue; + } // author + + // Year filtering: skip non-matching years + if ( $zpr["year"] + && isset($item->meta->parsedDate) ) + { + // multiple + if (strpos($zpr["year"], ",") !== false) + { + $zp_years_check = false; + $zp_years = explode( ",", $zpr["year"] ); + + foreach ( $zp_years as $year ) + if ( zp_get_year( $item->meta->parsedDate ) == $year ) + $zp_years_check = true; + + if ( ! $zp_years_check ) continue; + } + else // single + { + if ( zp_get_year( $item->meta->parsedDate ) != $zpr["year"] ) + continue; + } + // } elseif (zp_get_year( $item->meta->parsedDate ) != $zpr["year"]) { + // continue; + // } + } + + // Skip non-matching years for author-year pairs + // if ( $zpr["year"] && $zpr["author"] && (property_exists($item->meta, 'parsedDate') && $item->meta->parsedDate !== null) && zp_get_year( $item->meta->parsedDate ) != $zpr["year"] ) + if ( $zpr["year"] + && $zpr["author"] + && isset($item->meta->parsedDate) ) + continue; + + // Add item key for show image + if ( $zpr["showimage"] ) $zp_showimage_keys .= " ".$item->key; + + // Modify style based on language + // Languages: jp + if ( isset($item->data->language) + // && $item->data->language !== null + // && $item->data->language != "" + && $item->data->language == "ja" ) + { + // Change ", and " to comma + $item->bib = str_ireplace(", and ", ", ", $item->bib); + + // Remove "In " + $item->bib = str_ireplace("In ", "", $item->bib); + } + + // Hyperlink or URL Wrap + if ( isset($item->data->url) + // && $item->data->url !== null + && strlen($item->data->url) > 0 ) + { + if ( $zpr["urlwrap"] + && $zpr["urlwrap"] == "title" + && $item->data->title ) + { + // First: Get rid of text URL if it appears as text in the citation: + // REVIEW: Does this account for all citation styles? + /* chicago-author-date */ $item->bib = str_ireplace( htmlentities($item->data->url."."), "", $item->bib ); // Note the period + /* APA */ $item->bib = str_ireplace( htmlentities($item->data->url), "", $item->bib ); + $item->bib = str_ireplace( " Retrieved from ", "", $item->bib ); + $item->bib = str_ireplace( " Available from: ", "", $item->bib ); + + + // Next, get rid of double space characters (two space characters next to each other): + $item->bib = preg_replace( '/ /', ' ', preg_replace( '/[[:blank:]]+/', ' ', $item->bib ) ); + $item->data->title = preg_replace( '/ /', ' ', preg_replace( '/[[:blank:]]+/', ' ', $item->data->title ) ); + + + // Next, replace space entities with real spaces: + $item->bib = str_ireplace(" ", " ", $item->bib ); + $item->data->title = str_ireplace(" ", " ", $item->data->title ); + + + // Next, replace entity quotes: + $item->bib = str_ireplace( "“", """, + str_ireplace( "”", """, + htmlentities( + html_entity_decode( $item->bib, ENT_QUOTES, "UTF-8" ), + ENT_QUOTES, + "UTF-8" + ) + ) + ); + $item->data->title = str_ireplace( "“", """, + str_ireplace( "”", """, + htmlentities( + html_entity_decode( $item->data->title, ENT_QUOTES, "UTF-8" ), + ENT_QUOTES, + "UTF-8" + ) + ) + ); + + + // Next, replace special Word characters: + // Thanks to Walter Tross @ Stack Overflow; CC BY-SA 3.0: https://creativecommons.org/licenses/by-sa/3.0/ + $chr_map = array( + "\xC2\x82" => "'", // U+0082U+201A single low-9 quotation mark + "\xC2\x84" => '"', // U+0084U+201E double low-9 quotation mark + "\xC2\x8B" => "'", // U+008BU+2039 single left-pointing angle quotation mark + "\xC2\x91" => "'", // U+0091U+2018 left single quotation mark + "\xC2\x92" => "'", // U+0092U+2019 right single quotation mark + "\xC2\x93" => '"', // U+0093U+201C left double quotation mark + "\xC2\x94" => '"', // U+0094U+201D right double quotation mark + "\xC2\x9B" => "'", // U+009BU+203A single right-pointing angle quotation mark + "\xC2\xAB" => '"', // U+00AB left-pointing double angle quotation mark + "\xC2\xBB" => '"', // U+00BB right-pointing double angle quotation mark + "\xE2\x80\x98" => "'", // U+2018 left single quotation mark + "\xE2\x80\x99" => "'", // U+2019 right single quotation mark + "\xE2\x80\x9A" => "'", // U+201A single low-9 quotation mark + "\xE2\x80\x9B" => "'", // U+201B single high-reversed-9 quotation mark + "\xE2\x80\x9C" => '"', // U+201C left double quotation mark + "\xE2\x80\x9D" => '"', // U+201D right double quotation mark + "\xE2\x80\x9E" => '"', // U+201E double low-9 quotation mark + "\xE2\x80\x9F" => '"', // U+201F double high-reversed-9 quotation mark + "\xE2\x80\xB9" => "'", // U+2039 single left-pointing angle quotation mark + "\xE2\x80\xBA" => "'" // U+203A single right-pointing angle quotation mark + ); + $chr = array_keys( $chr_map ); + $rpl = array_values( $chr_map ); + $item->bib = str_ireplace( $chr, $rpl, html_entity_decode( $item->bib, ENT_QUOTES, "UTF-8" ) ); + $item->data->title = str_ireplace( $chr, $rpl, html_entity_decode( $item->data->title, ENT_QUOTES, "UTF-8" ) ); + + // Re-encode for foreign characters, but don't encode quotes: + $item->bib = htmlentities( $item->bib, ENT_NOQUOTES, "UTF-8" ); + $item->data->title = htmlentities( $item->data->title, ENT_NOQUOTES, "UTF-8" ); + + + // Next, prep title: + // $item->data->title = htmlentities( $item->data->title, ENT_COMPAT, "UTF-8" ); + + + // If wrapping title, wrap it: + $item->bib = str_ireplace( + $item->data->title, + "".$item->data->title."", + $item->bib + ); + + // Finally, revert bib entities: + $item->bib = html_entity_decode( $item->bib, ENT_QUOTES, "UTF-8" ); + $item->data->title = html_entity_decode( $item->data->title, ENT_QUOTES, "UTF-8" ); + + } + else // Just hyperlink the URL text + { + $item->bib = str_ireplace( + htmlentities($item->data->url), + "".$item->data->url."", + $item->bib + ); + } + } // Hyperlink or URL wrap + + // Hyperlink DOIs + if ( isset($item->data->DOI) + // && $item->data->DOI !== null + && strlen($item->data->DOI) > 0 ) + { + // Styles without http + if ( strpos( $item->bib, "doi:" ) !== false + && strpos( $item->bib, "doi.org" ) == false ) + { + $item->bib = str_ireplace( + "doi:" . $item->data->DOI, + "http://doi.org/".$item->data->DOI."", + $item->bib + ); + } + // Styles with http + elseif ( strpos( $item->bib, "http://doi.org/" ) !== false + && strpos( $item->bib, "" ) == false ) + { + $item->bib = str_ireplace( + "http://doi.org/" . $item->data->DOI, + "http://doi.org/".$item->data->DOI."", + $item->bib + ); + } + // HTTPS format + elseif ( strpos( $item->bib, "https://doi.org/" ) !== false + && strpos( $item->bib, "" ) == false ) + { + $item->bib = str_ireplace( + "https://doi.org/" . $item->data->DOI, + "https://doi.org/".$item->data->DOI."", + $item->bib + ); + } + } + + // Cite link (RIS) + if ( $zpr["citeable"] ) + $item->bib = preg_replace( '~(.*)' . preg_quote('', '~') . '(.*?)~', '$1' . " Cite " . '$2', $item->bib, 1 ); + + // Highlight text + if ( $zpr["highlight"] ) + $item->bib = str_ireplace( $zpr["highlight"], "".$zpr["highlight"]."", $item->bib ); + + // Downloads, notes + if ( $zpr["downloadable"] + || $zpr["shownotes"] ) + { + // Check if item has children that could be downloads + if ( $item->meta->numChildren > 0 ) + { + // Get the user's account + $zp_account = zp_get_account ($wpdb, $zpr["api_user_id"]); + + $zp_child_url = "https://api.zotero.org/".$zp_account[0]->account_type."/".$zpr["api_user_id"]."/items"; + $zp_child_url .= "/".$item->key."/children?"; + if (!is_null($zp_account[0]->public_key) && trim($zp_account[0]->public_key) != "") + $zp_child_url .= "key=".$zp_account[0]->public_key."&"; + $zp_child_url .= "&format=json&include=data"; + + // Get data + $zp_import_child = new ZotpressRequest(); + $zp_child_request = $zp_import_child->get_request_contents( $zp_child_url, $zpr["update"] ); + $zp_children = json_decode( $zp_child_request["json"] ); + + // If the item changes and no longer exists on + // the Zotero side, it will return an error message + if ( $zp_children != "Item not found" ) + { + $zp_download_meta = false; + $zp_notes_meta = array(); + + foreach ( $zp_children as $zp_child ) + { + // Check for downloads + if ( $zpr["downloadable"] ) + { + // Check for downloadable file (attached) + if ( isset($zp_child->data->linkMode) + && ( ( $zp_child->data->linkMode == "imported_file" + || $zp_child->data->linkMode == "imported_url" ) + && preg_match('(pdf|doc|docx|ppt|pptx|latex|rtf|odt|odp)', $zp_child->data->filename) === 1 ) ) + { + $zp_download_meta = array ( + "dlkey" => $zp_child->key, + "contentType" => $zp_child->data->contentType + ); + + // Display download link if file exists + if ( $zp_download_meta !== [] ) + $item->bib = preg_replace('~(.*)' . preg_quote( '', '~') . '(.*?)~', '$1' . " Download" . '$2', $item->bib, 1 ); + } + + // Check for link to downloadable file (third-party) + else if ( isset($zp_child->data->linkMode) + && ( $zp_child->data->linkMode == "linked_url" + && preg_match('(pdf|doc|docx|ppt|pptx|latex|rtf|odt|odp)', $zp_child->data->url) === 1 ) ) + { + $item->bib = preg_replace('~(.*)' . preg_quote( '', '~') . '(.*?)~', '$1' . " Download" . '$2', $item->bib, 1 ); + } + } + + // Check for notes + if ( $zpr["shownotes"] + && ( isset($zp_child->data->itemType) + && $zp_child->data->itemType == "note" ) ) + { + $zp_notes_meta[count($zp_notes_meta)] = $zp_child->data->note; + } + } + + // // Display download link if file exists + // if ( $zp_download_meta ) + // $item->bib = preg_replace('~(.*)' . preg_quote( '', '~') . '(.*?)~', '$1' . " Download" . '$2', $item->bib, 1 ); + + // Display notes, if any + if ( $zp_notes_meta !== [] ) + { + $temp_notes = "
  • key."\">\n"; + + if ( count($zp_notes_meta) == 1 ) + { + $temp_notes .= $zp_notes_meta[0]."\n"; + } + else // multiple + { + $temp_notes .= "
      \n"; + + foreach ($zp_notes_meta as $zp_note_meta) + $temp_notes .= "
    • " . $zp_note_meta . "\n
    • \n"; + + $temp_notes .= "\n
    \n\n"; + } + + // Add to item + $item->notes = $temp_notes . "
  • \n"; + + // Add note reference to citation + $note_class = "zp-Notes-Reference"; if ( is_admin_bar_showing() ) $note_class .= " zp-Admin-Bar-Showing"; + $item->bib = preg_replace('~(.*)' . preg_quote('', '~') . '(.*?)~', '$1' . " key."\">".$zp_notes_num." " . '$2', $item->bib, 1); + $zp_notes_num++; + } + } // Children exist; not "Item not found" + } // Check if item has children + } // $zpr["downloadable"] + + $zp_all_the_data[] = $item; + + } // foreach item + + // Show tags + if ( $zpr["showtags"] ) + { + // Decode JSON format + $zp_tags = json_decode( $zp_request["tags"] ); + + // Just add to the data; let the front-end handle the display + // i.e., add to item.data.tags + foreach ( $zp_all_the_data as $id => $data ) + { + // Tags are connected to item key + if ( property_exists( $zp_tags, $data->key ) ) + $zp_all_the_data[$id]->data->tags = $zp_tags->{$data->key}; + } + } + + + // Show images + if ( $zpr["showimage"] ) + { + // Get images for all item keys from zpdb, if they exist + $zp_images = $wpdb->get_results( + " + SELECT * FROM ".$wpdb->prefix."zotpress_zoteroItemImages + WHERE ".$wpdb->prefix."zotpress_zoteroItemImages.item_key IN ('".str_replace( " ", "', '", trim($zp_showimage_keys) )."') + " + ); + + if ( count($zp_images) > 0 ) + { + foreach ( $zp_images as $image ) + { + $zp_thumbnail = wp_get_attachment_image_src($image->image); + + foreach ( $zp_all_the_data as $id => $data ) + { + if ( $data->key == $image->item_key) + { + $zp_all_the_data[$id]->image = $zp_thumbnail; + + // URL Wrap for images + if ( $zpr["urlwrap"] && $zpr["urlwrap"] == "image" && $zp_all_the_data[$id]->data->url != "" ) + { + // Get rid of default URL listing + // TODO: Does this account for all citation styles? + $zp_all_the_data[$id]->bib = str_replace( htmlentities($zp_all_the_data[$id]->data->url), "", $zp_all_the_data[$id]->bib ); + $zp_all_the_data[$id]->bib = str_replace( " Retrieved from ", "", $zp_all_the_data[$id]->bib ); + $zp_all_the_data[$id]->bib = str_replace( " Available from: ", "", $zp_all_the_data[$id]->bib ); + } + } + } + } + } // If images found in zpdb + + // Check open lib next + // REVIEW: Will break if Open Library is down! + if ( $zpr["showimage"] === "openlib" ) + { + $zp_showimage_keys = explode( ",", $zp_showimage_keys ); + + foreach ( $zp_all_the_data as $id => $data ) + { + if ( ! in_array( $data->key, $zp_showimage_keys ) + && ( isset($data->data->ISBN) && $data->data->ISBN != "" ) ) + { + $openlib_url = "http://covers.openlibrary.org/b/isbn/".$data->data->ISBN."-M.jpg"; + + // First, get the headers + $openlib_headers = @get_headers( $openlib_url ); + + // And make sure Open Library / the source is online + if ( $openlib_headers[0] == "HTTP/1.1 302 Found" ) + { + $zp_all_the_data[$id]->image = array( $openlib_url ); + + // URL Wrap for images + if ( $zpr["urlwrap"] + && $zpr["urlwrap"] == 'image' + && $zp_all_the_data[$id]->data->url != '' ) + { + // Get rid of default URL listing + // TODO: Does this account for all citation styles? + $zp_all_the_data[$id]->bib = str_replace( htmlentities($zp_all_the_data[$id]->data->url), "", $zp_all_the_data[$id]->bib ); + $zp_all_the_data[$id]->bib = str_replace( " Retrieved from ", "", $zp_all_the_data[$id]->bib ); + $zp_all_the_data[$id]->bib = str_replace( " Available from: ", "", $zp_all_the_data[$id]->bib ); + } + } + } + } + } + } + + // Re-sort with order of entry if bib and default sort + if ( $zpr["item_type"] == "items" + && $zpr["sortby"] == "default" + && count($zpr["item_keys_order"]) > 0 ) + { + $temp_arr = array(); + + foreach ( $zpr["item_keys_order"] as $temp_key ) + { + foreach ( $zp_all_the_data as $temp_data ) + { + if ( $temp_data->key == $temp_key ) $temp_arr[] = $temp_data; + } + } + + $zp_all_the_data = $temp_arr; + } + } + } + + else // No results + { + // $zp_all_the_data = ""; // Necessary? + } + + + + // +----------------------------+ + // | Finish and output the data | + // +----------------------------+ + + unset($zp_import_contents); + unset($zp_import_url); + unset($zp_xml); + unset($api_user_id); + unset($zp_account); + + $wpdb->flush(); + + // Deal with cache scenario + if ( ( $checkcache && $zp_usecache ) + || ( ! $checkcache ) ) + { + $zp_output = ''; + + if ( count($zp_all_the_data) > 0 + && $zp_all_the_data != "" ) + { + if ( $is_ajax ) + { + $zp_output = json_encode( + array ( + "status" => "success", + "instance" => $zpr["instance_id"], + "meta" => $zp_request_meta, + "data" => $zp_all_the_data + ) + ); + + echo $zp_output; + exit(); // REVIEW: Causing to break if error + } + else // PHP + { + $zp_output = ''; + + foreach ( $zp_all_the_data as $zp_citation ) + { + // QUESTION: Why is it a string? + // $zp_citation = json_decode($zp_citation); + + $zp_output .= '
    bib; + $zp_output .= '
    '; + } + return $zp_output; + } + } + else // No data or error + { + if ( ! isset($zpr["instance_id"]) ) + $zpr["instance_id"] = false; + + if ( $is_ajax ) + if ( $zp_error ) + $zp_output = json_encode( + array ( + "status" => "error", + "instance" => $zpr["instance_id"], + "meta" => $zp_request_meta, + "data" => $zp_error + ) + ); + else // catchall, likely just no items for request + $zp_output = json_encode( + array ( + "status" => "empty", + "instance" => $zpr["instance_id"], + "meta" => $zp_request_meta, + "data" => "0" + ) + ); + + echo $zp_output; + + if ( $is_ajax ) + exit(); // REVIEW: Causing to break if error + } + } +} +add_action( 'wp_ajax_zpRetrieveViaShortcode', 'Zotpress_shortcode_request' ); +add_action( 'wp_ajax_nopriv_zpRetrieveViaShortcode', 'Zotpress_shortcode_request' ); + +?> diff --git a/lib/tinymce-plugin/css/zotpress.tinymce.css b/lib/tinymce-plugin/css/zotpress.tinymce.css deleted file mode 100644 index 359991e..0000000 --- a/lib/tinymce-plugin/css/zotpress.tinymce.css +++ /dev/null @@ -1,12 +0,0 @@ - - - /* Spans that are automatically wrapped around shortcodes in the editor */ - .zp-ZotpressShortcode { - background-color: #eee; - } - .zp-ZotpressShortcode:hover { - background-color: #ccc; - } - .zp-ZotpressShortcode .shortcode { - display: none; - } diff --git a/lib/tinymce-plugin/images/icon-bib.png b/lib/tinymce-plugin/images/icon-bib.png deleted file mode 100644 index bf4d729838e37f766fae5994dd04a287f9383338..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3342 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 Qa{vGU07*qoM6N<$f{D^=$^ZZW diff --git a/lib/tinymce-plugin/images/icon-list.png b/lib/tinymce-plugin/images/icon-list.png deleted file mode 100644 index f5f7dbcd5f17cb8e25b7d3b01eb7c3282fbb3058..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3397 zcmV-L4Z8A)P)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=00004XF*Lt006O$eEU(80000WV@Og>004R=004l4008;_004mL004C` z008P>0026e000+nl3&F}0007DNkl9(MB}sB&ihH`;pw}>h9gm9Sip^ zOLmu-_`)!UGiRQ8XW)!bO0iq67mNVsfXl!opa8rF-T-fbwR|oU(LlUz>&t;lPLbhO8A;kPXVE_xj&CY}b5JF5TrLH8& zFbvxT)oOJw=rh*~&a{E97Ziaz3Fy(osdnYu+$wDT1Ld?2eU;;=@%G*k*VSxGh zr<6(#wrx``m)Qnq1`lx^E;a`LXacmIL1ZCe$K zI&Dmm>KpyK*nW0%XT0HWghF(8tK za=DD-H~_4!er9xZ4BNID$!EK++6fgx)N|Rx1H$t+YjGS~{HLUp)okX_kS?X%jN`bF zEc9~HPn`}8UH=N8>ze%1Y*Oe|v>$1@w(=LK>+eL=IIEO059&||5gEGvD(U5uKYmtU z)@t<=2YtVEI`wfdow^8YNnp(~%>~0Syo10D!|( z=|xS`mXn;`n!j0=IVYw3U8~E9dOa#6Z`!AKBg- - - - - - - - - - -
    > - - -
    - - - - - - - -
    - - -
    - - - - -
    - - - -
    - - -
    - -
    - - - -
    - - - - -
    - - -
    - -
    - - - - -
    - - - -

    Optional. Single number or a range, e.g. 3-10.

    -
    - - - - - - - -
    - - -
    - - -
    - - - -
    -

    *Only required if you have more than one account.

    -
    - - - - -
    - get_results("SELECT api_user_id, nickname FROM ".$wpdb->prefix."zotpress ORDER BY account_type DESC"); - $zp_accounts_total = $wpdb->num_rows; - - if ($zp_accounts_total > 0) - { - $zp_userids = ""; - $zp_nicks = ""; - foreach ($zp_accounts as $zp_account) - { - $zp_userids .= "\n"; - $zp_nicks .= "\n"; - } - } - - ?> - - -
    - - - -
    -

    Optional. Be sure to replace spaces with a +.

    - - - - - - -
    - - - -
    -

    Optional. Default is "items."

    - - -
    - - - -
    -

    Optional. Default is "bib."

    - - -

    Optional. Displays title by year.

    - - -

    Optional. Displays image if exists.

    - - -
    - - - -
    - -

    Optional. Default is "."

    - - - - - - - - - -
    loading
    -
    Success!
    -
    Errors!
    - - -
    - - - -
    -

    Optional. Default is "latest."

    - - -

    Optional. Default is "desc."

    - - -
    - - - -
    -

    Optional. Displays download link.

    - - -

    Optional. Displays note/s if they exist.

    - - -
    - - -
    - - -
    - -

    Copy-n-paste at the end of your post.

    - -
    -
    - -
    - -
    - - - - - -
    - - - - - - - -
    - - -
    - - - -
    - - - -
    - - - - - - \ No newline at end of file diff --git a/lib/widget/widget.metabox.actions.php b/lib/widget/widget.metabox.actions.php deleted file mode 100644 index 850976a..0000000 --- a/lib/widget/widget.metabox.actions.php +++ /dev/null @@ -1,376 +0,0 @@ - 403 ) ); - - // Include import functions - require_once("../import/import.functions.php"); - - // Set up XML document - $xml = ""; - - - if (isset($_GET['submit'])) - { - // Set up error array - $errors = array("account_empty"=>array(0,"Account was left blank."), - "account_format"=>array(0,"Account was incorrectly formatted."), - "editor_empty"=>array(0,"Editor was left blank."), - "editor_format"=>array(0,"Editor was incorrectly formatted."), - "style_empty"=>array(0,"Style was left blank."), - "style_format"=>array(0,"Style was incorrectly formatted."), - "reset_empty"=>array(0,"Reset was left blank."), - "reset_format"=>array(0,"Reset was incorrect."), - "cpt_empty"=>array(0,"Reference Widget was left blank."), - "cpt_format"=>array(0,"Reference Widget was incorrect."), - "autoupdate_empty"=>array(0,"Autoupdate was left blank."), - "autoupdate_format"=>array(0,"Autoupdate was incorrectly formatted."), - "post_empty"=>array(0,"Post ID was left blank."), - "post_format"=>array(0,"Post ID was incorrectly formatted.")); - - - - /* - - SET DEFAULT ACCOUNT - - */ - - if (isset($_GET['account'])) - { - - // Check the post variables and record errors - if (trim($_GET['account']) != '') - if (preg_match('/^[\'0-9a-zA-Z -_]+$/', stripslashes($_GET['account'])) == 1) - $account = str_replace("'","",str_replace(" ","",trim(urldecode($_GET['account'])))); - else - $errors['account_format'][0] = 1; - else - $errors['account_empty'][0] = 1; - - - // CHECK ERRORS - $errorCheck = false; - foreach ($errors as $field => $error) { - if ($error[0] == 1) { - $errorCheck = true; - break; - } - } - - - // SET DEFAULT STYLE - if ($errorCheck == false) - { - update_option("Zotpress_DefaultAccount", $account); - $xml .= "\n"; - } - } // default account - - - - /* - - SET REFERENCE WIDGET - - */ - - else if (isset($_GET['cpt'])) - { - // Check the post variables and record errors - if (trim($_GET['cpt']) != '') - if (preg_match('/^[\'0-9a-zA-Z -_,]+$/', stripslashes($_GET['cpt'])) == 1) - $cpt = trim($_GET['cpt']); - else - $errors['account_format'][0] = 1; - else - $errors['account_empty'][0] = 1; - - - // CHECK ERRORS - $errorCheck = false; - foreach ($errors as $field => $error) { - if ($error[0] == 1) { - $errorCheck = true; - break; - } - } - - - // SET DEFAULT STYLE - if ($errorCheck == false) - { - update_option("Zotpress_DefaultCPT", $cpt); - $xml .= "\n"; - } - } // default reference widget - - - - /* - - SET DEFAULT FOR EDITOR FEATURES - - */ - - else if (isset($_GET['editor'])) - { - - // Check the post variables and record errors - if (trim($_GET['editor']) != '') - if (preg_match('/^[\'a-zA-Z _]+$/', stripslashes($_GET['editor'])) == 1) - $editor = str_replace("'","",str_replace(" ","",trim(urldecode($_GET['editor'])))); - else - $errors['editor_format'][0] = 1; - else - $errors['editor_empty'][0] = 1; - - - // CHECK ERRORS - $errorCheck = false; - foreach ($errors as $field => $error) { - if ($error[0] == 1) { - $errorCheck = true; - break; - } - } - - - // SET DEFAULT STYLE - if ($errorCheck == false) - { - update_option("Zotpress_DefaultEditor", $editor); - $xml .= "\n"; - } - } // default editor features - - - - /* - - SET AUTOUPDATE - - */ - - else if (isset($_GET['autoupdate'])) - { - - // Check the post variables and record errors - if (trim($_GET['autoupdate']) != '') - if (preg_match('/^[\'0-9a-zA-Z -_]+$/', stripslashes($_GET['autoupdate'])) == 1) - $autoupdate = str_replace("'","",str_replace(" ","",trim(urldecode($_GET['autoupdate'])))); - else - $errors['autoupdate_format'][0] = 1; - else - $errors['autoupdate_empty'][0] = 1; - - - // CHECK ERRORS - $errorCheck = false; - foreach ($errors as $field => $error) { - if ($error[0] == 1) { - $errorCheck = true; - break; - } - } - - - // SET DEFAULT STYLE - if ($errorCheck == false) - { - update_option("Zotpress_DefaultAutoUpdate", strtolower($autoupdate)); - $xml .= "\n"; - } - } // autoupdate - - - - /* - - SET RESET - - */ - - else if (isset($_GET['reset'])) - { - - // Check the post variables and record errors - if (trim($_GET['reset']) == 'true') - $reset = $_GET['reset']; - else - $errors['reset_empty'][0] = 1; - - - // CHECK ERRORS - $errorCheck = false; - foreach ($errors as $field => $error) { - if ($error[0] == 1) { - $errorCheck = true; - break; - } - } - - - // SET DEFAULT STYLE - if ($errorCheck == false) - { - global $wpdb; - global $current_user; - - // Drop all tables except accounts/main - $wpdb->query("DROP TABLE IF EXISTS ".$wpdb->prefix."zotpress;"); - $wpdb->query("DROP TABLE IF EXISTS ".$wpdb->prefix."zotpress_oauth;"); - $wpdb->query("DROP TABLE IF EXISTS ".$wpdb->prefix."zotpress_zoteroItems;"); - $wpdb->query("DROP TABLE IF EXISTS ".$wpdb->prefix."zotpress_zoteroCollections;"); - $wpdb->query("DROP TABLE IF EXISTS ".$wpdb->prefix."zotpress_zoteroTags;"); - $wpdb->query("DROP TABLE IF EXISTS ".$wpdb->prefix."zotpress_zoteroRelItemColl;"); - $wpdb->query("DROP TABLE IF EXISTS ".$wpdb->prefix."zotpress_zoteroRelItemTags;"); - - /*// Delete entries/items - $zp_entry_array = get_posts( - array( - 'posts_per_page' => -1, - 'post_type' => 'zp_entry' - ) - ); - foreach ($zp_entry_array as $zp_entry) wp_delete_post( $zp_entry->ID, true ); - - // Delete collections - $zp_collections_array = get_terms( - 'zp_collections', - array( - 'hide_empty' => false - ) - ); - foreach ($zp_collections_array as $zp_collection_term) zp_delete_collection ($zp_collection_term->term_id); - - // Delete tags - $zp_tags_array = get_terms( - 'zp_tags', - array( - 'hide_empty' => false - ) - ); - foreach ($zp_tags_array as $zp_tag_term) zp_delete_tag ($zp_tag_term->term_id);*/ - - //delete_option( 'ZOTPRESS_PASSCODE' ); - delete_option( 'Zotpress_DefaultAccount' ); - delete_option( 'Zotpress_DefaultEditor' ); - delete_option( 'Zotpress_LastAutoUpdate' ); - delete_option( 'Zotpress_DefaultStyle' ); - delete_option( 'Zotpress_StyleList' ); - delete_option( 'Zotpress_DefaultAutoUpdate' ); - delete_option( 'Zotpress_update_version' ); - delete_option( 'Zotpress_main_db_version' ); - delete_option( 'Zotpress_oauth_db_version' ); - delete_option( 'Zotpress_zoteroItems_db_version' ); - delete_option( 'Zotpress_zoteroCollections_db_version' ); - delete_option( 'Zotpress_zoteroTags_db_version' ); - delete_option( 'Zotpress_zoteroRelItemColl_db_version' ); - delete_option( 'Zotpress_zoteroRelItemTags_db_version' ); - delete_option( 'Zotpress_zoteroItemImages_db_version' ); - - delete_user_meta( $current_user->ID, 'zotpress_5_2_ignore_notice' ); - delete_user_meta( $current_user->ID, 'zotpress_survey_notice_ignore' ); - - $xml .= "\n"; - } - } // reset - - - - /* - - SET DEFAULT STYLE - - */ - - else if (isset($_GET['style'])) - { - - // Check the post variables and record errors - if (trim($_GET['style']) != '') - if (preg_match('/^[\'0-9a-zA-Z -_]+$/', stripslashes($_GET['style'])) == 1) - $style = str_replace("'","",str_replace(" ","",trim(urldecode($_GET['style'])))); - else - $errors['style_format'][0] = 1; - else - $errors['style_empty'][0] = 1; - - // Only for post-specific - if (isset($_GET['forpost']) && $_GET['forpost'] == "true") - if (isset($_GET['post']) && trim($_GET['post']) != '') - if (preg_match('/^[\'0-9]+$/', stripslashes($_GET['post'])) == 1) - $post = str_replace("'","",str_replace(" ","",trim(urldecode($_GET['post'])))); - else - $errors['post_format'][0] = 1; - else - $errors['post_empty'][0] = 1; - - - // CHECK ERRORS - $errorCheck = false; - foreach ($errors as $field => $error) { - if ($error[0] == 1) { - $errorCheck = true; - break; - } - } - - - // SET DEFAULT STYLE - if ($errorCheck == false) - { - // Update style list - if (strpos(get_option("Zotpress_StyleList"), $style) === false) - update_option( "Zotpress_StyleList", get_option("Zotpress_StyleList") . ", " . $style); - - // Update default style - if (isset($_GET['forpost']) && $_GET['forpost'] == "true") - { - update_option("Zotpress_DefaultStyle_".$post, $style); - $xml .= "\n"; - } - else // Overal defaults - { - update_option("Zotpress_DefaultStyle", $style); - $xml .= "\n"; - } - } - } // default style - - - // DISPLAY ERRORS - else - { - $xml .= "\n"; - $xml .= "\n"; - foreach ($errors as $field => $error) - if ($error[0] == 1) - $xml .= $error[1]."\n"; - $xml .= "\n"; - } - - } // isset(submit) - - - - /* - - DISPLAY XML - - */ - - header('Content-Type: application/xml; charset=ISO-8859-1'); - echo "\n"; - echo "\n"; - echo $xml; - echo ""; - -?> \ No newline at end of file diff --git a/lib/widget/widget.metabox.php b/lib/widget/widget.metabox.php index fd8f949..07347c9 100644 --- a/lib/widget/widget.metabox.php +++ b/lib/widget/widget.metabox.php @@ -1,496 +1,536 @@ - +
    - - - - - - - - - -
    - - get_var("SELECT COUNT(*) FROM ".$wpdb->prefix."zotpress;") > 1) - { - // See if default exists - $zp_default_account = false; - if (get_option("Zotpress_DefaultAccount")) $zp_default_account = get_option("Zotpress_DefaultAccount"); - - if ($zp_default_account !== false) - { - $zp_account = $wpdb->get_results( - $wpdb->prepare( - " - SELECT api_user_id, nickname FROM ".$wpdb->prefix."zotpress - WHERE api_user_id = %s - ", - $zp_default_account - ) - ); - } - else - { - $zp_account = $wpdb->get_results( - " - SELECT api_user_id, nickname FROM ".$wpdb->prefix."zotpress LIMIT 1; - " +
    + + get_var("SELECT COUNT(*) FROM ".$wpdb->prefix."zotpress;") > 1) + { + // See if default exists + $zp_default_account = false; + if (get_option("Zotpress_DefaultAccount")) $zp_default_account = get_option("Zotpress_DefaultAccount"); + + if ($zp_default_account !== false) + { + $zp_account = $wpdb->get_results( + $wpdb->prepare( + " + SELECT api_user_id, nickname FROM ".$wpdb->prefix."zotpress + WHERE api_user_id = %s + ", + $zp_default_account + ) ); - } - - if (is_null($zp_account[0]->nickname) === false && $zp_account[0]->nickname != "") - $zp_default_account = $zp_account[0]->nickname . " (" . $zp_account[0]->api_user_id . ")"; - ?> - -
    - Searching . Change account? -
    - - - - - -
    - - - -

    - - - - -
    - -

    Options

    - -
    - - - - -
    - - - - -
    - - - -

    Add more styles here. Note: Requires re-import.

    - -
    - - - - - -
    - -
    - Sort order: -
    - - - - - -
    -
    - -
    - -
    - Show images? -
    - - - - - -
    -
    - -
    - -
    - Show title by year? -
    - - - - - -
    -
    - -
    - -
    - Downloadable? -
    - - - - - -
    -
    - -
    - -
    - Abstract? -
    - - - - - -
    -
    - -
    - -
    - Notes? -
    - - - - - -
    -
    - -
    - -
    - Citable (in RIS format)? -
    - - - - - -
    -
    - -
    - - - - -
    -
    - - - -
    - - Generate Shortcode - Clear - -
    - -
    - - -
    -
    - - -
    - - - - - - - -
    - - get_var("SELECT COUNT(*) FROM ".$wpdb->prefix."zotpress;") > 1) { ?> - -
    - get_results( - $wpdb->prepare( - " - SELECT api_user_id, nickname FROM ".$wpdb->prefix."zotpress - WHERE api_user_id = %s", - $zp_default_account - ) - ); - } - else - { - $zp_account = $wpdb->get_results( + } + else + { + $zp_account = $wpdb->get_results( " SELECT api_user_id, nickname FROM ".$wpdb->prefix."zotpress LIMIT 1; " ); - } - - if (is_null($zp_account[0]->nickname) === false && $zp_account[0]->nickname != "") - $zp_default_account = $zp_account[0]->nickname . " (" . $zp_account[0]->api_user_id . ")"; - - ?> - Searching . Change account? -
    - - - - -
    - - - -

    - - - -
    - -

    Options

    - -
    - -
    In-Text Options
    - - - -

    Use these placeholders: %a% for author, %d% for date, %p% for page, %num% for list number.

    - -
    - - - - -
    - - - - -
    - - - - -
    Bibliography Options
    - - - -

    Add more styles here. Note: Requires re-import.

    - -
    - - - - - -
    - -
    - Sort order: -
    - - - - - -
    -
    - -
    - -
    - Show images? -
    - - - - - -
    -
    - -
    - -
    - Show title by year? -
    - - - - - -
    -
    - -
    - -
    - Downloadable? -
    - - - - - -
    -
    - -
    - -
    - Abstract? -
    - - - - - -
    -
    - -
    - -
    - Notes? -
    - - - - - -
    -
    - -
    - -
    - Citable (in RIS format)? -
    - - - - - -
    -
    - -
    -
    - - - -
    - - Generate Shortcode - Clear - -
    - -
    - - - -
    - - -
    -
    -
    - - -
    - - - - - -
    - - + } + + if (!is_null($zp_account[0]->nickname) && $zp_account[0]->nickname != "") + $zp_default_account = $zp_account[0]->nickname . " (" . $zp_account[0]->api_user_id . ")"; + ?> + +
    + +
    + + + +
    +
    + + + + + + + +
    +
    +
    +
    + + + +
    +

    :

    +
      +
    • +
    • +
    • +
    +
    + + + + + + + +
    + + +
    + +

    :

    + +
    + + + + +
    + + + + +
    + + + +

    .

    + +
    + +
    + + +
    + +
    + +
    + : +
    + + + + + +
    +
    + +
    + +
    + ? +
    + + + + + +
    +
    + +
    + +
    + ? +
    + + + + + +
    +
    + +
    + +
    + ? +
    + + + + + +
    +
    + +
    + +
    + ? +
    + + + + + +
    +
    + +
    + +
    + ? +
    + + + + + +
    +
    + +
    + +
    + ? +
    + + + + + +
    +
    + +
    + +
    + + +
    + +
    +
    + + + +
    + + + + +
    + +
    + + +
    +
    + + +
    + + + + + +
    + + +
    + +

    :

    + +
    + + + +

    %a% for author, %d% for date, %p% for page, %num% for list number.
    ','zotpress'); ?>

    +

    + +
    + +
    + + +
    + +
    + +
    + + +
    + +
    + +
    + + +
    + +
    + +
    + + +
    +
    +
    + + + +
    + + + + +
    + +
    + + +
    +
    + + +
    + + + + + + +
    + + +
    + +

    :

    + +
    + + +

    .

    + +
    + + +
    + + +
    + +
    + +
    + : +
    + + + + + +
    +
    + +
    + +
    + ? +
    + + + + + +
    +
    + +
    + +
    + ? +
    + + + + + +
    +
    + +
    + +
    + ? +
    + + + + + +
    +
    + +
    + +
    + ? +
    + + + + + +
    +
    + +
    + +
    + ? +
    + + + + + +
    +
    + +
    + +
    + S? +
    + + + + + +
    +
    +
    +
    + + +
    + + + + +
    + +
    +
    + + +
    +
    +
    + + +
    + +
    + + + + + + + diff --git a/lib/widget/widget.metabox.search.php b/lib/widget/widget.metabox.search.php deleted file mode 100644 index 5acd8ec..0000000 --- a/lib/widget/widget.metabox.search.php +++ /dev/null @@ -1,81 +0,0 @@ - 403 ) ); - - global $wpdb; - - header('Content-type: text/html; charset=utf-8'); - - // Determine account - if (get_option("Zotpress_DefaultAccount")) - { - $zp_api_user_id = get_option("Zotpress_DefaultAccount"); - } - else - { - $zp_account = $wpdb->get_row("SELECT * FROM ".$wpdb->prefix."zotpress LIMIT 1", OBJECT); - $zp_api_user_id = $zp_account->api_user_id; - } - - - $zpSearchResults = $wpdb->get_results( - $wpdb->prepare( - " - SELECT author, json, CONCAT(' (', year, '). ', title, '.') AS label, item_key AS value FROM ".$wpdb->prefix."zotpress_zoteroItems - WHERE api_user_id='".$zp_api_user_id."' AND json LIKE %s AND itemType NOT IN ('attachment', 'note') ORDER BY author ASC - ", - '%' . $wpdb->esc_like($_GET['term']) . '%' - ), OBJECT ); - - $zpSearch = array(); - - if ( count($zpSearchResults) > 0 ) - { - foreach ( $zpSearchResults as $zpResult ) - { - // Deal with author - $author = $zpResult->author; - $zpResultJSON = json_decode( $zpResult->json ); - - if ( $author == "" ) - { - if ( isset($zpResultJSON->creators) && count($zpResultJSON->creators) > 0 ) - foreach ( $zpResultJSON->creators as $i => $creator ) - if ( $i != (count($zpResultJSON->creators)-1) ) - $author .= $creator->name . ', '; - else - $author .= $creator->name; - } - - array_push( $zpSearch, array( "author" => $author, "label" => $zpResult->label, "value" => $zpResult->value) ); - } - } - - echo json_encode($zpSearch); - - unset($zp_api_user_id); - unset($zp_account); - $wpdb->flush(); - -?> \ No newline at end of file diff --git a/lib/widget/widget.php b/lib/widget/widget.php new file mode 100644 index 0000000..e483108 --- /dev/null +++ b/lib/widget/widget.php @@ -0,0 +1,186 @@ + true, + // ) + ); + } +} +add_action('admin_init', 'Zotpress_add_meta_box', 1); // backwards compatible + +function ZotpressMetaBox_callback() { require( dirname(__FILE__) . '/widget.metabox.php'); } + + + +// Set up Widget Metabox AJAX search +function Zotpress_widget_metabox_AJAX_search() +{ + global $wpdb; + + // Determine account based on passed account + if ($_GET['api_user_id'] && is_numeric($_GET['api_user_id'])) { + $zp_account = $wpdb->get_row("SELECT * FROM ".$wpdb->prefix."zotpress WHERE api_user_id='".$_GET['api_user_id']."'", OBJECT); + $zp_api_user_id = $zp_account->api_user_id; + $zp_nickname = $zp_account->nickname; + } elseif (get_option("Zotpress_DefaultAccount")) { + $zp_api_user_id = get_option("Zotpress_DefaultAccount"); + $zp_account = $wpdb->get_row("SELECT * FROM ".$wpdb->prefix."zotpress WHERE api_user_id='".$zp_api_user_id."'", OBJECT); + $zp_nickname = $zp_account->nickname; + } else + { + $zp_account = $wpdb->get_row("SELECT * FROM ".$wpdb->prefix."zotpress LIMIT 1", OBJECT); + $zp_api_user_id = $zp_account->api_user_id; + $zp_nickname = $zp_account->nickname; + } + + $zpSearch = array(); + + // Include relevant classes and functions + include( dirname(__FILE__) . '/../request/request.class.php' ); + include( dirname(__FILE__) . '/../request/request.functions.php' ); + + // Set up Zotpress request + $zp_import_contents = new ZotpressRequest(); + + // Get account + $zp_account = zp_get_account ($wpdb, $zp_api_user_id); + + // Format Zotero request URL + // e.g., https://api.zotero.org/users/#####/items?key=###&format=json&q=###&limit=25 + $zp_import_url = "https://api.zotero.org/".$zp_account[0]->account_type."/".$zp_account[0]->api_user_id."/items?"; + if (!is_null($zp_account[0]->public_key) && trim($zp_account[0]->public_key) != "") + $zp_import_url .= "key=".$zp_account[0]->public_key."&"; + $zp_import_url .= "format=json&q=".urlencode($_GET['term'])."&limit=10&itemType=-attachment+||+note"; + + // Read the external data + $zp_xml = $zp_import_contents->get_request_contents( $zp_import_url, true ); // Unsure about "true" + $zpResultJSON = json_decode( $zp_xml["json"] ); + + if ( count($zpResultJSON) > 0 ) + { + foreach ( $zpResultJSON as $zpResult ) + { + // Deal with author(s) + $author = "N/A"; + if ( property_exists($zpResult->data, 'creators') && $zpResult->data->creators !== null ) + { + $author = ""; + foreach ( $zpResult->data->creators as $i => $creator) + { + if ( property_exists($creator, 'name') && $creator->name !== null ) + $author .= $creator->name; + else + $author .= $creator->lastName; + + if ( $i != count($zpResult->data->creators)-1 ) $author .= ', '; + } + } + + // Deal with label + // e.g., (year). title + $label = " ("; + if ( property_exists($zpResult->data, 'date') && $zpResult->data->date !== null && trim($zpResult->data->date) != "" ) $label .= $zpResult->data->date; else $label .= "n.d."; + $label .= "). "; + $title = "Untitled."; if ( property_exists($zpResult->data, 'title') && $zpResult->data->title !== null && trim($zpResult->data->title) != "" ) $title = $zpResult->data->title . "."; + + // If no author, use title + if ( trim($author) == "" ) + { + $author = $title; + $title = ""; + } + $label .= $title; + + $zpSearch[] = array( "api_user_id" => $zp_api_user_id, "nickname" => $zp_nickname, "author" => $author, "label" => $label, "value" => $zpResult->key); + } + } + + unset($zp_import_contents); + unset($zp_import_url); + unset($zp_xml); + + + $response = json_encode($zpSearch); + echo $response; + + unset($zp_api_user_id); + unset($zp_account); + $wpdb->flush(); + + exit(); +} +add_action( 'wp_ajax_zpWidgetMetabox-submit', 'Zotpress_widget_metabox_AJAX_search' ); + + + +// Set relevant admin-level Widget Metabox scripts +function Zotpress_zpWidgetMetabox_scripts_css($hook) +{ + // Turn on/off minified versions if testing/live + $minify = ''; if ( ZOTPRESS_LIVEMODE ) $minify = '.min'; + + if ( in_array( $hook, array('post.php', 'post-new.php') ) ) + { + wp_enqueue_script( 'jquery.livequery.min.js', ZOTPRESS_PLUGIN_URL . 'js/jquery.livequery.min.js', array( 'jquery', 'jquery-ui-core', 'jquery-ui-widget', 'jquery-ui-position', 'jquery-ui-tabs', 'jquery-ui-autocomplete' ) ); + wp_enqueue_script( 'zotpress.widget.metabox'.$minify.'.js', ZOTPRESS_PLUGIN_URL . 'js/zotpress.widget.metabox'.$minify.'.js', array( 'jquery', 'jquery-form', 'json2' ) ); + + wp_localize_script( + 'zotpress.widget.metabox'.$minify.'.js', + 'zpWidgetMetabox', + array( + 'ajaxurl' => admin_url( 'admin-ajax.php' ), + 'zpWidgetMetabox_nonce' => wp_create_nonce( 'zpWidgetMetabox_nonce_val' ), + 'action' => 'zpWidgetMetabox-submit', + 'txt_typetosearch' => __( 'Type to search', 'zotpress' ), + 'txt_pages' => __( 'Page(s)', 'zotpress' ), + 'txt_itemkey' => __( 'Item Key', 'zotpress' ), + 'txt_account' => __( 'Account', 'zotpress' ) + ) + ); + } +} +add_action( 'admin_enqueue_scripts', 'Zotpress_zpWidgetMetabox_scripts_css' ); + + + +/** +* Metabox styles +*/ +function Zotpress_admin_post_styles() +{ + // Turn on/off minified versions if testing/live + $minify = ''; if ( ZOTPRESS_LIVEMODE ) $minify = '.min'; + + wp_register_style('zotpress.metabox'.$minify.'.css', ZOTPRESS_PLUGIN_URL . 'css/zotpress.metabox'.$minify.'.css', array(), rand(111,9999), 'all'); + wp_enqueue_style('zotpress.metabox'.$minify.'.css'); + + wp_enqueue_style('jquery-ui-tabs', ZOTPRESS_PLUGIN_URL . 'css/smoothness/jquery-ui-1.8.11.custom'.$minify.'.css', array(), rand(111,9999), 'all'); +} +add_action('admin_print_styles-post.php', 'Zotpress_admin_post_styles'); +add_action('admin_print_styles-post-new.php', 'Zotpress_admin_post_styles'); + + +?> diff --git a/lib/widget/widget.sidebar.php b/lib/widget/widget.sidebar.php index f930286..8baea62 100644 --- a/lib/widget/widget.sidebar.php +++ b/lib/widget/widget.sidebar.php @@ -1,294 +1,308 @@ __('Display your citations on your sidebar', 'zp-ZotpressSidebarWidget')); - parent::WP_Widget(false, __('Zotpress Widget'), $widget_ops); + $widget_ops = array('description' => __('Display your citations on your sidebar','zotpress')); + parent::__construct(false, __('Zotpress Widget','zotpress'), $widget_ops); } - + function widget( $args, $instance ) { extract( $args ); - + // ARGUMENTS $widget_title = apply_filters('widget_title', $instance['widget_title'] ); - + $api_user_id = $instance['api_user_id']; - $nickname = isset( $instance['nickname'] ) ? $instance['nickname'] : false; - + $author = isset( $instance['author'] ) ? $instance['author'] : false; $year = isset( $instance['year'] ) ? $instance['year'] : false; - + $data_type = isset( $instance['data_type'] ) ? $instance['data_type'] : "items"; $collection_id = isset( $instance['collection_id'] ) ? $instance['collection_id'] : false; $item_key = isset( $instance['item_key'] ) ? $instance['item_key'] : false; $tag_name = isset( $instance['tag_name'] ) ? $instance['tag_name'] : false; - + $style = isset( $instance['style'] ) ? $instance['style'] : "apa"; $limit = isset( $instance['limit'] ) ? $instance['limit'] : "false"; - + $inclusive = isset( $instance['inclusive'] ) ? $instance['inclusive'] : false; $sort = isset( $instance['sort'] ) ? $instance['sort'] : false; $sortby = isset( $instance['sortby'] ) ? $instance['sortby'] : false; - if ($sortby == "default") - $sortby = false; - + if ($sortby == "default") + $sortby = false; + $image = isset( $instance['image'] ) ? $instance['image'] : "no"; $download = isset( $instance['download'] ) ? $instance['download'] : "no"; $title = isset( $instance['zptitle'] ) ? $instance['zptitle'] : "no"; $cite = isset( $instance['zpcite'] ) ? $instance['zpcite'] : "no"; $notes = isset( $instance['zpnotes'] ) ? $instance['zpnotes'] : "no"; - - + + // Required for theme echo $before_widget; - - if ($widget_title) - echo $before_title . $widget_title . $after_title; - - - echo "
    \n\n"; - - $zp_sidebar_shortcode = "[zotpress"; - - if ($api_user_id) { $zp_sidebar_shortcode .= " userid='$api_user_id' "; } - if ($nickname) { $zp_sidebar_shortcode .= " nickname='$nickname' "; } - if ($author) { $zp_sidebar_shortcode .= " author='$author' "; } - if ($year) { $zp_sidebar_shortcode .= " year='$year' "; } - if ($data_type) { $zp_sidebar_shortcode .= " datatype='$data_type' "; } - if ($collection_id) { $zp_sidebar_shortcode .= " collection='$collection_id' "; } - if ($item_key) { $zp_sidebar_shortcode .= " item='$item_key' "; } - if ($tag_name) { $zp_sidebar_shortcode .= " tag='$tag_name' "; } - if ($style) { $zp_sidebar_shortcode .= " style='$style' "; } - if ($limit) { $zp_sidebar_shortcode .= " limit='$limit' "; } - if ($sort) { $zp_sidebar_shortcode .= " order='$sort' "; } - if ($sortby) { $zp_sidebar_shortcode .= " sortby='$sortby' "; } - if ($image) { $zp_sidebar_shortcode .= " showimage='$image' "; } - if ($download) { $zp_sidebar_shortcode .= " download='$download' "; } - if ($title) { $zp_sidebar_shortcode .= " title='$title' "; } - if ($cite) { $zp_sidebar_shortcode .= " cite='$cite' "; } - if ($notes) { $zp_sidebar_shortcode .= " note='$notes' "; } - if ($inclusive) { $zp_sidebar_shortcode .= " inclusive='$inclusive' "; } - - $zp_sidebar_shortcode = trim($zp_sidebar_shortcode) . "]"; - - echo do_shortcode($zp_sidebar_shortcode); - - echo "
    \n\n"; - - + + if ($widget_title) echo $before_title . $widget_title . $after_title; + + + echo "
    \n\n"; + + $zp_sidebar_shortcode = "[zotpress"; + + if ($api_user_id) { $zp_sidebar_shortcode .= " userid='$api_user_id' "; } + if ($author) { $zp_sidebar_shortcode .= " author='$author' "; } + if ($year) { $zp_sidebar_shortcode .= " year='$year' "; } + if ($data_type) { $zp_sidebar_shortcode .= " datatype='$data_type' "; } + if ($collection_id) { $zp_sidebar_shortcode .= " collection='$collection_id' "; } + if ($item_key) { $zp_sidebar_shortcode .= " item='$item_key' "; } + if ($tag_name) { $zp_sidebar_shortcode .= " tag='$tag_name' "; } + if ($style) { $zp_sidebar_shortcode .= " style='$style' "; } + if ($limit) { $zp_sidebar_shortcode .= " limit='$limit' "; } + if ($sort) { $zp_sidebar_shortcode .= " order='$sort' "; } + if ($sortby) { $zp_sidebar_shortcode .= " sortby='$sortby' "; } + if ($image) { $zp_sidebar_shortcode .= " showimage='$image' "; } + if ($download) { $zp_sidebar_shortcode .= " download='$download' "; } + if ($title) { $zp_sidebar_shortcode .= " title='$title' "; } + if ($cite) { $zp_sidebar_shortcode .= " cite='$cite' "; } + if ($notes) { $zp_sidebar_shortcode .= " note='$notes' "; } + if ($inclusive) { $zp_sidebar_shortcode .= " inclusive='$inclusive' "; } + + $zp_sidebar_shortcode = trim($zp_sidebar_shortcode) . "]"; + + echo do_shortcode($zp_sidebar_shortcode); + + echo "
    \n\n"; + + // Required for theme echo $after_widget; } - + + + function update( $new_instance, $old_instance ) { $instance = $old_instance; - + $instance['widget_title'] = strip_tags( $new_instance['widget_title'] ); - + $instance['api_user_id'] = strip_tags( $new_instance['api_user_id'] ); - $instance['nickname'] = strip_tags($new_instance['nickname']); - + $instance['author'] = str_replace(" ", "+", strip_tags($new_instance['author'])); $instance['year'] = str_replace(" ", "+", strip_tags($new_instance['year'])); - + $instance['data_type'] = strip_tags( $new_instance['data_type'] ); $instance['collection_id'] = strip_tags($new_instance['collection_id']); $instance['item_key'] = strip_tags($new_instance['item_key']); $instance['tag_name'] = str_replace(" ", "+", strip_tags($new_instance['tag_name'])); - + $instance['style'] = strip_tags($new_instance['style']); $instance['inclusive'] = strip_tags($new_instance['inclusive']); $instance['sort'] = strip_tags($new_instance['sort']); $instance['sortby'] = strip_tags($new_instance['sortby']); - + $instance['limit'] = strip_tags($new_instance['limit']); - + $instance['image'] = strip_tags($new_instance['image']); $instance['download'] = strip_tags($new_instance['download']); $instance['zptitle'] = strip_tags($new_instance['zptitle']); $instance['zpcite'] = strip_tags($new_instance['zpcite']); $instance['zpnotes'] = strip_tags($new_instance['zpnotes']); - + return $instance; } - + + + function form( $instance ) { - $widget_title = esc_attr( $instance['widget_title'] ); + // Set form defaults + if ( ! isset($instance) || count($instance) == 0) + { + $instance['widget_title'] = ""; + + $instance['author'] = ""; + $instance['year'] = ""; + + $instance['collection_id'] = ""; + $instance['item_key'] = ""; + $instance['tag_name'] = ""; + + $instance['style'] = ""; + $instance['limit'] = ""; + } + ?> - + - -
    - -

    - - -

    - -
    - -

    - Fill in one of the below. Req'd. -

    - -

    - - -

    - -

    - - -

    - -
    - -

    - - -

    - -

    - - -

    - -

    - - -

    - -

    - - -

    - -

    - - -

    - -

    - - -

    - -

    - - -

    - -

    - - -

    - -

    - - -

    - -

    - - -

    - -

    - - -

    - -

    - - -

    - -

    - - -

    - -

    - - -

    - -

    - - -

    - -

    - - -

    - -
    - + +
    + +

    + + +

    + +
    + + 0 ) + if ( isset( $instance['api_user_id'] ) ) + echo zp_get_accounts( false, true, true, $this->get_field_id('api_user_id'), $this->get_field_name('api_user_id'), $instance['api_user_id'] ); + else + echo zp_get_accounts( false, true, true, $this->get_field_id('api_user_id'), $this->get_field_name('api_user_id'), false ); + ?> + +
    + +

    + + +

    + +

    + + +

    + +

    + + +

    + +

    + + +

    + +

    + + +

    + +

    + + +

    + +

    + + +

    + +

    + + +

    + +

    + + +

    + +

    + + +

    + +

    + + +

    + +

    + + +

    + +

    + + +

    + +

    + + +

    + +

    + + +

    + +

    + + +

    + +
    + \ No newline at end of file + +?> diff --git a/lib/widget/widget.tinymce.bib.php b/lib/widget/widget.tinymce.bib.php deleted file mode 100644 index a7f3885..0000000 --- a/lib/widget/widget.tinymce.bib.php +++ /dev/null @@ -1,346 +0,0 @@ - - - - Zotpress Bibliography - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - get_var("SELECT COUNT(*) FROM ".$wpdb->prefix."zotpress;") > 1) { ?> - -
    - get_results( $wpdb->prepare( "SELECT api_user_id, nickname FROM ".$wpdb->prefix."zotpress WHERE api_user_id = '".$zp_default_account."';" ) ); - else - $zp_account = $wpdb->get_results( $wpdb->prepare( "SELECT api_user_id, nickname FROM ".$wpdb->prefix."zotpress LIMIT 1;" ) ); - ?> - api_user_id; ?> - nickname) === false && $zp_account[0]->nickname != "") - $zp_default_account = $zp_account[0]->nickname . " (" . $zp_account[0]->api_user_id . ")"; - - ?> - Searching . Change account? -
    - - - - - -
    - - - -

    - - - - -
    - -

    Options

    - -
    - - - - -
    - - - - -
    - - - - -

    Styles listed here. Examples: apa, chicago-author-date, nature, modern-language-association.

    - -
    - - - - - -
    - -
    - Sort order: -
    - - - - - -
    -
    - -
    - -
    - Show images? -
    - - - - - -
    -
    - -
    - -
    - Show title by year? -
    - - - - - -
    -
    - -
    - -
    - Downloadable? -
    - - - - - -
    -
    - -
    - -
    - Abstract? -
    - - - - - -
    -
    - -
    - -
    - Notes? -
    - - - - - -
    -
    - -
    - -
    - Citable (in RIS format)? -
    - - - - - -
    -
    - -
    - - - - -
    -
    - - -
    - - - - - - - - \ No newline at end of file diff --git a/lib/widget/widget.tinymce.cite.php b/lib/widget/widget.tinymce.cite.php deleted file mode 100644 index db965c9..0000000 --- a/lib/widget/widget.tinymce.cite.php +++ /dev/null @@ -1,263 +0,0 @@ - - - - Zotpress In-Text Citation - - - - - - - - - - - - - - - - - - - - - - - - -
    - - get_var( "SELECT COUNT(id) FROM ".$wpdb->prefix."zotpress;" )) > 1) { ?> - -
    - get_results( $wpdb->prepare( "SELECT api_user_id, nickname FROM ".$wpdb->prefix."zotpress WHERE api_user_id = '".$zp_default_account."';" ) ); - else - $zp_account = $wpdb->get_results( $wpdb->prepare( "SELECT api_user_id, nickname FROM ".$wpdb->prefix."zotpress LIMIT 1;" ) ); - - ?> - api_user_id; ?> - nickname) === false && $zp_account[0]->nickname != "") - $zp_default_account = $zp_account[0]->nickname . " (" . $zp_account[0]->api_user_id . ")"; - - ?> - Searching . Change account? -
    - - - get_var( "SELECT api_user_id FROM ".$wpdb->prefix."zotpress;" ); ?> - - - -
    - - - -

    - - - -
    - -

    Options

    - -
    - - - -

    Use these placeholders: %a% for author, %d% for date, %p% for page, %num% for list number.

    - - - - -
    - - - - -
    - - - - -
    - -
    - - -
    - - - - - - \ No newline at end of file diff --git a/lib/widget/widget.tinymce.list.php b/lib/widget/widget.tinymce.list.php deleted file mode 100644 index 3c0e802..0000000 --- a/lib/widget/widget.tinymce.list.php +++ /dev/null @@ -1,233 +0,0 @@ - - - - Zotpress In-Text Bibliography - - - - - - - - - - - - - - - - - - - - - - - -
    - -

    Options

    - - - -
    - - - - -

    Styles listed here. Examples: apa, chicago-author-date, nature, modern-language-association.

    - -
    - - - - - -
    - -
    - Sort order: -
    - - - - - -
    -
    - -
    - -
    - Show images? -
    - - - - - -
    -
    - -
    - -
    - Show title by year? -
    - - - - - -
    -
    - -
    - -
    - Downloadable? -
    - - - - - -
    -
    - -
    - -
    - Abstract? -
    - - - - - -
    -
    - -
    - -
    - Notes? -
    - - - - - -
    -
    - -
    - -
    - Citable (in RIS format)? -
    - - - - - -
    -
    - -
    -
    - - - - - - \ No newline at end of file diff --git a/readme.txt b/readme.txt index dc609bb..fd61d0c 100644 --- a/readme.txt +++ b/readme.txt @@ -1,69 +1,372 @@ -=== Plugin Name === +=== Zotpress === Contributors: kseaborn Plugin Name: Zotpress Plugin URI: http://katieseaborn.com/plugins/ Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=5HQ8FXAXS9MUQ -Tags: zotero, zotpress, citation manager, citations, citation, cite, citing, bibliography, bibliographies, reference, referencing, references, reference list, reference manager, academic, academia, scholar, scholarly, cv, curriculum vitae, resume, publish, publications +Tags: zotero, zotpress, citation manager, citations, citation, cite, citing, bibliography, bibliographies, reference, referencing, references, reference list, reference manager, academic, academic blogging, academia, scholar, scholarly, scholarly blogging, cv, curriculum vitae, resume, publish, publication, publications Author URI: http://katieseaborn.com/ Author: Katie Seaborn Requires at least: 3.5 -Tested up to: 4.2.2 -Stable tag: 5.5.5 +Tested up to: 6.1.1 +Stable tag: 7.3.3 License: Apache2.0 Zotpress displays your Zotero citations on WordPress. == Description == -[Zotpress](http://katieseaborn.com/plugins/ "Zotpress for WordPress") brings your Zotero library and scholarly blogging to WordPress. [Zotero](http://zotero.org/ "Zotero") is a free, cross-platform reference manager that integrates with your browser and word processor. +[Zotpress](http://katieseaborn.com/plugins/ "Zotpress for WordPress") brings publication broadcasting and scholarly blogging to WordPress through [Zotero](http://zotero.org/ "Zotero"), a free, cross-platform reference manager. = Features = -* Displays your individual and group Zotero items through in-text citations, bibliographies, and searchable libraries -* Supports thumbnail images through WordPress's Featured Image +* Displays your personal and group Zotero items through in-text citations, bibliographies, and searchable libraries +* Supports thumbnail images through WordPress's Media Library and Open Library * Supports selective CSS styling via IDs and classes -* Provides a range of additional features, such as allowing visitors to cite and download citations +* Provides a range of additional features, such as allowing visitors to download citations * And more! -Compatible with Firefox, Safari, Chrome, IE7, IE8, and IE9. Made with jQuery, jQuery UI, jQuery doTimeout, and Live Query. +Compatible with Firefox, Safari, Chrome, and IE9. Made with jQuery, jQuery UI, jQuery doTimeout, Live Query, OAuth, and [Open Library](https://openlibrary.org/ "Open Library"). -Special thanks to Joe Alberts for substantial contributions to the code, comprehensive testing, and design ideation. Thanks also to contributors Christopher Cheung and Jason S. for their development support and advice. Finally, my sincere gratitude goes out to all who have donated in support of this plugin. +Special thanks to Joe Alberts for substantial contributions to the code, comprehensive testing, and design ideation. Thanks also to contributors Christopher Cheung, Jason S., Chris Wentzloff, Karljürgen Feuerherm (@feuerherm), and Mark Dingemanse (@codeispoetry) for their code contributions, testing, and guidance. Finally, my sincere gratitude goes out to all who have donated in support of this plugin. + +Please note that this plugin is on semi-hiatus, with updates expected about 1-3 times a year. = Requirements = jQuery included in your theme (Zotpress will do this for you if it isn't already included), and an HTTP request method supported by WordPress enabled on your server: cURL, fopen with Streams (PHP 5), or fsockopen. In your server config file, X-Frame-Options should be set to SAMEORIGIN. Optional: OAuth enabled on your server. == Installation == -1. Upload the folder `zotpress` to the `/wp-content/plugins/` directory. +1. Install from the `Plugins` page in your WordPress admin panel. Or, download and extract the zip, then manually upload the folder `zotpress` to the `/wp-content/plugins/` directory. 1. Activate the plugin through the 'Plugins' menu in WordPress. -1. Import your Zotero library. -1. In the Browse page, look up the keys of the items, collections or tags you wish to display. Or, use the Zotpress Reference Widget to generate shortcodes. -1. Place the shortcodes in your blog entry or page, or enable the Zotpress sidebar widget. +1. Go to the `Zotpress` page through the admin menu. +1. Add the Zotero API information for each Zotero account you'd like to use. +1. Use the Zotpress Shortcode option in the Gutenberg editor to serach for items and build a shortcode. Or, look up the keys of items, collections, and tags on the `Browse` page. Or, use the Zotpress Reference Meta Box to generate shortcodes. +1. Place the shortcodes in your blog post or page, or enable the Zotpress sidebar widget. Below are a few examples to get you started. Look at the `Help` page for more examples and the full details about all use options and shortcodes. = Shortcode = You can display your Zotero citations in a number of ways. To display a list of five citations from the collection with the key "ZKDTKM3X", use this shortcode: -[zotpress collection="ZKDTKM3X" limit="5"] +> [zotpress collection="ZKDTKM3X" limit="5"] + +You can also use in-text citations as follows: -You can also use in-text citations: +> [zotpressInText item="{U9Z5JTKC,36-45}"] -[zotpressInText item="{U9Z5JTKC,36-45}"] +> [zotpressInTextBib] -This shortcode will display the following in-text citation for the citation with the key "U9Z5JTKC": (Seaborn, 2011, p. 36). The full citation can be displayed in an auto-generated bibliography using the [zotpressInTextBib] shortcode. +The first shortcode will display an in-text citation for an item with the key "U9Z5JTKC", which will look something like this: (Seaborn, 2011, p. 36). The [zotpressInTextBib] will auto-generate a bibliography for all [zotpressInText] shortcodes on the post/page. Check out the "Help" page on your installation of Zotpress for more information and a full listing of parameters for all shortcodes. == Frequently Asked Questions == -The F.A.Q. can be found on the "Help" page of every Zotpress installation. If you have a question that isn't answered there, feel free to post a message in the [forums](http://wordpress.org/tags/zotpress "Zotero forums on Wordpress.com"). +The F.A.Q. can be found on the "Help" page of every Zotpress installation. If you have a question that isn't answered there, feel free to post a message in the [forums](https://wordpress.org/support/plugin/zotpress "Zotpress forums on Wordpress.com"). == Screenshots == -1. Browse your Zotero citations by account, collection or tag. Add custom images to citations. Special characters are supported. -2. Search for items and build bibliography and in-text shortcodes using the "Zotpress Reference" meta box widget. -3. Display your Zotero items on your blog. Write scholarly posts with in-text citations and autogenerated bibliographies. +1. Display items from individual or group Zotero libraries on your WordPress website. Special characters are supported. +2. Search for items and generate shortcodes for bibliographies and in-text citations using the "Zotpress Reference" meta box on edit screens. +3. Find the shortcode builder in the Gutenberg toolbar. Search for items and create bibliographies and in-text citations. +4. Give your citation an image using WordPress's Media Library or Open Library. +5. Share your library through your website. Allow visitors to browse by collection or tag. +6. Allow visitors to search your library by item metadata or tag, or both. == Changelog == += 7.3.3 = + +* Fixed limit attribute issues in PHP 8. + += 7.3.2 = + +* Added support for PHP 8 (tested in PHP 8.0.8), with thanks to K.G. Feuerherm (@kfeuerherm) and Mark Dingemanse (@codeispoetry). + += 7.3.1.2 = + +* Fixed Library "Browse" page account, default account, and subcollection bugs. +* Minor style fixes for Library. + += 7.3.1.1 = + +* Fixed Library collection navigation bug. +* Fixed minor Library style issues. +* Added Library dropdown browsing scroll effect. + += 7.3.1 = + +* New! Show or hide browse bar for Zotpress Library Dropdown. +* Fixed single account library errors. +* Fixed minor issues with thumbnail image. +* Modified Library to allow multiple instances in one page. +* Modified Library pagination styles for modernization. + += 7.3 = + +* New! Target attribute for Zotpress Library. +* Fixed task separation between install and update. +* Fixed caching issue for multiple collections. +* Fixed multipart names and apostrophes. +* Fixed some request errors. +* Fixed mdash/ndash bug. +* Fixed hardcoded paths. +* Added localizable error messages. +* Added error checks when collections or tags are empty. + += 7.2 = + +* New! Added Gutenberg editor toolbar shortcode builder. +* New! Can now retrieve items by itemtype. +* Added disambiguation for in-text citations. +* Added new screenshot. +* Added brackets attribute to in-text shortcode builder/reference. +* Added support for more itemtypes for the title attribute, which should fix incorrect sorting. +* Changed download filename to original filename. +* Fixed shortcode builder bug for order by DESC. +* Fixed non-author types bug for in-text citations. +* Fixed media library set image bug. +* Fixed multisite install/reset bug. +* Fixed highlight-on-scroll issue. +* Updated Help page. +* Minor style and text formatting corrections. + += 7.1.6 = + +* New! Can use the "showtags" attribute with the Library shortcodes. +* Refined "download" attribute to include linked URL downloads. +* Fixed "false" error for author names and the "highlight" attribute. +* Fixed Browse page error when there are no default accounts. +* Optimized for the Twenty Twenty theme. + += 7.1.5 = + +* Fixed bug with shortcodes that use collections and tags. +* Fixed cite/RIS bug. +* Updated notifications to only display if Zotpress accounts exist. +* Updated Account page styles and notifications. +* Several improvements and fixes for Library Dropdown navigation. + += 7.1.4 = + +* Fixed title sort bug with itemtype and date secondary sort. +* Fixed cache bug related to large numbers of tags. +* Fixed Library collection and tag display bugs. +* Refined admin CSS, especially notifications. + += 7.1.3 = + +* Fixed error reporting, esp. for cache. +* Fixed tags with apostrophes error. +* Fixed numbering when multiple posts. +* Fixed title sort bugs. +* Updated icons. + += 7.1.2 = + +* Fixed multi-part last name bug. +* Fixed error feedback-related bug. +* Fixed Zotpress Sidebar widget loading bugs. +* Fixed In-Text Citation separator bug. +* Refined and fixed bugs around sorting/ordering in general. +* Refined In-Text Citation "and" attribute; default returned to ampersand. +* Refined error reporting. +* Refined parameter cleaning of quote characters. + += 7.1.1 = + +* Increased "title" attribute speed and refined its sorting/ordering. +* Fixed Library dropdown version pagination styles. +* Fixed numeric in-text bibliography numbering with cache retrieval. +* Fixed showtags request bug. +* Fixed bibliography "one item" bug. + += 7.1 = + +* New! Now supporting the {api_user_id:item_key,pages} format for in-text citations. +* New! Now displaying cached citations via PHP for SEO purposes. +* New! Can use the "title" attribute to sort by item type. +* New! Can set a "toplevel" collection for the dropdown (default) version of the Library shortcode. +* Several in-text citation bugs fixed. +* Refined request error feedback. +* Refined pagination for the Library display with a scroller. +* Fixed date/numbering issue for american-antiquity style. +* Fixed forcenumber issue for chicago style. +* Fixed several sortby and order issues. + += 7.0.3 = + +* Fixed Sort Order bug. +* More Japanese translations added. +* Account management style updates. + += 7.0.2 = + +* Fixed Cite with RIS bug. +* Fixed activation error. + += 7.0.1 = + +* Started preparing for localization; preliminary Japanese available. +* Fixed single-item error for the In-Text Citation shortcode. +* Fixed note display error for the Bibliography shortcode. +* Fixed download URL error for the Biblography shortcode. + += 7.0 = + +* Introducing new Bibliography shortcode format to support citing items from multiple accounts in one shortcode: {api_user_id:item_key} +* Optimized for WordPress 5 and Gutenberg. +* Reduced the request load (esp. tags) by default. +* In-text numerical citations now support page numbers. +* Fixed date sort for multiple collections filtered by author. +* Fixed forcenumber/s bug. +* Added apostrophe support for tags. +* Minified styles and scripts. +* Updated branding. +* Added search bar for shortcode attributes to Help page. +* Minor style and UI updates to Zotpress Library. +* Removed experimental tinymce code. + += 6.2.4 = + +* Updated shortcode styles and fixed the Search Bar display. +* Updated Zotpress Reset to remove additional options and tables from db. +* Download now looks for import_url as well as import_file. +* Updated the readme and screenshots. + += 6.2.3 = + +* Updated Sidebar Widget constructor. +* Updated Library Shortcode to return rather than echo output. +* Clarified how "showimage" works on the Help page. +* Fixed Library Shortcode display bug for numbered bibliographies. + += 6.2.2 = + +* Fixed notification error for older versions of PHP. + += 6.2.1 = + +* Fixed compression library issue encountered by some users. +* Added notification to clear cache for database update. +* Applied fix for dois that are already hyperlinked. + += 6.2 = + +* Added compression to bring down the size of the cache. +* Fixed logic error around WordPress Media Library images vs. Open Library images. +* Browse page Tags dropdown now accounts for no tags. +* Browse page has clearer loading feedback. +* Browse page collection and item keys are now text inputs to prevent styled text from being copied into the visual editor. +* Now hyperlinking https-based DOI URLs. +* Help page tab links have been fixed. + += 6.1.6 = + +* Fixed wp_remote_retrieve_headers issue (WP core change) that limited total results. +* Removed Google Fonts for quicker admin-side loading. + += 6.1.5 = + +* Fixed author sort in Chrome. +* Fixed urlwrap for chicago-author-date (using ireplace). +* Case applied for author filtering when single field is used instead of double field even though first/last structure exists. + += 6.1.4 = + +* Fixes and extensions made to the "urlwrap" feature for titles, esp. quotes. + += 6.1.3 = + +* Fixed security issue with zp_get_account(). +* New! "style" attribute for searchbar. +* Updated widget account selection and fixed retrieval error. +* Minor image and code style updates. + += 6.1.2 = + +* Applied more cases for URL wrapping. +* Fix for encyclopedia author/editor cases for in-text citations. +* Fix for authors who are also editors for in-text citations. +* Fixed in-text number-based sorting for 50+ items. +* Better in-text error handling. + += 6.1.1 = + +* Applied secondary year sorting for author sort. +* Fixed default ordering for number-based in-text citations. +* Fixed erroneous fix for in-text editors of books. +* Fixed dropdown update bug for collections. +* Migrated Options AJAX to WP AJAX; fixed Default Style option. +* Updated cURL request approach. +* Fixed title wrap issues related to mdashes and quotes in titles. +* Fixed chicago style DOI linking issue. +* Minor style updates. + += 6.1 = + +* Quicker load times through more effective use of cache. +* New! "urlwrap" attribute for wrapping titles and images with the citation URL. +* New! "highlight" attribute for highlighting text in a citation. +* New! Can now use showimage="openlib" to display book covers from the Open Library. +* In-text citations will no longer erroneously display editors. +* Order for In-Text Bib sort fixed. +* Browse navigation for multiple accounts fixed. +* Fixed "target" attribute for in-text bibliography DOI links. +* Now auto-detects https for Google Fonts links. +* Fixed multiple tags unique ID issue. +* Minor style updates. + += 6.0.5 = + +* New way of selecting in-text citations without relying on post IDs as HTML IDs or classes. +* The "items" and "collections" parameters in bib and in-text shortcodes are now flexible around extra spaces. +* Fixed Zotpress In-Text Bibliography non-unique ID issue. +* Fixed parenthesis formatting issue for number-based in-text citations. +* Number-based in-text citations now have bibliographic details on mouse hover. + += 6.0.4 = + +* Re-added item keys on Browse page. +* Set withCredentials attribute to true for AJAX requests. +* Fixed Zotpress Bibliography unique identifier bug. +* Fixed default sorting for in-text citations. +* Fixed in-text format (superscript). +* Re-added bib info as title for non-number-based in-text citation anchors. +* New! Can now use &, + and / with in-text page numbers. + += 6.0.3 = + +* Fixed inclusive="no" bug for tags. +* Fixed pagination for searchbar. +* Fixed non-English characters bug for the Zotpress Reference widget. +* Fixed sidebar widget issues. +* Fixed in-text bug that assumed id rather than class for posts/pages. +* Fixed various in-text formatting bugs. + += 6.0.2 = + +* Fixed multiple terms bug for searchbar. +* Fixed non-English characters bug for searchbar. +* Fixed sortby/order for searchbars. +* Fixed style value "default" bug. +* Pagination for searchbars now hidden on search and no items found. + += 6.0.1 = + +* Fixed "limit" attribute bug for the Zotpress Bibliography Shortcode. +* Fixed single item bug for the Zotpress In-Text Shortcode. + += 6.0 = + +* New! Auto-updating/syncing through realtime data access with cURL and AJAX. +* Now using Zotero API version 3. +* Retired Zotpress Bibliography Shortcode attribute "linkedlist"/"link"; use Zotpress Library Shortcode instead. +* Retired Zotpress Bibliography Shortcode attribute "datatype"; use Zotpress Library Shortcode instead. +* Modified Zotpress Bibliography Shortcode attribute "inclusive"; use with multiple authors only. +* Zotpress Reference widget refined; now uses WP AJAX. +* Fixed "cite" bug for the Library shortcode. +* Shortcode parameter "searchby" for the Library SearchBar is now limited to items and tags. +* Updated deprecated code to WP 4.3 standards. +* Minor bug fixes and updates throughout. + = 5.5.5 = * Bug fix for searchbar filters. @@ -322,30 +625,37 @@ The F.A.Q. can be found on the "Help" page of every Zotpress installation. If yo * Many more additions and bug fixes. Explore and enjoy the new Zotpress! = 4.5.4 = + * Fixed "downloadable" bug. * Updated Help page. = 4.5.3 = + * Styles for metabox tabs added. * In-Text Bibliography fixed (for real this time). = 4.5.2 = + * New! Options page to set blog-wide defaults (more settings coming). * New(ish)! Post-specific style defaults. * In-Text Bibliography display fixed AGAIN! = 4.5.1 = + * In-Text Bibliography display fixed (or, made better). * New! Set default citation style (for all posts, via Zotpress Reference Metabox Widget). = 4.5 = + * New: Shortcode Creator in the Zotpress Reference Metabox Widget. * "Show Image" and "Sort" bugs fixed. = 4.4.1 = + * Security fix! = 4.4 = + * A number of security measures added. * Fixed "Help" page shortcode for in-text citations and private vs. public groups: oops! * The Zotpress shortcode now accepts lists for these parameters: collection, item. @@ -354,6 +664,7 @@ The F.A.Q. can be found on the "Help" page of every Zotpress installation. If yo * Zotpress Reference now working with the latest versions of Chrome and Safari. = 4.3 = + * Introducing "Zotpress InText", a new shortcode that let's you add in-text citations, and then auto-generates a bibliography for you. jQuery must be enabled. Only supports APA style; requests can be made in the forums. Use information can be found in your Zotpress installation's "Help" page. * Recaching and auto-checking for new or updated Zotero data back in action. * The "collection" shortcode parameter now working. @@ -362,80 +673,100 @@ The F.A.Q. can be found on the "Help" page of every Zotpress installation. If yo * Tag shortcode parameter now accepts nonexistent tags. = 4.2.7 = + * Error display error fixed. = 4.2.6 = + * Fixed bullet image issue. = 4.2.5 = + * Fixed sidebar issue: having an author is no longer required. = 4.2.4 = + * Fixed sidebar widget error and display issue. * Added more information to and sorting of citations listed in the Zotpress Reference widget. = 4.2.3 = + * More friendly XML error messages, including ability to (at least try) repeating the Zotero request. * Spite-ified most images for quicker display. * Citation images can now be deleted. = 4.2.2 = + * Bugfix: Typo! = 4.2.1 = + * Bugfix: Limit issue resolved. = 4.2 = + * Bugfix: Styles now working again. * Bugfix: Now only grabbing top level items. * Bugfix: Sidebar widget working again. * Metabox widget refined: Limit removed, account info integrated, and tags and collections alphabetized. = 4.1.1 = + * Bugfix: Can now sort by ASC or DESC order. = 4.1 = + * Bugfixes: Filtering by author and date reinstated. * New: Titles by year. (New parameter: title) = 4.0 = + * Switched method of requesting from jQuery to PHP. Should mean a speed increase (particularly for Firefox users). * Many shortcode parameters have been changed; these parameters are now deprecated: api_user_id (now userid), item_key (now item), tag_name (now tag), data_type (now datatype), collection_id (now collection), download (now downloadable), image (now showimage). * New shortcode parameter "sortby" allows you to sort by "author" (first author) and "date" (publication date). By default, citations are sorted by latest added. = 3.1.3 = + * Temporary fix for web servers that don't support long URLs. Unfortunately no special caching for these folks. New solution in the works. = 3.1.2 = + * Added backwards compatibility measure with respect to the new api_user_id / nickname requirement. * Fixed citation display positioning bugs. * Applied new caching method to sidebar widget. = 3.1.1 = + * Fix: Sidebar widget bug. = 3.1 = + * New way of caching requests. Speed increase for requests that have already been cached. * No more multiple accounts per shortcode. A "user_api_id" or "nickname" must be set. * No more collection titles. You can use the Zotero Reference meta box to find and add this information above collection shortcode calls. = 3.0.4 = + * Fixed display images issue. * Separated out sidebar widget code from main file. = 3.0.3 = + * Groups accounts citation display fixed. = 3.0.2 = + * Meta box fixed in IE and Safari. * Styles fixed in IE and Safari. = 3.0.1 = + * Sidebar widget fixed. * Styles in IE refined. * Conditional OAuth messages implemented. = 3.0 = + * New "Zotpress Reference" widget, meant to speed up the process of adding shortcodes to your posts and pages by allowing you to selectively search for ids directly on the add and edit pages. * OAuth is now supported, which means that you don't have to go out of your way to generate the required private key for your Zotero account anymore (unless your server doesn't support OAuth, of course). * I've changed the way Zotpress's admin splash page loads. Before, the page would hang until finished loading the latest citations from Zotero. This is a friendlier way of letting you know what Zotpress is up to. @@ -445,42 +776,52 @@ The F.A.Q. can be found on the "Help" page of every Zotpress installation. If yo * Improved handling of multiple Zotpress shortcode calls on a single page. * Code reduced and refined plugin-wide, which should equal an overall performance improvement. * "Order" parameter no longer available, at least for now; see http://www.zotero.org/support/dev/server_api -* "Forcing cURL" option abandoned. If your server supports it, cURL will be used; otherwise, Zotpress will resort to file_get_contents(). +* "Forcing cURL" option abandoned. If your server supports it, cURL will be used; otherwise, Zotpress will resort to file_get_contents(). = 2.6.1 = + * Can now give group accounts a public key. * Downloads can now be accessed by anyone (assuming you've enabled downloading). = 2.6 = + * Important: Reduced multiple instantiations of JavaScript. * Download option added to Widget. * Proper download links for PDFs implemented. = 2.5.2 = + * Fixed image display for author/year citations. = 2.5.1 = + * Fixed single citation display bug. = 2.5 = + * Re-wrote display code. * Tidied up JavaScript. * Fixed update table code. = 2.4 = + * Can now display by year. * New option to display download links, should they be available. = 2.3 = + * Fixed Group "invalid key" error. = 2.2 = + * Fixed CURLOPT_FOLLOWLOCATION error. = 2.1 = + * Now cURL-friendly again. = 2.0 = + * Zotpress completely restructured. * Most requests now made through PHP. Shortcode requests made through PHP/jQuery combo for user-friendliness on the front-end. * Cross-user caching implemented. Updates request data every 10 minutes and only if request made. @@ -488,202 +829,39 @@ The F.A.Q. can be found on the "Help" page of every Zotpress installation. If yo * Can now filter by Tag in admin. = 1.6 = + * Critical request method issue fixed. = 1.5 = + * Groups citation style issue fixed. = 1.4 = + * Caching enabled, which should speed things up a bit. = 1.3 = + * Added cURL, which is (maybe?) quicker, (definitely?) safer, and (more likely to be?) supported. Requests default to cURL first now. = 1.2 = + * Optimized JavaScript functions. Fixed some grammatical errors on the Help page. More selective loading of JavaScript. And most importantly ... added a Zotpress widget option. This also means you can have more than one Zotpress call on a single page. = 1.1 = + * Fixed up the readme.txt. Added a friendly redirect for new users. Made IE8-compliant. Moved some JS calls to footer. Now selectively loads some JS. Made tags and collections into lists for easier formatting. = 1.0 = + * Zotpress makes its debut. == Upgrade Notice == -= 1.2 = -Lots of little issues fixed. Plus, you can now use a Zotpress widget instead of shortcode. - -= 1.3 = -Implemented cURL, which should help those having read/write issues on their server. - -= 1.4 = -Speed increase with newly added caching feature. - -= 1.5 = -Important: Groups citation style issue fixed. - -= 1.6 = -Critical request method issue fixed. - -= 2.0 = -Zotpress overhaul. Security and performance increases. - -= 2.1 = -Now cURL-friendly again. - -= 2.2 = -Fixed CURLOPT_FOLLOWLOCATION error. += 7.3.2 = -= 2.3 = -Fixed Group "invalid key" error. +Updated to work with PHP 8. -= 2.4 = -Can now display by year. Option to display download links. - -= 2.5 = -Re-wrote display code and tidied up JavaScript. Fixed update table code. - -= 2.5.1 = -Fixed single citation display bug. - -= 2.6 = -Important: JavaScript reductions; download option added to Widget; proper PDF download links. - -= 2.6.1 = -Downloads can now be accessed by anyone. - -= 3.0 = -Major release! OAuth, convenient "Zotpress Reference" meta box, friendly lag handling, numerous bug fixes, and more! - -= 3.1 = -Speed increase and a new way of caching. No more multiple accounts per shortcode. No more auto-display of collection title. - -= 4.0 = -Requests now processed by PHP instead of jQuery. Shortcode parameters re-envisioned (but backwards-compatible). Can now sort by author and date. - -= 4.1 = -Bugfixes: Filtering by year and author reinstated. New: Titles for year. - -= 4.2 = -Bugfixes and metabox widget refinements. - -= 4.3 = -Zotpress InText and various fixes. - -= 4.4 = -Security measures added. Fixed "Help" page info. Zotpress shortcode now accepts lists for these parameters: collection, item. Notes can now be shown. Zotpress Reference on custom post type writing/editing pages and working with the latest versions of Chrome and Safari. - -= 4.5 = -Shortcode Creator. "Show Image" and "Sort" bugs fixed. - -= 4.6 = -* New! Context menu (aka right-click menu) insert citation function for CKEditor-enabled blogs. - -= 5.0 = -* Fixed for Wordpress 3.5! Many new and improved features. - -= 5.01 = - -* Critical patch for case-sensitive tables and import functionality. - -= 5.02 = - -* Fixed display of styles with numbered lists, e.g. IEEE, nature, etc. -* Fixed critical in-text citation bug when multiple accounts are synced. -* Long URLs in citations will now wrap. - -= 5.0.3 = - -* Fixed import and sync for large libraries. -* Removed autoupdate feature. Please use the sync feature for the time being. -* Fixed metabox widget error. -* Minor bug fixes. - -= 5.0.4 = - -* Fixed table install, update and uninstall issues. -* New import and sync scripts for large libraries. -* Zotpress admin now accessible to Editors. -* Styles updated and Help page shortcode documentation redesigned. - -= 5.0.5 = - -* New! Can now display abstracts using the "abstract" parameter. -* Blank author fields now filled with other author (e.g. editor) information. -* Added support for %num% formatting option (in-text). -* Fixed front-end style update script for large (50+) items. -* Fixed "datatype" filtering error. -* Fixed typos in the Help page. -* Added default account constraint to Zotpress Reference results. - -= 5.0.6 = - -* Fixed incompatibility bugs with jQuery UI; some style updates, too. -* Fixed "abstract" attribute bug. -* Fixed in-text %num% numbering bug. -* In-text shortcodes are now unique to posts. -* Fixed hyperlink bug for special characters. -* Fixed search when no default account set. -* New! In-text citations are now hyperlinked to the generated bibliography. - -= 5.0.7 = - -* New! Import script now uses WordPress functionality for improved compatibility. -* New! "Link" attribute for tag and collection lists. -* Updated help page to include how to use in-text brackets. -* In-text format updates, including new "etal" attribute. -* URLs are now converted two-ways to account for prior encoding. -* Updated styles for a more consistent look. - -= 5.0.8 = - -* New! Import functionality check added. -* New! Reset Zotpress feature on Options page. -* New! Added security measures to prevent direct access. -* New! Import items, collections and tags separately. -* Updated import script; sessions removed. -* Fixed minor shortcode bugs. -* Removed extraneous code. -* Minor style updates. - -= 5.0.9 = - -* Fixed incorrect abstracts issue. -* Fixed "years", "authors" and "nick" shortcode attributes. -* Help information for finding Group IDs has been updated. -* Lowercase style names enforced. - -= 5.0.10 = - -* Fixed display issue for multiple in-text citations per shortcode. -* Updated the Help/FAQ page. -* Restructured request class and enforced Zotoro API Version 1. -* Fixed style update errors related to undefined variables. -* Added "citeable" as an alternate for the "cite" attribute. - -= 5.3 = - -* New "brackets" in-text citation shortcode attribute. -* Re-structured import and admin scripts. -* Expanded in-text formatting. -* Added submenu to admin sidebar. -* Added ability to set default accounts on Browse and Accounts and selectively import on Browse. -* Applied fix for array_multisort warning. -* Minor style updates throughout. - -= 5.4 = - -* New! "zotpressLib" shortcode for displaying your library on the front-end of your website. -* Fixed "set image" bug for single-account setups. -* Fixed "remove image" bug. -* Optimized nested collections display. -* Optimized notes with display for single notes and anchors. - -= 5.4.1 = - -* Fixed display bug for single libraries on Browse page. -* Set nonce lifetime to 12 hours. - -= 5.4.2 = += 6.2.4 = -* Fixed code-breaking error that occurred for some users. \ No newline at end of file +Updates what kinds of metadata the "download" feature will look for and what's removed from the database on reset. Minor style updates. diff --git a/screenshot-1.jpg b/screenshot-1.jpg index 0234bc357035bc7791b04e34467fcf6e2debe953..e8ddfa7a39a9712f2fc6432df0cbe26b64843671 100644 GIT binary patch literal 238618 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 -D8K@pbV~jE*!S<8V3_=hd&6_H<4(mLD}M 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

    &P96%>Us2S@qSghrGE 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

    r@HxQ~&y*`*CtRM)T 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 J2yLYb<^;9ro4#o59F^c&Jm@s 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 literal 56626 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 WDRLh5Usz}V2DJaL`Uvs9^4|d7xdM3r diff --git a/screenshot-2.jpg b/screenshot-2.jpg index 7581f407d1600523d17cf7b0b0e095e38991e5bc..b00399b91ea87693f4af75af6dee27bb97e02ff8 100644 GIT binary patch literal 156871 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 uT>1ulQ^N0-@Ld`{P?-z3+|Y3j(4`tbYPC2Hmd! literal 69092 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

    s^mLH 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