diff --git a/assets/css/admin-icon.css b/assets/css/admin-icon.css
index 57dfbd4..94c4607 100644
--- a/assets/css/admin-icon.css
+++ b/assets/css/admin-icon.css
@@ -1,9 +1,11 @@
.dashicons-sermon-manager:before {
- font-family: "SermonManager";
- content: "\e900"; }
+ font-family: "SermonManager";
+ content: "\e900";
+}
@font-face {
- font-family: SermonManager;
- src: url(../fonts/Sermon-Manager.ttf); }
+ font-family: SermonManager;
+ src: url(../fonts/Sermon-Manager.ttf);
+}
/*# sourceMappingURL=admin-icon.css.map */
diff --git a/assets/css/admin-icon.css.map b/assets/css/admin-icon.css.map
index 4fa13d9..0750a7d 100644
--- a/assets/css/admin-icon.css.map
+++ b/assets/css/admin-icon.css.map
@@ -1,7 +1,9 @@
{
-"version": 3,
-"mappings": "AAAA,gCAAiC;EAC/B,WAAW,EAAE,eAAe;EAC5B,OAAO,EAAE,OAAO;;AAGlB,UAGC;EAFC,WAAW,EAAE,aAAa;EAC1B,GAAG,EAAE,gCAAgC",
-"sources": ["admin-icon.scss"],
-"names": [],
-"file": "admin-icon.css"
+ "version": 3,
+ "mappings": "AAAA,gCAAiC;EAC/B,WAAW,EAAE,eAAe;EAC5B,OAAO,EAAE,OAAO;;AAGlB,UAGC;EAFC,WAAW,EAAE,aAAa;EAC1B,GAAG,EAAE,gCAAgC",
+ "sources": [
+ "admin-icon.scss"
+ ],
+ "names": [],
+ "file": "admin-icon.css"
}
\ No newline at end of file
diff --git a/assets/css/admin.css b/assets/css/admin.css
new file mode 100644
index 0000000..a3ef80f
--- /dev/null
+++ b/assets/css/admin.css
@@ -0,0 +1,122 @@
+body.edit-php.post-type-wpfc_sermon .fixed .column-preacher, body.edit-php.post-type-wpfc_sermon .fixed .column-preached {
+ width: 10%; }
+body.edit-php.post-type-wpfc_sermon .fixed .column-series, body.edit-php.post-type-wpfc_sermon .fixed .column-topics {
+ width: 15%; }
+body.edit-php.post-type-wpfc_sermon .fixed .column-views {
+ width: 7%; }
+
+body.wpfc_sermon_page_sm-settings .wp-heading-inline {
+ margin-bottom: 5px; }
+body.wpfc_sermon_page_sm-settings .settings-main {
+ display: flex;
+ margin-top: 5px; }
+body.wpfc_sermon_page_sm-settings .settings-content {
+ width: 100%; }
+ body.wpfc_sermon_page_sm-settings .settings-content #mainform {
+ border: 1px solid #e8e8e8; }
+ body.wpfc_sermon_page_sm-settings .settings-content span.description {
+ display: block;
+ margin-top: 5px; }
+ body.wpfc_sermon_page_sm-settings .settings-content input[type=text], body.wpfc_sermon_page_sm-settings .settings-content input[type=email] {
+ width: 100%;
+ max-width: 400px; }
+ body.wpfc_sermon_page_sm-settings .settings-content .sm-nav-tab-wrapper {
+ background: white;
+ padding: 0;
+ border-bottom: 1px solid #e8e8e8; }
+ body.wpfc_sermon_page_sm-settings .settings-content .sm-nav-tab-wrapper .nav-tab {
+ float: none;
+ border: none;
+ margin: 0;
+ padding: 20px 20px;
+ display: inline-block;
+ background: none;
+ font-weight: normal;
+ color: #666;
+ font-size: 13px; }
+ body.wpfc_sermon_page_sm-settings .settings-content .sm-nav-tab-wrapper .nav-tab:hover, body.wpfc_sermon_page_sm-settings .settings-content .sm-nav-tab-wrapper .nav-tab:active, body.wpfc_sermon_page_sm-settings .settings-content .sm-nav-tab-wrapper .nav-tab:focus {
+ border-bottom: 2px solid #ccc;
+ outline: none;
+ box-shadow: none; }
+ body.wpfc_sermon_page_sm-settings .settings-content .sm-nav-tab-wrapper .nav-tab-active, body.wpfc_sermon_page_sm-settings .settings-content .sm-nav-tab-wrapper .nav-tab-active:focus, body.wpfc_sermon_page_sm-settings .settings-content .sm-nav-tab-wrapper .nav-tab-active:focus:active, body.wpfc_sermon_page_sm-settings .settings-content .sm-nav-tab-wrapper .nav-tab-active:hover {
+ border-bottom: 2px solid #4abcf0; }
+ body.wpfc_sermon_page_sm-settings .settings-content .inside {
+ padding: .2rem 1rem .01rem 1rem;
+ background: white; }
+body.wpfc_sermon_page_sm-settings .settings-side {
+ width: 30%;
+ max-width: 300px;
+ margin-left: 1rem; }
+ body.wpfc_sermon_page_sm-settings .settings-side .sm-box h3 {
+ margin-left: .8rem; }
+ body.wpfc_sermon_page_sm-settings .settings-side .sm-box .description {
+ text-align: center;
+ font-size: 0.85em;
+ padding: 0.4rem 0 0; }
+ body.wpfc_sermon_page_sm-settings .settings-side .sm-box ol {
+ list-style-type: circle; }
+
+body.wpfc_sermon_page_sm-import-export .wp-list-table {
+ overflow: hidden;
+ height: 100%; }
+body.wpfc_sermon_page_sm-import-export .plugin-card {
+ position: relative; }
+ body.wpfc_sermon_page_sm-import-export .plugin-card > h2 {
+ position: absolute;
+ left: 50%;
+ top: 50%;
+ transform: translate(-50%, -50%);
+ z-index: 1;
+ color: #4a4a4a !important;
+ margin: 0;
+ font-size: 1.7rem;
+ font-weight: 100;
+ letter-spacing: 2px;
+ font-family: 'Roboto', sans-serif;
+ text-transform: uppercase;
+ opacity: 0;
+ transition: opacity .2s;
+ cursor: default; }
+ body.wpfc_sermon_page_sm-import-export .plugin-card.not-available:before {
+ content: "";
+ background: repeating-linear-gradient(45deg, rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.05) 10px, rgba(0, 0, 0, 0.1) 10px, rgba(0, 0, 0, 0.1) 20px);
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ left: 0;
+ top: 0;
+ z-index: 1; }
+ body.wpfc_sermon_page_sm-import-export .plugin-card.not-available:hover > h2 {
+ opacity: 1; }
+ body.wpfc_sermon_page_sm-import-export .plugin-card.not-available:hover .plugin-card-top {
+ -webkit-filter: blur(1px);
+ filter: blur(1px); }
+ body.wpfc_sermon_page_sm-import-export .plugin-card.not-available * {
+ color: #ccc; }
+ body.wpfc_sermon_page_sm-import-export .plugin-card.not-available .plugin-icon {
+ filter: opacity(0.2); }
+ body.wpfc_sermon_page_sm-import-export .plugin-card .plugin-card-top {
+ padding: 0; }
+ body.wpfc_sermon_page_sm-import-export .plugin-card .plugin-card-top:hover .import-note {
+ display: block; }
+ body.wpfc_sermon_page_sm-import-export .plugin-card .plugin-card-top .import-note {
+ display: none;
+ color: rgba(0, 0, 0, 0.5); }
+ body.wpfc_sermon_page_sm-import-export .plugin-card .plugin-card-top .name {
+ margin-top: 20px; }
+ body.wpfc_sermon_page_sm-import-export .plugin-card .plugin-card-top .desc, body.wpfc_sermon_page_sm-import-export .plugin-card .plugin-card-top .name {
+ margin-left: 185px; }
+ body.wpfc_sermon_page_sm-import-export .plugin-card .plugin-card-top .action-links {
+ top: 0; }
+ body.wpfc_sermon_page_sm-import-export .plugin-card .plugin-card-top .plugin-icon {
+ font-size: 5rem;
+ color: #656565;
+ left: 0;
+ top: 0;
+ height: 168px;
+ width: 168px;
+ margin: -20px 20px 0 0; }
+ body.wpfc_sermon_page_sm-import-export .plugin-card .plugin-card-top .plugin-icon.dashicons {
+ margin-top: 1rem; }
+
+/*# sourceMappingURL=admin.css.map */
diff --git a/assets/css/admin.css.map b/assets/css/admin.css.map
new file mode 100644
index 0000000..2b0dc6e
--- /dev/null
+++ b/assets/css/admin.css.map
@@ -0,0 +1,7 @@
+{
+"version": 3,
+"mappings": "AACE,wHAAmC;EACjC,KAAK,EAAE,GAAG;AAGZ,oHAA+B;EAC7B,KAAK,EAAE,GAAG;AAGZ,wDAAc;EACZ,KAAK,EAAE,EAAE;;ACVb,oDAAmB;EACjB,aAAa,EAAE,GAAG;AAGpB,gDAAe;EACb,OAAO,EAAE,IAAI;EACb,UAAU,EAAE,GAAG;AAGjB,mDAAkB;EAChB,KAAK,EAAE,IAAI;EAEX,6DAAU;IACR,MAAM,EAAE,iBAAiB;EAG3B,oEAAiB;IACf,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,GAAG;EAGjB,2IAAoC;IAClC,KAAK,EAAE,IAAI;IACX,SAAS,EAAE,KAAK;EAGlB,uEAAoB;IAClB,UAAU,EAAE,KAAK;IACjB,OAAO,EAAE,CAAC;IACV,aAAa,EAAE,iBAAiB;IAEhC,gFAAS;MACP,KAAK,EAAE,IAAI;MACX,MAAM,EAAE,IAAI;MACZ,MAAM,EAAE,CAAC;MACT,OAAO,EAAE,SAAS;MAClB,OAAO,EAAE,YAAY;MACrB,UAAU,EAAE,IAAI;MAChB,WAAW,EAAE,MAAM;MACnB,KAAK,EAAE,IAAI;MACX,SAAS,EAAE,IAAI;MAEf,uQAA2B;QACzB,aAAa,EAAE,cAAc;QAC7B,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,IAAI;IAIpB,2XAA4F;MAC1F,aAAa,EAAE,iBAAiB;EAIpC,2DAAQ;IACN,OAAO,EAAE,sBAAsB;IAC/B,UAAU,EAAE,KAAK;AAIrB,gDAAe;EACb,KAAK,EAAE,GAAG;EACV,SAAS,EAAE,KAAK;EAChB,WAAW,EAAE,IAAI;EAGf,2DAAG;IACD,WAAW,EAAE,KAAK;EAGpB,qEAAa;IACX,UAAU,EAAE,MAAM;IAClB,SAAS,EAAE,MAAM;IACjB,OAAO,EAAE,UACX;EAEA,2DAAG;IACD,eAAe,EAAE,MAAM;;AC7E7B,qDAAe;EACb,QAAQ,EAAE,MAAM;EAChB,MAAM,EAAE,IAAI;AAGd,mDAAa;EACX,QAAQ,EAAE,QAAQ;EAElB,wDAAK;IACH,QAAQ,EAAE,QAAQ;IAClB,IAAI,EAAE,GAAG;IACT,GAAG,EAAE,GAAG;IACR,SAAS,EAAE,qBAAqB;IAChC,OAAO,EAAE,CAAC;IACV,KAAK,EAAE,kBAAkB;IACzB,MAAM,EAAE,CAAC;IACT,SAAS,EAAE,MAAM;IACjB,WAAW,EAAE,GAAG;IAChB,cAAc,EAAE,GAAG;IACnB,WAAW,EAAE,oBAAoB;IACjC,cAAc,EAAE,SAAS;IACzB,OAAO,EAAE,CAAC;IACV,UAAU,EAAE,WAAW;IACvB,MAAM,EAAE,OAAO;EAIf,wEAAS;IACP,OAAO,EAAE,EAAE;IACX,UAAU,EAAE,iIAAiI;IAC7I,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,QAAQ,EAAE,QAAQ;IAClB,IAAI,EAAE,CAAC;IACP,GAAG,EAAE,CAAC;IACN,OAAO,EAAE,CAAC;EAIV,4EAAK;IACH,OAAO,EAAE,CAAC;EAGZ,wFAAiB;IACf,cAAc,EAAE,SAAS;IACzB,MAAM,EAAE,SAAS;EAIrB,mEAAE;IACA,KAAK,EAAE,IAAI;EAGb,8EAAa;IACX,MAAM,EAAE,YAAY;EAIxB,oEAAiB;IACf,OAAO,EAAE,CAAC;IAEV,uFAAqB;MACnB,OAAO,EAAE,KAAK;IAGhB,iFAAa;MACX,OAAO,EAAE,IAAI;MACb,KAAK,EAAE,kBAAkB;IAG3B,0EAAM;MACJ,UAAU,EAAE,IAAI;IAGlB,sJAAa;MACX,WAAW,EAAE,KAAK;IAGpB,kFAAc;MACZ,GAAG,EAAE,CAAC;IAGR,iFAAa;MACX,SAAS,EAAE,IAAI;MACf,KAAK,EAAE,OAAO;MACd,IAAI,EAAE,CAAC;MACP,GAAG,EAAE,CAAC;MACN,MAAM,EAAE,KAAK;MACb,KAAK,EAAE,KAAK;MACZ,MAAM,EAAE,cAAc;MAEtB,2FAAY;QACV,UAAU,EAAE,IAAI",
+"sources": ["all-sermons.scss","settings.scss","import-export.scss"],
+"names": [],
+"file": "admin.css"
+}
\ No newline at end of file
diff --git a/assets/css/admin.scss b/assets/css/admin.scss
new file mode 100644
index 0000000..68df6f4
--- /dev/null
+++ b/assets/css/admin.scss
@@ -0,0 +1,14 @@
+// all sermons page
+body.edit-php.post-type-wpfc_sermon {
+ @import 'all-sermons';
+}
+
+// settings page
+body.wpfc_sermon_page_sm-settings {
+ @import 'settings';
+}
+
+// import export page
+body.wpfc_sermon_page_sm-import-export {
+ @import 'import-export';
+}
\ No newline at end of file
diff --git a/assets/css/all-sermons.css b/assets/css/all-sermons.css
new file mode 100644
index 0000000..b784737
--- /dev/null
+++ b/assets/css/all-sermons.css
@@ -0,0 +1,8 @@
+.fixed .column-preacher, .fixed .column-preached {
+ width: 10%; }
+.fixed .column-series, .fixed .column-topics {
+ width: 15%; }
+.fixed .column-views {
+ width: 7%; }
+
+/*# sourceMappingURL=all-sermons.css.map */
diff --git a/assets/css/all-sermons.css.map b/assets/css/all-sermons.css.map
new file mode 100644
index 0000000..c3345b9
--- /dev/null
+++ b/assets/css/all-sermons.css.map
@@ -0,0 +1,7 @@
+{
+"version": 3,
+"mappings": "AACE,gDAAmC;EACjC,KAAK,EAAE,GAAG;AAGZ,4CAA+B;EAC7B,KAAK,EAAE,GAAG;AAGZ,oBAAc;EACZ,KAAK,EAAE,EAAE",
+"sources": ["all-sermons.scss"],
+"names": [],
+"file": "all-sermons.css"
+}
\ No newline at end of file
diff --git a/assets/css/all-sermons.scss b/assets/css/all-sermons.scss
new file mode 100644
index 0000000..77279ed
--- /dev/null
+++ b/assets/css/all-sermons.scss
@@ -0,0 +1,13 @@
+.fixed {
+ .column-preacher, .column-preached {
+ width: 10%;
+ }
+
+ .column-series, .column-topics {
+ width: 15%;
+ }
+
+ .column-views {
+ width: 7%;
+ }
+}
\ No newline at end of file
diff --git a/assets/css/error-recovery.css b/assets/css/error-recovery.css
index a0e0508..3bee22a 100644
--- a/assets/css/error-recovery.css
+++ b/assets/css/error-recovery.css
@@ -1,112 +1,137 @@
#sm-fatal-error-notice.loading {
- position: relative; }
- #sm-fatal-error-notice.loading #sm-curtain {
+ position: relative;
+}
+
+#sm-fatal-error-notice.loading #sm-curtain {
width: 100%;
height: 100%;
background: #ffffff;
- opacity: .7; }
- #sm-fatal-error-notice.loading #sm-spinner {
- opacity: 1; }
+ opacity: .7;
+}
+
+#sm-fatal-error-notice.loading #sm-spinner {
+ opacity: 1;
+}
#sm-curtain {
- position: absolute;
- top: 0;
- left: 0;
- opacity: 0;
- background: transparent;
- transition: opacity .5s; }
- #sm-curtain.dialog {
+ position: absolute;
+ top: 0;
+ left: 0;
+ opacity: 0;
+ background: transparent;
+ transition: opacity .5s;
+}
+
+#sm-curtain.dialog {
transition: none;
position: fixed;
z-index: 99999;
background: #fff;
opacity: .8;
width: 100%;
- height: 100%; }
+ height: 100%;
+}
#sm-spinner {
- z-index: 10;
- position: absolute;
- top: 50%;
- transform: translate(-50%, -50%);
- left: 50%;
- opacity: 0;
- transition: opacity 1s; }
+ z-index: 10;
+ position: absolute;
+ top: 50%;
+ transform: translate(-50%, -50%);
+ left: 50%;
+ opacity: 0;
+ transition: opacity 1s;
+}
#sm-disable-recovery-notice {
- color: #e29300; }
- #sm-disable-recovery-notice > a {
- color: #a26300; }
+ color: #e29300;
+}
+
+#sm-disable-recovery-notice > a {
+ color: #a26300;
+}
#sm-error {
- background-color: #01354e;
- color: #ffffff;
- padding: .5rem; }
+ background-color: #01354e;
+ color: #ffffff;
+ padding: .5rem;
+}
.ui-dialog {
- box-shadow: 0 -2px 25px 0 rgba(0, 0, 0, 0.15), 0 13px 25px 0 rgba(0, 0, 0, 0.3);
- background-color: #FFFFFF;
- margin: 0 auto;
- width: auto;
- height: auto;
- border-radius: 2px 2px 0 0;
- padding: 21px 24px 12px;
- z-index: 100000; }
+ box-shadow: 0 -2px 25px 0 rgba(0, 0, 0, 0.15), 0 13px 25px 0 rgba(0, 0, 0, 0.3);
+ background-color: #FFFFFF;
+ margin: 0 auto;
+ width: auto;
+ height: auto;
+ border-radius: 2px 2px 0 0;
+ padding: 21px 24px 12px;
+ z-index: 100000;
+}
.ui-dialog-titlebar {
- font-family: 'Roboto', sans-serif;
- font-weight: 500;
- font-size: 20px;
- color: rgba(0, 0, 0, 0.8);
- line-height: 24px;
- text-align: left;
- letter-spacing: 0.03px; }
+ font-family: 'Roboto', sans-serif;
+ font-weight: 500;
+ font-size: 20px;
+ color: rgba(0, 0, 0, 0.8);
+ line-height: 24px;
+ text-align: left;
+ letter-spacing: 0.03px;
+}
.ui-dialog-content {
- font-size: 13px;
- color: rgba(0, 0, 0, 0.5);
- line-height: 24px;
- text-align: left;
- letter-spacing: 0.03px;
- padding: 14px 0 0; }
- .ui-dialog-content textarea, .ui-dialog-content input[type="email"] {
- width: 100%; }
+ font-size: 13px;
+ color: rgba(0, 0, 0, 0.5);
+ line-height: 24px;
+ text-align: left;
+ letter-spacing: 0.03px;
+ padding: 14px 0 0;
+}
+
+.ui-dialog-content textarea, .ui-dialog-content input[type="email"] {
+ width: 100%;
+}
.ui-dialog-titlebar-close {
- display: none; }
+ display: none;
+}
.ui-dialog-buttonpane {
- width: auto;
- height: 48px;
- background-color: #FFFFFF;
- text-align: right;
- border-radius: 0 0 2px 2px;
- padding: 8px 0 0 16px; }
+ width: auto;
+ height: 48px;
+ background-color: #FFFFFF;
+ text-align: right;
+ border-radius: 0 0 2px 2px;
+ padding: 8px 0 0 16px;
+}
.ui-dialog-buttonset > button {
- display: inline-block;
- height: 36px;
- background-color: rgba(9, 9, 9, 0);
- font-weight: 500;
- font-size: 16px;
- color: rgba(33, 150, 243, 0.9);
- line-height: 36px;
- text-align: center;
- letter-spacing: 0.4px;
- padding: 0 8px;
- margin: 6px 4px;
- text-transform: uppercase;
- outline: none;
- border: none;
- cursor: pointer;
- transition: all 0.2s ease; }
- .ui-dialog-buttonset > button:last-child {
- margin-right: 0; }
+ display: inline-block;
+ height: 36px;
+ background-color: rgba(9, 9, 9, 0);
+ font-weight: 500;
+ font-size: 16px;
+ color: rgba(33, 150, 243, 0.9);
+ line-height: 36px;
+ text-align: center;
+ letter-spacing: 0.4px;
+ padding: 0 8px;
+ margin: 6px 4px;
+ text-transform: uppercase;
+ outline: none;
+ border: none;
+ cursor: pointer;
+ transition: all 0.2s ease;
+}
+
+.ui-dialog-buttonset > button:last-child {
+ margin-right: 0;
+}
.ui-dialog-buttonset > button:hover {
- background-color: rgba(99, 99, 99, 0.2); }
+ background-color: rgba(99, 99, 99, 0.2);
+}
.ui-dialog-buttonset > button:active {
- background-color: rgba(99, 99, 99, 0.4); }
+ background-color: rgba(99, 99, 99, 0.4);
+}
/*# sourceMappingURL=error-recovery.css.map */
diff --git a/assets/css/error-recovery.css.map b/assets/css/error-recovery.css.map
index d2b0bb1..76e881f 100644
--- a/assets/css/error-recovery.css.map
+++ b/assets/css/error-recovery.css.map
@@ -1,7 +1,9 @@
{
-"version": 3,
-"mappings": "AAAA,8BAA+B;EAC7B,QAAQ,EAAE,QAAQ;EAElB,0CAAY;IACV,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,UAAU,EAAE,OAAO;IACnB,OAAO,EAAE,EAAE;EAGb,0CAAY;IACV,OAAO,EAAE,CAAC;;AAId,WAAY;EACV,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,CAAC;EACN,IAAI,EAAE,CAAC;EACP,OAAO,EAAE,CAAC;EACV,UAAU,EAAE,WAAW;EACvB,UAAU,EAAE,WAAW;EAEvB,kBAAS;IACP,UAAU,EAAE,IAAI;IAChB,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE,EAAE;IACX,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;;AAIhB,WAAY;EACV,OAAO,EAAE,EAAE;EACX,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,GAAG;EACR,SAAS,EAAE,qBAAqB;EAChC,IAAI,EAAE,GAAG;EACT,OAAO,EAAE,CAAC;EACV,UAAU,EAAE,UAAU;;AAGxB,2BAA4B;EAC1B,KAAK,EAAE,OAAO;EAEd,+BAAI;IACF,KAAK,EAAE,OAAO;;AAIlB,SAAU;EACR,gBAAgB,EAAE,OAAO;EACzB,KAAK,EAAE,OAAO;EACd,OAAO,EAAE,KAAK;;AAGhB,UAAW;EACT,UAAU,EAAE,mEAAmE;EAC/E,gBAAgB,EAAE,OAAO;EACzB,MAAM,EAAE,MAAM;EACd,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,aAAa,EAAE,WAAW;EAC1B,OAAO,EAAE,cAAc;EACvB,OAAO,EAAE,MAAM;;AAGjB,mBAAoB;EAClB,WAAW,EAAE,oBAAoB;EACjC,WAAW,EAAE,GAAG;EAChB,SAAS,EAAE,IAAI;EACf,KAAK,EAAE,kBAAiB;EACxB,WAAW,EAAE,IAAI;EACjB,UAAU,EAAE,IAAI;EAChB,cAAc,EAAE,MAAM;;AAGxB,kBAAmB;EACjB,SAAS,EAAE,IAAI;EACf,KAAK,EAAE,kBAAiB;EACxB,WAAW,EAAE,IAAI;EACjB,UAAU,EAAE,IAAI;EAChB,cAAc,EAAE,MAAM;EACtB,OAAO,EAAE,QAAQ;EAEjB,mEAA8B;IAC5B,KAAK,EAAE,IAAI;;AAIf,yBAA0B;EACxB,OAAO,EAAE,IAAI;;AAGf,qBAAsB;EACpB,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,gBAAgB,EAAE,OAAO;EACzB,UAAU,EAAE,KAAK;EACjB,aAAa,EAAE,WAAW;EAC1B,OAAO,EAAE,YAAY;;AAGvB,6BAA8B;EAC5B,OAAO,EAAE,YAAY;EACrB,MAAM,EAAE,IAAI;EACZ,gBAAgB,EAAE,gBAAgB;EAClC,WAAW,EAAE,GAAG;EAChB,SAAS,EAAE,IAAI;EACf,KAAK,EAAE,uBAAuB;EAC9B,WAAW,EAAE,IAAI;EACjB,UAAU,EAAE,MAAM;EAClB,cAAc,EAAE,KAAK;EACrB,OAAO,EAAE,KAAK;EACd,MAAM,EAAE,OAAO;EACf,cAAc,EAAE,SAAS;EACzB,OAAO,EAAE,IAAI;EACb,MAAM,EAAE,IAAI;EACZ,MAAM,EAAE,OAAO;EACf,UAAU,EAAE,aAAa;EAEzB,wCAAa;IACX,YAAY,EAAE,CAAC;;AAInB,mCAAoC;EAClC,gBAAgB,EAAE,qBAAqB;;AAGzC,oCAAqC;EACnC,gBAAgB,EAAE,qBAAqB",
-"sources": ["error-recovery.scss"],
-"names": [],
-"file": "error-recovery.css"
+ "version": 3,
+ "mappings": "AAAA,8BAA+B;EAC7B,QAAQ,EAAE,QAAQ;EAElB,0CAAY;IACV,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,UAAU,EAAE,OAAO;IACnB,OAAO,EAAE,EAAE;EAGb,0CAAY;IACV,OAAO,EAAE,CAAC;;AAId,WAAY;EACV,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,CAAC;EACN,IAAI,EAAE,CAAC;EACP,OAAO,EAAE,CAAC;EACV,UAAU,EAAE,WAAW;EACvB,UAAU,EAAE,WAAW;EAEvB,kBAAS;IACP,UAAU,EAAE,IAAI;IAChB,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE,EAAE;IACX,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;;AAIhB,WAAY;EACV,OAAO,EAAE,EAAE;EACX,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,GAAG;EACR,SAAS,EAAE,qBAAqB;EAChC,IAAI,EAAE,GAAG;EACT,OAAO,EAAE,CAAC;EACV,UAAU,EAAE,UAAU;;AAGxB,2BAA4B;EAC1B,KAAK,EAAE,OAAO;EAEd,+BAAI;IACF,KAAK,EAAE,OAAO;;AAIlB,SAAU;EACR,gBAAgB,EAAE,OAAO;EACzB,KAAK,EAAE,OAAO;EACd,OAAO,EAAE,KAAK;;AAGhB,UAAW;EACT,UAAU,EAAE,mEAAmE;EAC/E,gBAAgB,EAAE,OAAO;EACzB,MAAM,EAAE,MAAM;EACd,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,aAAa,EAAE,WAAW;EAC1B,OAAO,EAAE,cAAc;EACvB,OAAO,EAAE,MAAM;;AAGjB,mBAAoB;EAClB,WAAW,EAAE,oBAAoB;EACjC,WAAW,EAAE,GAAG;EAChB,SAAS,EAAE,IAAI;EACf,KAAK,EAAE,kBAAiB;EACxB,WAAW,EAAE,IAAI;EACjB,UAAU,EAAE,IAAI;EAChB,cAAc,EAAE,MAAM;;AAGxB,kBAAmB;EACjB,SAAS,EAAE,IAAI;EACf,KAAK,EAAE,kBAAiB;EACxB,WAAW,EAAE,IAAI;EACjB,UAAU,EAAE,IAAI;EAChB,cAAc,EAAE,MAAM;EACtB,OAAO,EAAE,QAAQ;EAEjB,mEAA8B;IAC5B,KAAK,EAAE,IAAI;;AAIf,yBAA0B;EACxB,OAAO,EAAE,IAAI;;AAGf,qBAAsB;EACpB,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,gBAAgB,EAAE,OAAO;EACzB,UAAU,EAAE,KAAK;EACjB,aAAa,EAAE,WAAW;EAC1B,OAAO,EAAE,YAAY;;AAGvB,6BAA8B;EAC5B,OAAO,EAAE,YAAY;EACrB,MAAM,EAAE,IAAI;EACZ,gBAAgB,EAAE,gBAAgB;EAClC,WAAW,EAAE,GAAG;EAChB,SAAS,EAAE,IAAI;EACf,KAAK,EAAE,uBAAuB;EAC9B,WAAW,EAAE,IAAI;EACjB,UAAU,EAAE,MAAM;EAClB,cAAc,EAAE,KAAK;EACrB,OAAO,EAAE,KAAK;EACd,MAAM,EAAE,OAAO;EACf,cAAc,EAAE,SAAS;EACzB,OAAO,EAAE,IAAI;EACb,MAAM,EAAE,IAAI;EACZ,MAAM,EAAE,OAAO;EACf,UAAU,EAAE,aAAa;EAEzB,wCAAa;IACX,YAAY,EAAE,CAAC;;AAInB,mCAAoC;EAClC,gBAAgB,EAAE,qBAAqB;;AAGzC,oCAAqC;EACnC,gBAAgB,EAAE,qBAAqB",
+ "sources": [
+ "error-recovery.scss"
+ ],
+ "names": [],
+ "file": "error-recovery.css"
}
\ No newline at end of file
diff --git a/assets/css/import-export.css b/assets/css/import-export.css
new file mode 100644
index 0000000..c5b1a80
--- /dev/null
+++ b/assets/css/import-export.css
@@ -0,0 +1,15 @@
+.plugin-icon {
+ font-size: 5rem;
+ color: #656565;
+ margin-top: 1rem; }
+
+.column-description ul {
+ list-style: initial !important;
+ margin-top: 0;
+ margin-left: 1.5rem; }
+
+.wp-list-table {
+ overflow: hidden;
+ height: 100%; }
+
+/*# sourceMappingURL=import-export.css.map */
diff --git a/assets/css/import-export.css.map b/assets/css/import-export.css.map
new file mode 100644
index 0000000..daa43c5
--- /dev/null
+++ b/assets/css/import-export.css.map
@@ -0,0 +1,7 @@
+{
+"version": 3,
+"mappings": "AAAA,YAAa;EACX,SAAS,EAAE,IAAI;EACf,KAAK,EAAE,OAAO;EACd,UAAU,EAAE,IAAI;;AAGlB,sBAAuB;EACrB,UAAU,EAAE,kBAAkB;EAC9B,UAAU,EAAE,CAAC;EACb,WAAW,EAAE,MAAM;;AAGrB,cAAe;EACb,QAAQ,EAAE,MAAM;EAChB,MAAM,EAAE,IAAI",
+"sources": ["import-export.scss"],
+"names": [],
+"file": "import-export.css"
+}
\ No newline at end of file
diff --git a/assets/css/import-export.scss b/assets/css/import-export.scss
new file mode 100644
index 0000000..ccb936c
--- /dev/null
+++ b/assets/css/import-export.scss
@@ -0,0 +1,97 @@
+.wp-list-table {
+ overflow: hidden;
+ height: 100%;
+}
+
+.plugin-card {
+ position: relative;
+
+ > h2 {
+ position: absolute;
+ left: 50%;
+ top: 50%;
+ transform: translate(-50%, -50%);
+ z-index: 1;
+ color: #4a4a4a !important;
+ margin: 0;
+ font-size: 1.7rem;
+ font-weight: 100;
+ letter-spacing: 2px;
+ font-family: 'Roboto', sans-serif;
+ text-transform: uppercase;
+ opacity: 0;
+ transition: opacity .2s;
+ cursor: default;
+ }
+
+ &.not-available {
+ &:before {
+ content: "";
+ background: repeating-linear-gradient(45deg, rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.05) 10px, rgba(0, 0, 0, 0.1) 10px, rgba(0, 0, 0, 0.1) 20px);
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ left: 0;
+ top: 0;
+ z-index: 1;
+ }
+
+ &:hover {
+ > h2 {
+ opacity: 1;
+ }
+
+ .plugin-card-top {
+ -webkit-filter: blur(1px);
+ filter: blur(1px);
+ }
+ }
+
+ * {
+ color: #ccc;
+ }
+
+ .plugin-icon {
+ filter: opacity(0.2);
+ }
+ }
+
+ .plugin-card-top {
+ padding: 0;
+
+ &:hover .import-note {
+ display: block;
+ }
+
+ .import-note {
+ display: none;
+ color: rgba(0, 0, 0, 0.5);
+ }
+
+ .name {
+ margin-top: 20px;
+ }
+
+ .desc, .name {
+ margin-left: 185px;
+ }
+
+ .action-links {
+ top: 0;
+ }
+
+ .plugin-icon {
+ font-size: 5rem;
+ color: #656565;
+ left: 0;
+ top: 0;
+ height: 168px;
+ width: 168px;
+ margin: -20px 20px 0 0;
+
+ &.dashicons {
+ margin-top: 1rem;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/assets/css/settings.css b/assets/css/settings.css
new file mode 100644
index 0000000..3a38011
--- /dev/null
+++ b/assets/css/settings.css
@@ -0,0 +1,3 @@
+
+
+/*# sourceMappingURL=settings.css.map */
diff --git a/assets/css/settings.css.map b/assets/css/settings.css.map
new file mode 100644
index 0000000..052989f
--- /dev/null
+++ b/assets/css/settings.css.map
@@ -0,0 +1,7 @@
+{
+"version": 3,
+"mappings": "",
+"sources": [],
+"names": [],
+"file": "settings.css"
+}
\ No newline at end of file
diff --git a/assets/css/settings.scss b/assets/css/settings.scss
new file mode 100644
index 0000000..a46a38e
--- /dev/null
+++ b/assets/css/settings.scss
@@ -0,0 +1,81 @@
+.wp-heading-inline {
+ margin-bottom: 5px;
+}
+
+.settings-main {
+ display: flex;
+ margin-top: 5px;
+}
+
+.settings-content {
+ width: 100%;
+
+ #mainform {
+ border: 1px solid #e8e8e8;
+ }
+
+ span.description {
+ display: block;
+ margin-top: 5px;
+ }
+
+ input[type=text], input[type=email] {
+ width: 100%;
+ max-width: 400px;
+ }
+
+ .sm-nav-tab-wrapper {
+ background: white;
+ padding: 0;
+ border-bottom: 1px solid #e8e8e8;
+
+ .nav-tab {
+ float: none;
+ border: none;
+ margin: 0;
+ padding: 20px 20px;
+ display: inline-block;
+ background: none;
+ font-weight: normal;
+ color: #666;
+ font-size: 13px;
+
+ &:hover, &:active, &:focus {
+ border-bottom: 2px solid #ccc;
+ outline: none;
+ box-shadow: none;
+ }
+ }
+
+ .nav-tab-active, .nav-tab-active:focus, .nav-tab-active:focus:active, .nav-tab-active:hover {
+ border-bottom: 2px solid #4abcf0;
+ }
+ }
+
+ .inside {
+ padding: .2rem 1rem .01rem 1rem;
+ background: white;
+ }
+}
+
+.settings-side {
+ width: 30%;
+ max-width: 300px;
+ margin-left: 1rem;
+
+ .sm-box {
+ h3 {
+ margin-left: .8rem;
+ }
+
+ .description {
+ text-align: center;
+ font-size: 0.85em;
+ padding: 0.4rem 0 0
+ }
+
+ ol {
+ list-style-type: circle;
+ }
+ }
+}
\ No newline at end of file
diff --git a/assets/images/export-sm.jpg b/assets/images/export-sm.jpg
new file mode 100644
index 0000000..b32f30c
Binary files /dev/null and b/assets/images/export-sm.jpg differ
diff --git a/assets/images/import-sb.jpg b/assets/images/import-sb.jpg
new file mode 100644
index 0000000..24f9cb1
Binary files /dev/null and b/assets/images/import-sb.jpg differ
diff --git a/assets/images/import-se.jpg b/assets/images/import-se.jpg
new file mode 100644
index 0000000..f825097
Binary files /dev/null and b/assets/images/import-se.jpg differ
diff --git a/assets/images/import-sm.jpg b/assets/images/import-sm.jpg
new file mode 100644
index 0000000..3c6441f
Binary files /dev/null and b/assets/images/import-sm.jpg differ
diff --git a/assets/js/admin/settings.js b/assets/js/admin/settings.js
new file mode 100644
index 0000000..e69de29
diff --git a/assets/js/admin/settings/podcast.js b/assets/js/admin/settings/podcast.js
new file mode 100644
index 0000000..6a9c4a8
--- /dev/null
+++ b/assets/js/admin/settings/podcast.js
@@ -0,0 +1,33 @@
+var frame;
+
+function uploadImage(event) {
+ if (frame) {
+ frame.open();
+ return;
+ }
+
+ frame = wp.media({
+ title: 'Select or Upload Cover Image',
+ button: {
+ text: 'Use this image'
+ },
+ library: {
+ type: ['image']
+ },
+ multiple: false
+ });
+
+ frame.on('select', function () {
+ var attachment = frame.state().get('selection').first().toJSON();
+
+ jQuery(event.target).prev().val(attachment.url);
+ });
+
+ frame.open();
+}
+
+for (var i = 0; i < jQuery('.upload-image').length; i++) {
+ var button = jQuery('.upload-image');
+
+ button.on('click', uploadImage)
+}
\ No newline at end of file
diff --git a/includes/admin-functions.php b/includes/admin-functions.php
index d52df3e..7e2e584 100644
--- a/includes/admin-functions.php
+++ b/includes/admin-functions.php
@@ -3,7 +3,6 @@
add_action( 'admin_init', 'wpfc_maybe_change_downloads_upload_dir', 999 );
add_action( 'admin_menu', 'wpfc_remove_service_type_meta_box' );
-add_action( 'load-edit.php', 'wpfc_sermon_order_attach' );
add_action( 'admin_init', 'wpfc_taxonomy_short_description_actions' );
if ( preg_match( '/3.(6|7)/', get_bloginfo( 'version' ) ) ) {
@@ -13,10 +12,6 @@
}
add_filter( 'wpfc_validate_file', 'wpfc_sermon_audio_validate', 10, 3 );
-add_filter( 'post_updated_messages', 'wpfc_sermon_updated_messages' );
-add_action( 'manage_wpfc_sermon_posts_custom_column', 'wpfc_sermon_columns' );
-add_filter( 'manage_edit-wpfc_sermon_columns', 'wpfc_sermon_edit_columns' );
-add_filter( 'manage_edit-wpfc_sermon_sortable_columns', 'wpfc_column_register_sortable' );
/**
* Checks if we should change the dir, it will change it if we should
@@ -109,192 +104,6 @@ function wpfc_remove_service_type_meta_box() {
remove_meta_box( 'tagsdiv-wpfc_service_type', 'wpfc_sermon', 'side' );
}
-/**
- * Change various messages
- *
- * @param array $messages Existing messages
- *
- * @return array
- */
-function wpfc_sermon_updated_messages( $messages ) {
- global $post, $post_ID;
-
- $messages['wpfc_sermon'] = array(
- 0 => '', // Unused. Messages start at index 1.
- 1 => wp_sprintf( esc_html__( 'Sermon updated. %s', 'sermon-manager-for-wordpress' ), '' . esc_html__( 'View sermon', 'sermon-manager-for-wordpress' ) . ' ' ),
- 2 => esc_html__( 'Custom field updated.', 'sermon-manager-for-wordpress' ),
- 3 => esc_html__( 'Custom field deleted.', 'sermon-manager-for-wordpress' ),
- 4 => esc_html__( 'Sermon updated.', 'sermon-manager-for-wordpress' ),
- /* translators: %s: date and time of the revision */
- 5 => isset( $_GET['revision'] ) ? wp_sprintf( esc_html__( 'Sermon restored to revision from %s', 'sermon-manager-for-wordpress' ), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
- 6 => wp_sprintf( esc_html__( 'Sermon published. %s', 'sermon-manager-for-wordpress' ), '' . esc_html__( 'View sermon', 'sermon-manager-for-wordpress' ) . ' ' ),
- 7 => esc_html__( 'Sermon saved.', 'sermon-manager-for-wordpress' ),
- 8 => wp_sprintf( esc_html__( 'Sermon submitted. %s', 'sermon-manager-for-wordpress' ), '' . esc_html__( 'Preview sermon', 'sermon-manager-for-wordpress' ) . ' ' ),
- 9 => wp_sprintf( esc_html__( 'Sermon scheduled for: %1$s. %2$s', 'sermon-manager-for-wordpress' ),
- '' . wp_sprintf( esc_html__( '%1$s at %2$s', 'sermon-manager-for-wordpress'), get_post_time( get_option( 'date_format' ), false, null, true ), get_post_time( get_option( 'time_format' ), false, null, true ) ) . ' ',
- '' . esc_html__( 'Preview sermon', 'sermon-manager-for-wordpress' ) . ' ' ),
- 10 => wp_sprintf( esc_html__( 'Sermon draft updated. %s', 'sermon-manager-for-wordpress' ), '' . esc_html__( 'View sermon', 'sermon-manager-for-wordpress' ) . ' ' ),
- );
-
- return $messages;
-}
-
-/**
- * Calls ordering function on init
- */
-function wpfc_sermon_order_attach() {
- add_filter( 'request', 'wpfc_sermon_order' );
-}
-
-/**
- * Orders the sermons when order is requested
- *
- * @param array $vars Request parameters
- *
- * @return array modified request parameters
- */
-function wpfc_sermon_order( $vars ) {
- if ( isset( $vars['post_type'] ) && $vars['post_type'] === 'wpfc_sermon' ) {
- if ( isset( $vars['orderby'] ) ) {
- switch ( $vars['orderby'] ) {
- case 'passage':
- $vars = array_merge( $vars, array(
- 'meta_key' => 'bible_passage',
- 'orderby' => 'meta_value'
- ) );
- break;
- case 'preached':
- $vars = array_merge( $vars, array(
- 'meta_key' => 'sermon_date',
- 'orderby' => 'meta_value_num',
- 'meta_value_num' => time(),
- 'meta_compare' => '<=',
- ) );
- break;
- }
- }
- }
-
- return $vars;
-}
-
-/**
- * Register edit.php columns
- *
- * @return array The columns
- */
-function wpfc_sermon_edit_columns() {
- $columns = array(
- "cb" => " ",
- "title" => __( 'Sermon Title', 'sermon-manager-for-wordpress' ),
- /* Translators: %s: Preacher label (sentence case; singular) */
- "preacher" => sprintf( __( '%s', 'sermon-manager-for-wordpress' ), ucwords(\SermonManager::getOption( 'preacher_label' ) ) ?: 'Preacher' ),
- "series" => __( 'Sermon Series', 'sermon-manager-for-wordpress' ),
- "topics" => __( 'Topics', 'sermon-manager-for-wordpress' ),
- "views" => __( 'Views', 'sermon-manager-for-wordpress' ),
- "preached" => __( 'Date Preached', 'sermon-manager-for-wordpress' ),
- "passage" => __( 'Bible Passage', 'sermon-manager-for-wordpress' ),
- );
-
- return $columns;
-}
-
-/**
- * Echo data for sermon data columns in edit.php
- *
- * @param string $column The column being requested
- *
- * @return void
- */
-function wpfc_sermon_columns( $column ) {
- global $post;
-
- if ( empty( $post->ID ) ) {
- echo wp_sprintf( esc_html__( '%s Can’t find sermon ID.', 'sermon-manager-for-wordpress' ), '' . esc_html__( 'Error:', 'sermon-manager-for-wordpress' ) . ' ' );
-
- return;
- }
-
- switch ( $column ) {
- case "preacher":
- $data = get_the_term_list( $post->ID, 'wpfc_preacher', '', ', ', '' );
- break;
- case "series":
- $data = get_the_term_list( $post->ID, 'wpfc_sermon_series', '', ', ', '' );
- break;
- case "topics":
- $data = get_the_term_list( $post->ID, 'wpfc_sermon_topics', '', ', ', '' );
-
- // Sometimes corrupted data gets cached, clearing the cache might help
- if ( $data instanceof WP_Error ) {
- if ( get_transient( 'wpfc_topics_cache_cleared' ) ) {
- wp_cache_delete( $post->ID, 'wpfc_sermon_topics_relationships' );
- $data = get_the_term_list( $post->ID, 'wpfc_sermon_topics', '', ', ', '' );
- set_transient( 'wpfc_topics_cache_cleared', 1, 60 * 60 );
- }
- }
-
- break;
- case "views":
- $data = wpfc_entry_views_get( array( 'post_id' => $post->ID ) );
- break;
- case "preached":
- $data = date_i18n( get_option ( 'date_format' ), sm_get_the_date( 'U', $post ) );
- break;
- case "passage":
- $data = get_post_meta( $post->ID, 'bible_passage', true );
- break;
- default:
- $data = '';
- }
-
- if ( $data instanceof WP_Error ) {
- if ( is_rtl() ) echo $data->get_error_message() . ' ' . esc_html__( 'Error:', 'sermon-manager-for-wordpress' ) . ' ';
- else echo '' . esc_html__( 'Error:', 'sermon-manager-for-wordpress' ) . ' ' . $data->get_error_message();
-
- return;
- }
-
- echo $data;
-
- return;
-}
-
-/**
- * Register the column as sortable
- * @url https://gist.github.com/scribu/906872
- */
-function wpfc_column_register_sortable() {
- $columns = array(
- "title" => "title",
- "preached" => "preached",
- "preacher" => "preacher",
- "series" => "series",
- "topics" => "topics",
- "views" => "views",
- "passage" => "passage"
- );
-
- return $columns;
-}
-
-/**
- * Add the number of sermons to the Right Now on the Dashboard.
- * Used only on WP 3.6 and 3.7.
- *
- * @since 2014-01-08
- */
-function wpfc_right_now() {
- $num_posts = wp_count_posts( 'wpfc_sermon' );
- $num = number_format_i18n( $num_posts->publish );
- $text = _n( 'Sermon', 'Sermons', intval( $num_posts->publish ) );
- if ( current_user_can( 'edit_posts' ) ) {
- $num = "$num ";
- $text = "$text ";
- }
- echo '
' . $num . ' ' . $text . ' ';
-}
-
/**
* Adds sermon count to "At a Glance" screen
*/
@@ -304,6 +113,7 @@ function wpfc_dashboard() {
// format the number to current locale
$num = number_format_i18n( $num_posts->publish );
// put correct singular or plural text
+ // translators: %s integer count of sermons
$text = wp_sprintf( esc_html( _n( '%s sermon', '%s sermons', intval( $num_posts->publish ), 'sermon-manager-for-wordpress' ) ), $num );
$count = '';
diff --git a/includes/admin/class-sm-admin-assets.php b/includes/admin/class-sm-admin-assets.php
new file mode 100644
index 0000000..55859ff
--- /dev/null
+++ b/includes/admin/class-sm-admin-assets.php
@@ -0,0 +1,43 @@
+id : '';
+
+ // Register admin styles
+ wp_register_style( 'sm_admin_styles', SM_URL . 'assets/css/admin.css', array(), SM_VERSION );
+
+ // Enqueue styles for Sermon Manager pages only
+ if ( in_array( $screen_id, sm_get_screen_ids() ) ) {
+ wp_enqueue_style( 'sm_admin_styles' );
+ }
+ }
+
+ /**
+ * Enqueue scripts.
+ */
+ public function admin_scripts() {
+ $screen = get_current_screen();
+ $screen_id = $screen ? $screen->id : '';
+
+ // Enqueue scripts for Sermon Manager pages only
+ if ( in_array( $screen_id, sm_get_screen_ids() ) ) {
+ // todo: move php notice script here, but register it first above
+ }
+ }
+}
+
+return new SM_Admin_Assets();
diff --git a/includes/admin/class-sm-admin-import-export.php b/includes/admin/class-sm-admin-import-export.php
new file mode 100644
index 0000000..4fe199d
--- /dev/null
+++ b/includes/admin/class-sm-admin-import-export.php
@@ -0,0 +1,20 @@
+ '', // Unused. Messages start at index 1.
+ 1 => wp_sprintf( esc_html__( 'Sermon updated. %s', 'sermon-manager-for-wordpress' ), '' . esc_html__( 'View sermon', 'sermon-manager-for-wordpress' ) . ' ' ),
+ 2 => esc_html__( 'Custom field updated.', 'sermon-manager-for-wordpress' ),
+ 3 => esc_html__( 'Custom field deleted.', 'sermon-manager-for-wordpress' ),
+ 4 => esc_html__( 'Sermon updated.', 'sermon-manager-for-wordpress' ),
+ /* translators: %s: date and time of the revision */
+ 5 => isset( $_GET['revision'] ) ? wp_sprintf( esc_html__( 'Sermon restored to revision from %s', 'sermon-manager-for-wordpress' ), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
+ 6 => wp_sprintf( esc_html__( 'Sermon published. %s', 'sermon-manager-for-wordpress' ), '' . esc_html__( 'View sermon', 'sermon-manager-for-wordpress' ) . ' ' ),
+ 7 => esc_html__( 'Sermon saved.', 'sermon-manager-for-wordpress' ),
+ 8 => wp_sprintf( esc_html__( 'Sermon submitted. %s', 'sermon-manager-for-wordpress' ), '' . esc_html__( 'Preview sermon', 'sermon-manager-for-wordpress' ) . ' ' ),
+ 9 => wp_sprintf( esc_html__( 'Sermon scheduled for: %1$s. %2$s', 'sermon-manager-for-wordpress' ),
+ '' . wp_sprintf( esc_html__( '%1$s at %2$s', 'sermon-manager-for-wordpress' ), get_post_time( get_option( 'date_format' ), false, null, true ), get_post_time( get_option( 'time_format' ), false, null, true ) ) . ' ',
+ '' . esc_html__( 'Preview sermon', 'sermon-manager-for-wordpress' ) . ' ' ),
+ 10 => wp_sprintf( esc_html__( 'Sermon draft updated. %s', 'sermon-manager-for-wordpress' ), '' . esc_html__( 'View sermon', 'sermon-manager-for-wordpress' ) . ' ' ),
+ );
+
+ return $messages;
+ }
+
+ /**
+ * Define custom columns for sermons.
+ *
+ * @param array $existing_columns
+ *
+ * @return array
+ */
+ public function sermon_columns( $existing_columns ) {
+ if ( empty( $existing_columns ) && ! is_array( $existing_columns ) ) {
+ $existing_columns = array();
+ }
+
+ $columns = array();
+ $columns['cb'] = ' ';
+ $columns['title'] = __( 'Sermon Title', 'sermon-manager-for-wordpress' );
+ $columns['preacher'] = ucwords( \SermonManager::getOption( 'preacher_label' ) ) ?: __( 'Preacher', 'sermon-manager-for-wordpress' );
+ $columns['series'] = __( 'Sermon Series', 'sermon-manager-for-wordpress' );
+ $columns['topics'] = __( 'Topics', 'sermon-manager-for-wordpress' );
+ $columns['views'] = __( 'Views', 'sermon-manager-for-wordpress' );
+ $columns['comments'] = $existing_columns['comments'];
+ $columns['preached'] = __( 'Date' );
+
+ unset( $existing_columns['date'] );
+
+ return array_merge( $columns, $existing_columns );
+ }
+
+ /**
+ * Output custom columns for sermons.
+ *
+ * @param string $column
+ */
+ public function render_sermon_columns( $column ) {
+ global $post;
+
+ if ( empty( $post->ID ) ) {
+ return;
+ }
+
+ switch ( $column ) {
+ case "preacher":
+ $data = get_the_term_list( $post->ID, 'wpfc_preacher', '', ', ', '' );
+ break;
+ case "series":
+ $data = get_the_term_list( $post->ID, 'wpfc_sermon_series', '', ', ', '' );
+ break;
+ case "topics":
+ $data = get_the_term_list( $post->ID, 'wpfc_sermon_topics', '', ', ', '' );
+ break;
+ case "views":
+ $data = wpfc_entry_views_get( array( 'post_id' => $post->ID ) );
+ break;
+ case "preached":
+ /**
+ * Modified from code in wp-admin/includes/class-wp-posts-list-table.php
+ */
+ global $mode;
+
+ $data = '';
+
+ if ( '0000-00-00 00:00:00' === $post->post_date ) {
+ $t_time = $h_time = __( 'Unpublished' );
+ $time_diff = 0;
+ } else {
+ $t_time = sm_get_the_date( __( 'Y/m/d g:i:s a' ) );
+ $m_time = sm_get_the_date( 'Y-m-d H:i:s' );
+ $time = sm_get_the_date( 'U' );
+
+ $time_diff = time() - $time;
+
+ if ( $time_diff > 0 && $time_diff < DAY_IN_SECONDS ) {
+ $h_time = sprintf( __( '%s ago' ), human_time_diff( $time ) );
+ } else {
+ $h_time = mysql2date( __( 'Y/m/d' ), $m_time );
+ }
+ }
+
+ if ( 'publish' === $post->post_status ) {
+ $status = __( 'Published' );
+ } elseif ( 'future' === $post->post_status ) {
+ if ( $time_diff > 0 ) {
+ $status = '' . __( 'Missed schedule' ) . ' ';
+ } else {
+ $status = __( 'Scheduled' );
+ }
+ } else {
+ $status = __( 'Last Modified' );
+ }
+
+ if ( $status ) {
+ $data .= $status . ' ';
+ }
+
+ if ( 'excerpt' === $mode ) {
+ /**
+ * Filters the published time of the post.
+ *
+ * If `$mode` equals 'excerpt', the published time and date are both displayed.
+ * If `$mode` equals 'list' (default), the publish date is displayed, with the
+ * time and date together available as an abbreviation definition.
+ *
+ * @since 2.9
+ *
+ * @param string $t_time The published time.
+ * @param WP_Post $post Post object.
+ * @param string $column_name The column name.
+ * @param string $mode The list display mode ('excerpt' or 'list').
+ */
+ $data .= apply_filters( 'wpfc_sermon_preached_column_time', $t_time, $post, 'date', $mode );
+ } else {
+
+ /** This filter is documented above */
+ $data .= '' . apply_filters( 'wpfc_sermon_preached_column_time', $h_time, $post, 'date', $mode ) . ' ';
+ }
+
+ break;
+ default :
+ $data = '';
+ break;
+ }
+
+ if ( $data instanceof WP_Error ) {
+ $data = __( 'Error' );
+ }
+
+ echo $data;
+ }
+
+ /**
+ * Make columns sortable
+ *
+ * @param array $columns
+ *
+ * @return array
+ */
+ public function sermon_sortable_columns( $columns ) {
+ $custom = array(
+ 'title' => 'title',
+ 'preached' => 'preached',
+ 'views' => 'views',
+ );
+
+ return wp_parse_args( $custom, $columns );
+ }
+
+ /**
+ * Set list table primary column
+ * Support for WordPress 4.3.
+ *
+ * @param string $default
+ * @param string $screen_id
+ *
+ * @return string
+ */
+ public function list_table_primary_column( $default, $screen_id ) {
+ if ( 'edit-wpfc_sermon' === $screen_id ) {
+ return 'title';
+ }
+
+ return $default;
+ }
+
+ /**
+ * Set row actions for sermons
+ *
+ * @param array $actions
+ * @param WP_Post $post
+ *
+ * @return array
+ */
+ public function row_actions( $actions, $post ) {
+ if ( 'wpfc_sermon' === $post->post_type ) {
+ return array_merge( array( 'id' => 'ID: ' . $post->ID ), $actions );
+ }
+
+ return $actions;
+ }
+
+ /**
+ * Filters and sorting handler.
+ *
+ * @param array $vars
+ *
+ * @return array
+ */
+ public function request_query( $vars ) {
+ global $typenow;
+
+ if ( 'wpfc_sermon' === $typenow ) {
+ // Sorting
+ if ( isset( $vars['orderby'] ) ) {
+ switch ( $vars['orderby'] ) {
+ case 'preached':
+ $vars = array_merge( $vars, array(
+ 'meta_key' => 'sermon_date',
+ 'orderby' => 'meta_value_num',
+ 'meta_value_num' => time(),
+ 'meta_compare' => '<=',
+ ) );
+ break;
+
+ case 'views':
+ $vars = array_merge( $vars, array(
+ 'meta_key' => 'Views',
+ 'orderby' => 'meta_value_num',
+ ) );
+ break;
+ }
+ }
+ }
+
+ return $vars;
+ }
+
+ /**
+ * Change title boxes in admin.
+ *
+ * @param string $text
+ * @param object $post
+ *
+ * @return string
+ */
+ public function enter_title_here( $text, $post ) {
+ if ( $post->post_type === 'wpfc_sermon' ) {
+ $text = __( 'Sermon title', 'sermon-manager-for-wordpress' );
+ }
+
+ return $text;
+ }
+
+ /**
+ * Filter the sermons in admin based on options
+ *
+ * @param mixed $query
+ */
+ public function sermon_filters_query( $query ) {
+ global $typenow;
+
+ if ( 'wpfc_sermon' == $typenow ) {
+ if ( isset( $query->query_vars['wpfc_service_type'] ) ) {
+ $query->query_vars['tax_query'] = array(
+ array(
+ 'taxonomy' => 'wpfc_service_type',
+ 'field' => 'slug',
+ 'terms' => $query->query_vars['wpfc_service_type']
+ )
+ );
+ }
+ }
+ }
+
+ /**
+ * Filters for post types.
+ */
+ public function restrict_manage_posts() {
+ global $typenow;
+
+ if ( 'wpfc_sermon' === $typenow ) {
+ $this->sermon_filters();
+ }
+ }
+
+ /**
+ * Show a service type filter box.
+ */
+ public function sermon_filters() {
+ global $wp_query;
+
+ // Type filtering
+ $terms = get_terms( 'wpfc_service_type' );
+ $output = '';
+ $output .= '' . __( 'Filter by Service Type', 'sermon-manager-for-wordpress' ) . ' ';
+
+ foreach ( $terms as $term ) {
+ $output .= 'query['wpfc_service_type'] ) ) {
+ $output .= selected( $term->slug, $wp_query->query['wpfc_service_type'], false );
+ }
+
+ $output .= '>';
+
+ $output .= ucfirst( $term->name );
+
+ $output .= ' ';
+ }
+
+ $output .= ' ';
+
+ echo apply_filters( 'sm_sermon_filters', $output );
+ }
+}
+
+new SM_Admin_Post_Types();
\ No newline at end of file
diff --git a/includes/admin/class-sm-admin-settings.php b/includes/admin/class-sm-admin-settings.php
new file mode 100644
index 0000000..06864fb
--- /dev/null
+++ b/includes/admin/class-sm-admin-settings.php
@@ -0,0 +1,805 @@
+ 0 ) {
+ foreach ( self::$errors as $error ) {
+ echo '' . esc_html( $error ) . '
';
+ }
+ } elseif ( sizeof( self::$messages ) > 0 ) {
+ foreach ( self::$messages as $message ) {
+ echo '' . esc_html( $message ) . '
';
+ }
+ }
+ }
+
+ /**
+ * Settings page.
+ *
+ * Handles the display of the main Sermon Manager settings page in admin.
+ */
+ public static function output() {
+ global $current_section, $current_tab;
+
+ do_action( 'sm_settings_start' );
+
+ wp_enqueue_script( 'sm_settings', SM_URL . 'assets/js/admin/settings.js', array(
+ 'jquery',
+ 'jquery-ui-datepicker',
+ 'jquery-ui-sortable'
+ ), SM_VERSION, true );
+
+ wp_register_script( 'sm_settings_podcast', SM_URL . 'assets/js/admin/settings/podcast.js', 'sm_settings', SM_VERSION, true );
+
+ wp_localize_script( 'sm_settings', 'sm_settings_params', array(
+ 'i18n_nav_warning' => __( 'The changes you made will be lost if you navigate away from this page.', 'sermon-manager-for-wordpress' ),
+ ) );
+
+ // Include settings pages
+ self::get_settings_pages();
+
+ // Get current tab/section
+ $current_tab = empty( $_GET['tab'] ) ? 'general' : sanitize_title( $_GET['tab'] );
+ $current_section = empty( $_REQUEST['section'] ) ? '' : sanitize_title( $_REQUEST['section'] );
+
+ // Save settings if data has been posted
+ if ( ! empty( $_POST ) ) {
+ self::save();
+ }
+
+ // Add any posted messages
+ if ( ! empty( $_GET['sm_error'] ) ) {
+ self::add_error( stripslashes( $_GET['sm_error'] ) );
+ }
+
+ if ( ! empty( $_GET['sm_message'] ) ) {
+ self::add_message( stripslashes( $_GET['sm_message'] ) );
+ }
+
+ if ( $current_tab === 'podcast' ) {
+ wp_enqueue_script( 'sm_settings_podcast' ); // todo: i18n the script & make it more dynamic
+ wp_enqueue_media();
+ }
+
+ // Get tabs for the settings page
+ /** @noinspection PhpUnusedLocalVariableInspection */
+ $tabs = apply_filters( 'sm_settings_tabs_array', array() );
+
+ include 'views/html-admin-settings.php';
+ }
+
+ /**
+ * Include the settings page classes.
+ */
+ public static function get_settings_pages() {
+ if ( empty( self::$settings ) ) {
+ $settings = array();
+
+ include_once 'settings/class-sm-settings-page.php';
+
+ $settings[] = include 'settings/class-sm-settings-general.php';
+ $settings[] = include 'settings/class-sm-settings-verse.php';
+ $settings[] = include 'settings/class-sm-settings-podcast.php';
+
+ self::$settings = apply_filters( 'sm_get_settings_pages', $settings );
+ }
+
+ return self::$settings;
+ }
+
+ /**
+ * Save the settings.
+ */
+ public static function save() {
+ global $current_tab;
+
+ if ( empty( $_REQUEST['_wpnonce'] ) || ! wp_verify_nonce( $_REQUEST['_wpnonce'], 'sm-settings' ) ) {
+ die( __( 'Action failed. Please refresh the page and retry.', 'sermon-manager-for-wordpress' ) );
+ }
+
+ // Trigger actions
+ do_action( 'sm_settings_save_' . $current_tab );
+ do_action( 'sn_update_options_' . $current_tab );
+ do_action( 'sm_update_options' );
+
+ self::add_message( __( 'Your settings have been saved.', 'sermon-manager-for-wordpress' ) );
+
+ // Clear any unwanted data and flush rules
+ wp_schedule_single_event( time(), 'sm_flush_rewrite_rules' );
+
+ do_action( 'sm_settings_saved' );
+ }
+
+ /**
+ * Add a message.
+ *
+ * @param string $text
+ */
+ public static function add_message( $text ) {
+ self::$messages[] = $text;
+ }
+
+ /**
+ * Add an error.
+ *
+ * @param string $text
+ */
+ public static function add_error( $text ) {
+ self::$errors[] = $text;
+ }
+
+ /**
+ * Output admin fields.
+ *
+ * Loops though the Sermon Manager options array and outputs each field.
+ *
+ * @param array[] $options Opens array to output
+ */
+ public static function output_fields( $options ) {
+ foreach ( $options as $value ) {
+ if ( ! isset( $value['type'] ) ) {
+ continue;
+ }
+ if ( ! isset( $value['id'] ) ) {
+ $value['id'] = '';
+ }
+ if ( ! isset( $value['title'] ) ) {
+ $value['title'] = isset( $value['name'] ) ? $value['name'] : '';
+ }
+ if ( ! isset( $value['class'] ) ) {
+ $value['class'] = '';
+ }
+ if ( ! isset( $value['css'] ) ) {
+ $value['css'] = '';
+ }
+ if ( ! isset( $value['default'] ) ) {
+ $value['default'] = '';
+ }
+ if ( ! isset( $value['desc'] ) ) {
+ $value['desc'] = '';
+ }
+ if ( ! isset( $value['desc_tip'] ) ) {
+ $value['desc_tip'] = false;
+ }
+ if ( ! isset( $value['placeholder'] ) ) {
+ $value['placeholder'] = '';
+ }
+
+ // Custom attribute handling
+ $custom_attributes = array();
+
+ if ( ! empty( $value['custom_attributes'] ) && is_array( $value['custom_attributes'] ) ) {
+ foreach ( $value['custom_attributes'] as $attribute => $attribute_value ) {
+ $custom_attributes[] = esc_attr( $attribute ) . '="' . esc_attr( $attribute_value ) . '"';
+ }
+ }
+
+ // Description handling
+ // Reset variables
+ $tooltip_html = $description = '';
+ // Get descriptions
+ $field_description = self::get_field_description( $value );
+ extract( $field_description );
+
+ // Switch based on type
+ switch ( $value['type'] ) {
+ // Section Titles
+ case 'title':
+ if ( ! empty( $value['title'] ) ) {
+ echo '' . esc_html( $value['title'] ) . ' ';
+ }
+ if ( ! empty( $value['desc'] ) ) {
+ echo wpautop( wptexturize( wp_kses_post( $value['desc'] ) ) );
+ }
+ echo '';
+ if ( ! empty( $value['id'] ) ) {
+ do_action( 'sm_settings_' . sanitize_title( $value['id'] ) . '_after' );
+ }
+ break;
+
+ // Standard text inputs and subtypes like 'number'
+ case 'text':
+ case 'email':
+ case 'number':
+ case 'password' :
+ if ( substr( $value['id'], 0, 2 ) === '__' && strlen( $value['id'] ) > 2 ) {
+ $option_value = $value['value'];
+ } else {
+ $option_value = self::get_option( $value['id'], $value['default'] );
+ }
+
+ ?>
+
+
+
+
+
+
+
+
+ />
+
+
+
+
+
+
+
+
+
+
+
+ />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ >
+ $val ) {
+ ?>
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ />
+
+
+
+
+ " . __( 'The settings of this image size have been disabled because its values are being overwritten by a filter.', 'sermon-manager' ) . " ";
+ }
+
+ ?>
+
+
+
+
+
+
+ id="-width"
+ type="text" size="3"
+ value=""/> ×
+
+ id="-height"
+ type="text" size="3"
+ value=""/>px
+
+
+ id="-crop" type="checkbox"
+ value="1" />
+
+
+
+ $value['id'],
+ 'id' => $value['id'],
+ 'sort_column' => 'menu_order',
+ 'sort_order' => 'ASC',
+ 'show_option_none' => ' ',
+ 'class' => $value['class'],
+ 'echo' => false,
+ 'selected' => absint( self::get_option( $value['id'] ) ),
+ );
+
+ if ( isset( $value['args'] ) ) {
+ $args = wp_parse_args( $value['args'], $args );
+ }
+
+ ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ />
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ' . wp_kses_post( $description ) . '';
+ } elseif ( $description && in_array( $value['type'], array( 'checkbox' ) ) ) {
+ $description = wp_kses_post( $description );
+ } elseif ( $description ) {
+ $description = '' . wp_kses_post( $description ) . ' ';
+ }
+
+ if ( $tooltip_html && in_array( $value['type'], array( 'checkbox' ) ) ) {
+ $tooltip_html = '' . $tooltip_html . '
';
+ } elseif ( $tooltip_html ) {
+ $tooltip_html = sm_help_tip( $tooltip_html );
+ }
+
+ return array(
+ 'description' => $description,
+ 'tooltip_html' => $tooltip_html,
+ );
+ }
+
+ /**
+ * Get a setting from the settings API.
+ *
+ * @param string $option_name
+ * @param mixed $default
+ *
+ * @return mixed
+ */
+ public static function get_option( $option_name, $default = '' ) {
+ // Array value
+ if ( strstr( $option_name, '[' ) ) {
+
+ parse_str( $option_name, $option_array );
+
+ // Option name is first key
+ $option_name = current( array_keys( $option_array ) );
+
+ // Get value
+ $option_values = get_option( 'sermonmanager_' . $option_name, '' );
+
+ $key = key( $option_array[ $option_name ] );
+
+ if ( isset( $option_values[ $key ] ) ) {
+ $option_value = $option_values[ $key ];
+ } else {
+ $option_value = null;
+ }
+
+ // Single value
+ } else {
+ $option_value = get_option( 'sermonmanager_' . $option_name, null );
+
+ if ( $option_value !== null ) {
+ switch ( $option_name ) {
+ case 'itunes_sub_category':
+ $categories = array(
+ '0' => __( 'Sub Category', 'sermon-manager-for-wordpress' ),
+ '1' => __( 'Buddhism', 'sermon-manager-for-wordpress' ),
+ '2' => __( 'Christianity', 'sermon-manager-for-wordpress' ),
+ '3' => __( 'Hinduism', 'sermon-manager-for-wordpress' ),
+ '4' => __( 'Islam', 'sermon-manager-for-wordpress' ),
+ '5' => __( 'Judaism', 'sermon-manager-for-wordpress' ),
+ '6' => __( 'Other', 'sermon-manager-for-wordpress' ),
+ '7' => __( 'Spirituality', 'sermon-manager-for-wordpress' ),
+ );
+
+ $option_value = $categories[ $option_value ];
+ break;
+ }
+ }
+ }
+
+ if ( is_array( $option_value ) ) {
+ $option_value = array_map( 'stripslashes', $option_value );
+ } elseif ( ! is_null( $option_value ) ) {
+ $option_value = stripslashes( $option_value );
+ }
+
+ if ( $option_value === 'no' || $option_value === 'yes' ) {
+ $option_value = $option_value === 'yes' ? true : false;
+ }
+
+ return ( null === $option_value ) ? $default : $option_value;
+ }
+
+ /**
+ * Save admin fields.
+ *
+ * Loops though the Sermon Manager options array and outputs each field.
+ *
+ * @param array $options Options array to output
+ * @param array $data Optional. Data to use for saving. Defaults to $_POST.
+ *
+ * @return bool
+ */
+ public static function save_fields( $options, $data = null ) {
+ if ( is_null( $data ) ) {
+ $data = $_POST;
+ }
+ if ( empty( $data ) ) {
+ return false;
+ }
+
+ // Options to update will be stored here and saved later.
+ $update_options = array();
+
+ // Loop options and get values to save.
+ foreach ( $options as $option ) {
+ if ( ! isset( $option['id'] ) || ! isset( $option['type'] ) ) {
+ continue;
+ }
+
+ if ( substr( $option['id'], 0, 2 ) === '__' && strlen( $option['id'] ) > 2 ) {
+ continue;
+ }
+
+ // Get posted value.
+ if ( strstr( $option['id'], '[' ) ) {
+ parse_str( $option['id'], $option_name_array );
+ $option_name = current( array_keys( $option_name_array ) );
+ $setting_name = key( $option_name_array[ $option_name ] );
+ $raw_value = isset( $data[ $option_name ][ $setting_name ] ) ? wp_unslash( $data[ $option_name ][ $setting_name ] ) : null;
+ } else {
+ $option_name = $option['id'];
+ $setting_name = '';
+ $raw_value = isset( $data[ $option['id'] ] ) ? wp_unslash( $data[ $option['id'] ] ) : null;
+ }
+
+ // Format the value based on option type.
+ switch ( $option['type'] ) {
+ case 'checkbox' :
+ $value = '1' === $raw_value || 'yes' === $raw_value ? 'yes' : 'no';
+ break;
+ case 'textarea' :
+ $value = wp_kses_post( trim( $raw_value ) );
+ break;
+ case 'multiselect' :
+ case 'multi_select_countries' :
+ $value = array_filter( array_map( 'sm_clean', (array) $raw_value ) );
+ break;
+ case 'image_width' :
+ $value = array();
+ if ( isset( $raw_value['width'] ) ) {
+ $value['width'] = sm_clean( $raw_value['width'] );
+ $value['height'] = sm_clean( $raw_value['height'] );
+ $value['crop'] = isset( $raw_value['crop'] ) ? 1 : 0;
+ } else {
+ $value['width'] = $option['default']['width'];
+ $value['height'] = $option['default']['height'];
+ $value['crop'] = $option['default']['crop'];
+ }
+ break;
+ case 'select':
+ $allowed_values = empty( $option['options'] ) ? array() : array_keys( $option['options'] );
+ if ( empty( $option['default'] ) && empty( $allowed_values ) ) {
+ $value = null;
+ break;
+ }
+ $default = ( empty( $option['default'] ) ? $allowed_values[0] : $option['default'] );
+ $value = in_array( $raw_value, $allowed_values ) ? $raw_value : $default;
+ break;
+ default :
+ $value = sm_clean( $raw_value );
+ break;
+ }
+
+ /**
+ * Sanitize the value of an option.
+ *
+ * @since 2.9
+ */
+ $value = apply_filters( 'sm_admin_settings_sanitize_option', $value, $option, $raw_value );
+
+ /**
+ * Sanitize the value of an option by option name.
+ *
+ * @since 2.9
+ */
+ $value = apply_filters( "sm_admin_settings_sanitize_option_$option_name", $value, $option, $raw_value );
+
+ if ( is_null( $value ) ) {
+ continue;
+ }
+
+ // Check if option is an array and handle that differently to single values.
+ if ( $option_name && $setting_name ) {
+ if ( ! isset( $update_options[ $option_name ] ) ) {
+ $update_options[ $option_name ] = get_option( $option_name, array() );
+ }
+ if ( ! is_array( $update_options[ $option_name ] ) ) {
+ $update_options[ $option_name ] = array();
+ }
+ $update_options[ $option_name ][ $setting_name ] = $value;
+ } else {
+ $update_options[ $option_name ] = $value;
+ }
+ }
+
+ // Save all options in our array.
+ foreach ( $update_options as $name => $value ) {
+ update_option( 'sermonmanager_' . $name, $value );
+ }
+
+ return true;
+ }
+}
diff --git a/includes/admin/class-sm-admin.php b/includes/admin/class-sm-admin.php
new file mode 100644
index 0000000..698c764
--- /dev/null
+++ b/includes/admin/class-sm-admin.php
@@ -0,0 +1,45 @@
+query( "SELECT id FROM {$wpdb->prefix}sb_sermons LIMIT 1 " ) !== false;
+ }
+
+ /**
+ * Do the import
+ */
+ public function import() {
+ if ( ! doing_action( 'admin_init' ) ) {
+ add_action( 'admin_init', array( $this, __FUNCTION__ ) );
+
+ return;
+ }
+
+ do_action( 'sm_import_before_sb' );
+
+ $this->_import_books();
+ $this->_import_preachers();
+ $this->_import_series();
+ $this->_import_service_types();
+ $this->_import_sermon_tags();
+ $this->_import_sermons();
+
+ do_action( 'sm_import_after_sb' );
+ }
+
+ /**
+ * Imports Bible Books
+ */
+ private function _import_books() {
+ $used_books = $this->_get_used_books();
+
+ foreach ( $used_books as $book ) {
+ if ( ! $term_data = term_exists( $book->book_name, 'wpfc_bible_book' ) ) {
+ $term_data = wp_insert_term( $book->book_name, 'wpfc_bible_book' );
+ }
+
+ $this->_imported_books[ $book->id ] = array(
+ 'new_id' => $term_data['term_id'],
+ );
+ }
+ }
+
+ /**
+ * Gets the names of all Bible Books that were used in Sermon Browser
+ *
+ * @return array
+ */
+ private function _get_used_books() {
+ global $wpdb;
+
+ $used_books = array();
+ $books = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}sb_books_sermons" );
+
+ foreach ( $books as $book ) {
+ foreach ( $used_books as $used_book ) {
+ if ( $used_book->book_name === $book->book_name ) {
+ continue 2;
+ }
+ }
+
+ $used_books[] = $book;
+ }
+
+ /**
+ * Allows to filter books that will be imported
+ *
+ * @var array $used_books list of book names that will be imported
+ */
+ return apply_filters( 'sm_import_sb_books', $used_books );
+ }
+
+ /**
+ * Imports Preachers
+ */
+ private function _import_preachers() {
+ global $wpdb;
+
+ /**
+ * Filter preachers that will be imported
+ *
+ * @var array Raw database data
+ */
+ $preachers = apply_filters( 'sm_import_sb_preachers', $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}sb_preachers" ) );
+
+ foreach ( $preachers as $preacher ) {
+ if ( ! $term_data = term_exists( $preacher->name, 'wpfc_preacher' ) ) {
+ $term_data = wp_insert_term( $preacher->name, 'wpfc_preacher', array(
+ 'desc' => apply_filters( 'sm_import_sb_preacher_description', $preacher->description ?: '' )
+ ) );
+ }
+
+ if ( $preacher->image !== '' ) {
+ // Set image
+ $media = wp_get_upload_dir();
+ $attachment_id = sm_import_and_set_post_thumbnail( $media['baseurl'] . '/sermons/images/' . $preacher->image, 0 );
+ if ( is_int( $attachment_id ) ) {
+ $assigned_images = get_option( 'sermon_image_plugin' );
+ $assigned_images[ $term_data['term_id'] ] = $attachment_id;
+ update_option( 'sermon_image_plugin', $assigned_images );
+ }
+ }
+
+ $this->_imported_preachers[ $preacher->id ] = array(
+ 'new_id' => $term_data['term_id'],
+ );
+ }
+ }
+
+ /**
+ * Imports Series
+ */
+ private function _import_series() {
+ global $wpdb;
+
+ /**
+ * Filter series that will be imported
+ *
+ * @var array Raw database data
+ */
+ $series = apply_filters( 'sm_import_sb_series', $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}sb_series" ) );
+
+ foreach ( $series as $item ) {
+ if ( trim( $item->name ) === '' ) {
+ continue;
+ }
+
+ if ( ! $term_data = term_exists( $item->name, 'wpfc_sermon_series' ) ) {
+ $term_data = wp_insert_term( $item->name, 'wpfc_sermon_series' );
+ }
+
+ $this->_imported_series[ $item->id ] = array(
+ 'new_id' => $term_data['term_id'],
+ );
+ }
+ }
+
+ /**
+ * Imports Service Types
+ */
+ private function _import_service_types() {
+ global $wpdb;
+
+ /**
+ * Filter service types that will be imported
+ *
+ * @var array Raw database data
+ */
+ $services = apply_filters( 'sm_import_sb_service_types', $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}sb_services" ) );
+
+ foreach ( $services as $service ) {
+ if ( ! $term_data = term_exists( $service->name, 'wpfc_sermon_series' ) ) {
+ $term_data = wp_insert_term( $service->name, 'wpfc_sermon_series' );
+ }
+
+ $this->_imported_service_types[ $service->id ] = array(
+ 'new_id' => $term_data['term_id'],
+ );
+ }
+ }
+
+ /**
+ * Sermon tags are not working in SB, so we can't know how to import them
+ */
+ private function _import_sermon_tags() {
+ return null;
+ }
+
+ /**
+ * Imports Sermons
+ */
+ private function _import_sermons() {
+ global $wpdb;
+
+ // Imported sermons
+ $imported = get_option( '_sm_import_sb_messages', array() );
+
+ // media upload directory
+ $media = wp_get_upload_dir();
+
+ /**
+ * Filter sermons that will be imported
+ *
+ * @var array $sermons Raw database data
+ */
+ $sermons = apply_filters( 'sm_import_sb_messages', $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}sb_sermons" ) );
+
+
+ foreach ( $sermons as $sermon ) {
+ if ( ! isset( $imported[ $sermon->id ] ) ) {
+ $id = wp_insert_post( apply_filters( 'sm_import_sb_message', array(
+ 'post_date' => $sermon->datetime,
+ 'post_content' => '%todo_render%',
+ 'post_title' => $sermon->title,
+ 'post_type' => 'wpfc_sermon',
+ 'post_status' => 'publish',
+ ) ) );
+
+ if ( $id === 0 ) {
+ // silently skip if error
+ continue;
+ }
+
+ $imported[ $sermon->id ] = array(
+ 'new_id' => $id
+ );
+
+ /**
+ * we write it after each insert in case that we get fatal error - we don't want to
+ * import sermons twice, it would be a mess
+ */
+ update_option( '_sm_import_sb_messages', $imported );
+ } else {
+ $id = $imported[ $sermon->id ]['new_id'];
+ }
+
+ /**
+ * Filter stuff that will be imported
+ *
+ * @var array $stuff Raw database data
+ */
+ $stuff = apply_filters( 'sm_import_sb_message_stuff', $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}sb_stuff WHERE `sermon_id` = '{$sermon->id}'" ) );
+
+ // set files
+ update_post_meta( $id, 'sm_files', $stuff );
+
+ // set mp3
+ foreach ( $stuff as $item ) {
+ if ( in_array( pathinfo( $item->name, PATHINFO_EXTENSION ), array( 'mp3', 'wav', 'ogg' ) ) ) {
+ update_post_meta( $id, 'sermon_audio', $media['baseurl'] . '/media/audio/' . rawurlencode( $item->name ) );
+ break;
+ }
+ }
+
+ // set speaker
+ wp_set_object_terms( $id, intval( $this->_imported_preachers[ intval( $sermon->preacher_id ) ]['new_id'] ), 'wpfc_preacher' );
+
+ // set service type
+ wp_set_object_terms( $id, intval( $this->_imported_service_types[ intval( $sermon->service_id ) ]['new_id'] ), 'wpfc_service_type' );
+
+ // set series
+ wp_set_object_terms( $id, intval( $this->_imported_series[ intval( $sermon->series_id ) ]['new_id'] ), 'wpfc_sermon_series' );
+
+ // set description
+ update_post_meta( $id, 'sermon_description', $sermon->description );
+
+ // set passage
+ update_post_meta( $id, 'bible_passages_start', $sermon->start );
+ update_post_meta( $id, 'bible_passages_end', $sermon->end );
+ }
+
+ // update term counts
+ foreach (
+ array(
+ '_imported_preachers' => 'wpfc_preacher',
+ '_imported_service_types' => 'wpfc_service_type',
+ '_imported_series' => 'wpfc_sermon_series',
+ '_imported_books' => 'wpfc_bible_book',
+ ) as $terms_array => $taxonomy
+ ) {
+ $terms = array();
+
+ foreach ( $this->{$terms_array} as $item ) {
+ $terms[] = intval( $item['new_id'] );
+ }
+
+ _update_generic_term_count( $terms, (object) array( 'name' => $taxonomy ) );
+ }
+ }
+}
diff --git a/includes/admin/import/class-sm-import-se.php b/includes/admin/import/class-sm-import-se.php
new file mode 100644
index 0000000..67b50a2
--- /dev/null
+++ b/includes/admin/import/class-sm-import-se.php
@@ -0,0 +1,397 @@
+query( "SELECT * FROM {$wpdb->prefix}se_messages LIMIT 1 " ) !== false;
+ }
+
+ /**
+ * Do the import
+ */
+ public function import() {
+ if ( ! doing_action( 'admin_init' ) ) {
+ add_action( 'admin_init', array( $this, __FUNCTION__ ) );
+
+ return;
+ }
+
+ do_action( 'sm_import_before_se' );
+
+ $this->_import_books();
+ $this->_import_speakers();
+ $this->_import_series();
+ $this->_import_topics();
+ $this->_import_messages();
+
+ do_action( 'sm_import_after_se' );
+ }
+
+ /**
+ * Imports Bible Books
+ */
+ private function _import_books() {
+ $used_books = $this->_get_used_books();
+
+ foreach ( $used_books as $book ) {
+ if ( ! $term_data = term_exists( $book->book_name, 'wpfc_bible_book' ) ) {
+ $term_data = wp_insert_term( $book->book_name, 'wpfc_bible_book' );
+ }
+
+ $this->_imported_books[ $book->book_id ] = array(
+ 'new_id' => $term_data['term_id'],
+ );
+ }
+ }
+
+ /**
+ * Gets the names of all Bible Books that were used in Series Engine
+ *
+ * @return array
+ */
+ private function _get_used_books() {
+ global $wpdb;
+
+ $used_books = array();
+ $books = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}se_books" );
+
+ foreach ( $books as $book ) {
+ if ( ! in_array( $book->book_name, $used_books ) ) {
+ $used_books[] = $book;
+ }
+ }
+
+ /**
+ * Filter books that will be imported
+ *
+ * @var array $books list of book data that will be imported
+ */
+ return apply_filters( 'sm_import_se_books', $used_books );
+ }
+
+ /**
+ * Imports Speakers
+ */
+ private function _import_speakers() {
+ global $wpdb;
+
+ /**
+ * Filter speakers that will be imported
+ *
+ * @var array $speakers Raw database data
+ */
+ $speakers = apply_filters( 'sm_import_se_speakers', $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}se_speakers" ) );
+
+ foreach ( $speakers as $speaker ) {
+ foreach (
+ array(
+ $speaker->first_name,
+ $speaker->last_name,
+ $speaker->first_name . ' ' . $speaker->last_name
+ ) as $name
+ ) {
+ if ( $term_data = term_exists( $name, 'wpfc_preacher' ) ) {
+ break;
+ }
+ }
+
+ if ( empty( $term_data ) ) {
+ $term_data = wp_insert_term( trim( $speaker->first_name . ' ' . $speaker->last_name ), 'wpfc_preacher' );
+ }
+
+ $this->_imported_speakers[ $speaker->speaker_id ] = array(
+ 'new_id' => $term_data['term_id'],
+ );
+ }
+ }
+
+ /**
+ * Imports Series
+ */
+ private function _import_series() {
+ global $wpdb;
+
+ /**
+ * Filter series that will be imported
+ *
+ * @var array $series Raw database data
+ */
+ $series = apply_filters( 'sm_import_se_series', $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}se_series" ) );
+
+ foreach ( $series as $item ) {
+ if ( ! $term_data = term_exists( $item->s_title, 'wpfc_sermon_series' ) ) {
+ $term_data = wp_insert_term( $item->s_title, 'wpfc_sermon_series', array(
+ 'description' => apply_filters( 'sm_import_se_series_description', $item->s_description ?: '' )
+ ) );
+ }
+
+ // Set image
+ $attachment_id = sm_import_and_set_post_thumbnail( $item->thumbnail_url, 0 );
+ if ( is_int( $attachment_id ) ) {
+ $assigned_images = get_option( 'sermon_image_plugin' );
+ $assigned_images[ $term_data['term_id'] ] = $attachment_id;
+ update_option( 'sermon_image_plugin', $assigned_images );
+ }
+
+ $this->_imported_series[ $item->series_id ] = array(
+ 'new_id' => $term_data['term_id'],
+ );
+ }
+ }
+
+ /**
+ * Imports Topics
+ */
+ private function _import_topics() {
+ global $wpdb;
+
+ /**
+ * Filter topics that will be imported
+ *
+ * @var array $topics Raw database data
+ */
+ $topics = apply_filters( 'sm_import_se_topics', $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}se_topics" ) );
+
+ foreach ( $topics as $topic ) {
+ if ( ! $term_data = term_exists( $topic->name, 'wpfc_sermon_topics' ) ) {
+ $term_data = wp_insert_term( $topic->name, 'wpfc_sermon_topics' );
+ }
+
+ $this->_imported_topics[ $topic->topic_id ] = array(
+ 'new_id' => $term_data['term_id'],
+ );
+ }
+ }
+
+ /**
+ * Import messages
+ */
+ private function _import_messages() {
+ global $wpdb;
+
+ // Imported messages
+ $imported = get_option( '_sm_import_se_messages', array() );
+
+ /**
+ * Filter messages that will be imported
+ *
+ * @var array Raw database data
+ */
+ $messages = apply_filters( 'sm_import_se_messages', $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}se_messages" ) );
+
+ /**
+ * Filter speaker association table that will be imported
+ *
+ * @var array Raw database data
+ */
+ $messages_speakers = apply_filters( 'sm_import_se_speaker_association', $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}se_message_speaker_matches" ) );
+
+ /**
+ * Filter topics association table that will be imported
+ *
+ * @var array Raw database data
+ */
+ $messages_topics = apply_filters( 'sm_import_se_topics_association', $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}se_message_topic_matches" ) );
+
+ /**
+ * Filter books association table that will be imported
+ *
+ * @var array Raw database data
+ */
+ $messages_books = apply_filters( 'sm_import_se_books_association', $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}se_book_message_matches" ) );
+
+ /**
+ * Filter series association table that will be imported
+ *
+ * @var array Raw database data
+ */
+ $messages_series = apply_filters( 'sm_import_se_series_association', $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}se_series_message_matches" ) );
+
+ // start the import
+ foreach ( $messages as $message ) {
+ $the_post = get_post( $message->wp_post_id );
+
+ if ( ! isset( $imported[ $message->wp_post_id ] ) ) {
+ $id = wp_insert_post( apply_filters( 'sm_import_se_message', array(
+ 'post_author' => $the_post->post_author,
+ 'post_date' => $the_post->post_date,
+ 'post_date_gmt' => $the_post->post_date_gmt,
+ 'post_content' => '%todo_render%',
+ 'post_title' => $message->title,
+ 'post_status' => $the_post->post_status,
+ 'post_type' => 'wpfc_sermon',
+ 'post_modified' => $the_post->post_modified,
+ 'post_modified_gmt' => $the_post->post_modified_gmt,
+ ) ) );
+
+ if ( $id === 0 ) {
+ // silently skip if error
+ continue;
+ }
+
+ $imported[ $message->wp_post_id ] = array(
+ 'new_id' => $id
+ );
+
+ /**
+ * we write it after each insert in case that we get fatal error - we don't want to
+ * import messages twice, it would be a mess
+ */
+ update_option( '_sm_import_se_messages', $imported );
+ } else {
+ $id = $imported[ $message->wp_post_id ]['new_id'];
+ }
+
+ // set speakers
+ if ( $keys = array_keys( array_map( function ( $element ) {
+ return $element->message_id;
+ }, $messages_speakers ), $message->message_id ) ) {
+ $terms = array();
+ foreach ( $keys as $key ) {
+ $terms[] = intval( $this->_imported_speakers[ intval( $messages_speakers[ $key ]->speaker_id ) ]['new_id'] );
+ }
+
+ if ( ! empty( $terms ) ) {
+ wp_set_object_terms( $id, $terms, 'wpfc_preacher' );
+ }
+ }
+
+ // set books
+ if ( $keys = array_keys( array_map( function ( $element ) {
+ return $element->message_id;
+ }, $messages_books ), $message->message_id ) ) {
+ $terms = array();
+ foreach ( $keys as $key ) {
+ $terms[] = intval( $this->_imported_books[ intval( $messages_books[ $key ]->book_id ) ]['new_id'] );
+ }
+
+ if ( ! empty( $terms ) ) {
+ wp_set_object_terms( $id, $terms, 'wpfc_bible_book' );
+ }
+ }
+
+ // set topics
+ if ( $keys = array_keys( array_keys( array_map( function ( $element ) {
+ return $element->message_id;
+ }, $messages_topics ), $message->message_id ) ) ) {
+ $terms = array();
+ foreach ( $keys as $key ) {
+ $terms[] = intval( $this->_imported_topics[ intval( $messages_topics[ $key ]->topic_id ) ]['new_id'] );
+ }
+
+ if ( ! empty( $terms ) ) {
+ wp_set_object_terms( $id, $terms, 'wpfc_sermon_topics' );
+ }
+ }
+
+ // set series
+ if ( $keys = array_keys( array_map( function ( $element ) {
+ return $element->message_id;
+ }, $messages_series ), $message->message_id ) ) {
+ $terms = array();
+ foreach ( $keys as $key ) {
+ $terms[] = intval( $this->_imported_series[ intval( $messages_series[ $key ]->series_id ) ]['new_id'] );
+ }
+
+ if ( ! empty( $terms ) ) {
+ wp_set_object_terms( $id, $terms, 'wpfc_sermon_series' );
+ }
+ }
+
+ // set scripture
+ if ( ! empty( $message->focus_scripture ) ) {
+ update_post_meta( $id, 'bible_passage', $message->focus_scripture );
+ }
+
+ // set description
+ if ( ! empty( $message->description ) ) {
+ update_post_meta( $id, 'sermon_description', $message->description );
+ }
+
+ // set sermon date
+ if ( ! empty( $message->date ) && $message->date !== '0000-00-00' ) {
+ update_post_meta( $id, 'sermon_date', $message->date );
+ }
+
+ // set audio length
+ if ( ! empty( $message->message_length ) ) {
+ update_post_meta( $id, '_wpfc_sermon_duration', substr_count( $message->message_length, ':' ) === 1 ? '00:' . $message->message_length : $message->message_length );
+ }
+
+ // set audio size (bytes)
+ if ( ! empty( $message->audio_file_size ) ) {
+ update_post_meta( $id, '_wpfc_sermon_size', $message->audio_file_size );
+ }
+
+ // set audio file
+ if ( ! empty( $message->audio_url ) ) {
+ update_post_meta( $id, 'sermon_audio', $message->audio_url );
+ }
+
+ // set video url
+ if ( ! empty( $message->video_url ) ) {
+ update_post_meta( $id, 'sermon_video_link', $message->video_url );
+ }
+
+ // set video embed
+ if ( ! empty( $message->embed_code ) ) {
+ update_post_meta( $id, 'sermon_video', $message->embed_code );
+ }
+
+ // set views
+ if ( ! empty( $message->audio_count ) ) {
+ update_post_meta( $id, 'Views', $message->audio_count );
+ }
+
+ // Update main file
+ if ( ! empty( $message->file_url ) ) {
+ update_post_meta( $id, 'sermon_notes', $message->file_url );
+ }
+
+ // Set image
+ sm_import_and_set_post_thumbnail( $message->message_thumbnail, $id );
+ }
+
+ // update term counts
+ foreach (
+ array(
+ '_imported_speakers' => 'wpfc_preacher',
+ '_imported_books' => 'wpfc_bible_book',
+ '_imported_series' => 'wpfc_sermon_series',
+ '_imported_topics' => 'wpfc_sermon_topics',
+ ) as $terms_array => $taxonomy
+ ) {
+ $terms = array();
+
+ foreach ( $this->{$terms_array} as $item ) {
+ $terms[] = intval( $item['new_id'] );
+ }
+
+ _update_generic_term_count( $terms, (object) array( 'name' => $taxonomy ) );
+ }
+ }
+}
diff --git a/includes/admin/settings/class-sm-settings-general.php b/includes/admin/settings/class-sm-settings-general.php
new file mode 100644
index 0000000..a321000
--- /dev/null
+++ b/includes/admin/settings/class-sm-settings-general.php
@@ -0,0 +1,105 @@
+id = 'general';
+ $this->label = __( 'General', 'sermon-manager-for-wordpress' );
+
+ parent::__construct();
+ }
+
+ /**
+ * Get settings array.
+ *
+ * @return array
+ */
+ public function get_settings() {
+ $settings = apply_filters( 'sm_general_settings', array(
+
+ array(
+ 'title' => __( 'General Settings', 'sermon-manager-for-wordpress' ),
+ 'type' => 'title',
+ 'desc' => '',
+ 'id' => 'general_settings'
+ ),
+ array(
+ 'title' => __( 'Archive Page Title', 'sermon-manager-for-wordpress' ),
+ 'type' => 'text',
+ 'id' => 'archive_title',
+ 'placeholder' => wp_sprintf( __( 'e.g. %s', 'sermon-manager-for-wordpress' ), __( 'Sermons', 'sermon-manager-for-wordpress' ) ),
+ ),
+ array(
+ 'title' => __( 'Archive Page Slug', 'sermon-manager-for-wordpress' ),
+ 'type' => 'text',
+ 'id' => 'archive_slug',
+ 'placeholder' => wp_sprintf( __( 'e.g. %s', 'sermon-manager-for-wordpress' ), sanitize_title( __( 'Sermons', 'sermon-manager-for-wordpress' ) ) ),
+ ),
+ array(
+ 'title' => __( 'Common Base Slug', 'sermon-manager-for-wordpress' ),
+ 'type' => 'checkbox',
+ 'desc' => __( 'Enable a common base slug across all taxonomies', 'sermon-manager-for-wordpress' ),
+ // translators: %1$s see msgid "sermons/preacher", effectively sermons/preacher
+ // translators: %2$s see msgid "sermons/series", effectively sermons/series
+ 'desc_tip' => wp_sprintf( __( 'This is for users who want to have a common base slug across all taxonomies, e.g. %1$s or %2$s.', 'sermon-manager-for-wordpress' ), '' . __( 'sermons/preacher', 'sermon-manager-for-wordpress' ) . '
', '' . __( 'sermons/series', 'sermon-manager-for-wordpress' ) . '
' ),
+ 'id' => 'common_base_slug',
+ ),
+ array(
+ 'title' => __( 'Enable Template Files', 'sermon-manager-for-wordpress' ),
+ 'type' => 'checkbox',
+ // translators: %s effectively /views
+ // translators: Since /views is a locale independent folder name it MUST NOT be localized
+ 'desc' => wp_sprintf( __( 'Enable template files found in the %s folder', 'sermon-manager-for-wordpress' ), '/views
' ),
+ 'desc_tip' => __( 'This is for users upgrading from an older version who have issues with version 1.5+.', 'sermon-manager-for-wordpress' ),
+ 'id' => 'template',
+ ),
+ array(
+ 'title' => __( 'Disable Sermon Styles', 'sermon-manager-for-wordpress' ),
+ 'type' => 'checkbox',
+ 'desc' => __( 'Disable Sermon CSS', 'sermon-manager-for-wordpress' ),
+ // translators: %s effectively sermons.css
+ 'desc_tip' => wp_sprintf( __( 'If you do this, you should copy the styles from %s and include them in your theme CSS.', 'sermon-manager-for-wordpress' ), 'sermons.css
' ),
+ 'id' => 'css',
+ ),
+ array(
+ 'title' => __( 'Display audio player or video on archive pages', 'sermon-manager-for-wordpress' ),
+ 'type' => 'checkbox',
+ 'desc' => __( 'Display audio player or video on archive pages', 'sermon-manager-for-wordpress' ),
+ 'id' => 'archive_player',
+ ),
+ array(
+ 'title' => __( 'Use old audio player', 'sermon-manager-for-wordpress' ),
+ 'type' => 'checkbox',
+ 'desc' => __( 'Use old audio player', 'sermon-manager-for-wordpress' ),
+ 'id' => 'use_old_player',
+ ),
+ array(
+ 'title' => __( 'Custom label for “Preacher”', 'sermon-manager-for-wordpress' ),
+ 'type' => 'text',
+ 'desc_tip' => __( 'Note: it will also change preacher slugs.', 'sermon-manager-for-wordpress' ),
+ 'id' => 'preacher_label',
+ ),
+ array(
+ 'title' => __( 'Sermon date format', 'sermon-manager-for-wordpress' ),
+ 'type' => 'select',
+ 'desc' => __( '(used when creating a new Sermon)', 'sermon-manager-for-wordpress' ),
+ 'id' => 'date_format',
+ 'options' => array(
+ '0' => 'mm/dd/YY',
+ '1' => 'dd/mm/YY',
+ '2' => 'YY/mm/dd',
+ '3' => 'YY/dd/mm',
+ )
+ ),
+
+ array( 'type' => 'sectionend', 'id' => 'general_settings' ),
+ ) );
+
+ return apply_filters( 'sm_get_settings_' . $this->id, $settings );
+ }
+}
+
+return new SM_Settings_General();
diff --git a/includes/admin/settings/class-sm-settings-page.php b/includes/admin/settings/class-sm-settings-page.php
new file mode 100644
index 0000000..659eb14
--- /dev/null
+++ b/includes/admin/settings/class-sm-settings-page.php
@@ -0,0 +1,121 @@
+id, array( $this, 'output_sections' ) );
+ add_action( 'sm_settings_' . $this->id, array( $this, 'output' ) );
+ add_action( 'sm_settings_save_' . $this->id, array( $this, 'save' ) );
+ }
+
+ /**
+ * Get settings page ID.
+ *
+ * @return string
+ */
+ public function get_id() {
+ return $this->id;
+ }
+
+ /**
+ * Get settings page label.
+ *
+ * @return string
+ */
+ public function get_label() {
+ return $this->label;
+ }
+
+ /**
+ * Add this page to settings.
+ *
+ * @param array $pages
+ *
+ * @return mixed
+ */
+ public function add_settings_page( $pages ) {
+ $pages[ $this->id ] = $this->label;
+
+ return $pages;
+ }
+
+ /**
+ * Output sections.
+ */
+ public function output_sections() {
+ global $current_section;
+
+ $sections = $this->get_sections();
+
+ if ( empty( $sections ) || 1 === sizeof( $sections ) ) {
+ return;
+ }
+
+ echo '';
+
+ $array_keys = array_keys( $sections );
+
+ foreach ( $sections as $id => $label ) {
+ echo '' . $label . ' ' . ( end( $array_keys ) == $id ? '' : '|' ) . ' ';
+ }
+
+ echo ' ';
+ }
+
+ /**
+ * Get sections.
+ *
+ * @return array
+ */
+ public function get_sections() {
+ return apply_filters( 'sm_get_sections_' . $this->id, array() );
+ }
+
+ /**
+ * Output the settings.
+ */
+ public function output() {
+ $settings = $this->get_settings();
+
+ SM_Admin_Settings::output_fields( $settings );
+ }
+
+ /**
+ * Get settings array.
+ *
+ * @return array
+ */
+ public function get_settings() {
+ return apply_filters( 'sm_get_settings_' . $this->id, array() );
+ }
+
+ /**
+ * Save settings.
+ */
+ public function save() {
+ global $current_section;
+
+ $settings = $this->get_settings();
+ SM_Admin_Settings::save_fields( $settings );
+
+ if ( $current_section ) {
+ do_action( 'sm_update_options_' . $this->id . '_' . $current_section );
+ }
+ }
+}
\ No newline at end of file
diff --git a/includes/admin/settings/class-sm-settings-podcast.php b/includes/admin/settings/class-sm-settings-podcast.php
new file mode 100644
index 0000000..d61dcd3
--- /dev/null
+++ b/includes/admin/settings/class-sm-settings-podcast.php
@@ -0,0 +1,185 @@
+id = 'podcast';
+ $this->label = __( 'Podcast', 'sermon-manager-for-wordpress' );
+ add_action( 'sm_settings_podcast_settings_after', array( $this, 'after' ) );
+
+ parent::__construct();
+ }
+
+ /**
+ * Get settings array.
+ *
+ * @return array
+ */
+ public function get_settings() {
+ $settings = apply_filters( 'sm_podcast_settings', array(
+ array(
+ 'title' => __( 'Podcast Settings', 'sermon-manager-for-wordpress' ),
+ 'type' => 'title',
+ 'desc' => '',
+ 'id' => 'podcast_settings',
+ ),
+ array(
+ 'title' => __( 'Title' ),
+ 'type' => 'text',
+ 'id' => 'title',
+ 'placeholder' => get_bloginfo( 'name' ),
+ ),
+ array(
+ 'title' => __( 'Description', 'sermon-manager-for-wordpress' ),
+ 'type' => 'text',
+ 'id' => 'description',
+ 'placeholder' => get_bloginfo( 'description' ),
+ ),
+ array(
+ 'title' => __( 'Website Link', 'sermon-manager-for-wordpress' ),
+ 'type' => 'text',
+ 'id' => 'website_link',
+ 'placeholder' => home_url(),
+ ),
+ array(
+ 'title' => __( 'Language', 'sermon-manager-for-wordpress' ),
+ 'type' => 'text',
+ 'id' => 'language',
+ 'placeholder' => get_bloginfo( 'language' ),
+ ),
+ array(
+ 'title' => __( 'Copyright', 'sermon-manager-for-wordpress' ),
+ 'type' => 'text',
+ 'id' => 'copyright',
+ 'placeholder' => wp_sprintf( __( 'Copyright © %s', 'sermon-manager-for-wordpress' ), get_bloginfo( 'name' ) ),
+ 'desc' => wp_sprintf( esc_html__( 'Tip: Use %s to generate a copyright symbol.', 'sermon-manager-for-wordpress' ), '' . htmlspecialchars( '©' ) . '
' ),
+ ),
+ array(
+ 'title' => __( 'Webmaster Name', 'sermon-manager-for-wordpress' ),
+ 'type' => 'text',
+ 'id' => 'webmaster_name',
+ 'placeholder' => __( 'e.g. Your Name', 'sermon-manager-for-wordpress' ),
+ ),
+ array(
+ 'title' => __( 'Webmaster Email', 'sermon-manager-for-wordpress' ),
+ 'type' => 'email',
+ 'id' => 'webmaster_email',
+ 'placeholder' => __( 'e.g. Your Email', 'sermon-manager-for-wordpress' ),
+ ),
+ array(
+ 'title' => __( 'Author', 'sermon-manager-for-wordpress' ),
+ 'type' => 'text',
+ 'id' => 'itunes_author',
+ 'placeholder' => __( 'e.g. Primary Speaker or Church Name', 'sermon-manager-for-wordpress' ),
+ 'desc' => __( 'This will display at the “Artist” in the iTunes Store.', 'sermon-manager-for-wordpress' ),
+ ),
+ array(
+ 'title' => __( 'Subtitle', 'sermon-manager-for-wordpress' ),
+ 'type' => 'text',
+ 'id' => 'itunes_subtitle',
+ 'placeholder' => wp_sprintf( __( 'e.g. Preaching and teaching audio from %s', 'sermon-manager-for-wordpress' ), get_bloginfo( 'name' ) ),
+ 'desc' => __( 'Your subtitle should briefly tell the listener what they can expect to hear.', 'sermon-manager-for-wordpress' ),
+ ),
+ array(
+ 'title' => __( 'Summary', 'sermon-manager-for-wordpress' ),
+ 'type' => 'text',
+ 'id' => 'itunes_summary',
+ 'placeholder' => __(
+ wp_sprintf( 'e.g. Weekly teaching audio brought to you by %s in City, State.', 'sermon-manager-for-wordpress' ),
+ get_bloginfo( 'name' ) ),
+ 'desc' => __( 'Keep your Podcast Summary short, sweet and informative. Be sure to include a brief statement about your mission and in what region your audio content originates.', 'sermon-manager-for-wordpress' ),
+ ),
+ array(
+ 'title' => __( 'Owner Name', 'sermon-manager-for-wordpress' ),
+ 'type' => 'text',
+ 'id' => 'itunes_owner_name',
+ 'placeholder' => get_bloginfo( 'name' ),
+ 'desc' => __( 'This should typically be the name of your Church.', 'sermon-manager-for-wordpress' ),
+ ),
+ array(
+ 'title' => __( 'Owner Email', 'sermon-manager-for-wordpress' ),
+ 'type' => 'text',
+ 'id' => 'itunes_owner_email',
+ 'placeholder' => __( 'e.g. Your Email', 'sermon-manager-for-wordpress' ),
+ 'desc' => __( 'Use an email address that you don’t mind being made public. If someone wants to contact you regarding your Podcast this is the address they will use.', 'sermon-manager-for-wordpress' ),
+ ),
+ array(
+ 'title' => __( 'Cover Image', 'sermon-manager-for-wordpress' ),
+ 'type' => 'image',
+ 'id' => 'itunes_cover_image',
+ 'desc' => __( 'This JPG will serve as the Podcast artwork in the iTunes Store. The image must be between 1,400px by 1,400px and 3,000px by 3,000px or else iTunes will not accept your feed.', 'sermon-manager-for-wordpress' ),
+ ),
+ array(
+ 'title' => __( 'Sub Category', 'sermon-manager-for-wordpress' ),
+ 'type' => 'select',
+ 'id' => 'itunes_sub_category',
+ 'options' => array(
+ '0' => __( 'Sub Category', 'sermon-manager-for-wordpress' ),
+ '1' => __( 'Buddhism', 'sermon-manager-for-wordpress' ),
+ '2' => __( 'Christianity', 'sermon-manager-for-wordpress' ),
+ '3' => __( 'Hinduism', 'sermon-manager-for-wordpress' ),
+ '4' => __( 'Islam', 'sermon-manager-for-wordpress' ),
+ '5' => __( 'Judaism', 'sermon-manager-for-wordpress' ),
+ '6' => __( 'Other', 'sermon-manager-for-wordpress' ),
+ '7' => __( 'Spirituality', 'sermon-manager-for-wordpress' ),
+ ),
+ ),
+ array(
+ 'title' => __( 'PodTrac Tracking', 'sermon-manager-for-wordpress' ),
+ 'type' => 'checkbox',
+ 'id' => 'podtrac',
+ 'desc' => __( 'Enables PodTrac tracking.', 'sermon-manager-for-wordpress' ),
+ // translators: %s podtrac.com
+ 'desc_tip' => wp_sprintf( __( 'For more info on PodTrac or to sign up for an account, visit %s', 'sermon-manager-for-wordpress' ), 'podtrac.com ' ),
+ ),
+ array(
+ 'title' => __( 'HTML in description', 'sermon-manager-for-wordpress' ),
+ 'type' => 'checkbox',
+ 'id' => 'enable_podcast_html_description',
+ 'desc' => __( 'Enables showing of HTML in iTunes description field. Uncheck if description looks messy.', 'sermon-manager-for-wordpress' ),
+ ),
+ array(
+ 'title' => __( 'Number of podcasts to show', 'sermon-manager-for-wordpress' ),
+ 'type' => 'number',
+ 'id' => 'podcasts_per_page',
+ 'placeholder' => get_option( 'posts_per_rss' ),
+ ),
+
+ array( 'type' => 'sectionend', 'id' => 'podcast_settings' ),
+ ) );
+
+ return apply_filters( 'sm_get_settings_' . $this->id, $settings );
+ }
+
+ public function after() {
+ ?>
+
+
+ = __( 'Feed URL to Submit to iTunes', 'sermon-manager-for-wordpress' ) ?>
+
+
+
+ = // translators: %s Feed Validator link, see msgid "Feed Validator"
+ wp_sprintf( esc_html__( 'Use the %s to diagnose and fix any problems before submitting your Podcast to iTunes.', 'sermon-manager-for-wordpress' ), '' . esc_html__( 'Feed Validator', 'sermon-manager-for-wordpress' ) . ' ' ) ?>
+
+
+ = // translators: %s see msgid "Submit Your Podcast"
+ wp_sprintf( esc_html__( 'Once your Podcast Settings are complete and your Sermons are ready, it’s time to %s to the iTunes Store!', 'sermon-manager-for-wordpress' ), '' . esc_html__( 'Submit Your Podcast', 'sermon-manager-for-wordpress' ) . ' ' ) ?>
+
+
+ = // translators: %s see msgid "FeedBurner"
+ wp_sprintf( esc_html__( 'Alternatively, if you want to track your Podcast subscribers, simply pass the Podcast Feed URL above through %s. FeedBurner will then give you a new URL to submit to iTunes instead.', 'sermon-manager-for-wordpress' ), '' . esc_html__( 'FeedBurner', 'sermon-manager-for-wordpress' ) . ' ' ) ?>
+
+
+ = // translators: %s see msgid "iTunes FAQ for Podcast Makers"
+ wp_sprintf( esc_html__( 'Please read the %s for more information.', 'sermon-manager-for-wordpress' ), '' . esc_html__( 'iTunes FAQ for Podcast Makers', 'sermon-manager-for-wordpress' ) . ' ' ) ?>
+
+
+ id = 'verse';
+ $this->label = __( 'Verse', 'sermon-manager-for-wordpress' );
+
+ parent::__construct();
+ }
+
+ /**
+ * Get settings array.
+ *
+ * @return array
+ */
+ public function get_settings() {
+ $settings = apply_filters( 'sm_verse_settings', array(
+ array(
+ 'title' => __( 'Verse Settings', 'sermon-manager-for-wordpress' ),
+ 'type' => 'title',
+ 'desc' => '',
+ 'id' => 'verse_settings'
+ ),
+ array(
+ 'title' => __( 'Verse Popups', 'sermon-manager-for-wordpress' ),
+ 'type' => 'checkbox',
+ 'desc' => __( 'Disable Bib.ly verse popups', 'sermon-manager-for-wordpress' ),
+ 'id' => 'bibly',
+ ),
+ array(
+ 'title' => __( 'Bible Version for Verse Popups', 'sermon-manager-for-wordpress' ),
+ 'type' => 'select',
+ // translators: %s see effectively ESV
+ 'desc' => wp_sprintf( __( 'Warning! %s is not supported if your site uses SSL (HTTPS).', 'sermon-manager-for-wordpress' ), 'ESV
' ),
+ 'id' => 'bibly_version',
+ 'options' => array(
+ 'KJV' => 'KJV',
+ 'ESV' => 'ESV',
+ 'NET' => 'NET',
+ 'LEB' => 'LEB'
+ ),
+ ),
+ array(
+ 'title' => __( 'Show key verse in widget', 'sermon-manager-for-wordpress' ),
+ 'type' => 'checkbox',
+ 'desc' => __( 'Show key verse in widget', 'sermon-manager-for-wordpress' ),
+ 'id' => 'widget_show_key_verse',
+ ),
+
+ array( 'type' => 'sectionend', 'id' => 'verse_settings' ),
+ ) );
+
+ return apply_filters( 'sm_get_settings_' . $this->id, $settings );
+ }
+}
+
+return new SM_Settings_Verse();
diff --git a/includes/admin/sm-admin-functions.php b/includes/admin/sm-admin-functions.php
new file mode 100644
index 0000000..8368ef2
--- /dev/null
+++ b/includes/admin/sm-admin-functions.php
@@ -0,0 +1,24 @@
+ID : $thepostid;
+ $field['placeholder'] = isset( $field['placeholder'] ) ? $field['placeholder'] : '';
+ $field['class'] = isset( $field['class'] ) ? $field['class'] : 'short';
+ $field['style'] = isset( $field['style'] ) ? $field['style'] : '';
+ $field['wrapper_class'] = isset( $field['wrapper_class'] ) ? $field['wrapper_class'] : '';
+ $field['value'] = isset( $field['value'] ) ? $field['value'] : get_post_meta( $thepostid, $field['id'], true );
+ $field['name'] = isset( $field['name'] ) ? $field['name'] : $field['id'];
+ $field['type'] = isset( $field['type'] ) ? $field['type'] : 'text';
+ $field['desc_tip'] = isset( $field['desc_tip'] ) ? $field['desc_tip'] : false;
+ $data_type = empty( $field['data_type'] ) ? '' : $field['data_type'];
+
+ switch ( $data_type ) {
+ case 'url' :
+ $field['class'] .= ' sm_input_url';
+ $field['value'] = esc_url( $field['value'] );
+ break;
+
+ default :
+ break;
+ }
+
+ // Custom attribute handling
+ $custom_attributes = array();
+
+ if ( ! empty( $field['custom_attributes'] ) && is_array( $field['custom_attributes'] ) ) {
+
+ foreach ( $field['custom_attributes'] as $attribute => $value ) {
+ $custom_attributes[] = esc_attr( $attribute ) . '="' . esc_attr( $value ) . '"';
+ }
+ }
+
+ echo '
+ ' . wp_kses_post( $field['label'] ) . ' ';
+
+ if ( ! empty( $field['description'] ) && false !== $field['desc_tip'] ) {
+ //echo sm_help_tip( $field['description'] );
+ }
+
+ echo ' ';
+
+ if ( ! empty( $field['description'] ) && false === $field['desc_tip'] ) {
+ echo '' . wp_kses_post( $field['description'] ) . ' ';
+ }
+
+ echo '
';
+}
+
+/**
+ * Output a hidden input box.
+ *
+ * @param array $field
+ */
+function sm_wp_hidden_input( $field ) {
+ global $thepostid, $post;
+
+ $thepostid = empty( $thepostid ) ? $post->ID : $thepostid;
+ $field['value'] = isset( $field['value'] ) ? $field['value'] : get_post_meta( $thepostid, $field['id'], true );
+ $field['class'] = isset( $field['class'] ) ? $field['class'] : '';
+
+ echo ' ';
+}
+
+/**
+ * Output a textarea input box.
+ *
+ * @param array $field
+ */
+function sm_wp_textarea_input( $field ) {
+ global $thepostid, $post;
+
+ $thepostid = empty( $thepostid ) ? $post->ID : $thepostid;
+ $field['placeholder'] = isset( $field['placeholder'] ) ? $field['placeholder'] : '';
+ $field['class'] = isset( $field['class'] ) ? $field['class'] : 'short';
+ $field['style'] = isset( $field['style'] ) ? $field['style'] : '';
+ $field['wrapper_class'] = isset( $field['wrapper_class'] ) ? $field['wrapper_class'] : '';
+ $field['value'] = isset( $field['value'] ) ? $field['value'] : get_post_meta( $thepostid, $field['id'], true );
+ $field['desc_tip'] = isset( $field['desc_tip'] ) ? $field['desc_tip'] : false;
+ $field['name'] = isset( $field['name'] ) ? $field['name'] : $field['id'];
+ $field['rows'] = isset( $field['rows'] ) ? $field['rows'] : 2;
+ $field['cols'] = isset( $field['cols'] ) ? $field['cols'] : 20;
+
+ // Custom attribute handling
+ $custom_attributes = array();
+
+ if ( ! empty( $field['custom_attributes'] ) && is_array( $field['custom_attributes'] ) ) {
+
+ foreach ( $field['custom_attributes'] as $attribute => $value ) {
+ $custom_attributes[] = esc_attr( $attribute ) . '="' . esc_attr( $value ) . '"';
+ }
+ }
+
+ echo '
+ ' . wp_kses_post( $field['label'] ) . ' ';
+
+ if ( ! empty( $field['description'] ) && false !== $field['desc_tip'] ) {
+ //echo sm_help_tip( $field['description'] );
+ }
+
+ echo ' ';
+
+ if ( ! empty( $field['description'] ) && false === $field['desc_tip'] ) {
+ echo '' . wp_kses_post( $field['description'] ) . ' ';
+ }
+
+ echo '
';
+}
+
+/**
+ * Output a checkbox input box.
+ *
+ * @param array $field
+ */
+function sm_wp_checkbox( $field ) {
+ global $thepostid, $post;
+
+ $thepostid = empty( $thepostid ) ? $post->ID : $thepostid;
+ $field['class'] = isset( $field['class'] ) ? $field['class'] : 'checkbox';
+ $field['style'] = isset( $field['style'] ) ? $field['style'] : '';
+ $field['wrapper_class'] = isset( $field['wrapper_class'] ) ? $field['wrapper_class'] : '';
+ $field['value'] = isset( $field['value'] ) ? $field['value'] : get_post_meta( $thepostid, $field['id'], true );
+ $field['cbvalue'] = isset( $field['cbvalue'] ) ? $field['cbvalue'] : 'yes';
+ $field['name'] = isset( $field['name'] ) ? $field['name'] : $field['id'];
+ $field['desc_tip'] = isset( $field['desc_tip'] ) ? $field['desc_tip'] : false;
+
+ // Custom attribute handling
+ $custom_attributes = array();
+
+ if ( ! empty( $field['custom_attributes'] ) && is_array( $field['custom_attributes'] ) ) {
+
+ foreach ( $field['custom_attributes'] as $attribute => $value ) {
+ $custom_attributes[] = esc_attr( $attribute ) . '="' . esc_attr( $value ) . '"';
+ }
+ }
+
+ echo '
+ ' . wp_kses_post( $field['label'] ) . ' ';
+
+ if ( ! empty( $field['description'] ) && false !== $field['desc_tip'] ) {
+ //echo sm_help_tip( $field['description'] );
+ }
+
+ echo ' ';
+
+ if ( ! empty( $field['description'] ) && false === $field['desc_tip'] ) {
+ echo '' . wp_kses_post( $field['description'] ) . ' ';
+ }
+
+ echo '
';
+}
+
+/**
+ * Output a select input box.
+ *
+ * @param array $field
+ */
+function sm_wp_select( $field ) {
+ global $thepostid, $post;
+
+ $thepostid = empty( $thepostid ) ? $post->ID : $thepostid;
+ $field['class'] = isset( $field['class'] ) ? $field['class'] : 'select short';
+ $field['style'] = isset( $field['style'] ) ? $field['style'] : '';
+ $field['wrapper_class'] = isset( $field['wrapper_class'] ) ? $field['wrapper_class'] : '';
+ $field['value'] = isset( $field['value'] ) ? $field['value'] : get_post_meta( $thepostid, $field['id'], true );
+ $field['name'] = isset( $field['name'] ) ? $field['name'] : $field['id'];
+ $field['desc_tip'] = isset( $field['desc_tip'] ) ? $field['desc_tip'] : false;
+
+ // Custom attribute handling
+ $custom_attributes = array();
+
+ if ( ! empty( $field['custom_attributes'] ) && is_array( $field['custom_attributes'] ) ) {
+
+ foreach ( $field['custom_attributes'] as $attribute => $value ) {
+ $custom_attributes[] = esc_attr( $attribute ) . '="' . esc_attr( $value ) . '"';
+ }
+ }
+
+ echo '
+ ' . wp_kses_post( $field['label'] ) . ' ';
+
+ if ( ! empty( $field['description'] ) && false !== $field['desc_tip'] ) {
+ //echo sm_help_tip( $field['description'] );
+ }
+
+ echo '';
+
+ foreach ( $field['options'] as $key => $value ) {
+ echo '' . esc_html( $value ) . ' ';
+ }
+
+ echo ' ';
+
+ if ( ! empty( $field['description'] ) && false === $field['desc_tip'] ) {
+ echo '' . wp_kses_post( $field['description'] ) . ' ';
+ }
+
+ echo '
';
+}
+
+/**
+ * Output a radio input box.
+ *
+ * @param array $field
+ */
+function sm_wp_radio( $field ) {
+ global $thepostid, $post;
+
+ $thepostid = empty( $thepostid ) ? $post->ID : $thepostid;
+ $field['class'] = isset( $field['class'] ) ? $field['class'] : 'select short';
+ $field['style'] = isset( $field['style'] ) ? $field['style'] : '';
+ $field['wrapper_class'] = isset( $field['wrapper_class'] ) ? $field['wrapper_class'] : '';
+ $field['value'] = isset( $field['value'] ) ? $field['value'] : get_post_meta( $thepostid, $field['id'], true );
+ $field['name'] = isset( $field['name'] ) ? $field['name'] : $field['id'];
+ $field['desc_tip'] = isset( $field['desc_tip'] ) ? $field['desc_tip'] : false;
+
+ echo '' . wp_kses_post( $field['label'] ) . ' ';
+
+ if ( ! empty( $field['description'] ) && false !== $field['desc_tip'] ) {
+ //echo sm_help_tip( $field['description'] );
+ }
+
+ echo '';
+
+ if ( ! empty( $field['description'] ) && false === $field['desc_tip'] ) {
+ echo '' . wp_kses_post( $field['description'] ) . ' ';
+ }
+
+ echo ' ';
+}
diff --git a/includes/admin/views/html-admin-import-export.php b/includes/admin/views/html-admin-import-export.php
new file mode 100644
index 0000000..427584e
--- /dev/null
+++ b/includes/admin/views/html-admin-import-export.php
@@ -0,0 +1,140 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Plugin not installed
+
+
+
+
+
+
+
+
+
+
+
+
+
Plugin not installed
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/includes/admin/views/html-admin-settings.php b/includes/admin/views/html-admin-settings.php
new file mode 100644
index 0000000..83a2e0a
--- /dev/null
+++ b/includes/admin/views/html-admin-settings.php
@@ -0,0 +1,102 @@
+
+
+
+
Sermon Manager Settings
+
+
+
+
+
+
+
+
+
' . esc_html__( 'Sign up', 'sermon-manager-for-wordpress' ) . '' ); ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/includes/class-sm-api.php b/includes/class-sm-api.php
index c94db35..a09c38e 100644
--- a/includes/class-sm-api.php
+++ b/includes/class-sm-api.php
@@ -74,10 +74,10 @@ public function save_custom_data( $post_ID, $post, $update ) {
*/
public function fix_ordering( $args ) {
if ( $args['orderby'] === 'date' ) {
- $args['orderby'] = 'meta_value_num';
- $args['meta_key'] = 'sermon_date';
- $args['meta_value_num'] = time();
- $args['meta_compare'] = '<=';
+ $args['orderby'] = 'meta_value_num';
+ $args['meta_key'] = 'sermon_date';
+ $args['meta_value_num'] = time();
+ $args['meta_compare'] = '<=';
} elseif ( $args['orderby'] === 'wpdate' ) {
$args['orderby'] = 'date';
}
diff --git a/includes/class-sm-autoloader.php b/includes/class-sm-autoloader.php
new file mode 100644
index 0000000..1893aed
--- /dev/null
+++ b/includes/class-sm-autoloader.php
@@ -0,0 +1,95 @@
+include_path = untrailingslashit( plugin_dir_path( SM_PLUGIN_FILE ) ) . '/includes/';
+ }
+
+ /**
+ * Auto-load SM classes on demand to reduce memory consumption.
+ *
+ * @param string $class
+ */
+ public function autoload( $class ) {
+ $class = strtolower( $class );
+
+ if ( 0 !== strpos( $class, 'sm_' ) ) {
+ return;
+ }
+
+ $file = $this->get_file_name_from_class( $class );
+ $path = '';
+
+ if ( strpos( $class, 'sm_shortcode_' ) === 0 ) {
+ $path = $this->include_path . 'shortcodes/';
+ } elseif ( strpos( $class, 'sm_meta_box' ) === 0 ) {
+ $path = $this->include_path . 'admin/meta-boxes/';
+ } elseif ( strpos( $class, 'sm_admin' ) === 0 ) {
+ $path = $this->include_path . 'admin/';
+ } elseif ( strpos( $class, 'sm_log_handler_' ) === 0 ) {
+ $path = $this->include_path . 'log-handlers/';
+ } elseif ( strpos( $class, 'sm_import_' ) === 0 ) {
+ $path = $this->include_path . 'admin/import/';
+ }
+
+ if ( empty( $path ) || ! $this->load_file( $path . $file ) ) {
+ $this->load_file( $this->include_path . $file );
+ }
+ }
+
+ /**
+ * Take a class name and turn it into a file name.
+ *
+ * @param string $class The class name
+ *
+ * @return string File name
+ * @access private
+ */
+ private function get_file_name_from_class( $class ) {
+ return 'class-' . str_replace( '_', '-', $class ) . '.php';
+ }
+
+ /**
+ * Include a class file.
+ *
+ * @param string $path The path to include
+ *
+ * @return bool Successful or not
+ * @access private
+ */
+ private function load_file( $path ) {
+ if ( $path && is_readable( $path ) ) {
+ /** @noinspection PhpIncludeInspection */
+ include_once( $path );
+
+ return true;
+ }
+
+ return false;
+ }
+}
+
+new SM_Autoloader();
diff --git a/includes/class-sm-dates-wp.php b/includes/class-sm-dates-wp.php
index 3bbd467..e4c68ab 100644
--- a/includes/class-sm-dates-wp.php
+++ b/includes/class-sm-dates-wp.php
@@ -101,7 +101,8 @@ public static function save_series_date( $post_ID, $post, $update ) {
public static function update_series_date() {
foreach (
get_terms( array(
- 'taxonomy' => 'wpfc_sermon_series',
+ 'taxonomy' => 'wpfc_sermon_series',
+ 'hide_empty' => false,
) ) as $term
) {
$term_meta = get_term_meta( $term->term_id );
@@ -116,8 +117,31 @@ public static function update_series_date() {
if ( ! empty( $dates ) ) {
arsort( $dates );
- update_term_meta( $term->term_id, 'sermon_date', $dates[0] );
+ $date = $dates[0];
+ } else {
+ $query = new WP_Query( array(
+ 'post_type' => 'wpfc_sermon',
+ 'posts_per_page' => 1,
+ 'meta_key' => 'sermon_date',
+ 'meta_value_num' => time(),
+ 'meta_compare' => '<=',
+ 'orderby' => 'meta_value_num',
+ 'tax_query' => array(
+ array(
+ 'taxonomy' => 'wpfc_sermon_series',
+ 'field' => 'term_id',
+ 'terms' => $term->term_id
+ )
+ )
+ ) );
+ if ( $query->have_posts() ) {
+ $date = get_post_meta( $query->posts[0]->ID, 'sermon_date', true );
+ } else {
+ $date = 0;
+ }
}
+
+ update_term_meta( $term->term_id, 'sermon_date', $date );
}
}
}
diff --git a/includes/class-sm-dates.php b/includes/class-sm-dates.php
index 95b8864..a4b292f 100644
--- a/includes/class-sm-dates.php
+++ b/includes/class-sm-dates.php
@@ -48,7 +48,7 @@ public static function get( $format = '', $post = null, $force_unix_sanitation =
// If it's already an Unix timestamp, don't convert it
if ( is_numeric( $date ) && $date = intval( trim( $date ) ) ) {
$dt = DateTime::createFromFormat( 'U', $date );
- if ( $dt->format( 'H' ) !== '00' && $dt->format( 'i' ) !== '00' ) {
+ if ( $dt->format( 'H' ) !== '00' || $dt->format( 'i' ) !== '00' ) {
$has_time = true;
}
} else {
diff --git a/includes/class-sm-error-recovery.php b/includes/class-sm-error-recovery.php
deleted file mode 100644
index 6e83d6c..0000000
--- a/includes/class-sm-error-recovery.php
+++ /dev/null
@@ -1,321 +0,0 @@
-query( $sql );
- if ( $result->num_rows === 0 ) {
- $sql = "INSERT INTO {$table_prefix}options (option_name, option_value, autoload) VALUES ('_sm_recovery_do_not_catch', '0', 'yes')";
- } else {
- $sql = "UPDATE {$table_prefix}options SET option_value = '0' WHERE option_name = '_sm_recovery_do_not_catch'";
- }
- $mysqli->query( $sql );
- }
-
- $sql = "SELECT option_value FROM {$table_prefix}options WHERE option_name = '_sm_recovery_do_not_catch'";
- $result = $mysqli->query( $sql );
- if ( $result->num_rows === 0 ) {
- $does_not_exist = true;
- $sm_do_not_catch = false;
- } else {
- $result = $result->fetch_assoc();
- $sm_do_not_catch = $result['option_value'] == 1;
- }
-
- if ( $sm_do_not_catch ) {
- return;
- }
-
- self::$_error = error_get_last();
-
- if ( self::_is_fatal() ) {
- // check if it's caused by SM
- self::_update_db();
-
- if ( ! empty( $does_not_exist ) ) {
- $sql = "INSERT INTO {$table_prefix}options (option_name, option_value, autoload) VALUES ('_sm_recovery_do_not_catch', '1', 'yes')";
- } else {
- $sql = "UPDATE {$table_prefix}options SET option_value = '1' WHERE option_name = '_sm_recovery_do_not_catch'";
- }
- $mysqli->query( $sql );
-
- if ( strpos( $_SERVER['REQUEST_URI'], 'wp-admin' ) === false ) {
- $content = file_get_contents( 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] );
- $headers = get_headers( 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] );
- if ( ! ( strpos( strtolower( $content ), 'fatal error' ) === false &&
- $content !== '' &&
- substr( $headers[0], 9, 3 ) != 500 ) ) {
- self::reset_db();
- }
- } else {
- if ( strpos( self::$_error['message'], 'sermon' ) === false &&
- strpos( $_SERVER['REQUEST_URI'], 'sermon' ) === false ) {
- self::reset_db();
- }
- }
-
- $mysqli->query( "UPDATE {$table_prefix}options SET option_value = '0' WHERE option_name = '_sm_recovery_do_not_catch'" );
- }
- }
-
- /**
- * Checks if PHP error is fatal
- *
- * @access private
- *
- * @return bool True if it is, false otherwise
- */
- private static function _is_fatal() {
- return in_array( self::$_error['type'], self::$_catch_errors );
- }
-
- /**
- * Prevents Sermon Manager from running and saves error message for displaying
- *
- * @access private
- */
- private static function _update_db() {
- global $table_prefix;
- $mysqli = new mysqli( DB_HOST, DB_USER, DB_PASSWORD, DB_NAME );
-
- // check if set
- $sql = "SELECT option_id FROM {$table_prefix}options WHERE option_name = '_sm_recovery_disable'";
- $result = $mysqli->query( $sql );
- if ( $result->num_rows === 0 ) {
- $sql = "INSERT INTO {$table_prefix}options (option_name, option_value, autoload) VALUES ('_sm_recovery_disable', '1', 'yes')";
- } else {
- $sql = "UPDATE {$table_prefix}options SET option_value = '1' WHERE option_name = '_sm_recovery_disable'";
- }
- $mysqli->query( $sql );
-
- // check if set
- $sql = "SELECT option_id FROM {$table_prefix}options WHERE option_name = '_sm_recovery_last_fatal_error'";
- $result = $mysqli->query( $sql );
- if ( $result->num_rows === 0 ) {
- $sql = "INSERT INTO {$table_prefix}options (option_name, option_value, autoload) VALUES ('_sm_recovery_last_fatal_error', '" . $mysqli->real_escape_string( self::_get_message() ) . "', 'yes')";
- } else {
- $sql = "UPDATE {$table_prefix}options SET option_value = '" . $mysqli->real_escape_string( self::_get_message() ) . "' WHERE option_name = '_sm_recovery_last_fatal_error'";
- }
- $mysqli->query( $sql );
- }
-
- /**
- * Gets PHP error message
- *
- * @access private
- *
- * @return string
- */
- private static function _get_message() {
- return self::$_error['message'];
- }
-
- /**
- * Allows Sermon Manager to run again, called on plugin update or by user
- */
- public static function reset_db() {
- global $table_prefix;
- $mysqli = new mysqli( DB_HOST, DB_USER, DB_PASSWORD, DB_NAME );
-
- // check if set
- $sql = "SELECT option_id FROM {$table_prefix}options WHERE option_name = '_sm_recovery_disable'";
- $result = $mysqli->query( $sql );
- if ( $result->num_rows === 0 ) {
- $sql = "INSERT INTO {$table_prefix}options (option_name, option_value, autoload) VALUES ('_sm_recovery_disable', '0', 'yes')";
- } else {
- $sql = "UPDATE {$table_prefix}options SET option_value = '0' WHERE option_name = '_sm_recovery_disable'";
- }
-
- $mysqli->query( $sql );
- }
-
- /**
- * Displays WordPress admin error message
- */
- public static function render_admin_message() {
- $plugin_data = get_plugin_data( constant( self::$_plugin_main_file ) );
- $plugin_name = $plugin_data['Name'];
- $old_error = get_option( '_sm_recovery_last_fatal_error_hash' ) === md5( get_option( '_sm_recovery_last_fatal_error' ) );
-
- ?>
-
-
-
- = wp_sprintf( esc_html__( '%s encountered a fatal error and recovered successfully.', 'sermon-manager-for-wordpress' ), '' . esc_html( $plugin_name . ' ' ) ) ?>
-
-
- = esc_html__( 'The issue has already been submitted.', 'sermon-manager-for-wordpress' ) ?>
-
-
-
-
- = esc_html_x( 'Send an anonymous report', 'Button', 'sermon-manager-for-wordpress' ) ?>
-
-
-
- = esc_html_x( 'Show error message', 'Button', 'sermon-manager-for-wordpress' ) ?>
-
-
- = esc_html_x( 'Reactivate Plugin', 'Button', 'sermon-manager-for-wordpress' ) ?>
-
-
-
-
-
-
-
= esc_html__( 'If the issue is not fixed, website will crash. (but we will recover it again)', 'sermon-manager-for-wordpress' ) ?>
-
-
-
= esc_html__( 'If you have more information about the issue, please type it here (optional):', 'sermon-manager-for-wordpress' ) ?>
-
-
= esc_html__( 'Email for further contact (optional)', 'sermon-manager-for-wordpress' ) ?>
-
-
-
- urlencode( str_replace( ABSPATH, '~/', get_option( '_sm_recovery_last_fatal_error' ) ) ),
- 'environment_info' => 'WordPress: ' . $GLOBALS['wp_version'] . '; Server: ' . ( function_exists( 'apache_get_version' ) ? apache_get_version() : 'N/A' ) . '; PHP: ' . PHP_VERSION . '; Sermon Manager:' . SM_VERSION . ';',
- 'plugin_name' => $plugin_data['Name'],
-
- ) );
- wp_enqueue_style( 'sm-error-recovery', SM_URL . 'assets/css/error-recovery.css', array(), SM_VERSION );
- }
-
- /**
- * Disables send report button.
- */
- public static function disable_send_report_button() {
- update_option( '_sm_recovery_last_fatal_error_hash', md5( get_option( '_sm_recovery_last_fatal_error' ) ) );
- update_option( '_sm_recovery_disable_send', '1' );
-
- return true;
- }
-
- /**
- * Re-allow recovery to work on update
- */
- public static function upgrade_check() {
- $db_version = get_option( 'sm_version' );
- if ( empty( $db_version ) || $db_version != SM_VERSION ) {
- update_option( '_sm_recovery_do_not_catch', 0 );
- update_option( '_sm_recovery_disable', 0 );
- }
- }
-
- public function init() {
- $this->_hook();
- }
-
- /**
- * Hooks into PHP error handing function and WordPress if plugin detected an error
- *
- * @access private
- */
- private function _hook() {
- register_shutdown_function( array( get_class(), 'do_catch' ) );
- add_action( 'plugins_loaded', array( get_class(), 'upgrade_check' ) );
-
- if ( get_option( '_sm_recovery_disable' ) ) {
- $this->_register_wp_hooks();
- define( 'sm_break', true );
- }
- }
-
- /**
- * Hooks into WP
- *
- * @access private
- */
- private function _register_wp_hooks() {
- add_action( 'admin_enqueue_scripts', array( get_class(), 'enqueue_scripts_styles' ) );
- add_action( 'admin_notices', array( get_class(), 'render_admin_message' ), 0 );
- add_action( 'wp_ajax_sm_clear_fatal_error', array( get_class(), 'reset_db' ) );
- add_action( 'wp_ajax_sm_recovery_disable_send_report', array( get_class(), 'disable_send_report_button' ) );
- }
-}
diff --git a/includes/class-sm-install.php b/includes/class-sm-install.php
index c2c5e7c..dd0da5b 100644
--- a/includes/class-sm-install.php
+++ b/includes/class-sm-install.php
@@ -19,6 +19,10 @@ class SM_Install {
),
'2.8.4' => array(
'sm_update_284_resave_sermons'
+ ),
+ '2.9' => array(
+ 'sm_update_29_fill_out_series_dates',
+ 'sm_update_29_convert_settings',
)
);
@@ -170,7 +174,7 @@ public static function cron_schedules( $schedules ) {
*/
public static function plugin_action_links( $links ) {
$action_links = array(
- 'settings' => '' . esc_html__( 'Settings' ) . ' ',
+ 'settings' => '' . esc_html__( 'Settings' ) . ' ',
);
return array_merge( $action_links, $links );
@@ -188,7 +192,7 @@ public static function plugin_row_meta( $links, $file ) {
/** @noinspection PhpUndefinedConstantInspection */
if ( SM_BASENAME == $file ) {
$row_meta = array(
- 'support' => '' . esc_html__( 'Premium support', 'sermon-manager-for-wordpress' ) . ' ',
+ 'support' => '' . esc_html__( 'Premium support', 'sermon-manager-for-wordpress' ) . ' ',
);
return array_merge( $links, $row_meta );
diff --git a/includes/class-sm-post-types.php b/includes/class-sm-post-types.php
index 39f2b32..9262258 100644
--- a/includes/class-sm-post-types.php
+++ b/includes/class-sm-post-types.php
@@ -40,31 +40,31 @@ public static function register_taxonomies() {
apply_filters( 'sm_taxonomy_objects_wpfc_preacher', array( 'wpfc_sermon' ) ),
apply_filters( 'sm_taxonomy_args_wpfc_preacher', array(
'hierarchical' => false,
- /* Translators: %s: Preachers label (sentence case; plural) */
- 'label' => sprintf( __( '%s', 'sermon-manager-for-wordpress' ), ucwords( $preacher_label ) . 's' ),
+ /* translators: %s Preachers label (sentence case; plural) */
+ 'label' => wp_sprintf( __( '%s', 'sermon-manager-for-wordpress' ), ucwords( $preacher_label ) . 's' ),
'labels' => array(
- /* Translators: %s: Preachers label (sentence case; plural) */
- 'name' => sprintf( __( '%s', 'sermon-manager-for-wordpress' ), ucwords( $preacher_label ) . 's' ),
- /* Translators: %s: Preacher label (sentence case; singular) */
- 'singular_name' => sprintf( __( '%s', 'sermon-manager-for-wordpress' ), ucwords( $preacher_label ) ),
- /* Translators: %s: Preachers label (sentence case; plural) */
- 'menu_name' => sprintf( _x( '%s', 'Admin menu name', 'sermon-manager-for-wordpress' ), ucwords( $preacher_label ) . 's' ),
- /* Translators: %s: Preachers label (lowercase; plural) */
- 'search_items' => sprintf( __( 'Search %s', 'sermon-manager-for-wordpress' ), $preacher_label . 's' ),
- /* Translators: %s: Preachers label (lowercase; plural) */
- 'all_items' => sprintf( __( 'All %s', 'sermon-manager-for-wordpress' ), $preacher_label . 's' ),
+ /* translators: %s Preachers label (sentence case; plural) */
+ 'name' => wp_sprintf( __( '%s', 'sermon-manager-for-wordpress' ), ucwords( $preacher_label ) . 's' ),
+ /* translators: %s Preacher label (sentence case; singular) */
+ 'singular_name' => wp_sprintf( __( '%s', 'sermon-manager-for-wordpress' ), ucwords( $preacher_label ) ),
+ /* translators: %s Preachers label (sentence case; plural) */
+ 'menu_name' => wp_sprintf( _x( '%s', 'menu', 'sermon-manager-for-wordpress' ), ucwords( $preacher_label ) . 's' ),
+ /* translators: %s Preachers label (lowercase; plural) */
+ 'search_items' => wp_sprintf( __( 'Search %s', 'sermon-manager-for-wordpress' ), $preacher_label . 's' ),
+ /* translators: %s Preachers label (lowercase; plural) */
+ 'all_items' => wp_sprintf( __( 'All %s', 'sermon-manager-for-wordpress' ), $preacher_label . 's' ),
'parent_item' => null, // it's not hierarchical
'parent_item_colon' => null, // it's not hierarchical
- /* Translators: %s: Preacher label (lowercase; singular) */
- 'edit_item' => sprintf( __( 'Edit %s', 'sermon-manager-for-wordpress' ), $preacher_label ),
- /* Translators: %s: Preacher label (lowercase; singular) */
- 'update_item' => sprintf( __( 'Update %s', 'sermon-manager-for-wordpress' ), $preacher_label ),
- /* Translators: %s: Preacher label (lowercase; singular) */
- 'add_new_item' => sprintf( __( 'Add new %s', 'sermon-manager-for-wordpress' ), $preacher_label ),
- /* Translators: %s: Preacher label (lowercase; singular) */
- 'new_item_name' => sprintf( __( 'New %s name', 'sermon-manager-for-wordpress' ), $preacher_label ),
- /* Translators: %s: Preacher label (lowercase; singular) */
- 'not_found' => sprintf( __( 'No %s found', 'sermon-manager-for-wordpress' ), $preacher_label ),
+ /* translators: %s Preacher label (lowercase; singular) */
+ 'edit_item' => wp_sprintf( __( 'Edit %s', 'sermon-manager-for-wordpress' ), $preacher_label ),
+ /* translators: %s Preacher label (lowercase; singular) */
+ 'update_item' => wp_sprintf( __( 'Update %s', 'sermon-manager-for-wordpress' ), $preacher_label ),
+ /* translators: %s Preacher label (lowercase; singular) */
+ 'add_new_item' => wp_sprintf( __( 'Add new %s', 'sermon-manager-for-wordpress' ), $preacher_label ),
+ /* translators: %s Preacher label (lowercase; singular) */
+ 'new_item_name' => wp_sprintf( __( 'New %s name', 'sermon-manager-for-wordpress' ), $preacher_label ),
+ /* translators: %s Preacher label (lowercase; singular) */
+ 'not_found' => wp_sprintf( __( 'No %s found', 'sermon-manager-for-wordpress' ), $preacher_label ),
),
'show_ui' => true,
'query_var' => true,
@@ -80,7 +80,7 @@ public static function register_taxonomies() {
'labels' => array(
'name' => __( 'Series', 'sermon-manager-for-wordpress' ),
'singular_name' => __( 'Series', 'sermon-manager-for-wordpress' ),
- 'menu_name' => _x( 'Series', 'Admin menu name', 'sermon-manager-for-wordpress' ),
+ 'menu_name' => _x( 'Series', 'menu', 'sermon-manager-for-wordpress' ),
'search_items' => __( 'Search series', 'sermon-manager-for-wordpress' ),
'all_items' => __( 'All series', 'sermon-manager-for-wordpress' ),
'parent_item' => null, // it's not hierarchical
@@ -105,7 +105,7 @@ public static function register_taxonomies() {
'labels' => array(
'name' => __( 'Topics', 'sermon-manager-for-wordpress' ),
'singular_name' => __( 'Topic', 'sermon-manager-for-wordpress' ),
- 'menu_name' => _x( 'Topics', 'Admin menu name', 'sermon-manager-for-wordpress' ),
+ 'menu_name' => _x( 'Topics', 'menu', 'sermon-manager-for-wordpress' ),
'search_items' => __( 'Search topics', 'sermon-manager-for-wordpress' ),
'all_items' => __( 'All topics', 'sermon-manager-for-wordpress' ),
'parent_item' => null,
@@ -130,7 +130,7 @@ public static function register_taxonomies() {
'labels' => array(
'name' => __( 'Bible books', 'sermon-manager-for-wordpress' ),
'singular_name' => __( 'Book', 'sermon-manager-for-wordpress' ),
- 'menu_name' => _x( 'Books', 'Admin menu name', 'sermon-manager-for-wordpress' ),
+ 'menu_name' => _x( 'Books', 'menu', 'sermon-manager-for-wordpress' ),
'search_items' => __( 'Search books', 'sermon-manager-for-wordpress' ),
'all_items' => __( 'All books', 'sermon-manager-for-wordpress' ),
'parent_item' => null,
@@ -155,7 +155,7 @@ public static function register_taxonomies() {
'labels' => array(
'name' => __( 'Service Types', 'sermon-manager-for-wordpress' ),
'singular_name' => __( 'Service Type', 'sermon-manager-for-wordpress' ),
- 'menu_name' => _x( 'Service Types', 'Admin menu name', 'sermon-manager-for-wordpress' ),
+ 'menu_name' => _x( 'Service Types', 'menu', 'sermon-manager-for-wordpress' ),
'search_items' => __( 'Search service types', 'sermon-manager-for-wordpress' ),
'all_items' => __( 'All service types', 'sermon-manager-for-wordpress' ),
'parent_item' => null,
@@ -192,7 +192,7 @@ public static function register_post_types() {
'name' => __( 'Sermons', 'sermon-manager-for-wordpress' ),
'singular_name' => __( 'Sermon', 'sermon-manager-for-wordpress' ),
'all_items' => __( 'All Sermons', 'sermon-manager-for-wordpress' ),
- 'menu_name' => _x( 'Sermons', 'Admin menu name', 'sermon-manager-for-wordpress' ),
+ 'menu_name' => _x( 'Sermons', 'menu', 'sermon-manager-for-wordpress' ),
'add_new' => __( 'Add New', 'sermon-manager-for-wordpress' ),
'add_new_item' => __( 'Add new sermon', 'sermon-manager-for-wordpress' ),
'edit' => __( 'Edit', 'sermon-manager-for-wordpress' ),
diff --git a/includes/libraries/wp-background-process.php b/includes/libraries/wp-background-process.php
index f3f59a0..94040c1 100644
--- a/includes/libraries/wp-background-process.php
+++ b/includes/libraries/wp-background-process.php
@@ -61,20 +61,6 @@ public function __construct() {
add_filter( 'cron_schedules', array( $this, 'schedule_cron_healthcheck' ) );
}
- /**
- * Dispatch
- *
- * @access public
- * @return array|WP_Error
- */
- public function dispatch() {
- // Schedule the cron healthcheck.
- $this->schedule_event();
-
- // Perform remote post.
- return parent::dispatch();
- }
-
/**
* Push to queue
*
@@ -103,35 +89,6 @@ public function save() {
return $this;
}
- /**
- * Update queue
- *
- * @param string $key Key.
- * @param array $data Data.
- *
- * @return $this
- */
- public function update( $key, $data ) {
- if ( ! empty( $data ) ) {
- update_site_option( $key, $data );
- }
-
- return $this;
- }
-
- /**
- * Delete queue
- *
- * @param string $key Key.
- *
- * @return $this
- */
- public function delete( $key ) {
- delete_site_option( $key );
-
- return $this;
- }
-
/**
* Generate key
*
@@ -176,6 +133,21 @@ public function maybe_handle() {
wp_die();
}
+ /**
+ * Is process running
+ *
+ * Check whether the current process is already running
+ * in a background process.
+ */
+ protected function is_process_running() {
+ if ( get_site_transient( $this->identifier . '_process_lock' ) ) {
+ // Process already running.
+ return true;
+ }
+
+ return false;
+ }
+
/**
* Is queue empty
*
@@ -204,18 +176,49 @@ protected function is_queue_empty() {
}
/**
- * Is process running
+ * Handle
*
- * Check whether the current process is already running
- * in a background process.
+ * Pass each queue item to the task handler, while remaining
+ * within server memory and time limit constraints.
*/
- protected function is_process_running() {
- if ( get_site_transient( $this->identifier . '_process_lock' ) ) {
- // Process already running.
- return true;
- }
+ protected function handle() {
+ $this->lock_process();
- return false;
+ do {
+ $batch = $this->get_batch();
+
+ foreach ( $batch->data as $key => $value ) {
+ $task = $this->task( $value );
+
+ if ( false !== $task ) {
+ $batch->data[ $key ] = $task;
+ } else {
+ unset( $batch->data[ $key ] );
+ update_option( 'wp_sm_updater_' . $value . '_done', 1 );
+ }
+
+ if ( $this->time_exceeded() || $this->memory_exceeded() ) {
+ // Batch limits reached.
+ break;
+ }
+ }
+
+ // Update or delete current batch.
+ if ( ! empty( $batch->data ) ) {
+ $this->update( $batch->key, $batch->data );
+ } else {
+ $this->delete( $batch->key );
+ }
+ } while ( ! $this->time_exceeded() && ! $this->memory_exceeded() && ! $this->is_queue_empty() );
+
+ $this->unlock_process();
+
+ // Start next batch or complete process.
+ if ( ! $this->is_queue_empty() ) {
+ $this->dispatch();
+ } else {
+ $this->complete();
+ }
}
/**
@@ -234,19 +237,6 @@ protected function lock_process() {
set_site_transient( $this->identifier . '_process_lock', microtime(), $lock_duration );
}
- /**
- * Unlock process
- *
- * Unlock the process so that other instances can spawn.
- *
- * @return $this
- */
- protected function unlock_process() {
- delete_site_transient( $this->identifier . '_process_lock' );
-
- return $this;
- }
-
/**
* Get batch
*
@@ -285,49 +275,36 @@ protected function get_batch() {
}
/**
- * Handle
+ * Task
*
- * Pass each queue item to the task handler, while remaining
- * within server memory and time limit constraints.
+ * Override this method to perform any actions required on each
+ * queue item. Return the modified item for further processing
+ * in the next pass through. Or, return false to remove the
+ * item from the queue.
+ *
+ * @param mixed $item Queue item to iterate over.
+ *
+ * @return mixed
*/
- protected function handle() {
- $this->lock_process();
-
- do {
- $batch = $this->get_batch();
-
- foreach ( $batch->data as $key => $value ) {
- $task = $this->task( $value );
-
- if ( false !== $task ) {
- $batch->data[ $key ] = $task;
- } else {
- unset( $batch->data[ $key ] );
- update_option('wp_sm_updater_' . $value . '_done', 1 );
- }
-
- if ( $this->time_exceeded() || $this->memory_exceeded() ) {
- // Batch limits reached.
- break;
- }
- }
-
- // Update or delete current batch.
- if ( ! empty( $batch->data ) ) {
- $this->update( $batch->key, $batch->data );
- } else {
- $this->delete( $batch->key );
- }
- } while ( ! $this->time_exceeded() && ! $this->memory_exceeded() && ! $this->is_queue_empty() );
+ abstract protected function task( $item );
- $this->unlock_process();
+ /**
+ * Time exceeded.
+ *
+ * Ensures the batch never exceeds a sensible time limit.
+ * A timeout limit of 30s is common on shared hosting.
+ *
+ * @return bool
+ */
+ protected function time_exceeded() {
+ $finish = $this->start_time + apply_filters( $this->identifier . '_default_time_limit', 20 ); // 20 seconds
+ $return = false;
- // Start next batch or complete process.
- if ( ! $this->is_queue_empty() ) {
- $this->dispatch();
- } else {
- $this->complete();
+ if ( time() >= $finish ) {
+ $return = true;
}
+
+ return apply_filters( $this->identifier . '_time_exceeded', $return );
}
/**
@@ -372,22 +349,68 @@ protected function get_memory_limit() {
}
/**
- * Time exceeded.
+ * Update queue
*
- * Ensures the batch never exceeds a sensible time limit.
- * A timeout limit of 30s is common on shared hosting.
+ * @param string $key Key.
+ * @param array $data Data.
*
- * @return bool
+ * @return $this
*/
- protected function time_exceeded() {
- $finish = $this->start_time + apply_filters( $this->identifier . '_default_time_limit', 20 ); // 20 seconds
- $return = false;
-
- if ( time() >= $finish ) {
- $return = true;
+ public function update( $key, $data ) {
+ if ( ! empty( $data ) ) {
+ update_site_option( $key, $data );
}
- return apply_filters( $this->identifier . '_time_exceeded', $return );
+ return $this;
+ }
+
+ /**
+ * Delete queue
+ *
+ * @param string $key Key.
+ *
+ * @return $this
+ */
+ public function delete( $key ) {
+ delete_site_option( $key );
+
+ return $this;
+ }
+
+ /**
+ * Unlock process
+ *
+ * Unlock the process so that other instances can spawn.
+ *
+ * @return $this
+ */
+ protected function unlock_process() {
+ delete_site_transient( $this->identifier . '_process_lock' );
+
+ return $this;
+ }
+
+ /**
+ * Dispatch
+ *
+ * @access public
+ * @return array|WP_Error
+ */
+ public function dispatch() {
+ // Schedule the cron healthcheck.
+ $this->schedule_event();
+
+ // Perform remote post.
+ return parent::dispatch();
+ }
+
+ /**
+ * Schedule event
+ */
+ protected function schedule_event() {
+ if ( ! wp_next_scheduled( $this->cron_hook_identifier ) ) {
+ wp_schedule_event( time(), $this->cron_interval_identifier, $this->cron_hook_identifier );
+ }
}
/**
@@ -401,6 +424,17 @@ protected function complete() {
$this->clear_scheduled_event();
}
+ /**
+ * Clear scheduled event
+ */
+ protected function clear_scheduled_event() {
+ $timestamp = wp_next_scheduled( $this->cron_hook_identifier );
+
+ if ( $timestamp ) {
+ wp_unschedule_event( $timestamp, $this->cron_hook_identifier );
+ }
+ }
+
/**
* Schedule cron healthcheck
*
@@ -420,7 +454,7 @@ public function schedule_cron_healthcheck( $schedules ) {
// Adds every 5 minutes to the existing schedules.
$schedules[ $this->identifier . '_cron_interval' ] = array(
'interval' => MINUTE_IN_SECONDS * $interval,
- 'display' => sprintf( __( 'Every %d minutes', 'sermon-manager' ), $interval ),
+ 'display' => wp_sprintf( __( 'Every %s minutes', 'sermon-manager-for-wordpress' ), number_format_i18n( $interval ) ),
);
return $schedules;
@@ -435,38 +469,19 @@ public function schedule_cron_healthcheck( $schedules ) {
public function handle_cron_healthcheck() {
if ( $this->is_process_running() ) {
// Background process already running.
- exit;
+ return;
}
if ( $this->is_queue_empty() ) {
// No data to process.
$this->clear_scheduled_event();
- exit;
- }
- $this->handle();
-
- exit;
- }
-
- /**
- * Schedule event
- */
- protected function schedule_event() {
- if ( ! wp_next_scheduled( $this->cron_hook_identifier ) ) {
- wp_schedule_event( time(), $this->cron_interval_identifier, $this->cron_hook_identifier );
+ return;
}
- }
- /**
- * Clear scheduled event
- */
- protected function clear_scheduled_event() {
- $timestamp = wp_next_scheduled( $this->cron_hook_identifier );
+ $this->handle();
- if ( $timestamp ) {
- wp_unschedule_event( $timestamp, $this->cron_hook_identifier );
- }
+ return;
}
/**
@@ -486,18 +501,4 @@ public function cancel_process() {
}
- /**
- * Task
- *
- * Override this method to perform any actions required on each
- * queue item. Return the modified item for further processing
- * in the next pass through. Or, return false to remove the
- * item from the queue.
- *
- * @param mixed $item Queue item to iterate over.
- *
- * @return mixed
- */
- abstract protected function task( $item );
-
}
diff --git a/includes/options.php b/includes/options.php
deleted file mode 100755
index a101275..0000000
--- a/includes/options.php
+++ /dev/null
@@ -1,741 +0,0 @@
-=' ) ) {
- $args = array(
- 'sanitize_callback' => 'wpfc_validate_options'
- );
- }
-
- register_setting( 'wpfc_plugin_options', 'wpfc_options', $args );
-
- if ( isset( $_GET['page'] ) && strpos( $_GET['page'], 'options.php' ) !== false ) {
- wp_enqueue_media();
- }
- }
-
- function wpfc_add_options_page() {
- $page = add_submenu_page( 'edit.php?post_type=wpfc_sermon', __( 'Sermon Manager Settings', 'sermon-manager-for-wordpress' ), __( 'Settings', 'sermon-manager-for-wordpress' ), 'manage_options', __FILE__, array(
- $this,
- 'wpfc_sermon_options_render_form'
- ) );
- add_action( 'admin_print_styles-' . $page, array( $this, 'wpfc_sermon_admin_styles' ) );
- }
-
- function wpfc_sermon_manager_settings_page_link( $link_text = '' ) {
- if ( empty( $link_text ) ) {
- $link_text = __( 'Manage Settings', 'sermon-manager-for-wordpress' );
- }
-
- $link = '';
- if ( current_user_can( 'manage_options' ) ) {
- $link = '' . esc_html( $link_text ) . ' ';
- }
-
- return $link;
- }
-
- function wpfc_sermon_admin_styles() {
- wp_enqueue_script( 'media-upload' );
- wp_enqueue_script( 'jquery-ui-tabs' );
- wp_enqueue_script( 'jquery-ui-sortable' );
- wp_enqueue_script( 'jquery-ui-draggable' );
- wp_enqueue_script( 'jquery-ui-droppable' );
- }
-
- function wpfc_sermon_options_render_form() {
- if ( ! isset( $_REQUEST['settings-updated'] ) ) {
- $_REQUEST['settings-updated'] = false;
- }
- ?>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ID, '_wpfc_sermon_duration', true ) ?: '0:00';
$audio_file_size = get_post_meta( $post->ID, '_wpfc_sermon_size', 'true' ) ?: 0;
+
+ // Fix for relative audio file URLs
+ if ( substr( $audio, 0, 1 ) === '/' ) {
+ $audio = home_url( $audio );
+ }
?>
diff --git a/includes/shortcodes.php b/includes/shortcodes.php
index 988f880..61681c2 100755
--- a/includes/shortcodes.php
+++ b/includes/shortcodes.php
@@ -67,6 +67,11 @@ public function displaySermonsList( $atts ) {
define( 'SM_ENQUEUE_SCRIPTS_STYLES', true );
}
+ // unquote
+ foreach ( $atts as &$att ) {
+ $att = $this->_unquote( $att );
+ }
+
// default options
$args = array(
'display' => 'series',
@@ -103,10 +108,10 @@ public function displaySermonsList( $atts ) {
);
if ( $query_args['orderby'] === 'date' ) {
- $query_args['orderby'] = 'meta_value_num';
- $query_args['meta_key'] = 'sermon_date';
- $query_args['meta_compare'] = '<=';
- $query_args['meta_value_num'] = time();
+ $query_args['orderby'] = 'meta_value_num';
+ $query_args['meta_key'] = 'sermon_date';
+ $query_args['meta_compare'] = '<=';
+ $query_args['meta_value_num'] = time();
}
// get items
@@ -210,6 +215,42 @@ public function displaySermonsList( $atts ) {
}
}
+ /**
+ * Removes all sorts of quotes from a string
+ *
+ * @see http://unicode.org/cldr/utility/confusables.jsp?a=%22&r=None
+ *
+ * @param string $string String to unquote
+ *
+ * @return mixed Unquoted string if string supplied, original variable otherwise
+ *
+ * @since 2.9
+ */
+ private function _unquote( $string ) {
+ if ( ! is_string( $string ) ) {
+ return $string;
+ }
+
+ return str_replace( array(
+ "\x22",
+ "\x27\x27",
+ "\xCA\xBA",
+ "\xCB\x9D",
+ "\xCB\xAE",
+ "\xCB\xB6",
+ "\xD7\xB2",
+ "\xD7\xB4",
+ "\xE1\xB3\x93",
+ "\xE2\x80\x9C",
+ "\xE2\x80\x9D",
+ "\xE2\x80\x9F",
+ "\xE2\x80\xB3",
+ "\xE2\x80\xB6",
+ "\xE3\x80\x83",
+ "\xEF\xBC\x82",
+ ), '', $string );
+ }
+
/**
* Used to convert user friendly names to taxonomy names, i.e. "series" => "wpfc_sermon_series".
* Or taxonomy names to user friendly ones.
@@ -277,6 +318,11 @@ public function displayImages( $atts = array() ) {
define( 'SM_ENQUEUE_SCRIPTS_STYLES', true );
}
+ // unquote
+ foreach ( $atts as &$att ) {
+ $att = $this->_unquote( $att );
+ }
+
// default args
$args = array(
'display' => 'series',
@@ -370,6 +416,11 @@ function displayLatestSeriesImage( $atts = array() ) {
define( 'SM_ENQUEUE_SCRIPTS_STYLES', true );
}
+ // unquote
+ foreach ( $atts as &$att ) {
+ $att = $this->_unquote( $att );
+ }
+
// default options
$args = array(
'image_class' => 'latest-series-image',
@@ -574,6 +625,11 @@ public function displaySermonSorting( $atts = array() ) {
define( 'SM_ENQUEUE_SCRIPTS_STYLES', true );
}
+ // unquote
+ foreach ( $atts as &$att ) {
+ $att = $this->_unquote( $att );
+ }
+
// default shortcode options
$args = array(
'series' => '',
@@ -598,7 +654,7 @@ public function displaySermonSorting( $atts = array() ) {
* @type string $atts ['sermons'] Include only these sermons. Separate with comma (,) with no spaces. IDs only.
* @type string $atts ['order'] Sorting order, possible options: ASC, DESC
* @type string $atts ['orderby'] Sort by: date (default), none, ID, title, name, rand, comment_count
- * @type bool $atts ['hide_pagination'] true to hide the pagination (default false)
+ * @type bool $atts ['disable_pagination'] 1 to hide the pagination (default 0)
* @type bool $atts ['image_size'] Image size. Possible values: sermon_small, sermon_medium, sermon_wide,
* thumbnail, medium, large, full, or any size added with add_image_size(). (default is sermon_small)
* @type string $atts ['filter_by'] Filter by series, preacher, topic, book, service_type
@@ -619,31 +675,37 @@ function displaySermons( $atts = array() ) {
define( 'SM_ENQUEUE_SCRIPTS_STYLES', true );
}
+ // unquote
+ foreach ( $atts as &$att ) {
+ $att = $this->_unquote( $att );
+ }
+
// default options
$args = array(
- 'per_page' => '10',
- 'sermons' => false,
- 'order' => 'DESC',
- 'orderby' => 'date',
- 'hide_pagination' => false,
- 'image_size' => 'sermon_small',
- 'filter_by' => '',
- 'filter_value' => '',
- 'year' => '',
- 'month' => '',
- 'week' => '',
- 'day' => '',
- 'after' => '',
- 'before' => '',
+ 'per_page' => get_option( 'posts_per_page' ) ?: 10,
+ 'sermons' => false, // show only sermon IDs that are set here
+ 'order' => 'DESC',
+ 'orderby' => 'date',
+ 'disable_pagination' => 0,
+ 'image_size' => 'sermon_small',
+ 'filter_by' => '',
+ 'filter_value' => '',
+ 'year' => '',
+ 'month' => '',
+ 'week' => '',
+ 'day' => '',
+ 'after' => '',
+ 'before' => '',
);
// legacy convert
$old_options = array(
- 'posts_per_page' => 'per_page',
- 'id' => 'sermons',
- 'hide_nav' => 'hide_pagination',
- 'taxonomy' => 'filter_by',
- 'tax_term' => 'filter_value'
+ 'posts_per_page' => 'per_page',
+ 'id' => 'sermons',
+ 'hide_nav' => 'hide_pagination',
+ 'taxonomy' => 'filter_by',
+ 'tax_term' => 'filter_value',
+ 'hide_pagination' => 'disable_pagination',
);
foreach ( $old_options as $old_option => $new_option ) {
@@ -707,6 +769,10 @@ function displaySermons( $atts = array() ) {
$args['orderby'] = 'date';
}
+ if ( $args['orderby'] === 'date' ){
+ $args['orderby'] = 'meta_value_num';
+ }
+
$query_args['orderby'] = $args['orderby'];
// if we should show just specific sermons
@@ -812,7 +878,7 @@ function displaySermons( $atts = array() ) {
-
+
add_field( array(
'name' => esc_html__( 'Date Preached', 'sermon-manager-for-wordpress' ),
- 'desc' => esc_html__( '(optional)', 'sermon-manager-for-wordpress' ) . '
' . wp_sprintf( esc_html__( 'format: %s', 'sermon-manager-for-wordpress' ), $date_format ),
+ 'desc' => esc_html__( '(optional)', 'sermon-manager-for-wordpress' ) . '
' . wp_sprintf( /* translators: %s date format, effectively
d/m/Y
or the like */
+ esc_html__( 'format: %s', 'sermon-manager-for-wordpress' ), $date_format ),
'id' => 'sermon_date',
'type' => 'text_date_timestamp',
'date_format' => $date_format,
@@ -91,7 +92,8 @@ function wpfc_sermon_metaboxes() {
$cmb->add_field( array(
'name' => esc_html__( 'Service Type', 'sermon-manager-for-wordpress' ),
- 'desc' => esc_html__( 'Select the type of service. Modify service types in Sermons → Service Types.', 'sermon-manager-for-wordpress' ),
+ // translators: %s
here
+ 'desc' => wp_sprintf( esc_html__( 'Select the type of service. Modify service types %s.', 'sermon-manager-for-wordpress' ), '
here ' ),
'id' => 'wpfc_service_type',
'type' => 'select',
'show_option_none' => true,
@@ -99,7 +101,8 @@ function wpfc_sermon_metaboxes() {
) );
$cmb->add_field( array(
'name' => esc_html__( 'Main Bible Passage', 'sermon-manager-for-wordpress' ),
- 'desc' => wp_sprintf( esc_html__( 'Enter the Bible passage with the full book names, e.g. %s.', 'sermon-manager-for-wordpress' ), '
' . esc_html__( 'John 3:16-18', 'sermon-manager-for-wordpress' ) . '
' ),
+ 'desc' => wp_sprintf( /* translators: %s see msgid "John 3:16-18", effectively
John 3:16-18
*/
+ esc_html__( 'Enter the Bible passage with the full book names, e.g. %s.', 'sermon-manager-for-wordpress' ), '
' . esc_html__( 'John 3:16-18', 'sermon-manager-for-wordpress' ) . '
' ),
'id' => 'bible_passage',
'type' => 'text',
) );
@@ -132,7 +135,8 @@ function wpfc_sermon_metaboxes() {
) );
$cmb2->add_field( array(
'name' => esc_html__( 'MP3 Duration', 'sermon-manager-for-wordpress' ),
- 'desc' => wp_sprintf( esc_html__( 'Length in %s format (if left blank, will attempt to calculate automatically when you save)', 'sermon-manager-for-wordpress' ), '
' . esc_html__( 'hh:mm:ss', 'sermon-manager-for-wordpress' ) . '
' ),
+ 'desc' => wp_sprintf( /* translators: %s see msgid "hh:mm:ss", effectively
hh:mm:ss
*/
+ esc_html__( 'Length in %s format (if left blank, will attempt to calculate automatically when you save)', 'sermon-manager-for-wordpress' ), '
' . esc_html__( 'hh:mm:ss', 'sermon-manager-for-wordpress' ) . '
' ),
'id' => '_wpfc_sermon_duration',
'type' => 'text',
) );
@@ -155,7 +159,8 @@ function wpfc_sermon_metaboxes() {
'id' => 'sermon_notes',
'type' => 'file',
'text' => array(
- 'add_upload_file_text' => esc_html__( 'Add File', 'sermon-manager-for-wordpress' ) // Change upload button text. Default: "Add or Upload File"
+ 'add_upload_file_text' => esc_html__( 'Add File', 'sermon-manager-for-wordpress' )
+ // Change upload button text. Default: "Add or Upload File"
),
) );
$cmb2->add_field( array(
@@ -164,7 +169,8 @@ function wpfc_sermon_metaboxes() {
'id' => 'sermon_bulletin',
'type' => 'file',
'text' => array(
- 'add_upload_file_text' => esc_html__( 'Add File', 'sermon-manager-for-wordpress' ) // Change upload button text. Default: "Add or Upload File"
+ 'add_upload_file_text' => esc_html__( 'Add File', 'sermon-manager-for-wordpress' )
+ // Change upload button text. Default: "Add or Upload File"
),
) );
}
diff --git a/includes/sm-core-functions.php b/includes/sm-core-functions.php
index 3f1fd1a..628652c 100644
--- a/includes/sm-core-functions.php
+++ b/includes/sm-core-functions.php
@@ -5,6 +5,8 @@
* General core functions available on both the front-end and admin.
*/
+defined( 'ABSPATH' ) or die;
+
/**
* Retrieve the date on which the sermon was preached
*
@@ -25,9 +27,9 @@ function sm_get_the_date( $d = '', $post = null ) {
}
if ( '' == $d ) {
- $the_date = mysql2date( get_option( 'date_format' ), $post->post_date );
+ $the_date = mysql2date( get_option( 'date_format' ), $post->post_date, true );
} else {
- $the_date = mysql2date( $d, $post->post_date );
+ $the_date = mysql2date( $d, $post->post_date, true );
}
}
@@ -78,23 +80,6 @@ function sm_the_date( $d = '', $before = '', $after = '' ) {
echo apply_filters( 'the_date', $the_date, $d, $before, $after );
}
-/**
- * Clean variables using sanitize_text_field. Arrays are cleaned recursively.
- * Non-scalar values are ignored.
- *
- * @param string|array $var
- *
- * @return string|array
- * @since 2.7
- */
-function sm_clean( $var ) {
- if ( is_array( $var ) ) {
- return array_map( 'sm_clean', $var );
- } else {
- return is_scalar( $var ) ? sanitize_text_field( $var ) : $var;
- }
-}
-
/**
* Get permalink settings for Sermon Manager independent of the user locale.
*
@@ -175,3 +160,307 @@ function sm_restore_locale() {
SermonManager::load_translations();
}
}
+
+/**
+ * Display a Sermon Manager help tip.
+ *
+ * @param string $tip Help tip text
+ * @param bool $allow_html Allow sanitized HTML if true or escape
+ *
+ * @return string
+ * @since 2.9
+ */
+function sm_help_tip( $tip, $allow_html = false ) {
+ if ( $allow_html ) {
+ $tip = sm_sanitize_tooltip( $tip );
+ } else {
+ $tip = esc_attr( $tip );
+ }
+
+ return '
';
+}
+
+/**
+ * Get an image size.
+ *
+ * Variable is filtered by sm_get_image_size_{image_size}.
+ *
+ * @param array|string $image_size
+ *
+ * @return array
+ * @since 2.9
+ */
+function sm_get_image_size( $image_size ) {
+ if ( is_array( $image_size ) ) {
+ $width = isset( $image_size[0] ) ? $image_size[0] : 300;
+ $height = isset( $image_size[1] ) ? $image_size[1] : 200;
+ $crop = isset( $image_size[2] ) ? $image_size[2] : true;
+
+ $size = array(
+ 'width' => $width,
+ 'height' => $height,
+ 'crop' => $crop,
+ );
+
+ $image_size = $width . '_' . $height;
+
+ } elseif ( in_array( $image_size, array( 'sermon_small', 'sermon_medium', 'sermon_wide' ) ) ) {
+ // reset variables
+ $w = $h = $c = null;
+
+ switch ( $image_size ) {
+ case 'sermon_small':
+ $w = 75;
+ $h = 75;
+ $c = true;
+
+ break;
+ case 'sermon_medium':
+ $w = 300;
+ $h = 200;
+ $c = true;
+
+ break;
+ case 'sermon_wide':
+ $w = 940;
+ $h = 350;
+ $c = true;
+
+ break;
+ }
+
+ $size = get_option( $image_size . '_image_size', array() );
+ $size['width'] = isset( $size['width'] ) ? $size['width'] : $w;
+ $size['height'] = isset( $size['height'] ) ? $size['height'] : $h;
+ $size['crop'] = isset( $size['crop'] ) ? $size['crop'] : $c;
+
+ } else {
+ $size = array(
+ 'width' => 300,
+ 'height' => 200,
+ 'crop' => true,
+ );
+ }
+
+ return apply_filters( 'sm_get_image_size_' . $image_size, $size );
+}
+
+/**
+ * Retrieve JPEG width and height without downloading/reading entire image.
+ *
+ * @param string $img_loc Image URL
+ *
+ * @return array|bool
+ * @since 2.9
+ *
+ * @see http://php.net/manual/en/function.getimagesize.php#88793
+ */
+function sm_get_jpeg_dimensions( $img_loc ) {
+ $handle = fopen( $img_loc, "rb" ) or die( "Invalid file stream." );
+ $new_block = null;
+ if ( ! feof( $handle ) ) {
+ $new_block = fread( $handle, 32 );
+ $i = 0;
+ if ( $new_block[ $i ] == "\xFF" && $new_block[ $i + 1 ] == "\xD8" && $new_block[ $i + 2 ] == "\xFF" && $new_block[ $i + 3 ] == "\xE0" ) {
+ $i += 4;
+ if ( $new_block[ $i + 2 ] == "\x4A" && $new_block[ $i + 3 ] == "\x46" && $new_block[ $i + 4 ] == "\x49" && $new_block[ $i + 5 ] == "\x46" && $new_block[ $i + 6 ] == "\x00" ) {
+ // Read block size and skip ahead to begin cycling through blocks in search of SOF marker
+ $block_size = unpack( "H*", $new_block[ $i ] . $new_block[ $i + 1 ] );
+ $block_size = hexdec( $block_size[1] );
+ while ( ! feof( $handle ) ) {
+ $i += $block_size;
+ $new_block .= fread( $handle, $block_size );
+ if ( $new_block[ $i ] == "\xFF" ) {
+ // New block detected, check for SOF marker
+ $sof_marker = array(
+ "\xC0",
+ "\xC1",
+ "\xC2",
+ "\xC3",
+ "\xC5",
+ "\xC6",
+ "\xC7",
+ "\xC8",
+ "\xC9",
+ "\xCA",
+ "\xCB",
+ "\xCD",
+ "\xCE",
+ "\xCF"
+ );
+ if ( in_array( $new_block[ $i + 1 ], $sof_marker ) ) {
+ // SOF marker detected. Width and height information is contained in bytes 4-7 after this byte.
+ $size_data = $new_block[ $i + 2 ] . $new_block[ $i + 3 ] . $new_block[ $i + 4 ] . $new_block[ $i + 5 ] . $new_block[ $i + 6 ] . $new_block[ $i + 7 ] . $new_block[ $i + 8 ];
+ $unpacked = unpack( "H*", $size_data );
+ $unpacked = $unpacked[1];
+ $height = hexdec( $unpacked[6] . $unpacked[7] . $unpacked[8] . $unpacked[9] );
+ $width = hexdec( $unpacked[10] . $unpacked[11] . $unpacked[12] . $unpacked[13] );
+
+ return array( $width, $height );
+ } else {
+ // Skip block marker and read block size
+ $i += 2;
+ $block_size = unpack( "H*", $new_block[ $i ] . $new_block[ $i + 1 ] );
+ $block_size = hexdec( $block_size[1] );
+ }
+ } else {
+ return false;
+ }
+ }
+ }
+ }
+ }
+
+ return false;
+}
+
+/**
+ * Import and assign thumbnail to sermon (or any other post/CPT)
+ *
+ * Accepts remote or local image URL.
+ *
+ * - If it is a local URL and it's pointing to a path under WP uploads directory, it will check for
+ * database attachment existence - if it exists, it will use it.
+ * If database attachment does not exist - it will create it without moving the image, and will use it.
+ * - If it is a local URL and is not under WP uploads directory, it will act like it is a remote URL.
+ * - If it is a remote URL, it will save it as such.
+ *
+ * (remote URLs are not supported by default in WP, but we have a piece of code that makes them usable)
+ *
+ * @param string $image_url The URL of the image to use (local or remote)
+ * @param int $post_id Sermon/post to attach the image to; Passing 0 won't assign the image, it will
+ * just import it and return the ID of the attachment
+ *
+ * @return bool|int If $post_id is set to 0 - returns attachment ID; True|false otherwise, depending on success
+ * @since 2.9
+ */
+function sm_import_and_set_post_thumbnail( $image_url, $post_id = 0 ) {
+ global $wpdb;
+
+ if ( empty( $image_url ) || trim( $image_url ) === '' ) {
+ return false;
+ }
+
+ if ( ( $attachment_id = attachment_url_to_postid( $image_url ) ) && 0 !== $attachment_id ) {
+ // continue
+ } elseif ( ( $upload = wp_upload_dir() ) && strpos( $image_url, $upload['baseurl'] ) !== false ) {
+ global $doing_sm_upload;
+
+ $doing_sm_upload = true;
+
+ if ( ! function_exists( 'media_handle_sideload' ) ) {
+ require_once( ABSPATH . 'wp-admin' . '/includes/image.php' );
+ require_once( ABSPATH . 'wp-admin' . '/includes/file.php' );
+ require_once( ABSPATH . 'wp-admin' . '/includes/media.php' );
+ }
+
+ $url = str_replace( $upload['baseurl'], $upload['basedir'], $image_url );
+ preg_match( '/[^\?]+\.(jpg|jpe|jpeg|gif|png)/i', $url, $matches );
+
+ $attachment_id = media_handle_sideload( array(
+ 'name' => basename( $matches[0] ),
+ 'tmp_name' => $url
+ ), 0 );
+
+ $doing_sm_upload = false;
+ } else {
+ $file = wp_check_filetype( $image_url );
+
+ preg_match( '/[^\?]+\.(jpg|jpe|jpeg|gif|png)/i', $image_url, $matches );
+
+ $wpdb->insert( $wpdb->prefix . 'posts', array(
+ 'post_author' => get_current_user_id(),
+ 'post_date' => current_time( 'mysql' ),
+ 'post_date_gmt' => get_gmt_from_date( current_time( 'mysql' ) ),
+ 'post_title' => pathinfo( $matches[0], PATHINFO_FILENAME ),
+ 'post_status' => 'inherit',
+ 'comment_status' => get_default_comment_status( 'attachment' ),
+ 'ping_status' => get_default_comment_status( 'attachment', 'pingback' ),
+ 'post_name' => sanitize_title( pathinfo( $matches[0], PATHINFO_FILENAME ) ),
+ 'post_modified' => current_time( 'mysql' ),
+ 'post_modified_gmt' => get_gmt_from_date( current_time( 'mysql' ) ),
+ 'post_parent' => 0,
+ 'guid' => $image_url,
+ 'menu_order' => 0,
+ 'post_type' => 'attachment',
+ 'post_mime_type' => $file['type'],
+ 'comment_count' => 0
+ ), array(
+ '%s',
+ '%s',
+ '%s',
+ '%s',
+ '%s',
+ '%s',
+ '%s',
+ '%s',
+ '%s',
+ '%s',
+ '%d',
+ '%s',
+ '%d',
+ '%s',
+ '%s',
+ '%d',
+ ) );
+
+ $attachment_id = $wpdb->insert_id;
+
+ update_post_meta( $attachment_id, '_wp_attached_file', $image_url );
+
+ $size = sm_get_jpeg_dimensions( $image_url );
+ if ( is_array( $size ) ) {
+ update_post_meta( $attachment_id, '_wp_attachment_metadata', array(
+ 'width' => $size[0],
+ 'height' => $size[1],
+ ) );
+ }
+ }
+
+ if ( $post_id === 0 ) {
+ return $attachment_id;
+
+ }
+
+ return set_post_thumbnail( $post_id, $attachment_id );
+}
+
+/**
+ * Get real image path in upload directory before it's overwritten
+ * And disable image moving
+ *
+ * @since 2.9
+ */
+add_filter( 'pre_move_uploaded_file', function ( $null, $file ) {
+ global $upload_dir_file_path, $doing_sm_upload;
+
+ if ( $doing_sm_upload === true ) {
+ $uploads = wp_get_upload_dir();
+ $upload_dir_file_path = str_replace( $uploads['basedir'], '', $file['tmp_name'] );
+
+ return false;
+ }
+
+ return $null;
+}, 10, 2 );
+
+/**
+ * Update image upload URL and path to the real image path location,
+ * only if executed by sm_import_and_set_post_thumbnail()
+ *
+ * @since 2.9
+ */
+add_filter( 'wp_handle_upload', function ( $data ) {
+ global $upload_dir_file_path, $doing_sm_upload;
+
+ if ( $doing_sm_upload === true ) {
+ $uploads = wp_get_upload_dir();
+ $data = array(
+ 'file' => $uploads['basedir'] . $upload_dir_file_path,
+ 'url' => $uploads['baseurl'] . $upload_dir_file_path,
+ 'type' => $data['type']
+ );
+ }
+
+ return $data;
+} );
diff --git a/includes/sm-formatting-functions.php b/includes/sm-formatting-functions.php
new file mode 100644
index 0000000..4db5c99
--- /dev/null
+++ b/includes/sm-formatting-functions.php
@@ -0,0 +1,45 @@
+ array(),
+ 'em' => array(),
+ 'strong' => array(),
+ 'small' => array(),
+ 'span' => array(),
+ 'ul' => array(),
+ 'li' => array(),
+ 'ol' => array(),
+ 'p' => array(),
+ ) ) );
+}
\ No newline at end of file
diff --git a/includes/sm-update-functions.php b/includes/sm-update-functions.php
index 2474dc8..1ea995e 100644
--- a/includes/sm-update-functions.php
+++ b/includes/sm-update-functions.php
@@ -108,4 +108,22 @@ function sm_update_28_save_sermon_render_into_post_content() {
*/
function sm_update_284_resave_sermons() {
sm_update_28_save_sermon_render_into_post_content();
-}
\ No newline at end of file
+}
+
+/**
+ * There was a bug in function for 2.8, so we will do it again
+ */
+function sm_update_29_fill_out_series_dates() {
+ sm_update_28_fill_out_series_dates();
+}
+
+/**
+ * Settings storage has been changed in 2.9
+ */
+function sm_update_29_convert_settings() {
+ $original_settings = get_option( 'wpfc_options', array() );
+
+ foreach ( $original_settings as $key => $value ) {
+ update_option( 'sermonmanager_' . $key, $value );
+ }
+}
diff --git a/includes/taxonomy-images/code-snippets.php b/includes/taxonomy-images/code-snippets.php
deleted file mode 100755
index 0112e51..0000000
--- a/includes/taxonomy-images/code-snippets.php
+++ /dev/null
@@ -1,192 +0,0 @@
- 'detail',
- ) );
-}
-
-add_filter( 'the_content', 'mytheme_append_the_term_images' );
-add_filter( 'the_excerpt', 'mytheme_append_the_term_images' );
-
-
-/*
- * Queried Term Image.
- *
- * Return html markup representing the image associated with the
- * currently queried term. In the event that no associated image
- * exists, the filter should return an empty object.
- *
- * In the event that the Taxonomy Images plugin is not installed
- * apply_filters() will return it's second parameter.
- */
-
-
-/* Default */
-$img = apply_filters( 'taxonomy-images-queried-term-image', 'PLEASE INSTALL PLUGIN' );
-print '
taxonomy-images-queried-term-image ';
-print '
' . htmlentities( $img ) . ' ';
-
-
-/* Inside a yellow box */
-$img = apply_filters( 'taxonomy-images-queried-term-image', 'PLEASE INSTALL PLUGIN', array(
- 'before' => '
',
- 'after' => '
',
-) );
-print '
taxonomy-images-queried-term-image - custom wrapper element. ';
-print '
' . htmlentities( $img ) . ' ';
-
-
-/* Medium Size */
-$img = apply_filters( 'taxonomy-images-queried-term-image', 'PLEASE INSTALL PLUGIN', array(
- 'image_size' => 'medium',
-) );
-print '
taxonomy-images-queried-term-image - medium image size ';
-print '
' . htmlentities( $img ) . ' ';
-
-
-/* Unrecognized size */
-$img = apply_filters( 'taxonomy-images-queried-term-image', 'PLEASE INSTALL PLUGIN', array(
- 'image_size' => 'this-is-probably-not-a-real-image-size',
-) );
-print '
taxonomy-images-queried-term-image - unknown image size ';
-print '
' . htmlentities( $img ) . ' ';
-
-
-/* Custom attributes. */
-$img = apply_filters( 'taxonomy-images-queried-term-image', 'PLEASE INSTALL PLUGIN', array(
- 'attr' => array(
- 'alt' => 'Custom alternative text',
- 'class' => 'my-class-list bunnies turtles',
- 'src' => 'this-is-where-the-image-lives.png',
- 'title' => 'Custom Title',
- ),
-) );
-print '
taxonomy-images-queried-term-image - custom attributes ';
-print '
' . htmlentities( $img ) . ' ';
-
-
-/*
- * Queried Term Image ID.
- *
- * Return the id of the image associated with the currently
- * queried term. In the event that no associated image exists,
- * the filter should return zero.
- *
- * In the event that the Taxonomy Images plugin is not installed
- * apply_filters() will return it's second parameter.
- */
-$img = apply_filters( 'taxonomy-images-queried-term-image-id', 'PLEASE INSTALL PLUGIN' );
-
-print '
taxonomy-images-queried-term-image-id ';
-print '
';
-var_dump( $img );
-print ' ';
-
-
-/*
- * Queried Term Image Object.
- *
- * Return an object representing the image associated with the
- * currently queried term. In the event that no associated image
- * exists, the filter should return an empty object.
- *
- * In the event that the Taxonomy Images plugin is not installed
- * apply_filters() will return it's second parameter.
- */
-$img = apply_filters( 'taxonomy-images-queried-term-image-object', 'PLEASE INSTALL PLUGIN' );
-
-print '
taxonomy-images-queried-term-image-object ';
-print '
';
-var_dump( $img );
-print ' ';
-
-
-/*
- * Queried Term Image URL.
- *
- * Return a url to the image associated with the current queried
- * term. In the event that no associated image exists, the filter
- * should return an empty string.
- *
- * In the event that the Taxonomy Images plugin is not installed
- * apply_filters() will return it's second parameter.
- */
-
-
-/* Default */
-$img = apply_filters( 'taxonomy-images-queried-term-image-url', 'PLEASE INSTALL PLUGIN' );
-print '
taxonomy-images-queried-term-image-url - Default ';
-print '
';
-var_dump( $img );
-print ' ';
-
-
-/* Medium Size */
-$img = apply_filters( 'taxonomy-images-queried-term-image-url', 'PLEASE INSTALL PLUGIN', array(
- 'image_size' => 'medium'
-) );
-print '
taxonomy-images-queried-term-image-url - Medium ';
-print '
';
-var_dump( $img );
-print ' ';
-
-
-/* Unregistered Size */
-$img = apply_filters( 'taxonomy-images-queried-term-image-url', 'PLEASE INSTALL PLUGIN', array(
- 'image_size' => 'this-is-not-real-size-probably-I-hope'
-) );
-print '
taxonomy-images-queried-term-image-url - Unregistered ';
-print '
';
-var_dump( $img );
-print ' ';
-
-
-/*
- * Queried Term Image Data.
- *
- * Return an array of data about the image associated with the current
- * queried term. In the event that no associated image exists, the filter
- * should return an empty string.
- *
- * In the event that the Taxonomy Images plugin is not installed
- * apply_filters() will return it's second parameter.
- */
-
-
-/* Default */
-$img = apply_filters( 'taxonomy-images-queried-term-image-data', 'PLEASE INSTALL PLUGIN' );
-print '
taxonomy-images-queried-term-image-data - Default ';
-print '
';
-var_dump( $img );
-print ' ';
-
-
-/* Medium Size */
-$img = apply_filters( 'taxonomy-images-queried-term-image-data', 'PLEASE INSTALL PLUGIN', array(
- 'image_size' => 'medium'
-) );
-print '
taxonomy-images-queried-term-image-data - Medium ';
-print '
';
-var_dump( $img );
-print ' ';
-
-
-/* Unregistered Size */
-$img = apply_filters( 'taxonomy-images-queried-term-image-data', 'PLEASE INSTALL PLUGIN', array(
- 'image_size' => 'this-is-not-real-size-probably-I-hope'
-) );
-print '
taxonomy-images-queried-term-image-data - Unregistered ';
-print '
';
-var_dump( $img );
-print ' ';
diff --git a/includes/taxonomy-images/deprecated.php b/includes/taxonomy-images/deprecated.php
deleted file mode 100644
index 496aae9..0000000
--- a/includes/taxonomy-images/deprecated.php
+++ /dev/null
@@ -1,115 +0,0 @@
- 'category',
- 'size' => 'detail',
- 'template' => 'list'
- );
-
- extract( shortcode_atts( $defaults, $atts ) );
-
- /* No taxonomy defined return an html comment. */
- if ( ! taxonomy_exists( $taxonomy ) ) {
- $tax = strip_tags( trim( $taxonomy ) );
-
- return '';
- }
-
- $terms = get_terms( $taxonomy );
- $associations = taxonomy_image_plugin_get_associations( $refresh = false );
-
- if ( ! is_wp_error( $terms ) ) {
- foreach ( (array) $terms as $term ) {
- $url = get_term_link( $term, $term->taxonomy );
- $title = apply_filters( 'the_title', $term->name );
- $title_attr = esc_attr( $term->name . ' (' . $term->count . ')' );
- $description = apply_filters( 'the_content', $term->description );
-
- $img = '';
- if ( array_key_exists( $term->term_taxonomy_id, $associations ) ) {
- $img = wp_get_attachment_image( $associations[ $term->term_taxonomy_id ], 'detail', false );
- }
-
- if ( 'grid' == $template ) {
- $o .= "\n\t" . '
';
- } else {
- $o .= "\n\t\t" . '
' . $img . ' ';;
- $o .= "\n\t\t" . '
';
- $o .= $description;
- $o .= "\n\t" . '
';
- $o .= "\n";
- }
- }
- }
-
- return $o;
-}
-
-add_shortcode( 'taxonomy_image_plugin', 'taxonomy_images_plugin_shortcode_deprecated' );
-
-
-/**
- * This class has been left for backward compatibility with versions
- * of this plugin 0.5 and under. Please do not use any methods or
- * properties directly in your theme.
- *
- * @deprecated Deprecated since version 0.5
- * @access private
- */
-class taxonomy_images_plugin {
-
- public $settings = array();
-
- public function __construct() {
- $this->settings = taxonomy_image_plugin_get_associations();
- add_action( 'taxonomy_image_plugin_print_image_html', array( &$this, 'print_image_html' ), 1, 3 );
- }
-
- public function get_thumb( $id ) {
- return taxonomy_image_plugin_get_image_src( $id );
- }
-
- public function print_image_html( $size = 'medium', $term_tax_id = false, $title = true, $align = 'none' ) {
- print $this->get_image_html( $size, $term_tax_id, $title, $align );
- }
-
- public function get_image_html( $size = 'medium', $term_tax_id = false, $title = true, $align = 'none' ) {
- $o = '';
- if ( false === $term_tax_id ) {
- global $wp_query;
- $obj = $wp_query->get_queried_object();
- if ( isset( $obj->term_taxonomy_id ) ) {
- $term_tax_id = $obj->term_taxonomy_id;
- } else {
- return false;
- }
- }
- $term_tax_id = (int) $term_tax_id;
- if ( isset( $this->settings[ $term_tax_id ] ) ) {
- $attachment_id = (int) $this->settings[ $term_tax_id ];
- $alt = get_post_meta( $attachment_id, '_wp_attachment_image_alt', true );
- $attachment = get_post( $attachment_id );
- /* Just in case an attachment was deleted, but there is still a record for it in this plugins settings. */
- if ( $attachment !== null ) {
- $o = get_image_tag( $attachment_id, $alt, '', $align, $size );
- }
- }
-
- return $o;
- }
-
-}
-
-$taxonomy_images_plugin = new taxonomy_images_plugin();
diff --git a/includes/taxonomy-images/public-filters.php b/includes/taxonomy-images/public-filters.php
index b03761c..46d414a 100755
--- a/includes/taxonomy-images/public-filters.php
+++ b/includes/taxonomy-images/public-filters.php
@@ -382,6 +382,12 @@ function sermon_images_plugin_get_queried_term_image_id( $default ) {
/* Return early is we are not in a term archive. */
if ( ! isset( $obj->term_taxonomy_id ) ) {
+ // translators: %1$s see msgid "term_taxonomy_id", effectively
term_taxonomy_id
+ // translators: %2$s effectively
+ // translators: %3$s effectively
category.php
+ // translators: %4$s effectively
tag.php
+ // translators: %5$s effectively
taxonomy.php
+ // translators: %6$s see msgid "template hierarchy"
trigger_error( wp_sprintf( esc_html__( '%1$s is not a property of the current queried object. This usually happens when the %2$s filter is used in an unsupported template file. This filter has been designed to work in taxonomy archives which are traditionally served by one of the following template files: %3$s, %4$s or %5$s. Learn more about %6$s.', 'sermon-manager-for-wordpress' ),
'
' . esc_html__( 'term_taxonomy_id', 'sermon-manager-for-wordpress' ) . '
',
'
' . esc_html( $filter ) . '
',
diff --git a/includes/taxonomy-images/readme.md b/includes/taxonomy-images/readme.md
deleted file mode 100755
index 76071bf..0000000
--- a/includes/taxonomy-images/readme.md
+++ /dev/null
@@ -1,293 +0,0 @@
-Taxonomy Images
-===============
-
-A WordPress plugin that enables you to associate images from your media library to categories, tags and custom taxonomies. For usage instructions please view the [screencast](http://screenr.com/zMx).
-
-
-Displaying Your Images in Your Theme
-------------------------------------
-
-There are a few filters that you can use in your theme to display the image associations created by this plugin. Please read below for detailed information.
-
-
-Display a single image representing the term archive
-----------------------------------------------------
-
-The following filter will display the image associated with the term asked for in the query string of the url. This filter only works in views that naturally use templates like category.php, tag.php taxonomy.php and all of their derivatives. Please read about [template hierarchy](http://codex.wordpress.org/Template_Hierarchy) for more information about these templates. The simplest use of this filter looks like:
-
- print apply_filters( 'taxonomy-images-queried-term-image', '' );
-
-This code will generate and print an image tag. It's output can be modifed by passig an optional third parameter to apply filters. This parameter is an array and the following keys may be set:
-
-* __after__ (string) - Text to append to the image's HTML.
-
-* __attr__ (array) - Key/value pairs representing the attributes of the img tag. Available options include: alt, class, src and title. This array will be passed as the fourth parameter to WordPress core function wp_get_attachment_image() without modification.
-
-* __before__ (string) - Text to prepend to the image's HTML.
-
-* __image_size__ (string) - May be any image size registered with WordPress. If no image size is specified, 'thumbnail' will be used as a default value. In the event that an unregistered size is specified, this filter will return an empty string.
-
-Here's an example of what a fully customized version of this filter might look like:
-
- print apply_filters( 'taxonomy-images-queried-term-image', '', array(
- 'after' => '
'
- 'attr' => array(
- 'alt' => 'Custom alternative text',
- 'class' => 'my-class-list bunnies turtles',
- 'src' => 'this-is-where-the-image-lives.png',
- 'title' => 'Custom Title',
- ),
- 'before' => '',
- 'image_size' => 'medium',
- ) );
-
-
-Similar functionality
----------------------
-
-If you just need to get the database ID for the image, you may want to use:
-
- $image_id = apply_filters( 'taxonomy-images-queried-term-image-id', 0 );
-
-If you need to get the full object of the image, you may want to use:
-
- $image = apply_filters( 'taxonomy-images-queried-term-image-object', '' );
-
-If you need to get the url to the image, you may want to use the following:
-
- $image_url = apply_filters( 'taxonomy-images-queried-term-image-url', '' );
-
-You can specify the size of the image in an option third parameter:
-
- $image_url = apply_filters( 'taxonomy-images-queried-term-image-url', '', array(
- 'image_size' => 'medium'
- ) );
-
-
-If you need data about the image, you may want to use:
-
- $image_data = apply_filters( 'taxonomy-images-queried-term-image-data', '' );
-
-You can specify the size of the image in an option third parameter:
-
-
- $image_data = apply_filters( 'taxonomy-images-queried-term-image-data', '', array(
- 'image_size' => 'medium'
- ) );
-
-List term images associated with a post object
-----------------------------------------------
-
-When a post is being displayed you may want to display all of the images associated with all of the terms that are associated with the post (a mouthful? Yes indeed!). The `taxonomy-images-list-the-terms` filter does this. Here's what it looks like in its simplest form:
-
- print apply_filters( 'taxonomy-images-list-the-terms', '' );
-
-This filter accepts an optional third parameter that you can use to customize its output. It is an array which recognizes the following keys:
-
-* __after__ (string) - Text to append to the output. Default value is a closing unordered list element.
-
-* __after_image__ (string) - Text to append to each image. Default value is a closing list-item element.
-
-* __before__ (string) - Text to prepend to the output. Default value is an open unordered list element with an class attribute of "taxonomy-images-the-terms".
-
-* __before_image__ (string) - Text to prepend to each image. Default value is an open list-item element.
-
-* __image_size__ (string) - Any registered image size. Values will vary from installation to installation. Image sizes defined in core include: "thumbnail", "medium" and "large". "Fullsize" may also be used to get the unmodified image that was uploaded. Defaults to "thumbnail".
-
-* __post_id__ (int) - The post to retrieve terms from. Defaults to the ID property of the global $post object.
-
-* __taxonomy__ (string) - Name of a registered taxonomy to return terms from. Defaults to "category".
-
-Here's an example of what a fully customized version of this filter might look like:
-
- print apply_filters( 'taxonomy-images-list-the-terms', '', array(
- 'after' => '
',
- 'after_image' => '',
- 'before' => '',
- 'before_image' => '
',
- 'image_size' => 'detail',
- 'post_id' => 1234,
- 'taxonomy' => 'post_tag',
- ) );
-
-Working with all terms of a given taxonomy
-------------------------------------------
-
-You will want to use the 'taxonomy-images-get-terms' filter. This filter is basically a wrapper for WordPress core function [get_terms()](http://codex.wordpress.org/Function_Reference/get_terms). It will return an array of enhanced term objects: each term object will have a custom property named image_id which is an integer representing the database ID of the image associated with the term. This filter can be used to create custom lists of terms. Here's what it's default useage looks like:
-
- $terms = apply_filters( 'taxonomy-images-get-terms', '' );
-
-Here is what php's print_r() function may return:
-
- Array
- (
- [0] => stdClass Object
- (
- [term_id] => 8
- [name] => Pirate
- [slug] => pirate
- [term_group] => 0
- [term_taxonomy_id] => 8
- [taxonomy] => category
- [description] => Pirates live in the ocean and ride around on boats.
- [parent] => 0
- [count] => 1
- [image_id] => 44
- )
-)
-
-As you can see, all of the goodness of get_terms() is there with an added bonus: the image_id parameter!
-
-This filter recognizes an optional third parameter which is an array of arguments that can be used to modify its output:
-
-* __cache_images__ (bool) If this value is true all assocaite images will be queried for and cached for later use in various template tags. If it is set to false, this query will be suppressed. Do not set this value to false unless you have a really good reason for doing so :) Default value is true.
-
-* __having_images__ (bool) If this value is true then only terms that have associated images will be returned. Setting it to false will return all terms. Default value is true.
-
-* __taxonomy__ (string) Name of a registered taxonomy to return terms from. Multiple taxonomies may be specified by separating each name by a comma. Defaults to "category".
-
-* __term_args__ (array) Arguments to pass to [get_terms()](http://codex.wordpress.org/Function_Reference/get_terms) as the second parameter. Default value is an empty array.
-
-Here's and example of a simple custom loop that you can make to display all term images:
-
- $terms = apply_filters( 'taxonomy-images-get-terms', '' );
- if ( ! empty( $terms ) ) {
- print '';
- }
-
-
-Support
--------
-
-If you have questions about integrating this plugin into your site, please [add a new thread to the WordPress Support Forum](http://wordpress.org/tags/taxonomy-images?forum_id=10#postform). I try to answer these, but I may not always be able to. In the event that I cannot there may be someone else who can help.
-
-
-Bugs, Suggestions
------------------
-
-Development of this plugin is hosted in a public repository on [Github](https://github.com/mfields/Taxonomy-Images). If you find a bug in this plugin or have a suggestion to make it better, please [create a new issue](https://github.com/mfields/Taxonomy-Images/issues/new)
-
-
-Hook it up yo!
---------------
-
-If you have fallen in love with this plugin and would not be able to sleep without helping out in some way, please see the following list of ways that you can _hook it up!_:
-
-* __Rate it!__ - Use the star tool on the right-hand sidebar of the [homepage](http://wordpress.org/extend/plugins/taxonomy-images/).
-
-* __Let me know if it works__ - Use the _Compatibility_ widget on the [homepage](http://wordpress.org/extend/plugins/taxonomy-images/) to let everyone know that the current version works with your version of WordPress.
-
-* __Do you Twitter?__ Help promote by using this shortlink: [http://bit.ly/taxonomy-images](http://bit.ly/taxonomy-images)
-
-* __Are you a writer?__ Help promote by writing an article on your website about this plugin.
-
-* __Are you Super-Wicked-Awesome?__ If so, you can always [make a donation](http://wordpress.mfields.org/donate/).
-
-
-Need More Taxonomy Plugins?
----------------------------
-
-I've released a handfull of plugins dealing with taxonomies. Please see my [plugin page](http://wordpress.org/extend/plugins/profile/mfields) for more info.
-
-
-Installation
-------------
-
-1. Download
-1. Unzip the package and upload to your /wp-content/plugins/ directory.
-1. Log into WordPress and navigate to the "Plugins" panel.
-1. Activate the plugin.
-1. Click the "Taxonomy Images" link under the Settings section in the admin menu. There you can select the taxonomies that you would like to add image support for.
-
-
-Changelog
----------
-
-__0.7.3__
-
-* Fixed the delete image button on edit-terms.php.
-* Better escaping.
-* Introduced pot file and languages directory.
-
-__0.7.2__
-
-* Return data for fulsize images in archive views. [See this thread](http://wordpress.org/support/topic/image-size-full).
-
-__0.7.1__
-
-* Remove unused link code which is throwing an error when no taxonomies support images.
-
-__0.7__
-
-* No longer breaks display of the [Better Plugin Compatibility Control](http://wordpress.org/extend/plugins/better-plugin-compatibility-control/) plugin.
-* Created a custom filter interface for plugin and theme integration.
-* Lots of inline documentation added.
-* Added custom notices if plugin is used in an unsupported way.
-* No notices generated by PHP or WordPress.
-* Deprecated function calls removed.
-* Security updates.
-* All strings are now internationalized.
-* Add image to term functionality mimics "Add Featured Image".
-* Taxonomy modal button now available in search + upload states.
-* Image interface has been added to single term edit screen.
-* Users can now choose which taxonomys have image support.
-* All functions are now private.
-* Shortcode deprecated.
-* All global variables and constants have been removed or deprecated.
-
-__0.6__
-
-* Never released.
-* Completely recoded.
-
-__0.5__
-
-* __UPDATE:__ Direct link to upload new files from edit-tag.php has been introduced.
-* __UPDATE:__ Ability to create an image/term association immediately after upload has been introduced.
-* __UPDATE:__ Users can now delete image/term associations.
-* __UPDATE:__ Created standalone javascript files - removed inline scripts.
-* __UPDATE:__ Obsesive compulsive syntax modifications.
-* __UPDATE:__ Localization for strings - still need to "fine-tooth-comb" this.
-* __UPDATE:__ Removed all debug functions.
-
-__0.4.4__
-
-* __BUGFIX:__ get_image_html() Now populates the image's alt attribute with appropriate data. Props to [jaygoldman](http://wordpress.org/support/profile/jaygoldman).
-
-__0.4.3__
-
-* __UPDATE:__ Support for WordPress 3.0 has been added. Support for all beta versions of 3.0 has been dropped.
-* __COMPAT:__ Removed use of deprecated function is_taxonomy() - props to [anointed](http://profiles.wordpress.org/users/anointed).
-* __COMPAT:__ Included a definition for taxonomy_exists() function for backwards compatibility with 2.9 branch. This function is new in WordPress version 3.0.
-
-__0.4.2__
-
-* __UPDATE:__ Changed button name from "Category" to "Taxonomy".
-* __UPDATE:__ Support for 2.9 branch has been added again.
-
-__0.4.1__
-
-* __UPDATE:__ Added support for dynamic taxonomy hooks for _tag_row()
-* __BROKEN:__ Support for 2.9 branch has been temporarily removed.
-
-__0.4__
-
-* __BUGFIX:__ get_thumb() now returns the fullsize url if there is no appropriate intermediate image.
-* __UPDATE:__ Added "taxonomy_images_shortcode".
-
-__0.3__
-
-* __COMPAT:__ Changed the firing order of every hook untilizing the 'category_rows' method to 15. This allows this plugin to be compatible with [Reveal IDs for WP Admin](http://wordpress.org/extend/plugins/reveal-ids-for-wp-admin-25/). Thanks to [Peter Kahoun](http://profiles.wordpress.org/kahi/)
-* __COMPAT:__ Added Version check for PHP5.
-* __UPDATE:__ `$settings` and `$locale` are now public properties.
-* __UPDATE:__ Object name changed to: $taxonomy_images_plugin.
-* __UPDATE:__ Added argument $term_tax_id to both print_image_html() and get_image_html().
-* __BUGFIX:__ Deleted the register_deactivation_hook() function -> sorry to all 8 who downloaded this plugin so far :)
-
-__0.2__
-
-* Original Release - Works With: wp 2.9.1.
\ No newline at end of file
diff --git a/includes/taxonomy-images/readme.txt b/includes/taxonomy-images/readme.txt
deleted file mode 100755
index 83cb1ce..0000000
--- a/includes/taxonomy-images/readme.txt
+++ /dev/null
@@ -1,283 +0,0 @@
-===Taxonomy Images===
-
-Contributors: mfields
-Donate link: http://wordpress.mfields.org/donate/
-Tags: taxonomy, tag, category, image, upload, media
-Requires at least: 3.1
-Tested up to: 3.2-beta2-18055
-Stable tag: trunk
-
-Associate images from your media library to categories, tags and custom taxonomies.
-
-==Description==
-
-For usage instructions please view the [screencast](http://screenr.com/zMx).
-
-= Displaying Your Images in Your Theme =
-
-There are a few filters that you can use in your theme to display the image associations created by this plugin. Please read below for detailed information.
-
-= Display a single image representing the term archive =
-
-The following filter will display the image associated with the term asked for in the query string of the url. This filter only works in views that naturally use templates like category.php, tag.php taxonomy.php and all of their derivatives. Please read about [template hierarchy](http://codex.wordpress.org/Template_Hierarchy) for more information about these templates. The simplest use of this filter looks like:
-
-`print apply_filters( 'taxonomy-images-queried-term-image', '' );`
-
-This code will generate and print an image tag. It's output can be modifed by passig an optional third parameter to apply filters. This parameter is an array and the following keys may be set:
-
-* __after__ (string) - Text to append to the image's HTML.
-
-* __attr__ (array) - Key/value pairs representing the attributes of the img tag. Available options include: alt, class, src and title. This array will be passed as the fourth parameter to WordPress core function wp_get_attachment_image() without modification.
-
-* __before__ (string) - Text to prepend to the image's HTML.
-
-* __image_size__ (string) - May be any image size registered with WordPress. If no image size is specified, 'thumbnail' will be used as a default value. In the event that an unregistered size is specified, this filter will return an empty string.
-
-Here's an example of what a fully customized version of this filter might look like:
-
-`print apply_filters( 'taxonomy-images-queried-term-image', '', array(
- 'after' => ' '
- 'attr' => array(
- 'alt' => 'Custom alternative text',
- 'class' => 'my-class-list bunnies turtles',
- 'src' => 'this-is-where-the-image-lives.png',
- 'title' => 'Custom Title',
- ),
- 'before' => '',
- 'image_size' => 'medium',
- ) );
-`
-
-= Similar functionality =
-
-If you just need to get the database ID for the image, you may want to use:
-
-`$image_id = apply_filters( 'taxonomy-images-queried-term-image-id', 0 );`
-
-If you need to get the full object of the image, you may want to use:
-
-`$image = apply_filters( 'taxonomy-images-queried-term-image-object', '' );`
-
-If you need to get the url to the image, you may want to use the following:
-
-`$image_url = apply_filters( 'taxonomy-images-queried-term-image-url', '' );`
-
-You can specify the size of the image in an option third parameter:
-
-`
-$image_url = apply_filters( 'taxonomy-images-queried-term-image-url', '', array(
- 'image_size' => 'medium'
- ) );
-`
-
-If you need data about the image, you may want to use:
-
-`$image_data = apply_filters( 'taxonomy-images-queried-term-image-data', '' );`
-
-You can specify the size of the image in an option third parameter:
-
-`
-$image_data = apply_filters( 'taxonomy-images-queried-term-image-data', '', array(
- 'image_size' => 'medium'
- ) );
-`
-
-= List term images associated with a post object =
-
-When a post is being displayed you may want to display all of the images associated with all of the terms that are associated with the post (a mouthful? Yes indeed!). The `taxonomy-images-list-the-terms` filter does this. Here's what it looks like in its simplest form:
-
-`print apply_filters( 'taxonomy-images-list-the-terms', '' );`
-
-This filter accepts an optional third parameter that you can use to customize its output. It is an array which recognizes the following keys:
-
-* __after__ (string) - Text to append to the output. Default value is a closing unordered list element.
-
-* __after_image__ (string) - Text to append to each image. Default value is a closing list-item element.
-
-* __before__ (string) - Text to prepend to the output. Default value is an open unordered list element with an class attribute of "taxonomy-images-the-terms".
-
-* __before_image__ (string) - Text to prepend to each image. Default value is an open list-item element.
-
-* __image_size__ (string) - Any registered image size. Values will vary from installation to installation. Image sizes defined in core include: "thumbnail", "medium" and "large". "Fullsize" may also be used to get the unmodified image that was uploaded. Defaults to "thumbnail".
-
-* __post_id__ (int) - The post to retrieve terms from. Defaults to the ID property of the global $post object.
-
-* __taxonomy__ (string) - Name of a registered taxonomy to return terms from. Defaults to "category".
-
-Here's an example of what a fully customized version of this filter might look like:
-
-`
-print apply_filters( 'taxonomy-images-list-the-terms', '', array(
- 'after' => '
',
- 'after_image' => '',
- 'before' => '',
- 'before_image' => '
',
- 'image_size' => 'detail',
- 'post_id' => 1234,
- 'taxonomy' => 'post_tag',
- ) );
-`
-
-= Working with all terms of a given taxonomy =
-
-You will want to use the 'taxonomy-images-get-terms' filter. This filter is basically a wrapper for WordPress core function [get_terms()](http://codex.wordpress.org/Function_Reference/get_terms). It will return an array of enhanced term objects: each term object will have a custom property named image_id which is an integer representing the database ID of the image associated with the term. This filter can be used to create custom lists of terms. Here's what it's default useage looks like:
-
-`$terms = apply_filters( 'taxonomy-images-get-terms', '' );`
-
-Here is what php's print_r() function may return:
-
-`
-Array
-(
- [0] => stdClass Object
- (
- [term_id] => 8
- [name] => Pirate
- [slug] => pirate
- [term_group] => 0
- [term_taxonomy_id] => 8
- [taxonomy] => category
- [description] => Pirates live in the ocean and ride around on boats.
- [parent] => 0
- [count] => 1
- [image_id] => 44
- )
-)
-`
-
-As you can see, all of the goodness of get_terms() is there with an added bonus: the image_id parameter!
-
-This filter recognizes an optional third parameter which is an array of arguments that can be used to modify its output:
-
-* __cache_images__ (bool) If this value is true all assocaite images will be queried for and cached for later use in various template tags. If it is set to false, this query will be suppressed. Do not set this value to false unless you have a really good reason for doing so :) Default value is true.
-
-* __having_images__ (bool) If this value is true then only terms that have associated images will be returned. Setting it to false will return all terms. Default value is true.
-
-* __taxonomy__ (string) Name of a registered taxonomy to return terms from. Multiple taxonomies may be specified by separating each name by a comma. Defaults to "category".
-
-* __term_args__ (array) Arguments to pass to [get_terms()](http://codex.wordpress.org/Function_Reference/get_terms) as the second parameter. Default value is an empty array.
-
-Here's and example of a simple custom loop that you can make to display all term images:
-
-`
-$terms = apply_filters( 'taxonomy-images-get-terms', '' );
-if ( ! empty( $terms ) ) {
- print '';
-}
-`
-
-= Support =
-
-If you have questions about integrating this plugin into your site, please [add a new thread to the WordPress Support Forum](http://wordpress.org/tags/taxonomy-images?forum_id=10#postform). I try to answer these, but I may not always be able to. In the event that I cannot there may be someone else who can help.
-
-= Bugs, Suggestions =
-
-Development of this plugin is hosted in a public repository on [Github](https://github.com/mfields/Taxonomy-Images). If you find a bug in this plugin or have a suggestion to make it better, please [create a new issue](https://github.com/mfields/Taxonomy-Images/issues/new)
-
-= Hook it up yo! =
-
-If you have fallen in love with this plugin and would not be able to sleep without helping out in some way, please see the following list of ways that you can _hook it up!_:
-
-* __Rate it!__ - Use the star tool on the right-hand sidebar of the [homepage](http://wordpress.org/extend/plugins/taxonomy-images/).
-
-* __Let me know if it works__ - Use the _Compatibility_ widget on the [homepage](http://wordpress.org/extend/plugins/taxonomy-images/) to let everyone know that the current version works with your version of WordPress.
-
-* __Do you Twitter?__ Help promote by using this shortlink: [http://bit.ly/taxonomy-images](http://bit.ly/taxonomy-images)
-
-* __Are you a writer?__ Help promote by writing an article on your website about this plugin.
-
-* __Are you Super-Wicked-Awesome?__ If so, you can always [make a donation](http://wordpress.mfields.org/donate/).
-
-= Need More Taxonomy Plugins? =
-I've released a handfull of plugins dealing with taxonomies. Please see my [plugin page](http://wordpress.org/extend/plugins/profile/mfields) for more info.
-
-==Installation==
-
-1. Download
-1. Unzip the package and upload to your /wp-content/plugins/ directory.
-1. Log into WordPress and navigate to the "Plugins" panel.
-1. Activate the plugin.
-1. Click the "Taxonomy Images" link under the Settings section in the admin menu. There you can select the taxonomies that you would like to add image support for.
-
-== Upgrade Notice ==
-
-= 0.7 =
-Complete rewrite. Better everything. Many bug fixes.
-
-==Changelog==
-
-= 0.7.3 =
-* Fixed the delete image button on edit-terms.php.
-* Better escaping.
-* Introduced pot file and languages directory.
-
-= 0.7.2 =
-* Return data for fulsize images in archive views. [See this thread](http://wordpress.org/support/topic/image-size-full).
-
-= 0.7.1 =
-* Remove unused link code which is throwing an error when no taxonomies support images.
-
-= 0.7 =
-* No longer breaks display of the [Better Plugin Compatibility Control](http://wordpress.org/extend/plugins/better-plugin-compatibility-control/) plugin.
-* Created a custom filter interface for plugin and theme integration.
-* Lots of inline documentation added.
-* Added custom notices if plugin is used in an unsupported way.
-* No notices generated by PHP or WordPress.
-* Deprecated function calls removed.
-* Security updates.
-* All strings are now internationalized.
-* Add image to term functionality mimics "Add Featured Image".
-* Taxonomy modal button now available in search + upload states.
-* Image interface has been added to single term edit screen.
-* Users can now choose which taxonomys have image support.
-* All functions are now private.
-* Shortcode deprecated.
-* All global variables and constants have been removed or deprecated.
-
-= 0.6 =
-* Never released.
-* Completely recoded.
-
-= 0.5 =
-* __UPDATE:__ Direct link to upload new files from edit-tag.php has been introduced.
-* __UPDATE:__ Ability to create an image/term association immediately after upload has been introduced.
-* __UPDATE:__ Users can now delete image/term associations.
-* __UPDATE:__ Created standalone javascript files - removed inline scripts.
-* __UPDATE:__ Obsesive compulsive syntax modifications.
-* __UPDATE:__ Localization for strings - still need to "fine-tooth-comb" this.
-* __UPDATE:__ Removed all debug functions.
-
-= 0.4.4 =
-* __BUGFIX:__ get_image_html() Now populates the image's alt attribute with appropriate data. Props to [jaygoldman](http://wordpress.org/support/profile/jaygoldman).
-
-= 0.4.3 =
-* __UPDATE:__ Support for WordPress 3.0 has been added. Support for all beta versions of 3.0 has been dropped.
-* __COMPAT:__ Removed use of deprecated function is_taxonomy() - props to [anointed](http://profiles.wordpress.org/users/anointed).
-* __COMPAT:__ Included a definition for taxonomy_exists() function for backwards compatibility with 2.9 branch. This function is new in WordPress version 3.0.
-
-= 0.4.2 =
-* __UPDATE:__ Changed button name from "Category" to "Taxonomy".
-* __UPDATE:__ Support for 2.9 branch has been added again.
-
-= 0.4.1 =
-* __UPDATE:__ Added support for dynamic taxonomy hooks for _tag_row()
-* __BROKEN:__ Support for 2.9 branch has been temporarily removed.
-
-= 0.4 =
-* __BUGFIX:__ get_thumb() now returns the fullsize url if there is no appropriate intermediate image.
-* __UPDATE:__ Added "taxonomy_images_shortcode".
-
-= 0.3 =
-* __COMPAT:__ Changed the firing order of every hook untilizing the 'category_rows' method to 15. This allows this plugin to be compatible with [Reveal IDs for WP Admin](http://wordpress.org/extend/plugins/reveal-ids-for-wp-admin-25/). Thanks to [Peter Kahoun](http://profiles.wordpress.org/kahi/)
-* __COMPAT:__ Added Version check for PHP5.
-* __UPDATE:__ `$settings` and `$locale` are now public properties.
-* __UPDATE:__ Object name changed to: $taxonomy_images_plugin.
-* __UPDATE:__ Added argument $term_tax_id to both print_image_html() and get_image_html().
-* __BUGFIX:__ Deleted the register_deactivation_hook() function -> sorry to all 8 who downloaded this plugin so far :)
-
-= 0.2 =
-* Original Release - Works With: wp 2.9.1.
\ No newline at end of file
diff --git a/includes/taxonomy-images/taxonomy-images.php b/includes/taxonomy-images/taxonomy-images.php
index 899ce1a..53aac6f 100644
--- a/includes/taxonomy-images/taxonomy-images.php
+++ b/includes/taxonomy-images/taxonomy-images.php
@@ -176,14 +176,11 @@ function sermon_image_plugin_get_image_src( $id ) {
if ( is_file( $path ) ) {
/* Attempt to create a new downsized version of the original image. */
- $new = wp_get_image_editor( $path,
- $detail['size'][0],
- $detail['size'][1],
- $detail['size'][2]
- );
+ $new = wp_get_image_editor( $path );
/* Image creation successful. Generate and cache image metadata. Return url. */
if ( ! is_wp_error( $new ) ) {
+ $new->resize( $detail['size'][0], $detail['size'][1], $detail['size'][2] );
$meta = wp_generate_attachment_metadata( $id, $path );
wp_update_attachment_metadata( $id, $meta );
$img = image_get_intermediate_size( $id, $detail['name'] );
@@ -403,8 +400,12 @@ function sermon_image_plugin_settings_page() {
* @access private
*/
function sermon_image_plugin_control_taxonomies() {
- $settings = get_option( 'sermon_image_plugin_settings' );
+ $settings = apply_filters( 'sermon_image_plugin_settings', array(
+ 'taxonomies' => array( 'wpfc_sermon_series', 'wpfc_preacher', 'wpfc_sermon_topics', )
+ ) );
+
$taxonomies = get_taxonomies( array(), 'objects' );
+
foreach ( (array) $taxonomies as $taxonomy ) {
if ( ! isset( $taxonomy->name ) ) {
continue;
@@ -704,7 +705,10 @@ function sermon_image_plugin_get_associations( $refresh = false ) {
* @alter 0.7
*/
function sermon_image_plugin_add_dynamic_hooks() {
- $settings = get_option( 'sermon_image_plugin_settings' );
+ $settings = apply_filters( 'sermon_image_plugin_settings', array(
+ 'taxonomies' => array( 'wpfc_sermon_series', 'wpfc_preacher', 'wpfc_sermon_topics', )
+ ) );
+
if ( ! isset( $settings['taxonomies'] ) ) {
return;
}
@@ -843,7 +847,7 @@ function sermon_image_plugin_control_image( $term_id, $taxonomy ) {
$thickbox_class = version_compare( get_bloginfo( 'version' ), 3.5 ) >= 0 ? '' : 'thickbox';
$o = "\n" . '';
- $o .= "\n" . '
';
+ $o .= "\n" . '
';
$o .= "\n" . '
' . esc_html__( 'Upload.', 'sermon-manager-for-wordpress' ) . ' ';
$o .= "\n" . '
' . esc_html__( 'Delete', 'sermon-manager-for-wordpress' ) . ' ';
$o .= "\n" . '
';
@@ -1018,13 +1022,6 @@ function sermon_image_plugin_activate() {
if ( false === $associations ) {
add_option( 'sermon_image_plugin', array() );
}
-
- $settings = get_option( 'sermon_image_plugin_settings' );
- if ( false === $settings ) {
- add_option( 'sermon_image_plugin_settings', array(
- 'taxonomies' => array()
- ) );
- }
}
register_activation_hook( __FILE__, 'sermon_image_plugin_activate' );
@@ -1044,7 +1041,10 @@ function sermon_image_plugin_is_screen_active() {
return false;
}
- $settings = get_option( 'sermon_image_plugin_settings' );
+ $settings = apply_filters( 'sermon_image_plugin_settings', array(
+ 'taxonomies' => array( 'wpfc_sermon_series', 'wpfc_preacher', 'wpfc_sermon_topics', )
+ ) );
+
if ( ! isset( $settings['taxonomies'] ) ) {
return false;
}
@@ -1168,7 +1168,9 @@ function sermon_image_plugin_check_taxonomy( $taxonomy, $filter ) {
return false;
}
- $settings = get_option( 'sermon_image_plugin_settings' );
+ $settings = apply_filters( 'sermon_image_plugin_settings', array(
+ 'taxonomies' => array( 'wpfc_sermon_series', 'wpfc_preacher', 'wpfc_sermon_topics', )
+ ) );
if ( ! isset( $settings['taxonomies'] ) ) {
trigger_error( wp_sprintf( esc_html__( 'No taxonomies have image support. %1$s', 'sermon-manager-for-wordpress' ), sermon_images_plugin_settings_page_link() ) );
@@ -1299,8 +1301,8 @@ function sermon_images_admin_enqueue_scripts() {
wp_localize_script( 'sermon-images-media-modal', 'taxonomyImagesMediaModal', array(
'wp_media_post_id' => 0,
'attachment_id' => 0,
- 'uploader_title' => wp_sprintf( esc_html__( 'Set %s’s image', 'sermon-manager-for-wordpress' ), \SermonManager::getOption( 'preacher_label' ) ? : esc_html__ ( 'Preacher', 'sermon-manager-for-wordpress' ) ),
- 'uploader_button_text' => wp_sprintf( esc_html__( 'Set %s’s image', 'sermon-manager-for-wordpress' ), \SermonManager::getOption( 'preacher_label' ) ? : esc_html__ ( 'Preacher', 'sermon-manager-for-wordpress' ) ),
+ 'uploader_title' => wp_sprintf( esc_html__( 'Set %s’s image', 'sermon-manager-for-wordpress' ), \SermonManager::getOption( 'preacher_label' ) ?: esc_html__( 'Preacher', 'sermon-manager-for-wordpress' ) ),
+ 'uploader_button_text' => wp_sprintf( esc_html__( 'Set %s’s image', 'sermon-manager-for-wordpress' ), \SermonManager::getOption( 'preacher_label' ) ?: esc_html__( 'Preacher', 'sermon-manager-for-wordpress' ) ),
'series_title' => esc_html__( 'Set Series image', 'sermon-manager-for-wordpress' ),
'series_button_text' => esc_html__( 'Set Series image', 'sermon-manager-for-wordpress' ),
'default_img_src' => sermon_image_plugin_url( 'default.png' )
diff --git a/includes/template-tags.php b/includes/template-tags.php
index 2125ebd..680d3fc 100755
--- a/includes/template-tags.php
+++ b/includes/template-tags.php
@@ -119,13 +119,13 @@ function render_wpfc_sermon_archive() {
', ' ' );
- echo the_terms( $post->ID, 'wpfc_service_type', ' (', ' ', ') ' );
+ the_terms( $post->ID, 'wpfc_service_type', ' (', ' ', ') ' );
?>
' . __( 'Bible Text: ', 'sermon-manager-for-wordpress' ), ' | ' );
- echo the_terms( $post->ID, 'wpfc_preacher', '', ' ', ' ' );
- echo the_terms( $post->ID, 'wpfc_sermon_series', '
' . __( 'Series: ', 'sermon-manager-for-wordpress' ), ' ', '
' );
+ the_terms( $post->ID, 'wpfc_preacher', '
', ' ', ' ' );
+ the_terms( $post->ID, 'wpfc_sermon_series', '
' . __( 'Series: ', 'sermon-manager-for-wordpress' ), ' ', '
' );
?>
@@ -145,10 +145,7 @@ function render_wpfc_sermon_archive() {
* @since 2.5.0 added $args
*/
function render_wpfc_sorting( $args = array() ) {
- // reset values
- $hidden = array();
-
- $action = get_site_url() . '/' . ( SermonManager::getOption( 'common_base_slug' ) ? ( '/' . ( SermonManager::getOption( 'archive_slug' ) ?: 'sermons' ) ) : '' );
+ $action = get_site_url() . '/' . ( SermonManager::getOption( 'common_base_slug' ) ? ( SermonManager::getOption( 'archive_slug' ) ?: 'sermons' ) : '' );
// Filters HTML fields data
$filters = array(
@@ -421,7 +418,7 @@ function wpfc_sermon_single( $return = false, $post = '' ) {
- ID, 'wpfc_sermon_topics', '' . __( 'Sermon Topics: ', 'sermon-manager-for-wordpress' ), ',', '
' ); ?>
+ ID, 'wpfc_sermon_topics', '' . __( 'Sermon Topics: ', 'sermon-manager-for-wordpress' ), ',', '
' ); ?>
', ' ' );
- echo the_terms( $post->ID, 'wpfc_service_type', ' (', ' ', ') ' );
+ the_terms( $post->ID, 'wpfc_service_type', ' (', ' ', ') ' );
?>
' . __( 'Bible Text: ', 'sermon-manager-for-wordpress' ), ' | ' );
- echo the_terms( $post->ID, 'wpfc_preacher', '', ', ', ' ' );
- echo the_terms( $post->ID, 'wpfc_sermon_series', '
' . __( 'Series: ', 'sermon-manager-for-wordpress' ), ' ', '
' );
+ the_terms( $post->ID, 'wpfc_preacher', '', ', ', ' ' );
+ the_terms( $post->ID, 'wpfc_sermon_series', '' . __( 'Series: ', 'sermon-manager-for-wordpress' ), ' ', '
' );
?>
@@ -579,12 +576,95 @@ function wpfc_get_term_dropdown( $taxonomy, $default = '' ) {
// reset var
$html = '';
- foreach (
- get_terms( array(
- 'taxonomy' => $taxonomy,
- 'hide_empty' => false, // todo: add option to disable/enable this globally
- ) ) as $term
- ) {
+ $terms = get_terms( array(
+ 'taxonomy' => $taxonomy,
+ 'hide_empty' => false, // todo: add option to disable/enable this globally
+ ) );
+
+ if ( $taxonomy === 'wpfc_bible_book' ) {
+ // book order
+ $books = array(
+ 'Genesis',
+ 'Exodus',
+ 'Leviticus',
+ 'Numbers',
+ 'Deuteronomy',
+ 'Joshua',
+ 'Judges',
+ 'Ruth',
+ '1 Samuel',
+ '2 Samuel',
+ '1 Kings',
+ '2 Kings',
+ '1 Chronicles',
+ '2 Chronicles',
+ 'Ezra',
+ 'Nehemiah',
+ 'Esther',
+ 'Job',
+ 'Psalm',
+ 'Proverbs',
+ 'Ecclesiastes',
+ 'Song of Songs',
+ 'Isaiah',
+ 'Jeremiah',
+ 'Lamentations',
+ 'Ezekiel',
+ 'Daniel',
+ 'Hosea',
+ 'Joel',
+ 'Amos',
+ 'Obadiah',
+ 'Jonah',
+ 'Micah',
+ 'Nahum',
+ 'Habakkuk',
+ 'Zephaniah',
+ 'Haggai',
+ 'Zechariah',
+ 'Malachi',
+ 'Matthew',
+ 'Mark',
+ 'Luke',
+ 'John',
+ 'Acts',
+ 'Romans',
+ '1 Corinthians',
+ '2 Corinthians',
+ 'Galatians',
+ 'Ephesians',
+ 'Philippians',
+ 'Colossians',
+ '1 Thessalonians',
+ '2 Thessalonians',
+ '1 Timothy',
+ '2 Timothy',
+ 'Titus',
+ 'Philemon',
+ 'Hebrews',
+ 'James',
+ '1 Peter',
+ '2 Peter',
+ '1 John',
+ '2 John',
+ '3 John',
+ 'Jude',
+ 'Revelation',
+ 'Topical',
+ );
+
+ // assign every book a number
+ foreach ( $terms as $term ) {
+ $ordered_terms[ array_search( $term->name, $books ) ] = $term;
+ }
+
+ // order the numbers (books)
+ ksort( $ordered_terms );
+
+ $terms = $ordered_terms;
+ }
+
+ foreach ( $terms as $term ) {
$html .= 'slug === get_query_var( $taxonomy ) : $term->slug === $default ) ? 'selected' : '' ) . '>' . $term->name . ' ';
}
diff --git a/includes/types-taxonomies.php b/includes/types-taxonomies.php
deleted file mode 100644
index 6b9d5d1..0000000
--- a/includes/types-taxonomies.php
+++ /dev/null
@@ -1,408 +0,0 @@
-slug;
-
- wp_set_object_terms( $post_ID, $service_type, 'wpfc_service_type' );
- }
-
- return $post;
- }
-}
-
-/*
- * Creation of Sermon Post Types and Taxonomies
- * Also all meta boxes
- */
-
-// Determine the correct slug name based on options
-function generate_wpfc_slug( $slug_name = null ) {
- if ( trim( \SermonManager::getOption( 'archive_slug' ) ) === '' ) {
- $archive_slug = 'sermons';
- } else {
- $archive_slug = \SermonManager::getOption( 'archive_slug' );
- }
-
- if ( ! isset( $slug_name ) ) {
- return array( 'slug' => $archive_slug, 'with_front' => false );
- }
-
- if ( \SermonManager::getOption( 'common_base_slug' ) ) {
- return array( 'slug' => $archive_slug . "/" . $slug_name, 'with_front' => false );
- } else {
- return array( 'slug' => $slug_name, 'with_front' => false );
- }
-}
-
-// Create sermon Custom Post Type
-function create_wpfc_sermon_types() {
-
- $labels = array(
- 'name' => __( 'Sermons', 'sermon-manager-for-wordpress' ),
- 'singular_name' => __( 'Sermon', 'sermon-manager-for-wordpress' ),
- 'add_new' => __( 'Add New', 'sermon-manager-for-wordpress' ),
- 'add_new_item' => __( 'Add New Sermon', 'sermon-manager-for-wordpress' ),
- 'edit_item' => __( 'Edit Sermon', 'sermon-manager-for-wordpress' ),
- 'new_item' => __( 'New Sermon', 'sermon-manager-for-wordpress' ),
- 'view_item' => __( 'View Sermon', 'sermon-manager-for-wordpress' ),
- 'search_items' => __( 'Search Sermons', 'sermon-manager-for-wordpress' ),
- 'not_found' => __( 'No sermons found', 'sermon-manager-for-wordpress' ),
- 'not_found_in_trash' => __( 'No sermons found in Trash', 'sermon-manager-for-wordpress' ),
- 'menu_name' => __( 'Sermons', 'sermon-manager-for-wordpress' ),
- );
-
- $args = array(
- 'labels' => $labels,
- 'public' => true,
- 'publicly_queryable' => true,
- 'show_ui' => true,
- 'show_in_menu' => true,
- 'query_var' => true,
- 'menu_icon' => SM_URL . 'includes/img/sm-icon.svg',
- 'capability_type' => 'post',
- 'has_archive' => true,
- 'rewrite' => generate_wpfc_slug(),
- 'hierarchical' => false,
- 'supports' => array( 'title', 'comments', 'thumbnail', 'entry-views' )
- );
- register_post_type( 'wpfc_sermon', $args );
-}
-
-// Create new taxonomies: preachers, sermon series, bible books & topics
-function create_wpfc_sermon_taxonomies() {
-
- //Preachers
- $labels = array(
- 'name' => \SermonManager::getOption( 'preacher_label' ) ? \SermonManager::getOption( 'preacher_label' ) : __( 'Preachers', 'sermon-manager-for-wordpress' ),
- 'singular_name' => \SermonManager::getOption( 'preacher_label' ) ? \SermonManager::getOption( 'preacher_label' ) : __( 'Preacher', 'sermon-manager-for-wordpress' ),
- 'menu_name' => __( 'Preachers', 'sermon-manager-for-wordpress' ),
- 'search_items' => wp_sprintf( __( 'Search %s', 'sermon-manager-for-wordpress' ), \SermonManager::getOption( 'preacher_label' ) ? \SermonManager::getOption( 'preacher_label' ) : __( 'Preacher', 'sermon-manager-for-wordpress' ) ),
- 'popular_items' => wp_sprintf( __( 'Most frequent %s', 'sermon-manager-for-wordpress' ), \SermonManager::getOption( 'preacher_label' ) ? \SermonManager::getOption( 'preacher_label' ) : __( 'Preacher', 'sermon-manager-for-wordpress' ) ),
- 'all_items' => wp_sprintf( __( 'All %s', 'sermon-manager-for-wordpress' ), \SermonManager::getOption( 'preacher_label' ) ? \SermonManager::getOption( 'preacher_label' ) : __( 'Preachers', 'sermon-manager-for-wordpress' ) ),
- 'edit_item' => wp_sprintf( __( 'Edit %s', 'sermon-manager-for-wordpress' ), \SermonManager::getOption( 'preacher_label' ) ? \SermonManager::getOption( 'preacher_label' ) : __( 'Preacher', 'sermon-manager-for-wordpress' ) ),
- 'update_item' => wp_sprintf( __( 'Update %s', 'sermon-manager-for-wordpress' ), \SermonManager::getOption( 'preacher_label' ) ? \SermonManager::getOption( 'preacher_label' ) : __( 'Preacher', 'sermon-manager-for-wordpress' ) ),
- 'add_new_item' => wp_sprintf( __( 'Add new %s', 'sermon-manager-for-wordpress' ), \SermonManager::getOption( 'preacher_label' ) ? \SermonManager::getOption( 'preacher_label' ) : __( 'Preacher', 'sermon-manager-for-wordpress' ) ),
- 'new_item_name' => wp_sprintf( __( 'New %s', 'sermon-manager-for-wordpress' ), \SermonManager::getOption( 'preacher_label' ) ? \SermonManager::getOption( 'preacher_label' ) : __( 'Preacher', 'sermon-manager-for-wordpress' ) ),
- 'separate_items_with_commas' => wp_sprintf( __( 'Separate multiple %s with commas', 'sermon-manager-for-wordpress' ), \SermonManager::getOption( 'preacher_label' ) ? \SermonManager::getOption( 'preacher_label' ) : __( 'Preachers', 'sermon-manager-for-wordpress' ) ),
- 'add_or_remove_items' => wp_sprintf( __( 'Add or remove %s', 'sermon-manager-for-wordpress' ), \SermonManager::getOption( 'preacher_label' ) ? \SermonManager::getOption( 'preacher_label' ) : __( 'Preacher', 'sermon-manager-for-wordpress' ) ),
- 'choose_from_most_used' => wp_sprintf( __( 'Choose from most frequent %s', 'sermon-manager-for-wordpress' ), \SermonManager::getOption( 'preacher_label' ) ? \SermonManager::getOption( 'preacher_label' ) : __( 'Preachers', 'sermon-manager-for-wordpress' ) ),
- 'parent_item' => null,
- 'parent_item_colon' => null,
- );
-
- register_taxonomy( 'wpfc_preacher', 'wpfc_sermon', array(
- 'hierarchical' => false,
- 'labels' => $labels,
- 'show_ui' => true,
- 'query_var' => true,
- 'rewrite' => generate_wpfc_slug( \SermonManager::getOption( 'preacher_label' ) ? sanitize_title( \SermonManager::getOption( 'preacher_label' ) ) : 'preacher' ),
- ) );
-
- //Sermon Series
- $labels = array(
- 'name' => __( 'Sermon Series', 'sermon-manager-for-wordpress' ),
- 'singular_name' => __( 'Sermon Series', 'sermon-manager-for-wordpress' ),
- 'menu_name' => __( 'Sermon Series', 'sermon-manager-for-wordpress' ),
- 'search_items' => __( 'Search sermon series', 'sermon-manager-for-wordpress' ),
- 'popular_items' => __( 'Most frequent sermon series', 'sermon-manager-for-wordpress' ),
- 'all_items' => __( 'All sermon series', 'sermon-manager-for-wordpress' ),
- 'edit_item' => __( 'Edit sermon series', 'sermon-manager-for-wordpress' ),
- 'update_item' => __( 'Update sermon series', 'sermon-manager-for-wordpress' ),
- 'add_new_item' => __( 'Add new sermon series', 'sermon-manager-for-wordpress' ),
- 'new_item_name' => __( 'New sermon series name', 'sermon-manager-for-wordpress' ),
- 'separate_items_with_commas' => __( 'Separate sermon series with commas', 'sermon-manager-for-wordpress' ),
- 'add_or_remove_items' => __( 'Add or remove sermon series', 'sermon-manager-for-wordpress' ),
- 'choose_from_most_used' => __( 'Choose from most used sermon series', 'sermon-manager-for-wordpress' ),
- 'parent_item' => null,
- 'parent_item_colon' => null,
- );
-
- register_taxonomy( 'wpfc_sermon_series', 'wpfc_sermon', array(
- 'hierarchical' => false,
- 'labels' => $labels,
- 'show_ui' => true,
- 'query_var' => true,
- 'rewrite' => generate_wpfc_slug( 'series' ),
- ) );
-
- //Sermon Topics
- $labels = array(
- 'name' => __( 'Sermon Topics', 'sermon-manager-for-wordpress' ),
- 'singular_name' => __( 'Sermon Topics', 'sermon-manager-for-wordpress' ),
- 'menu_name' => __( 'Sermon Topics', 'sermon-manager-for-wordpress' ),
- 'search_items' => __( 'Search sermon topics', 'sermon-manager-for-wordpress' ),
- 'popular_items' => __( 'Most popular sermon topics', 'sermon-manager-for-wordpress' ),
- 'all_items' => __( 'All sermon topics', 'sermon-manager-for-wordpress' ),
- 'edit_item' => __( 'Edit sermon topic', 'sermon-manager-for-wordpress' ),
- 'update_item' => __( 'Update sermon topic', 'sermon-manager-for-wordpress' ),
- 'add_new_item' => __( 'Add new sermon topic', 'sermon-manager-for-wordpress' ),
- 'new_item_name' => __( 'New sermon topic', 'sermon-manager-for-wordpress' ),
- 'separate_items_with_commas' => __( 'Separate sermon topics with commas', 'sermon-manager-for-wordpress' ),
- 'add_or_remove_items' => __( 'Add or remove sermon topics', 'sermon-manager-for-wordpress' ),
- 'choose_from_most_used' => __( 'Choose from most used sermon topics', 'sermon-manager-for-wordpress' ),
- 'parent_item' => null,
- 'parent_item_colon' => null,
- );
-
- register_taxonomy( 'wpfc_sermon_topics', 'wpfc_sermon', array(
- 'hierarchical' => false,
- 'labels' => $labels,
- 'show_ui' => true,
- 'query_var' => true,
- 'rewrite' => generate_wpfc_slug( 'topics' ),
- ) );
-
- //Books of the Bible
- $labels = array(
- 'name' => __( 'Book of the Bible', 'sermon-manager-for-wordpress' ),
- 'singular_name' => __( 'Book of the Bible', 'sermon-manager-for-wordpress' ),
- 'menu_name' => __( 'Book of the Bible', 'sermon-manager-for-wordpress' ),
- 'search_items' => __( 'Search books of the Bible', 'sermon-manager-for-wordpress' ),
- 'popular_items' => __( 'Most popular books of the Bible', 'sermon-manager-for-wordpress' ),
- 'all_items' => __( 'All books of the Bible', 'sermon-manager-for-wordpress' ),
- 'edit_item' => __( 'Edit book of the Bible', 'sermon-manager-for-wordpress' ),
- 'update_item' => __( 'Update book of the Bible', 'sermon-manager-for-wordpress' ),
- 'add_new_item' => __( 'Add new books of the Bible', 'sermon-manager-for-wordpress' ),
- 'new_item_name' => __( 'New book of the Bible', 'sermon-manager-for-wordpress' ),
- 'separate_items_with_commas' => __( 'Separate books of the Bible with commas', 'sermon-manager-for-wordpress' ),
- 'add_or_remove_items' => __( 'Add or remove books of the Bible', 'sermon-manager-for-wordpress' ),
- 'choose_from_most_used' => __( 'Choose from most used books of the Bible', 'sermon-manager-for-wordpress' ),
- 'parent_item' => null,
- 'parent_item_colon' => null,
- );
-
- register_taxonomy( 'wpfc_bible_book', 'wpfc_sermon', array(
- 'hierarchical' => false,
- 'labels' => $labels,
- 'show_ui' => true,
- 'query_var' => true,
- 'rewrite' => generate_wpfc_slug( 'book' ),
- ) );
-
- //Service Type
- $labels = array(
- 'name' => __( 'Service Type', 'sermon-manager-for-wordpress' ),
- 'singular_name' => __( 'Service Type', 'sermon-manager-for-wordpress' ),
- 'menu_name' => __( 'Service Type', 'sermon-manager-for-wordpress' ),
- 'search_items' => __( 'Search service types', 'sermon-manager-for-wordpress' ),
- 'popular_items' => __( 'Most popular service types', 'sermon-manager-for-wordpress' ),
- 'all_items' => __( 'All service types', 'sermon-manager-for-wordpress' ),
- 'edit_item' => __( 'Edit service type', 'sermon-manager-for-wordpress' ),
- 'update_item' => __( 'Update service type', 'sermon-manager-for-wordpress' ),
- 'add_new_item' => __( 'Add new service types', 'sermon-manager-for-wordpress' ),
- 'new_item_name' => __( 'New Service Type', 'sermon-manager-for-wordpress' ),
- 'separate_items_with_commas' => __( 'Separate service types with commas', 'sermon-manager-for-wordpress' ),
- 'add_or_remove_items' => __( 'Add or remove service types', 'sermon-manager-for-wordpress' ),
- 'choose_from_most_used' => __( 'Choose from most used service types', 'sermon-manager-for-wordpress' ),
- 'parent_item' => null,
- 'parent_item_colon' => null,
- );
-
- register_taxonomy( 'wpfc_service_type', 'wpfc_sermon', array(
- 'hierarchical' => false,
- 'labels' => $labels,
- 'show_ui' => true,
- 'query_var' => true,
- 'rewrite' => generate_wpfc_slug( 'service-type' ),
- ) );
-}
-
-/**
- * Gets a number of terms and displays them as options
- *
- * @param string $taxonomy Taxonomy terms to retrieve. Default is category.
- * @param string|array $args Optional. get_terms optional arguments
- *
- * @return array An array of options that matches the CMB2 options array
- */
-function cmb2_get_term_options( $taxonomy = 'category' ) {
-
- $args['taxonomy'] = $taxonomy;
-
- // $defaults = array( 'taxonomy' => 'category' );
-
- $taxonomy = $args['taxonomy'];
-
- $args = array(
- 'hide_empty' => false
- );
-
- $terms = (array) get_terms( $taxonomy, $args );
-
- // Initate an empty array
- $term_options = array();
- if ( ! empty( $terms ) ) {
- foreach ( $terms as $term ) {
- $term_options[ $term->term_id ] = $term->name;
- }
- }
-
- return $term_options;
-}
-
-// sanitize the field
-add_filter( 'cmb2_sanitize_text_number', 'sm_cmb2_sanitize_text_number', 10, 2 );
-function sm_cmb2_sanitize_text_number( $null, $new ) {
- $new = preg_replace( "/[^0-9]/", "", $new );
-
- return $new;
-}
-
-// Define the metabox and field configurations
-function wpfc_sermon_metaboxes() {
-
- $cmb = new_cmb2_box( array(
- 'id' => 'wpfc_sermon_details',
- 'title' => esc_html__( 'Sermon Details', 'sermon-manager-for-wordpress' ),
- 'object_types' => array( 'wpfc_sermon', ), // Post type
- 'context' => 'normal',
- 'priority' => 'high',
- 'show_names' => true, // Show field names on the left
- // 'cmb_styles' => false, // false to disable the CMB stylesheet
- // 'closed' => true, // Keep the metabox closed by default
- ) );
-
- $date_format = 'm/d/Y';
- if ( \SermonManager::getOption( 'date_format' ) !== '' ) {
- switch ( \SermonManager::getOption( 'date_format' ) ) {
- case '0':
- $date_format = 'm/d/Y';
- break;
- case '1':
- $date_format = 'd/m/Y';
- break;
- case '2':
- $date_format = 'Y/m/d';
- break;
- case '3':
- $date_format = 'Y/d/m';
- break;
- }
- }
-
- $cmb->add_field( array(
- 'name' => esc_html__( 'Date Preached', 'sermon-manager-for-wordpress' ),
- 'desc' => ' ' . wp_sprintf( esc_html__( 'format: %s', 'sermon-manager-for-wordpress' ), '' . $date_format . '
' ),
- 'id' => 'sermon_date',
- 'type' => 'text_date_timestamp',
- 'date_format' => $date_format,
- ) );
-
- $cmb->add_field( array(
- 'name' => esc_html__( 'Service Type', 'sermon-manager-for-wordpress' ),
- 'desc' => esc_html__( 'Select the type of service. Modify service types in Sermons → Service Types.', 'sermon-manager-for-wordpress' ),
- 'id' => 'wpfc_service_type',
- 'type' => 'select',
- 'show_option_none' => true,
- 'options' => cmb2_get_term_options( 'wpfc_service_type' ),
- ) );
- $cmb->add_field( array(
- 'name' => esc_html__( 'Main Bible Passage', 'sermon-manager-for-wordpress' ),
- 'desc' => wp_sprintf( esc_html__( 'Enter the Bible passage with the full book names, e.g. %s.', 'sermon-manager-for-wordpress' ), '' . esc_html__( 'John 3:16-18', 'sermon-manager-for-wordpress' ) . '
' ),
- 'id' => 'bible_passage',
- 'type' => 'text',
- ) );
- $cmb->add_field( array(
- 'name' => esc_html__( 'Description', 'sermon-manager-for-wordpress' ),
- 'desc' => esc_html__( 'Type a brief description about this sermon, an outline, or a full manuscript', 'sermon-manager-for-wordpress' ),
- 'id' => 'sermon_description',
- 'type' => 'wysiwyg',
- 'options' => array( 'textarea_rows' => 7, 'media_buttons' => true, ),
- ) );
-
- $cmb2 = new_cmb2_box( array(
- 'id' => 'wpfc_sermon_files',
- 'title' => esc_html__( 'Sermon Files', 'sermon-manager-for-wordpress' ),
- 'object_types' => array( 'wpfc_sermon', ), // Post type
- 'context' => 'normal',
- 'priority' => 'high',
- 'show_names' => true, // Show field names on the left
- // 'cmb_styles' => false, // false to disable the CMB stylesheet
- // 'closed' => true, // Keep the metabox closed by default
- ) );
- $cmb2->add_field( array(
- 'name' => esc_html__( 'Location of MP3', 'sermon-manager-for-wordpress' ),
- 'desc' => esc_html__( 'Upload an audio file or enter an URL.', 'sermon-manager-for-wordpress' ),
- 'id' => 'sermon_audio',
- 'type' => 'file',
- 'text' => array(
- 'add_upload_file_text' => __( 'Add Sermon Audio', 'sermon-manager-for-wordpress' ) // Change upload button text. Default: "Add or Upload File"
- ),
- ) );
- $cmb2->add_field( array(
- 'name' => esc_html__( 'MP3 Duration', 'sermon-manager-for-wordpress' ),
- 'desc' => wp_sprintf( esc_html__( 'Length in %s format (if left blank, will attempt to calculate automatically when you save)', 'sermon-manager-for-wordpress' ), '' . esc_html__( 'hh:mm:ss', 'sermon-manager-for-wordpress' ) . '
' ),
- 'id' => '_wpfc_sermon_duration',
- 'type' => 'text',
- ) );
- $cmb2->add_field( array(
- 'name' => esc_html__( 'Video Embed Code', 'sermon-manager-for-wordpress' ),
- 'desc' => esc_html__( 'Paste your embed code for Vimeo, Youtube, or other service here', 'sermon-manager-for-wordpress' ),
- 'id' => 'sermon_video',
- 'type' => 'textarea_code'
- ) );
- $cmb2->add_field( apply_filters( 'sm_cmb2_field_sermon_video_link', array(
- 'name' => esc_html__( 'Video Link', 'sermon-manager-for-wordpress' ),
- 'desc' => esc_html__( 'Paste your link for Vimeo, Youtube, or other service here', 'sermon-manager-for-wordpress' ),
- 'id' => 'sermon_video_link',
- 'type' => 'text'
- ) )
- );
- $cmb2->add_field( array(
- 'name' => esc_html__( 'Sermon Notes', 'sermon-manager-for-wordpress' ),
- 'desc' => esc_html__( 'Upload a pdf file or enter an URL.', 'sermon-manager-for-wordpress' ),
- 'id' => 'sermon_notes',
- 'type' => 'file',
- 'text' => array(
- 'add_upload_file_text' => __( 'Add File', 'sermon-manager-for-wordpress' ) // Change upload button text. Default: "Add or Upload File"
- ),
- ) );
- $cmb2->add_field( array(
- 'name' => esc_html__( 'Bulletin', 'sermon-manager-for-wordpress' ),
- 'desc' => esc_html__( 'Upload a pdf file or enter an URL.', 'sermon-manager-for-wordpress' ),
- 'id' => 'sermon_bulletin',
- 'type' => 'file',
- 'text' => array(
- 'add_upload_file_text' => __( 'Add File', 'sermon-manager-for-wordpress' ) // Change upload button text. Default: "Add or Upload File"
- ),
- ) );
-
-}
-
-/**
- * Build fields for element
- *
- * @param string $taxonomy Taxonomy name
- * @param string $default Force a default value regardless the query var
- *
- * @return string HTML fields
- *
- * @since 2.5.0 added $default
- */
-function wpfc_get_term_dropdown( $taxonomy, $default = '' ) {
- // reset var
- $html = '';
-
- foreach ( get_terms( $taxonomy ) as $term ) {
- $html .= ' slug === get_query_var( $taxonomy ) : $term->slug === $default ) ? 'selected' : '' ) . '>' . $term->name . ' ';
- }
-
- return $html;
-}
diff --git a/includes/vendor/abstract-wp-rest-controller.php b/includes/vendor/abstract-wp-rest-controller.php
deleted file mode 100644
index 20c93ad..0000000
--- a/includes/vendor/abstract-wp-rest-controller.php
+++ /dev/null
@@ -1,565 +0,0 @@
-register_routes()' ), '4.7' );
- }
-
- /**
- * Checks if a given request has access to get items.
- *
- * @access public
- *
- * @param WP_REST_Request $request Full data about the request.
- * @return WP_Error|bool True if the request has read access, WP_Error object otherwise.
- */
- public function get_items_permissions_check( $request ) {
- return new WP_Error( 'invalid-method', wp_sprintf( esc_html__( 'Method %s not implemented. Must be overridden in subclass.', 'sermon-manager-for-wordpress' ), '' . esc_html( __METHOD__ ) . '
' ), array( 'status' => 405 ) );
- }
-
- /**
- * Retrieves a collection of items.
- *
- * @access public
- *
- * @param WP_REST_Request $request Full data about the request.
- * @return WP_Error|WP_REST_Response Response object on success, or WP_Error object on failure.
- */
- public function get_items( $request ) {
- return new WP_Error( 'invalid-method', wp_sprintf( esc_html__( 'Method %s not implemented. Must be overridden in subclass.', 'sermon-manager-for-wordpress' ), '' . esc_html( __METHOD__ ) . '
' ), array( 'status' => 405 ) );
- }
-
- /**
- * Checks if a given request has access to get a specific item.
- *
- * @access public
- *
- * @param WP_REST_Request $request Full data about the request.
- * @return WP_Error|bool True if the request has read access for the item, WP_Error object otherwise.
- */
- public function get_item_permissions_check( $request ) {
- return new WP_Error( 'invalid-method', wp_sprintf( esc_html__( 'Method %s not implemented. Must be overridden in subclass.', 'sermon-manager-for-wordpress' ), '' . esc_html( __METHOD__ ) . '
' ), array( 'status' => 405 ) );
- }
-
- /**
- * Retrieves one item from the collection.
- *
- * @access public
- *
- * @param WP_REST_Request $request Full data about the request.
- * @return WP_Error|WP_REST_Response Response object on success, or WP_Error object on failure.
- */
- public function get_item( $request ) {
- return new WP_Error( 'invalid-method', wp_sprintf( esc_html__( 'Method %s not implemented. Must be overridden in subclass.', 'sermon-manager-for-wordpress' ), '' . esc_html( __METHOD__ ) . '
' ), array( 'status' => 405 ) );
- }
-
- /**
- * Checks if a given request has access to create items.
- *
- * @access public
- *
- * @param WP_REST_Request $request Full data about the request.
- * @return WP_Error|bool True if the request has access to create items, WP_Error object otherwise.
- */
- public function create_item_permissions_check( $request ) {
- return new WP_Error( 'invalid-method', wp_sprintf( esc_html__( 'Method %s not implemented. Must be overridden in subclass.', 'sermon-manager-for-wordpress' ), '' . esc_html( __METHOD__ ) . '
' ), array( 'status' => 405 ) );
- }
-
- /**
- * Creates one item from the collection.
- *
- * @access public
- *
- * @param WP_REST_Request $request Full data about the request.
- * @return WP_Error|WP_REST_Response Response object on success, or WP_Error object on failure.
- */
- public function create_item( $request ) {
- return new WP_Error( 'invalid-method', wp_sprintf( esc_html__( 'Method %s not implemented. Must be overridden in subclass.', 'sermon-manager-for-wordpress' ), '' . esc_html( __METHOD__ ) . '
' ), array( 'status' => 405 ) );
- }
-
- /**
- * Checks if a given request has access to update a specific item.
- *
- * @access public
- *
- * @param WP_REST_Request $request Full data about the request.
- * @return WP_Error|bool True if the request has access to update the item, WP_Error object otherwise.
- */
- public function update_item_permissions_check( $request ) {
- return new WP_Error( 'invalid-method', wp_sprintf( esc_html__( 'Method %s not implemented. Must be overridden in subclass.', 'sermon-manager-for-wordpress' ), '' . esc_html( __METHOD__ ) . '
' ), array( 'status' => 405 ) );
- }
-
- /**
- * Updates one item from the collection.
- *
- * @access public
- *
- * @param WP_REST_Request $request Full data about the request.
- * @return WP_Error|WP_REST_Response Response object on success, or WP_Error object on failure.
- */
- public function update_item( $request ) {
- return new WP_Error( 'invalid-method', wp_sprintf( esc_html__( 'Method %s not implemented. Must be overridden in subclass.', 'sermon-manager-for-wordpress' ), '' . esc_html( __METHOD__ ) . '
' ), array( 'status' => 405 ) );
- }
-
- /**
- * Checks if a given request has access to delete a specific item.
- *
- * @access public
- *
- * @param WP_REST_Request $request Full data about the request.
- * @return WP_Error|bool True if the request has access to delete the item, WP_Error object otherwise.
- */
- public function delete_item_permissions_check( $request ) {
- return new WP_Error( 'invalid-method', wp_sprintf( esc_html__( 'Method %s not implemented. Must be overridden in subclass.', 'sermon-manager-for-wordpress' ), '' . esc_html( __METHOD__ ) . '
' ), array( 'status' => 405 ) );
- }
-
- /**
- * Deletes one item from the collection.
- *
- * @access public
- *
- * @param WP_REST_Request $request Full data about the request.
- * @return WP_Error|WP_REST_Response Response object on success, or WP_Error object on failure.
- */
- public function delete_item( $request ) {
- return new WP_Error( 'invalid-method', wp_sprintf( esc_html__( 'Method %s not implemented. Must be overridden in subclass.', 'sermon-manager-for-wordpress' ), '' . esc_html( __METHOD__ ) . '
' ), array( 'status' => 405 ) );
- }
-
- /**
- * Prepares one item for create or update operation.
- *
- * @access public
- *
- * @param WP_REST_Request $request Request object.
- * @return WP_Error|object The prepared item, or WP_Error object on failure.
- */
- protected function prepare_item_for_database( $request ) {
- return new WP_Error( 'invalid-method', wp_sprintf( esc_html__( 'Method %s not implemented. Must be overridden in subclass.', 'sermon-manager-for-wordpress' ), '' . esc_html( __METHOD__ ) . '
' ), array( 'status' => 405 ) );
- }
-
- /**
- * Prepares the item for the REST response.
- *
- * @access public
- *
- * @param mixed $item WordPress representation of the item.
- * @param WP_REST_Request $request Request object.
- * @return WP_Error|WP_REST_Response Response object on success, or WP_Error object on failure.
- */
- public function prepare_item_for_response( $item, $request ) {
- return new WP_Error( 'invalid-method', wp_sprintf( esc_html__( 'Method %s not implemented. Must be overridden in subclass.', 'sermon-manager-for-wordpress' ), '' . esc_html( __METHOD__ ) . '
' ), array( 'status' => 405 ) );
- }
-
- /**
- * Prepares a response for insertion into a collection.
- *
- * @access public
- *
- * @param WP_REST_Response $response Response object.
- * @return array|mixed Response data, ready for insertion into collection data.
- */
- public function prepare_response_for_collection( $response ) {
- if ( ! ( $response instanceof WP_REST_Response ) ) {
- return $response;
- }
-
- $data = (array) $response->get_data();
- $server = rest_get_server();
-
- if ( method_exists( $server, 'get_compact_response_links' ) ) {
- $links = call_user_func( array( $server, 'get_compact_response_links' ), $response );
- } else {
- $links = call_user_func( array( $server, 'get_response_links' ), $response );
- }
-
- if ( ! empty( $links ) ) {
- $data['_links'] = $links;
- }
-
- return $data;
- }
-
- /**
- * Filters a response based on the context defined in the schema.
- *
- * @access public
- *
- * @param array $data Response data to fiter.
- * @param string $context Context defined in the schema.
- * @return array Filtered response.
- */
- public function filter_response_by_context( $data, $context ) {
-
- $schema = $this->get_item_schema();
-
- foreach ( $data as $key => $value ) {
- if ( empty( $schema['properties'][ $key ] ) || empty( $schema['properties'][ $key ]['context'] ) ) {
- continue;
- }
-
- if ( ! in_array( $context, $schema['properties'][ $key ]['context'], true ) ) {
- unset( $data[ $key ] );
- continue;
- }
-
- if ( 'object' === $schema['properties'][ $key ]['type'] && ! empty( $schema['properties'][ $key ]['properties'] ) ) {
- foreach ( $schema['properties'][ $key ]['properties'] as $attribute => $details ) {
- if ( empty( $details['context'] ) ) {
- continue;
- }
-
- if ( ! in_array( $context, $details['context'], true ) ) {
- if ( isset( $data[ $key ][ $attribute ] ) ) {
- unset( $data[ $key ][ $attribute ] );
- }
- }
- }
- }
- }
-
- return $data;
- }
-
- /**
- * Retrieves the item's schema, conforming to JSON Schema.
- *
- * @access public
- *
- * @return array Item schema data.
- */
- public function get_item_schema() {
- return $this->add_additional_fields_schema( array() );
- }
-
- /**
- * Retrieves the item's schema for display / public consumption purposes.
- *
- * @access public
- *
- * @return array Public item schema data.
- */
- public function get_public_item_schema() {
-
- $schema = $this->get_item_schema();
-
- foreach ( $schema['properties'] as &$property ) {
- unset( $property['arg_options'] );
- }
-
- return $schema;
- }
-
- /**
- * Retrieves the query params for the collections.
- *
- * @access public
- *
- * @return array Query parameters for the collection.
- */
- public function get_collection_params() {
- return array(
- 'context' => $this->get_context_param(),
- 'page' => array(
- 'description' => esc_html__( 'Current page of the collection.', 'sermon-manager-for-wordpress' ),
- 'type' => 'integer',
- 'default' => 1,
- 'sanitize_callback' => 'absint',
- 'validate_callback' => 'rest_validate_request_arg',
- 'minimum' => 1,
- ),
- 'per_page' => array(
- 'description' => esc_html__( 'Maximum number of items to be returned in result set.', 'sermon-manager-for-wordpress' ),
- 'type' => 'integer',
- 'default' => 10,
- 'minimum' => 1,
- 'maximum' => 100,
- 'sanitize_callback' => 'absint',
- 'validate_callback' => 'rest_validate_request_arg',
- ),
- 'search' => array(
- 'description' => esc_html__( 'Limit results to those matching a string.', 'sermon-manager-for-wordpress' ),
- 'type' => 'string',
- 'sanitize_callback' => 'sanitize_text_field',
- 'validate_callback' => 'rest_validate_request_arg',
- ),
- );
- }
-
- /**
- * Retrieves the magical context param.
- *
- * Ensures consistent descriptions between endpoints, and populates enum from schema.
- *
- * @access public
- *
- * @param array $args Optional. Additional arguments for context parameter. Default empty array.
- * @return array Context parameter details.
- */
- public function get_context_param( $args = array() ) {
- $param_details = array(
- 'description' => esc_html__( 'Scope under which the request is made; determines fields present in response.', 'sermon-manager-for-wordpress' ),
- 'type' => 'string',
- 'sanitize_callback' => 'sanitize_key',
- 'validate_callback' => 'rest_validate_request_arg',
- );
-
- $schema = $this->get_item_schema();
-
- if ( empty( $schema['properties'] ) ) {
- return array_merge( $param_details, $args );
- }
-
- $contexts = array();
-
- foreach ( $schema['properties'] as $attributes ) {
- if ( ! empty( $attributes['context'] ) ) {
- $contexts = array_merge( $contexts, $attributes['context'] );
- }
- }
-
- if ( ! empty( $contexts ) ) {
- $param_details['enum'] = array_unique( $contexts );
- rsort( $param_details['enum'] );
- }
-
- return array_merge( $param_details, $args );
- }
-
- /**
- * Adds the values from additional fields to a data object.
- *
- * @access protected
- *
- * @param array $object Data object.
- * @param WP_REST_Request $request Full details about the request.
- * @return array Modified data object with additional fields.
- */
- protected function add_additional_fields_to_object( $object, $request ) {
-
- $additional_fields = $this->get_additional_fields();
-
- foreach ( $additional_fields as $field_name => $field_options ) {
-
- if ( ! $field_options['get_callback'] ) {
- continue;
- }
-
- $object[ $field_name ] = call_user_func( $field_options['get_callback'], $object, $field_name, $request, $this->get_object_type() );
- }
-
- return $object;
- }
-
- /**
- * Updates the values of additional fields added to a data object.
- *
- * @access protected
- *
- * @param array $object Data Object.
- * @param WP_REST_Request $request Full details about the request.
- * @return bool|WP_Error True on success, WP_Error object if a field cannot be updated.
- */
- protected function update_additional_fields_for_object( $object, $request ) {
- $additional_fields = $this->get_additional_fields();
-
- foreach ( $additional_fields as $field_name => $field_options ) {
- if ( ! $field_options['update_callback'] ) {
- continue;
- }
-
- // Don't run the update callbacks if the data wasn't passed in the request.
- if ( ! isset( $request[ $field_name ] ) ) {
- continue;
- }
-
- $result = call_user_func( $field_options['update_callback'], $request[ $field_name ], $object, $field_name, $request, $this->get_object_type() );
-
- if ( is_wp_error( $result ) ) {
- return $result;
- }
- }
-
- return true;
- }
-
- /**
- * Adds the schema from additional fields to a schema array.
- *
- * The type of object is inferred from the passed schema.
- *
- * @access protected
- *
- * @param array $schema Schema array.
- * @return array Modified Schema array.
- */
- protected function add_additional_fields_schema( $schema ) {
- if ( empty( $schema['title'] ) ) {
- return $schema;
- }
-
- // Can't use $this->get_object_type otherwise we cause an inf loop.
- $object_type = $schema['title'];
-
- $additional_fields = $this->get_additional_fields( $object_type );
-
- foreach ( $additional_fields as $field_name => $field_options ) {
- if ( ! $field_options['schema'] ) {
- continue;
- }
-
- $schema['properties'][ $field_name ] = $field_options['schema'];
- }
-
- return $schema;
- }
-
- /**
- * Retrieves all of the registered additional fields for a given object-type.
- *
- * @access protected
- *
- * @param string $object_type Optional. The object type.
- * @return array Registered additional fields (if any), empty array if none or if the object type could
- * not be inferred.
- */
- protected function get_additional_fields( $object_type = null ) {
-
- if ( ! $object_type ) {
- $object_type = $this->get_object_type();
- }
-
- if ( ! $object_type ) {
- return array();
- }
-
- global $wp_rest_additional_fields;
-
- if ( ! $wp_rest_additional_fields || ! isset( $wp_rest_additional_fields[ $object_type ] ) ) {
- return array();
- }
-
- return $wp_rest_additional_fields[ $object_type ];
- }
-
- /**
- * Retrieves the object type this controller is responsible for managing.
- *
- * @access protected
- *
- * @return string Object type for the controller.
- */
- protected function get_object_type() {
- $schema = $this->get_item_schema();
-
- if ( ! $schema || ! isset( $schema['title'] ) ) {
- return null;
- }
-
- return $schema['title'];
- }
-
- /**
- * Retrieves an array of endpoint arguments from the item schema for the controller.
- *
- * @access public
- *
- * @param string $method Optional. HTTP method of the request. The arguments for `CREATABLE` requests are
- * checked for required values and may fall-back to a given default, this is not done
- * on `EDITABLE` requests. Default WP_REST_Server::CREATABLE.
- * @return array Endpoint arguments.
- */
- public function get_endpoint_args_for_item_schema( $method = WP_REST_Server::CREATABLE ) {
-
- $schema = $this->get_item_schema();
- $schema_properties = ! empty( $schema['properties'] ) ? $schema['properties'] : array();
- $endpoint_args = array();
-
- foreach ( $schema_properties as $field_id => $params ) {
-
- // Arguments specified as `readonly` are not allowed to be set.
- if ( ! empty( $params['readonly'] ) ) {
- continue;
- }
-
- $endpoint_args[ $field_id ] = array(
- 'validate_callback' => 'rest_validate_request_arg',
- 'sanitize_callback' => 'rest_sanitize_request_arg',
- );
-
- if ( isset( $params['description'] ) ) {
- $endpoint_args[ $field_id ]['description'] = $params['description'];
- }
-
- if ( WP_REST_Server::CREATABLE === $method && isset( $params['default'] ) ) {
- $endpoint_args[ $field_id ]['default'] = $params['default'];
- }
-
- if ( WP_REST_Server::CREATABLE === $method && ! empty( $params['required'] ) ) {
- $endpoint_args[ $field_id ]['required'] = true;
- }
-
- foreach ( array( 'type', 'format', 'enum', 'items' ) as $schema_prop ) {
- if ( isset( $params[ $schema_prop ] ) ) {
- $endpoint_args[ $field_id ][ $schema_prop ] = $params[ $schema_prop ];
- }
- }
-
- // Merge in any options provided by the schema property.
- if ( isset( $params['arg_options'] ) ) {
-
- // Only use required / default from arg_options on CREATABLE endpoints.
- if ( WP_REST_Server::CREATABLE !== $method ) {
- $params['arg_options'] = array_diff_key( $params['arg_options'], array( 'required' => '', 'default' => '' ) );
- }
-
- $endpoint_args[ $field_id ] = array_merge( $endpoint_args[ $field_id ], $params['arg_options'] );
- }
- }
-
- return $endpoint_args;
- }
-
- /**
- * Sanitizes the slug value.
- *
- * @access public
- *
- * @internal We can't use sanitize_title() directly, as the second
- * parameter is the fallback title, which would end up being set to the
- * request object.
- *
- * @see https://github.com/WP-API/WP-API/issues/1585
- *
- * @todo Remove this in favour of https://core.trac.wordpress.org/ticket/34659
- *
- * @param string $slug Slug value passed in request.
- * @return string Sanitized value for the slug.
- */
- public function sanitize_slug( $slug ) {
- return sanitize_title( $slug );
- }
-}
diff --git a/includes/widgets.php b/includes/widgets.php
index 7e699e8..4bbff9c 100755
--- a/includes/widgets.php
+++ b/includes/widgets.php
@@ -55,6 +55,7 @@ function widget( $args, $instance ) {
'meta_value_num' => time(),
'meta_compare' => '<=',
'orderby' => 'meta_value_num',
+ 'order' => 'desc',
) );
if ( $r->have_posts() ) :
?>
@@ -131,13 +132,14 @@ function form( $instance ) {
$title = isset( $instance['title'] ) ? esc_attr( $instance['title'] ) : '';
$number = isset( $instance['number'] ) ? absint( $instance['number'] ) : 5;
?>
-
+
+
+ for="get_field_id( 'number' ); ?>">
diff --git a/languages/sermon-manager-de_DE.mo b/languages/sermon-manager-de_DE.mo
deleted file mode 100644
index 6a81dcc..0000000
Binary files a/languages/sermon-manager-de_DE.mo and /dev/null differ
diff --git a/languages/sermon-manager-for-wordpress-de_DE.mo b/languages/sermon-manager-for-wordpress-de_DE.mo
index 93237b0..49fd010 100644
Binary files a/languages/sermon-manager-for-wordpress-de_DE.mo and b/languages/sermon-manager-for-wordpress-de_DE.mo differ
diff --git a/languages/sermon-manager-for-wordpress-de_DE.po b/languages/sermon-manager-for-wordpress-de_DE.po
index a23e8d8..ca68769 100644
--- a/languages/sermon-manager-for-wordpress-de_DE.po
+++ b/languages/sermon-manager-for-wordpress-de_DE.po
@@ -4,235 +4,278 @@ msgid ""
msgstr ""
"Project-Id-Version: sermon-manager-for-wordpress\n"
"Report-Msgid-Bugs-To: http://wordpress.org/tag/sermon-manager-for-wordpress\n"
-"POT-Creation-Date: 2017-10-01 07:03:00+0200\n"
-"PO-Revision-Date: 2017-10-02 11:18:00+0200\n"
+"POT-Creation-Date: 2017-10-10 14:00:00+0200\n"
+"PO-Revision-Date: 2017-10-10 14:11:00+0200\n"
"Last-Translator: GITNE \n"
"Language-Team: WP for Church\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. translators: %s see msgid "View sermon", effectively View sermon
-#: includes/admin-functions.php:124
+#: includes/admin-functions.php:125
+#, php-format
msgid "Sermon updated. %s"
msgstr "Predigt aktualisiert. %s"
-#: includes/admin-functions.php:124 includes/admin-functions.php:130
-#: includes/admin-functions.php:136 includes/class-sm-post-types.php:201
+#: includes/admin-functions.php:125 includes/admin-functions.php:132
+#: includes/admin-functions.php:144 includes/class-sm-post-types.php:201
#: includes/class-sm-post-types.php:202
msgid "View sermon"
msgstr "Predigt ansehen"
-#: includes/admin-functions.php:125
+#: includes/admin-functions.php:126
msgid "Custom field updated."
msgstr "Benutzerdefiniertes Feld aktualisiert."
-#: includes/admin-functions.php:126
+#: includes/admin-functions.php:127
msgid "Custom field deleted."
msgstr "Benutzerdefiniertes Feld gelöscht."
-#: includes/admin-functions.php:127
+#: includes/admin-functions.php:128
msgid "Sermon updated."
msgstr "Predigt aktualisiert."
-#: includes/admin-functions.php:129
+#. translators: %s date and time of the revision
+#: includes/admin-functions.php:130
+#, php-format
msgid "Sermon restored to revision from %s"
msgstr "Predigt von Revision %s wiederhergestellt"
#. translators: %s see msgid "View sermon", effectively View sermon
-#: includes/admin-functions.php:130
+#: includes/admin-functions.php:132
+#, php-format
msgid "Sermon published. %s"
msgstr "Predigt veröffentlicht. %s"
-#: includes/admin-functions.php:131
+#: includes/admin-functions.php:133
msgid "Sermon saved."
msgstr "Predigt gespeichert."
-#: includes/admin-functions.php:132 includes/admin-functions.php:135
+#: includes/admin-functions.php:135 includes/admin-functions.php:142
msgid "Preview sermon"
msgstr "Vorschau ansehen"
#. translators: %s see msgid "Preview sermon", effectively Preview sermon
-#: includes/admin-functions.php:132
+#: includes/admin-functions.php:135
+#, php-format
msgid "Sermon submitted. %s"
msgstr "Predigt abgeschickt. %s"
#. translators: %1$s see msgid "%1$s at %2$s", effectively at
#. translators: %2$s see msgid "Preview sermon", effectively Preview sermon
-#: includes/admin-functions.php:133
+#: includes/admin-functions.php:138
+#, php-format
msgid "Sermon scheduled for: %1$s. %2$s"
msgstr "Predigt eingeplant für %1$s. %2$s"
#. translators: %1$s date
#. translators: %2$s time
-#: includes/admin-functions.php:134 includes/admin-functions.php:135
+#: includes/admin-functions.php:141
+#, php-format
msgid "%1$s at %2$s"
msgstr "%1$s um %2$s Uhr"
#. translators: %s see msgid "Preview sermon", effectively Preview sermon
-#: includes/admin-functions.php:136
+#: includes/admin-functions.php:144
+#, php-format
msgid "Sermon draft updated. %s"
msgstr "Predigtentwurf aktualisiert. %s"
-#: includes/admin-functions.php:189
+#: includes/admin-functions.php:197
msgid "Sermon Title"
msgstr "Predigttitel"
-#. translators: %s: Preachers label (sentence case; plural)
-#: includes/admin-functions.php:191 includes/class-sm-post-types.php:44
+#. Translators: %s: Preacher label (sentence case; singular)
+#. translators: %s Preachers label (sentence case; plural)
+#. translators: %s Preachers label (sentence case; plural)
+#. translators: %s Preacher label (sentence case; singular)
+#: includes/admin-functions.php:199 includes/class-sm-post-types.php:44
#: includes/class-sm-post-types.php:47 includes/class-sm-post-types.php:49
+#, php-format
msgid "%s"
msgstr ""
-#: includes/admin-functions.php:191 includes/admin-functions.php:192
-#: includes/types-taxonomies.php:120 includes/types-taxonomies.php:121
-#: includes/types-taxonomies.php:122
+#: includes/admin-functions.php:200 includes/types-taxonomies.php:120
+#: includes/types-taxonomies.php:121 includes/types-taxonomies.php:122
msgid "Sermon Series"
msgstr "Predigtserie"
-#: includes/admin-functions.php:192 includes/admin-functions.php:193
-#: includes/class-sm-post-types.php:104 includes/class-sm-post-types.php:106
+#: includes/admin-functions.php:201 includes/class-sm-post-types.php:104
+#: includes/class-sm-post-types.php:106
msgid "Topics"
msgstr "Themen"
-#: includes/admin-functions.php:193 includes/admin-functions.php:194
+#: includes/admin-functions.php:202
msgid "Views"
msgstr "Einblendungen"
-#: includes/admin-functions.php:194 includes/admin-functions.php:195
-#: includes/sm-cmb-functions.php:85 includes/types-taxonomies.php:301
+#: includes/admin-functions.php:203 includes/sm-cmb-functions.php:85
+#: includes/types-taxonomies.php:301
msgid "Date Preached"
msgstr "Gehalten am"
-#: includes/admin-functions.php:195 includes/admin-functions.php:196
+#: includes/admin-functions.php:204
msgid "Bible Passage"
msgstr "Bibelstelle"
#. translators: %s see msgid "Error:"
-#: includes/admin-functions.php:212 includes/admin-functions.php:213
+#: includes/admin-functions.php:222
+#, php-format
msgid "%s Can’t find sermon ID."
msgstr "%s Die Predigt‑ID kann nicht gefunden werden"
-#: includes/admin-functions.php:212 includes/admin-functions.php:213
-#: includes/admin-functions.php:252 includes/admin-functions.php:253
+#: includes/admin-functions.php:222 includes/admin-functions.php:261
+#: includes/admin-functions.php:262
msgid "Error:"
msgstr "Fehler:"
-#: includes/admin-functions.php:290 includes/class-sm-post-types.php:193
-#: includes/types-taxonomies.php:59
-msgid "Sermon"
-msgstr "Predigt"
-
-#: includes/admin-functions.php:306 includes/admin-functions.php:307
+#. translators: %s integer count of sermons
+#: includes/admin-functions.php:317
+#, php-format
msgid "%s sermon"
msgid_plural "%s sermons"
msgstr[0] "%s Predigt"
msgstr[1] "%s Predigten"
-#. translators: %s: Plugin name
-#: includes/class-sm-error-recovery.php:200
+#. translators: %s Plugin name
+#: includes/class-sm-error-recovery.php:212
+#, php-format
msgid "%s encountered a fatal error and recovered successfully."
msgstr ""
"„%s“ hat einen schwerwiegenden Fehler festgestellt und ihn "
"erfolgreich korrigiert."
-#: includes/class-sm-error-recovery.php:203
+#: includes/class-sm-error-recovery.php:215
msgid "The issue has already been submitted."
msgstr "Dieses Problem wurde bereits gemeldet."
-#: includes/class-sm-error-recovery.php:208
-msgctxt "Button"
+#: includes/class-sm-error-recovery.php:220
+msgctxt "button"
msgid "Send an anonymous report"
msgstr "Anonymen Bericht senden"
-#: includes/class-sm-error-recovery.php:212
-msgctxt "Button"
+#: includes/class-sm-error-recovery.php:224
+msgctxt "button"
msgid "Show error message"
msgstr "Fehlermeldung anzeigen"
-#: includes/class-sm-error-recovery.php:215
-msgctxt "Button"
+#: includes/class-sm-error-recovery.php:227
+msgctxt "button"
msgid "Reactivate Plugin"
msgstr "Plug‑in reaktivieren"
-#: includes/class-sm-error-recovery.php:222
-msgctxt "Title"
+#: includes/class-sm-error-recovery.php:234
+msgctxt "title"
msgid "Are you sure?"
msgstr "Bist du sicher?"
-#: includes/class-sm-error-recovery.php:224
+#: includes/class-sm-error-recovery.php:236
msgid ""
"If the issue is not fixed, website will crash. (but we will recover it again)"
msgstr ""
"Falls das Problem nicht behoben wurde, wird die Webseite abstürzen (sie "
"wird jedoch wiederhergestellt werden)."
-#: includes/class-sm-error-recovery.php:226
+#: includes/class-sm-error-recovery.php:238
msgctxt "title"
msgid "Optional info"
msgstr "Optionale Angaben"
-#: includes/class-sm-error-recovery.php:228
+#: includes/class-sm-error-recovery.php:240
msgid ""
"If you have more information about the issue, please type it here (optional):"
msgstr ""
"Falls du weitere Angaben über das Problem hast, dann gib sie bitte hier "
"ein (optional):"
-#: includes/class-sm-error-recovery.php:230
-msgctxt "Label"
+#: includes/class-sm-error-recovery.php:242
+msgctxt "label"
msgid "Issue details"
msgstr "Problemdetails"
-#: includes/class-sm-error-recovery.php:232
-msgctxt "Placeholder"
+#: includes/class-sm-error-recovery.php:244
+msgctxt "placeholder"
msgid "Steps for how to reproduce, etc…"
msgstr "Schritte zur Reproduktion, etc."
-#: includes/class-sm-error-recovery.php:233
+#: includes/class-sm-error-recovery.php:245
msgid "Email for further contact (optional)"
-msgstr "E&8209;mail für Rückfragen (optional)"
+msgstr "E‑mail für Rückfragen (optional)"
-#: includes/class-sm-error-recovery.php:234
+#: includes/class-sm-error-recovery.php:246
msgid "name@example.com"
msgstr "name@beispiel.com"
-#: includes/class-sm-error-recovery.php:235
-msgctxt "Label"
+#: includes/class-sm-error-recovery.php:247
+msgctxt "label"
msgid "Email"
msgstr "E‑Mail"
+#: includes/class-sm-install.php:158
+msgid "Monthly"
+msgstr "monatlich"
+
+#: includes/class-sm-install.php:173
+msgid "View Sermon Manager settings"
+msgstr "Einstellungen der Predigtverwaltung"
+
+#: includes/class-sm-install.php:191
+msgid "Premium support"
+msgstr "Vorzugsunterstützung"
+
+#: includes/class-sm-install.php:191
+msgid "Visit premium customer support"
+msgstr "Zu Vorzugsunterstützung gehen"
+
+#. translators: %s Preachers label (sentence case; plural)
#: includes/class-sm-post-types.php:51
-msgctxt "Admin menu name"
+#, php-format
+msgctxt "menu"
msgid "%s"
msgstr ""
+#. translators: %s Preachers label (lowercase; plural)
#: includes/class-sm-post-types.php:53 includes/types-taxonomies.php:96
+#, php-format
msgid "Search %s"
msgstr "%s durchsuchen"
+#. translators: %s Preachers label (lowercase; plural)
#: includes/class-sm-post-types.php:55 includes/types-taxonomies.php:98
+#, php-format
msgid "All %s"
msgstr "Alle %s"
+#. translators: %s Preacher label (lowercase; singular)
#: includes/class-sm-post-types.php:59 includes/types-taxonomies.php:99
+#, php-format
msgid "Edit %s"
msgstr "%s bearbeiten"
+#. translators: %s Preacher label (lowercase; singular)
#: includes/class-sm-post-types.php:61 includes/types-taxonomies.php:100
+#, php-format
msgid "Update %s"
msgstr "%s aktualisieren"
+#. translators: %s Preacher label (lowercase; singular)
#: includes/class-sm-post-types.php:63 includes/types-taxonomies.php:101
+#, php-format
msgid "Add new %s"
msgstr "Neue/n %s hinzufügen"
+#. translators: %s Preacher label (lowercase; singular)
#: includes/class-sm-post-types.php:65
+#, php-format
msgid "New %s name"
msgstr "Neue %s‑bezeichnung"
+#. translators: %s Preacher label (lowercase; singular)
#: includes/class-sm-post-types.php:67
+#, php-format
msgid "No %s found"
msgstr "Kein %s gefunden"
@@ -242,7 +285,7 @@ msgid "Series"
msgstr "Serie"
#: includes/class-sm-post-types.php:83
-msgctxt "Admin menu name"
+msgctxt "menu"
msgid "Series"
msgstr "Serie"
@@ -279,7 +322,7 @@ msgid "Topic"
msgstr "Thema"
#: includes/class-sm-post-types.php:108
-msgctxt "Admin menu name"
+msgctxt "menu"
msgid "Topics"
msgstr "Themen"
@@ -324,7 +367,7 @@ msgid "Book"
msgstr "Buch"
#: includes/class-sm-post-types.php:133
-msgctxt "Admin menu name"
+msgctxt "menu"
msgid "Books"
msgstr "Bücher"
@@ -367,7 +410,7 @@ msgid "Service Type"
msgstr "Dienstart"
#: includes/class-sm-post-types.php:158
-msgctxt "Admin menu name"
+msgctxt "menu"
msgid "Service Types"
msgstr "Dienstarten"
@@ -399,18 +442,22 @@ msgstr "Neue Dienstartbezeichnung"
msgid "No service types found"
msgstr "Es wurden keine Dienstarten gefunden"
-#: includes/class-sm-post-types.php:192 includes/options.php:291
-#: includes/options.php:300 includes/types-taxonomies.php:58
+#: includes/class-sm-post-types.php:192 includes/options.php:269
+#: includes/options.php:278 includes/types-taxonomies.php:58
#: includes/types-taxonomies.php:68 views/archive-wpfc_sermon.php:13
msgid "Sermons"
msgstr "Predigten"
+#: includes/class-sm-post-types.php:193 includes/types-taxonomies.php:59
+msgid "Sermon"
+msgstr "Predigt"
+
#: includes/class-sm-post-types.php:194
msgid "All Sermons"
msgstr "Alle Predigten"
#: includes/class-sm-post-types.php:195
-msgctxt "Admin menu name"
+msgctxt "menu"
msgid "Sermons"
msgstr "Predigten"
@@ -422,12 +469,11 @@ msgstr "Neue Predigt"
msgid "Add new sermon"
msgstr "Neue Predigt hinzufügen"
-#: includes/class-sm-post-types.php:198 views/archive-wpfc_sermon.php:61
-#: views/archive-wpfc_sermon.php:62 views/single-wpfc_sermon.php:35
-#: views/taxonomy-wpfc_bible_book.php:89 views/taxonomy-wpfc_preacher.php:95
-#: views/taxonomy-wpfc_sermon_series.php:96
-#: views/taxonomy-wpfc_sermon_topics.php:96
-#: views/taxonomy-wpfc_service_type.php:89
+#: includes/class-sm-post-types.php:198 views/archive-wpfc_sermon.php:62
+#: views/single-wpfc_sermon.php:23 views/taxonomy-wpfc_bible_book.php:90
+#: views/taxonomy-wpfc_preacher.php:96 views/taxonomy-wpfc_sermon_series.php:97
+#: views/taxonomy-wpfc_sermon_topics.php:97
+#: views/taxonomy-wpfc_service_type.php:90
msgid "Edit"
msgstr "Bearbeiten"
@@ -491,158 +537,152 @@ msgstr "Predigtliste"
msgid "This is where you can add new sermons to your website."
msgstr "Hier kannst du neue Predigten zu deiner Seite hinzufügen."
-#: includes/helper-functions.php:193 includes/template-tags.php:129
-#: includes/template-tags.php:400 includes/template-tags.php:426
-#: includes/template-tags.php:439 includes/template-tags.php:465
+#: includes/helper-functions.php:193 includes/template-tags.php:127
+#: includes/template-tags.php:410 includes/template-tags.php:456
msgid "Series: "
msgstr "Serie: "
-#: includes/options.php:74 includes/options.php:81
+#: includes/libraries/wp-background-process.php:423
+#, php-format
+msgid "Every %s minutes"
+msgstr "Alle %s Minuten"
+
+#: includes/options.php:71 includes/options.php:165
msgid "Sermon Manager Settings"
msgstr "Einstellungen der Predigtverwaltung"
-#: includes/options.php:81 includes/options.php:94 includes/options.php:101
-#: includes/options.php:761 includes/options.php:770
-#: includes/taxonomy-images/taxonomy-images.php:333
+#: includes/options.php:71 includes/taxonomy-images/taxonomy-images.php:333
#: includes/taxonomy-images/taxonomy-images.php:1238
msgid "Settings"
msgstr "Einstellungen"
-#: includes/options.php:99 includes/options.php:106
-msgid "Support"
-msgstr "Hilfe"
-
-#: includes/options.php:108 includes/options.php:115
-#: includes/taxonomy-images/taxonomy-images.php:1263
+#: includes/options.php:80 includes/taxonomy-images/taxonomy-images.php:1263
msgid "Manage Settings"
msgstr "Einstellungen"
-#: includes/options.php:197 includes/options.php:204
-msgid "Sermon Manager Options"
-msgstr "Einstellungen der Predigtverwaltung"
-
-#: includes/options.php:203 includes/options.php:209
+#: includes/options.php:170
msgid "General"
msgstr "Allgemein"
-#: includes/options.php:205 includes/options.php:211
+#: includes/options.php:173
msgid "Verse"
msgstr "Vers"
-#: includes/options.php:207 includes/options.php:213
+#: includes/options.php:176
msgid "Podcast"
msgstr ""
-#: includes/options.php:213 includes/options.php:219
-msgid "Options saved"
+#: includes/options.php:184
+msgid "Settings saved"
msgstr "Einstellungen gespeichert."
-#: includes/options.php:222 includes/options.php:228
+#: includes/options.php:194
msgid "Need Some Help?"
msgstr "Etwas Hilfe nötig?"
#. translators: %s see msgid "Sign up"
-#: includes/options.php:224 includes/options.php:230
+#: includes/options.php:198
+#, php-format
msgid ""
"Did you know you can get expert support for only $49 per year! %s today and "
"get support from the developers who are building the Sermon Manager."
msgstr ""
"Schon gewusst? Bereits für nur $49 jährlich ist Kundenunterstü"
"tzung von Experten zu haben. Noch heute %s und Unterstützung von den "
-"Entwicklern der Predigtverwaltung für Wordpress erhalten."
+"Entwicklern der Predigtverwaltung für WordPress erhalten."
-#: includes/options.php:224 includes/options.php:230
+#: includes/options.php:198
msgid "Sign up"
msgstr "registrieren"
-#: includes/options.php:227 includes/options.php:233
+#: includes/options.php:202
msgid "Free Support"
msgstr "Kostenlose Unterstützung"
-#: includes/options.php:228 includes/options.php:234
+#: includes/options.php:204
msgid "Priority Support"
msgstr "Bevorzugte Unterstützung"
-#: includes/options.php:231 includes/options.php:237
+#: includes/options.php:207
msgid "We offer limited free support via WordPress.org"
msgstr ""
"Wir bieten begrenzt kostenlose Unterstützung über WordPress.org an."
-#: includes/options.php:238 includes/options.php:243
+#: includes/options.php:214
msgid "Frequently Asked Questions"
msgstr "Häufig gestellte Fragen"
-#. translators: %s see msgid "Knowledge base"
-#: includes/options.php:253 includes/options.php:259
+#. translators: %s see msgid "knowledge base"
+#: includes/options.php:232
+#, php-format
msgid "Find out more in our %s"
msgstr "Finde weiteres in unserer %s heraus"
-#: includes/options.php:253 includes/options.php:259
+#: includes/options.php:232
msgid "knowledge base"
msgstr "Wissensbasis"
-#: includes/options.php:259 includes/options.php:265
+#: includes/options.php:239
msgid "Lets Make It Even Better!"
msgstr "Lasst uns es noch besser machen!"
-#: includes/options.php:264 includes/options.php:270
-msgid "Submit Your Idea"
-msgstr "Idee übermitteln"
-
-#: includes/options.php:267
+#: includes/options.php:242
msgid ""
"If you have ideas on how to make Sermon Manager or any of our products "
"better, let us know!"
msgstr ""
-"Sie haben Ideen zur Verbesserung der Predigtverwaltung für Wordpress "
+"Sie haben Ideen zur Verbesserung der Predigtverwaltung für WordPress "
"oder unser anderen Produkte? Lassen Sie es uns wissen!"
-#: includes/options.php:277 includes/options.php:283
+#: includes/options.php:246
+msgid "Submit Your Idea"
+msgstr "Idee übermitteln"
+
+#: includes/options.php:260
msgid "General Settings"
msgstr "Allgemeine Einstellungen"
-#: includes/options.php:281 includes/options.php:287
+#: includes/options.php:265
msgid "Archive Page Title"
msgstr "Titel der Archivseite"
-#: includes/options.php:289 includes/options.php:296
-msgid "Archive Page Slug"
-msgstr "Titelform der Archivseite"
-
-#: includes/options.php:291 includes/options.php:300 includes/options.php:490
-#: includes/options.php:494 includes/options.php:500 includes/options.php:504
-#: includes/options.php:510 includes/options.php:514 includes/options.php:520
-#: includes/options.php:524 includes/options.php:555 includes/options.php:559
-#: includes/options.php:603 includes/options.php:607 includes/options.php:616
-#: includes/options.php:620 includes/options.php:648 includes/options.php:661
+#: includes/options.php:269 includes/options.php:278 includes/options.php:488
+#: includes/options.php:498 includes/options.php:508 includes/options.php:518
+#: includes/options.php:554 includes/options.php:602 includes/options.php:615
+#: includes/options.php:643 includes/options.php:656
+#, php-format
msgid "e.g. %s"
msgstr "z.B. %s"
+#: includes/options.php:274
+msgid "Archive Page Slug"
+msgstr "Titelform der Archivseite"
+
#. translators: %1$s see msgid "sermons/preacher", effectively sermons/preacher
#. translators: %2$s see msgid "sermons/series", effectively sermons/series
-#: includes/options.php:297 includes/options.php:305
+#: includes/options.php:285
+#, php-format
msgid ""
"Common Base Slug — this is for users who want to have a common base "
"slug across all taxonomies, e.g. %1$s or %2$s."
msgstr ""
"Gemeinsame Grundtitelform — dies ist für Benutzer, die eine "
-"gemeinsame Grundtitelform über alle Gruppierungen hinweg haben wollen, "
-"also z.B. %1$s oder %2$s."
+"gemeinsame Grundtitelform über alle Taxonomien hinweg haben wollen, also "
+"z.B. %1$s oder %2$s."
-#: includes/options.php:297 includes/options.php:305
+#: includes/options.php:285
msgid "sermons/preacher"
msgstr "predigten/prediger"
-#: includes/options.php:297 includes/options.php:305
+#: includes/options.php:285
msgid "sermons/series"
msgstr "predigten/serien"
-#: includes/options.php:302 includes/options.php:310
+#: includes/options.php:290
msgid "Enable a common base slug across all taxonomies"
-msgstr ""
-"Gemeinsame Grundtitelform über alle Gruppierungen hinweg aktivieren"
+msgstr "Gemeinsame Grundtitelform über alle Taxonomien hinweg aktivieren"
-#: includes/options.php:308 includes/options.php:316
+#: includes/options.php:296
msgid ""
"Enable Template Files — this is for users upgrading from an older "
"version who have issues with version 1.5+."
@@ -652,18 +692,19 @@ msgstr ""
"haben."
#. translators: %s effectively /views
-#. Since /views is a locale independent folder name it MUST NOT be localized
-#: includes/options.php:313 includes/options.php:321
+#. translators: Since /views is a locale independent folder name it MUST NOT be localized
+#: includes/options.php:303
+#, php-format
msgid "Enable template files found in the %s folder"
msgstr "Im Ordner %s gefundene Vorlagendateien aktivieren"
-#: includes/options.php:319 includes/options.php:327
+#: includes/options.php:309
msgid "Disable Sermon Styles"
msgstr "CSS‑Stile deaktivieren"
#. translators: %s effectively sermons.css
-#. Since sermons.css is a locale independent file name it MUST NOT be localized
-#: includes/options.php:324 includes/options.php:332
+#: includes/options.php:315
+#, php-format
msgid ""
"Disable Sermon CSS. If you do this, you should copy the styles from %s and "
"include them in your theme CSS."
@@ -672,58 +713,59 @@ msgstr ""
"aktiviert, sollten die Stile aus der Datei %s im Pluginordner in die "
"CSS‑Datei des Themes kopiert werden."
-#: includes/options.php:338
+#: includes/options.php:321
msgid "Display audio player or video on archive pages"
msgstr "Einen Audiospieler oder Video auf Archivseiten einblenden"
-#: includes/options.php:343
+#: includes/options.php:326
msgid "Display an audio player or video embed in the archive listing."
-msgstr ""
-"Audiospieler oder ein eingebettetes Video in der Archivliste einblenden"
+msgstr "Audiospieler oder ein eingebettetes Video in der Archivliste einblenden"
-#: includes/options.php:349 includes/options.php:354
+#: includes/options.php:332 includes/options.php:337
msgid "Use old audio player"
msgstr "Alten Audiospieler verwenden"
-#: includes/options.php:352 includes/options.php:360
+#: includes/options.php:343
msgid ""
"Custom label for “Preacher”. Note: it will also change preacher "
"slugs."
msgstr ""
-"Benutzerdefinierter Begriff für „Prediger/in“. Hinweis: "
-"Dies wird auch die Prediger/innentitelform ändern."
+"Benutzerdefinierter Begriff für „Prediger/in“. Hinweis: Dies "
+"wird auch die Prediger/innentitelform ändern."
-#: includes/options.php:360 includes/options.php:368
+#: includes/options.php:351
msgid "Sermon date format (used when creating a new Sermon)"
msgstr ""
"Datumformat des Datums, an dem die Predigt gehalten wurde (wird bei der "
"Erstellung einer neuen Predigt verwendet)"
-#: includes/options.php:389 includes/options.php:395
+#: includes/options.php:372 includes/options.php:378
msgid "Show key verse in widget"
msgstr "Schlüsselvers im Widget darstellen"
-#: includes/options.php:393 includes/options.php:401
+#. translators: %s version like x.x.x
+#: includes/options.php:385
+#, php-format
msgid "Version %s"
msgstr "Version %s"
-#: includes/options.php:405 includes/options.php:406
+#: includes/options.php:389
msgid "Current Version"
msgstr "Aktuelle Version"
-#: includes/options.php:413 includes/options.php:414
+#: includes/options.php:398
msgid "Verse Settings"
msgstr "Verseinstellungen"
-#: includes/options.php:418 includes/options.php:419
+#: includes/options.php:404
msgid "Verse Popups"
msgstr "Verseinblendungen"
-#: includes/options.php:424 includes/options.php:425
+#: includes/options.php:410
msgid "Disable Bib.ly verse popups"
msgstr "Bib.ly‑Einblendungen deaktivieren"
-#: includes/options.php:430 includes/options.php:431
+#: includes/options.php:416
msgid "Select Bible Version for Verse Popups"
msgstr "Bibelversion für Verseinblendungen auswählen"
@@ -732,199 +774,204 @@ msgstr "Bibelversion für Verseinblendungen auswählen"
#. translators: %3$s effectively KJV
#. translators: %4$s effectively LEB
#. translators: %5$s see msgid "bib.ly", effectively bib.ly
-#: includes/options.php:444 includes/options.php:452
+#: includes/options.php:443
+#, php-format
msgid "%1$s, %2$s, %3$s, or %4$s are the currently supported popups for %5$s."
msgstr ""
"Nur %1$s, %2$s, %3$s, oder %4$s werden für Einblendungen aus %5$s "
"unterstützt."
-#: includes/options.php:449 includes/options.php:457
+#: includes/options.php:448
msgid "bib.ly"
msgstr "Bib.ly"
#. translators: %s see effectively ESV
-#: includes/options.php:451 includes/options.php:459
+#: includes/options.php:451
+#, php-format
msgid "Warning! %s is not supported if your site uses SSL (HTTPS)."
msgstr ""
"WARNUNG: %s wird nicht unterstützt, wenn die Website SSL (HTTPS) "
"verwendet."
-#: includes/options.php:464 includes/options.php:468
+#: includes/options.php:461
msgid "Podcast Settings"
msgstr "Podcasteinstellungen"
-#: includes/options.php:486 includes/options.php:490
+#: includes/options.php:484
msgid "Title"
msgstr "Titel"
-#: includes/options.php:496 includes/options.php:500
-#: includes/sm-cmb-functions.php:107 includes/types-taxonomies.php:323
+#: includes/options.php:494 includes/sm-cmb-functions.php:107
+#: includes/types-taxonomies.php:323
msgid "Description"
msgstr "Beschreibung"
-#: includes/options.php:506 includes/options.php:510
+#: includes/options.php:504
msgid "Website Link"
msgstr "Webseite"
-#: includes/options.php:516 includes/options.php:520
+#: includes/options.php:514
msgid "Language"
msgstr "Sprache"
-#: includes/options.php:526 includes/options.php:530
+#: includes/options.php:524
msgid "Copyright"
msgstr "Urheberrechtshinweis"
-#: includes/options.php:530 includes/options.php:534
+#: includes/options.php:528
+#, php-format
msgid "e.g. Copyright © %s"
msgstr "z.B. Copyright © %s"
#. translators: %s ©
-#: includes/options.php:535 includes/options.php:539
+#: includes/options.php:534
+#, php-format
msgid "Tip: Use %s to generate a copyright symbol."
msgstr "Tipp: Verwende %s, um ein Copyright‑Symbol zu erzeugen."
-#: includes/options.php:541 includes/options.php:545
+#: includes/options.php:540
msgid "Webmaster Name"
msgstr "Name des Webmasters"
-#: includes/options.php:545 includes/options.php:549
+#: includes/options.php:544
msgid "e.g. Your Name"
msgstr "z.B. Dein Name"
-#: includes/options.php:551 includes/options.php:555
+#: includes/options.php:550
msgid "Webmaster Email"
msgstr "E‑Mail des Webmasters"
-#: includes/options.php:561 includes/options.php:565
+#: includes/options.php:560
msgid "Author"
msgstr "Autor"
-#: includes/options.php:565 includes/options.php:569
+#: includes/options.php:564
msgid "e.g. Primary Speaker or Church Name"
msgstr "z.B. Hauptredner/in oder Name der Gemeinde"
-#: includes/options.php:569 includes/options.php:573
+#: includes/options.php:568
msgid "This will display at the “Artist” in the iTunes Store."
msgstr "Dies wird als „Künstler“ im iTunes Store angezeigt."
-#: includes/options.php:574 includes/options.php:578
+#: includes/options.php:573
msgid "Subtitle"
msgstr "Untertitel"
-#: includes/options.php:578 includes/options.php:582
+#: includes/options.php:577
+#, php-format
msgid "e.g. Preaching and teaching audio from %s"
msgstr "z.B. Predigten und Lehre von %s"
-#: includes/options.php:582 includes/options.php:586
+#: includes/options.php:581
msgid ""
"Your subtitle should briefly tell the listener what they can expect to hear."
msgstr ""
"Der Untertitel sollte dem Hörer oder der Hörerin einen knappen "
"Eindruck vermitteln, was er oder sie erwarten kann."
-#: includes/options.php:587 includes/options.php:591
+#: includes/options.php:586
msgid "Summary"
msgstr "Zusammenfassung"
-#: includes/options.php:591 includes/options.php:595
+#: includes/options.php:590
+#, php-format
msgid "e.g. Weekly teaching audio brought to you by %s in City, State."
msgstr ""
"z.B. die wöchentlichen Lehraufnahmen werden von %s in Stadt, Bundesland "
"produziert."
-#: includes/options.php:594 includes/options.php:598
+#: includes/options.php:593
msgid ""
"Keep your Podcast Summary short, sweet and informative. Be sure to include a "
"brief statement about your mission and in what region your audio content "
"originates."
msgstr ""
-"Halte Deine Podcastzusammenfassung kurz, erfrischend und informativ. "
-"Erwähne auch was euer Ziel ist und woher die Audioinhalte kommen."
+"Halte Deine Podcastzusammenfassung kurz, erfrischend und informativ. Erwä"
+"hne auch was euer Ziel ist und woher die Audioinhalte kommen."
-#: includes/options.php:599 includes/options.php:603
+#: includes/options.php:598
msgid "Owner Name"
msgstr "Besitzername"
-#: includes/options.php:607 includes/options.php:611
+#: includes/options.php:606
msgid "This should typically be the name of your Church."
msgstr "Das sollte normalerweise der Name der Gemeinde sein."
-#: includes/options.php:612 includes/options.php:616
+#: includes/options.php:611
msgid "Owner Email"
msgstr "E‑Mail"
-#: includes/options.php:620 includes/options.php:624
+#: includes/options.php:619
msgid ""
"Use an email address that you don’t mind being made public. If someone "
-"wants to contact you regarding your Podcast this is the address they will "
-"use."
+"wants to contact you regarding your Podcast this is the address they will use."
msgstr ""
"Verwende eine E‑Mail‑Adresse, welche auf öffentlich gemacht "
-"werden kann. Wenn Dich jemand bezüglich des Podcasts kontaktieren "
-"möchte, wird das über diese Adresse geschehen."
+"werden kann. Wenn Dich jemand bezüglich des Podcasts kontaktieren mö"
+"chte, wird das über diese Adresse geschehen."
-#: includes/options.php:625 includes/options.php:629
+#: includes/options.php:624
msgid "Cover Image"
msgstr "Bild"
-#: includes/options.php:632 includes/options.php:636
+#: includes/options.php:631
msgid "Upload Image"
msgstr "Bild hochladen"
-#: includes/options.php:635 includes/options.php:639
+#: includes/options.php:634
msgid ""
"This JPG will serve as the Podcast artwork in the iTunes Store. The image "
-"must be between 1,400px by 1,400px and 3,000px by 3,000px or else iTunes "
-"will not accept your feed."
+"must be between 1,400px by 1,400px and 3,000px by 3,000px or else iTunes will "
+"not accept your feed."
msgstr ""
"Dieses JPG dient als Podcast‑Cover im iTunes Store. Die Bildauflö"
"sung sollte zwischen 1.400px mal 1.400px und 3.000px mal 3.000px sein, "
"ansonsten wird iTunes den Feed nicht akzeptieren."
-#: includes/options.php:640 includes/options.php:644
+#: includes/options.php:639
msgid "Top Category"
msgstr "Oberste Kategorie"
-#: includes/options.php:648 includes/options.php:652
+#: includes/options.php:647
msgid ""
"Choose the appropriate top-level category for your Podcast listing in iTunes."
msgstr ""
"Wähle eine passende Oberkategorie für den Podcasteintrag in iTunes."
-#: includes/options.php:653 includes/options.php:657
+#: includes/options.php:652
msgid "Sub Category"
msgstr "Unterkategorie"
-#: includes/options.php:661 includes/options.php:665
+#: includes/options.php:660
msgid "Choose the appropriate sub category for your Podcast listing in iTunes."
msgstr ""
-"Wähle eine passende Unterkategorie für den Podcasteintrag in "
-"iTunes."
+"Wähle eine passende Unterkategorie für den Podcasteintrag in iTunes."
-#: includes/options.php:666 includes/options.php:670
+#: includes/options.php:665
msgid "PodTrac Tracking"
msgstr "PodTrac‑Nachverfolung"
-#: includes/options.php:671 includes/options.php:675
+#: includes/options.php:670
msgid "Enables PodTrac tracking."
msgstr "PodTrac‑Nachverfolung aktivieren"
#. translators: %s podtrac.com
-#: includes/options.php:675 includes/options.php:679
+#: includes/options.php:675
+#, php-format
msgid "For more info on PodTrac or to sign up for an account, visit %s"
msgstr ""
-"Auf %s können weitere Informationen über PodTrac eingeholt oder "
-"ein Konto eingerichtet werden."
+"Auf %s können weitere Informationen über PodTrac eingeholt oder ein "
+"Konto eingerichtet werden."
-#: includes/options.php:680 includes/options.php:684
+#: includes/options.php:680
msgid "HTML in description"
msgstr "HTML in Beschreibung"
-#: includes/options.php:686 includes/options.php:690
+#: includes/options.php:686
msgid "Enable HTML description"
msgstr "HTML‑Beschreibung aktivieren"
-#: includes/options.php:690 includes/options.php:694
+#: includes/options.php:690
msgid ""
"Enables showing of HTML in iTunes description field. Uncheck if description "
"looks messy."
@@ -933,36 +980,38 @@ msgstr ""
"Beschreibung durcheinander aussieht, dann sollte die Einstellung deaktiviert "
"bleiben."
-#: includes/options.php:695 includes/options.php:699
+#: includes/options.php:695
msgid "Number of podcasts to show"
msgstr "Anzahl der anzuzeigenden Podcasteinträge"
-#: includes/options.php:704 includes/options.php:708
+#: includes/options.php:704
msgid ""
"Shows custom podcast count. If not defined, it uses WordPress default count."
msgstr ""
"Zeigt eine benutzerdefinierte Anzahl an Podcasteinträgen. Wird keine "
"Anzahl festgelegt, wird die WordPress‑Standardanzahl verwendet."
-#: includes/options.php:715
+#: includes/options.php:711
msgid "Feed URL to Submit to iTunes"
msgstr "Bei iTunes einzureichende Feed‑URL"
-#: includes/options.php:722 includes/options.php:725
+#: includes/options.php:722
msgid "Feed Validator"
msgstr "Feed‑Validator"
#. translators: %s Feed Validator link, see msgid "Feed Validator"
-#: includes/options.php:722 includes/options.php:725
+#: includes/options.php:722
+#, php-format
msgid ""
-"Use the %s to diagnose and fix any problems before submitting your Podcast "
-"to iTunes."
+"Use the %s to diagnose and fix any problems before submitting your Podcast to "
+"iTunes."
msgstr ""
"Bevor der Podcast bei iTunes eingereicht wird, kann der %s verwendet werden, "
"um Probleme zu finden und zu beheben."
#. translators: %s see msgid "Submit Your Podcast"
-#: includes/options.php:725 includes/options.php:728
+#: includes/options.php:726
+#, php-format
msgid ""
"Once your Podcast Settings are complete and your Sermons are ready, it’"
"s time to %s to the iTunes Store!"
@@ -970,46 +1019,48 @@ msgstr ""
"Nachdem die Podcasteinstellungen komplett und die Predigten fertig sind, ist "
"es Zeit %s!"
-#: includes/options.php:725 includes/options.php:728
+#: includes/options.php:726
msgid "Submit Your Podcast"
msgstr "den Podcast beim iTunes Store einzureichen"
#. translators: %s see msgid "FeedBurner"
-#: includes/options.php:727 includes/options.php:731
+#: includes/options.php:730
+#, php-format
msgid ""
-"Alternatively, if you want to track your Podcast subscribers, simply pass "
-"the Podcast Feed URL above through %s. FeedBurner will then give you a new "
-"URL to submit to iTunes instead."
+"Alternatively, if you want to track your Podcast subscribers, simply pass the "
+"Podcast Feed URL above through %s. FeedBurner will then give you a new URL to "
+"submit to iTunes instead."
msgstr ""
"Alternativ, wenn Du die Aktivität deiner Podcasthörerinnen und "
-"‑Hörer nachverfolgen möchtest, leite die Feed‑URL "
-"durch %s. FeedBurner gibt Dir dann eine neue URL, die Du dann stattdessen "
-"bei iTunes einreichen kannst."
+"‑Hörer nachverfolgen möchtest, leite die Feed‑URL durch "
+"%s. FeedBurner gibt Dir dann eine neue URL, die Du dann stattdessen bei "
+"iTunes einreichen kannst."
-#: includes/options.php:727 includes/options.php:731
+#: includes/options.php:730
msgid "FeedBurner"
msgstr ""
#. translators: %s see msgid "iTunes FAQ for Podcast Makers"
-#: includes/options.php:730 includes/options.php:734
+#: includes/options.php:734
+#, php-format
msgid "Please read the %s for more information."
msgstr "Für weitere Informationen, bitte lies die Liste der %s durch."
-#: includes/options.php:730 includes/options.php:734
+#: includes/options.php:734
msgid "iTunes FAQ for Podcast Makers"
msgstr "häufig gestellten Fragen für Podcastersteller auf iTunes"
-#: includes/options.php:742 includes/options.php:751
-#: includes/taxonomy-images/taxonomy-images.php:395
+#. translators: Button on the custom administration page.
+#: includes/options.php:742 includes/taxonomy-images/taxonomy-images.php:395
msgid "Save Changes"
msgstr "Änderungen speichern"
-#: includes/shortcodes.php:781 includes/shortcodes.php:786
-#: includes/template-tags.php:114 views/archive-wpfc_sermon.php:40
-#: views/taxonomy-wpfc_bible_book.php:72 views/taxonomy-wpfc_preacher.php:78
-#: views/taxonomy-wpfc_sermon_series.php:79
+#: includes/shortcodes.php:805 includes/template-tags.php:112
+#: views/archive-wpfc_sermon.php:40 views/taxonomy-wpfc_bible_book.php:72
+#: views/taxonomy-wpfc_preacher.php:78 views/taxonomy-wpfc_sermon_series.php:79
#: views/taxonomy-wpfc_sermon_topics.php:79
#: views/taxonomy-wpfc_service_type.php:72
+#, php-format
msgid "Permalink to %s"
msgstr "Permalink zu %s"
@@ -1021,8 +1072,9 @@ msgstr "Predigtdetails"
msgid "(optional)"
msgstr ""
-#. translators: %s date format, effectively d/m/Y
or the like
+#. translators: %s date format, effectively d/m/Y
or the like
#: includes/sm-cmb-functions.php:86 includes/types-taxonomies.php:302
+#, php-format
msgid "format: %s"
msgstr "Format: %s"
@@ -1038,8 +1090,9 @@ msgstr ""
msgid "Main Bible Passage"
msgstr "Hauptbibelstelle"
-#. translators: %s see msgid "John 3:16-18", effectively John 3:16-18
+#. translators: %s see msgid "John 3:16-18", effectively John 3:16-18
#: includes/sm-cmb-functions.php:102 includes/types-taxonomies.php:318
+#, php-format
msgid "Enter the Bible passage with the full book names, e.g. %s."
msgstr "Trage die Bibelstelle mit vollem Buchnamen ein, z.B.: %s."
@@ -1070,8 +1123,9 @@ msgstr "Lade eine Audiodatei hoch oder gib eine URL an."
msgid "MP3 Duration"
msgstr "MP3‑Spieldauer"
-#. translators: %s see msgid "hh:mm:ss", effectively hh:mm:ss
+#. translators: %s see msgid "hh:mm:ss", effectively hh:mm:ss
#: includes/sm-cmb-functions.php:135 includes/types-taxonomies.php:351
+#, php-format
msgid ""
"Length in %s format (if left blank, will attempt to calculate automatically "
"when you save)"
@@ -1112,8 +1166,13 @@ msgstr "Predigtnotizen"
msgid "Upload a pdf file or enter an URL."
msgstr "Lade eine PDF‑Datei hoch oder gib eine URL zu einem Dokument an."
-#: includes/sm-cmb-functions.php:162 includes/template-tags.php:371
-#: includes/template-tags.php:397 includes/types-taxonomies.php:378
+#: includes/sm-cmb-functions.php:158 includes/sm-cmb-functions.php:167
+#: includes/types-taxonomies.php:374 includes/types-taxonomies.php:383
+msgid "Add File"
+msgstr "Datei hinzufügen"
+
+#: includes/sm-cmb-functions.php:162 includes/template-tags.php:376
+#: includes/types-taxonomies.php:378
msgid "Bulletin"
msgstr "Gemeindebrief"
@@ -1153,30 +1212,32 @@ msgstr "predigten"
#. translators: %4$s effectively tag.php
#. translators: %5$s effectively taxonomy.php
#. translators: %6$s see msgid "template hierarchy"
-#: includes/taxonomy-images/public-filters.php:385
+#: includes/taxonomy-images/public-filters.php:391
+#, php-format
msgid ""
"%1$s is not a property of the current queried object. This usually happens "
-"when the %2$s filter is used in an unsupported template file. This filter "
-"has been designed to work in taxonomy archives which are traditionally "
-"served by one of the following template files: %3$s, %4$s or %5$s. Learn "
-"more about %6$s."
+"when the %2$s filter is used in an unsupported template file. This filter has "
+"been designed to work in taxonomy archives which are traditionally served by "
+"one of the following template files: %3$s, %4$s or %5$s. Learn more about "
+"%6$s."
msgstr ""
-"%1$s ist keine Eigenschaft des aktuell gesuchten Objekts. Das passiert "
-"üblicherweise, wenn der Filter %2$s in einer nicht unterstützten "
+"%1$s ist keine Eigenschaft des aktuell gesuchten Objekts. Das passiert ü"
+"blicherweise, wenn der Filter %2$s in einer nicht unterstützten "
"Vorlagendatei verwendet wird. Dieser Filter wurde so entworfen, dass er in "
-"Gruppierungsarchiven funktioniert, welche traditionell von einer der "
-"folgenden Vorlagendateien bereitgestellt werden: %3$s, %4$s oder %5$s. Finde "
-"weiteres über die %6$s heraus."
+"Taxonomiearchiven funktioniert, welche traditionell von einer der folgenden "
+"Vorlagendateien bereitgestellt werden: %3$s, %4$s oder %5$s. Finde weiteres "
+"über die %6$s heraus."
-#: includes/taxonomy-images/public-filters.php:386
+#: includes/taxonomy-images/public-filters.php:392
msgid "term_taxonomy_id"
-msgstr "begriff_gruppierung_id (Gruppierung = Taxonomie)"
+msgstr "begriff_taxonomie_id"
-#: includes/taxonomy-images/public-filters.php:391
+#: includes/taxonomy-images/public-filters.php:397
msgid "template hierarchy"
msgstr "Vorlagenhierarchie"
#: includes/taxonomy-images/taxonomy-images.php:130
+#, php-format
msgid "Associate with %1$s"
msgstr "Mit „%1$s“ verbinden"
@@ -1186,30 +1247,36 @@ msgid "this term"
msgstr "dieser Begriff"
#: includes/taxonomy-images/taxonomy-images.php:131
+#, php-format
msgid "Remove association with %1$s"
msgstr "Verbindung mit „%1$s“ entfernen"
+#. translators: Notice displayed on the custom administration page.
#: includes/taxonomy-images/taxonomy-images.php:290
msgid "Image support for taxonomies successfully updated"
-msgstr "Bildunterstützung wurde erfolgreich aktualisiert"
+msgstr ""
+"Bildunterstützung für Taxonomien wurde erfolgreich aktualisiert"
+#. translators: Notice displayed on the custom administration page.
#: includes/taxonomy-images/taxonomy-images.php:293
msgid "Image support has been disabled for all taxonomies."
-msgstr "Bildunterstützung wurde für alle Gruppierungen deaktiviert."
+msgstr "Bildunterstützung wurde für alle Taxonomien deaktiviert."
#: includes/taxonomy-images/taxonomy-images.php:339
msgid "Taxonomies"
-msgstr "Gruppierungen"
+msgstr "Taxonomien"
#: includes/taxonomy-images/taxonomy-images.php:359
#: includes/taxonomy-images/taxonomy-images.php:360
msgid "Taxonomy Images"
-msgstr "Gruppierungsbilder"
+msgstr "Taxonomiebilder"
+#. translators: Heading of the custom administration page.
#: includes/taxonomy-images/taxonomy-images.php:387
msgid "Taxonomy Images Plugin Settings"
-msgstr "Einstellungen des Gruppierungsbilder‑Plugins"
+msgstr "Einstellungen des Taxonomiebilder‑Plugins"
+#. translators: An ajax request has failed for an unknown reason.
#: includes/taxonomy-images/taxonomy-images.php:447
msgid "Unknown error encountered"
msgstr "Unbekannter Fehler"
@@ -1230,7 +1297,6 @@ msgid "You do not have the correct capability to manage this term"
msgstr "Keine Berechtigung, um diesen Begriff zu verwalten"
#: includes/taxonomy-images/taxonomy-images.php:551
-#: includes/taxonomy-images/taxonomy-images.php:633
msgid "No nonce included."
msgstr "Begriffsbildung nicht enthalten."
@@ -1282,14 +1348,17 @@ msgid "term"
msgstr "Begriff"
#: includes/taxonomy-images/taxonomy-images.php:797
+#, php-format
msgid "Associate an image from your media library to this %1$s."
msgstr "Verbinde ein Bild aus der Mediathek mit dieser %1$s."
#: includes/taxonomy-images/taxonomy-images.php:846
-msgid "Associate an image with the %1$s named “%2$s”."
+#, php-format
+msgid "Associate an image with the %1$s named “%2$s”."
msgstr "Verknüpfe ein Bild mit %1$s mit dem Namen „%2$s“."
#: includes/taxonomy-images/taxonomy-images.php:847
+#, php-format
msgid "Upload a new image for this %s."
msgstr "Ein neues Bild für dieses %s hochladen."
@@ -1302,6 +1371,7 @@ msgid "Delete"
msgstr "Löschen"
#: includes/taxonomy-images/taxonomy-images.php:848
+#, php-format
msgid "Remove image from this %s."
msgstr "Bild von diesem %s entfernen."
@@ -1310,7 +1380,7 @@ msgid "“"
msgstr "„"
#: includes/taxonomy-images/taxonomy-images.php:883
-msgid "”"
+msgid "”"
msgstr "“"
#: includes/taxonomy-images/taxonomy-images.php:884
@@ -1330,27 +1400,31 @@ msgid "Successfully Removed"
msgstr "Erfolgreich entfernt"
#: includes/taxonomy-images/taxonomy-images.php:1162
+#, php-format
msgid ""
-"The %1$s argument for %2$s is set to %3$s which is not a registered "
-"taxonomy. Please check the spelling and update the argument."
+"The %1$s argument for %2$s is set to %3$s which is not a registered taxonomy. "
+"Please check the spelling and update the argument."
msgstr ""
"Das %1$s Argument für %2$s wurde als %3$s festgelegt, was keine "
-"registrierte Gruppierung (Taxonomie) ist. Bitte überprüfe die "
-"Schreibweise und aktualisiere das Argument."
+"registrierte Taxonomie ist. Bitte überprüfe die Schreibweise und "
+"aktualisiere das Argument."
#: includes/taxonomy-images/taxonomy-images.php:1163
msgid "taxonomy"
-msgstr "gruppierung"
+msgstr "Taxonomie"
#: includes/taxonomy-images/taxonomy-images.php:1174
+#, php-format
msgid "No taxonomies have image support. %1$s"
-msgstr "Keine Gruppierungen unterstützen Bilder. %1$s"
+msgstr "Keine Taxonomien unterstützen Bilder. %1$s"
#: includes/taxonomy-images/taxonomy-images.php:1180
+#, php-format
msgid "The %1$s taxonomy does not have image support. %2$s"
-msgstr "Die Gruppierung „%1$s“ unterstützt keine Bilder. %2$s"
+msgstr "Die Taxonomie „%1$s“ unterstützt keine Bilder. %2$s"
#: includes/taxonomy-images/taxonomy-images.php:1206
+#, php-format
msgid "The %1$s has been called directly. Please use the %2$s filter instead."
msgstr ""
"%1$s wurde direkt aufgerufen. Bitte stattdessen den Filter %2$s verwenden."
@@ -1361,18 +1435,16 @@ msgstr "Spenden"
#: includes/taxonomy-images/taxonomy-images.php:1302
#: includes/taxonomy-images/taxonomy-images.php:1303
-#: includes/template-tags.php:160 includes/types-taxonomies.php:94
-#: includes/types-taxonomies.php:96 includes/types-taxonomies.php:97
-#: includes/types-taxonomies.php:98 includes/types-taxonomies.php:99
+#: includes/types-taxonomies.php:94 includes/types-taxonomies.php:96
+#: includes/types-taxonomies.php:97 includes/types-taxonomies.php:99
#: includes/types-taxonomies.php:100 includes/types-taxonomies.php:101
-#: includes/types-taxonomies.php:102 includes/types-taxonomies.php:103
-#: includes/types-taxonomies.php:104 includes/types-taxonomies.php:105
+#: includes/types-taxonomies.php:102 includes/types-taxonomies.php:104
msgid "Preacher"
msgstr "Prediger/in"
-#. translators: %s see msgid "Preacher"
#: includes/taxonomy-images/taxonomy-images.php:1302
#: includes/taxonomy-images/taxonomy-images.php:1303
+#, php-format
msgid "Set %s’s image"
msgstr "%sbild setzen"
@@ -1381,41 +1453,42 @@ msgstr "%sbild setzen"
msgid "Set Series image"
msgstr "Serienbild setzen"
-#: includes/template-tags.php:127 includes/template-tags.php:398
-#: includes/template-tags.php:424 includes/template-tags.php:437
-#: includes/template-tags.php:463 includes/widgets.php:96
+#: includes/template-tags.php:125 includes/template-tags.php:408
+#: includes/template-tags.php:454 includes/widgets.php:96
msgid "Bible Text: "
msgstr "Bibelauszug: "
-#: includes/template-tags.php:160
+#. Translators: %s: Preacher label (sentence case; singular)
+#: includes/template-tags.php:158
+#, php-format
msgid "Filter by %s"
msgstr "Nach %s filtern"
-#: includes/template-tags.php:165
+#: includes/template-tags.php:163
msgid "Filter by Series"
msgstr "Nach Serie filtern"
-#: includes/template-tags.php:170
+#: includes/template-tags.php:168
msgid "Filter by Topic"
msgstr "Nach Thema filtern"
-#: includes/template-tags.php:175
+#: includes/template-tags.php:173
msgid "Filter by Book"
msgstr "Nach Buch filtern"
-#: includes/template-tags.php:363 includes/template-tags.php:389
+#: includes/template-tags.php:368
msgid "Download Files"
msgstr "Dateien zum Herunterladen"
-#: includes/template-tags.php:365 includes/template-tags.php:391
+#: includes/template-tags.php:370
msgid "MP3"
msgstr ""
-#: includes/template-tags.php:368 includes/template-tags.php:394
+#: includes/template-tags.php:373
msgid "Notes"
msgstr "Notizen"
-#: includes/template-tags.php:413 includes/template-tags.php:439
+#: includes/template-tags.php:423
msgid "Sermon Topics: "
msgstr "Predigtthemen: "
@@ -1450,22 +1523,27 @@ msgid "Preachers"
msgstr "Prediger/innen"
#: includes/types-taxonomies.php:97
+#, php-format
msgid "Most frequent %s"
msgstr "Häufigste/n %s"
#: includes/types-taxonomies.php:102
+#, php-format
msgid "New %s"
msgstr "Neue/r %s"
#: includes/types-taxonomies.php:103
+#, php-format
msgid "Separate multiple %s with commas"
msgstr "Trenne mehrere %s durch Kommata"
#: includes/types-taxonomies.php:104
+#, php-format
msgid "Add or remove %s"
msgstr "%s hinzufügen oder entfernen"
#: includes/types-taxonomies.php:105
+#, php-format
msgid "Choose from most frequent %s"
msgstr "Aus den häufigsten %s auswählen"
@@ -1627,11 +1705,8 @@ msgstr "Aus den am meisten genutzten Dienstarten auswählen"
msgid "Add Sermon Audio"
msgstr "Aufnahme hinzufügen"
-#: includes/types-taxonomies.php:374 includes/types-taxonomies.php:383
-msgid "Add File"
-msgstr "Datei hinzufügen"
-
#: includes/vendor/abstract-wp-rest-controller.php:29
+#, php-format
msgid "The %s method must be overridden."
msgstr "Die Methode %s muss überschrieben werden."
@@ -1647,10 +1722,11 @@ msgstr "Die Methode %s muss überschrieben werden."
#: includes/vendor/abstract-wp-rest-controller.php:149
#: includes/vendor/abstract-wp-rest-controller.php:161
#: includes/vendor/abstract-wp-rest-controller.php:174
+#, php-format
msgid "Method %s not implemented. Must be overridden in subclass."
msgstr ""
-"Die Methode %s wurde nicht implementiert. Sie muss in einer Unterklasse "
-"überschrieben werden."
+"Die Methode %s wurde nicht implementiert. Sie muss in einer Unterklasse ü"
+"berschrieben werden."
#: includes/vendor/abstract-wp-rest-controller.php:287
msgid "Current page of the collection."
@@ -1667,8 +1743,9 @@ msgstr "Ergebnisse auf übereinstimmende Zeichenketten beschränken."
#: includes/vendor/abstract-wp-rest-controller.php:324
msgid ""
"Scope under which the request is made; determines fields present in response."
-msgstr "Der Sichtbereich, in dem die Abfrage erfolgt. Dies legt die Felder "
-"fü das Ergebnis fest."
+msgstr ""
+"Der Sichtbereich, in dem die Abfrage erfolgt. Dies legt die Felder fü "
+"das Ergebnis fest."
#: includes/widgets.php:12
msgid "The most recent sermons on your site"
@@ -1696,140 +1773,153 @@ msgstr "Predigtverwaltung für WordPress"
msgid "Add audio and video sermons, manage speakers, series, and more."
msgstr ""
"Ermöglicht das Hinzufügen von Audio‑ und Video‑"
-"Predigten, die Verwaltung von Sprechern und Sprecherinnen sowie "
-"Predigtserien und mehr."
+"Predigten, die Verwaltung von Rednern und Rednerinnen sowie Predigtserien und "
+"mehr."
-#. translators: %s see msgid "←", effectively ←
-#: views/archive-wpfc_sermon.php:18 views/archive-wpfc_sermon.php:70
-#: views/archive-wpfc_sermon.php:71
-msgid "%s Older sermons"
-msgstr "%s Ältere Predigten"
-
-#: views/archive-wpfc_sermon.php:18 views/archive-wpfc_sermon.php:70
-#: views/taxonomy-wpfc_bible_book.php:36 views/taxonomy-wpfc_bible_book.php:99
-#: views/taxonomy-wpfc_preacher.php:42 views/taxonomy-wpfc_preacher.php:105
-#: views/taxonomy-wpfc_sermon_series.php:43
-#: views/taxonomy-wpfc_sermon_series.php:106
-#: views/taxonomy-wpfc_sermon_topics.php:43
-#: views/taxonomy-wpfc_sermon_topics.php:106
-#: views/taxonomy-wpfc_service_type.php:36
-#: views/taxonomy-wpfc_service_type.php:99
-msgid "←"
+#: sermons.php:32
+#, php-format
+msgid "PHP %s"
msgstr ""
-#: views/archive-wpfc_sermon.php:21 views/archive-wpfc_sermon.php:73
-#: views/taxonomy-wpfc_bible_book.php:38
-#: views/taxonomy-wpfc_bible_book.php:101 views/taxonomy-wpfc_preacher.php:44
-#: views/taxonomy-wpfc_preacher.php:107
-#: views/taxonomy-wpfc_sermon_series.php:52
-#: views/taxonomy-wpfc_sermon_series.php:108
-#: views/taxonomy-wpfc_sermon_topics.php:45
-#: views/taxonomy-wpfc_service_type.php:20
-#: views/taxonomy-wpfc_service_type.php:38
-#: views/taxonomy-wpfc_service_type.php:101
-msgid "→"
+#. translators: %1$s current PHP version, see msgid "PHP %s", effectively PHP %s
+#. translators: %2$s required PHP version, see msgid "PHP %s", effectively PHP %s
+#: sermons.php:32
+#, php-format
+msgid "You are running %1$s, but Sermon Manager requires at least %2$s."
msgstr ""
+"%1$s wird ausgeführt, jedoch benötigt die Predigtverfaltung fü "
+"WordPress zumindest %2$s."
+
+#. translators: %s see msgid "←", effectively ←
+#: views/archive-wpfc_sermon.php:18 views/archive-wpfc_sermon.php:71
+#, php-format
+msgid "%s Older sermons"
+msgstr "%s Ältere Predigten"
-#. translators: %s see msgid "→", effectively →
-#: views/archive-wpfc_sermon.php:21 views/archive-wpfc_sermon.php:73
-#: views/archive-wpfc_sermon.php:74
+#. translators: %s see msgid "→", effectively →
+#: views/archive-wpfc_sermon.php:21 views/archive-wpfc_sermon.php:74
+#, php-format
msgid "Newer sermons %s"
msgstr "Neuere Predigten %s"
#: views/archive-wpfc_sermon.php:28 views/taxonomy-wpfc_bible_book.php:45
-#: views/taxonomy-wpfc_preacher.php:51
-#: views/taxonomy-wpfc_sermon_series.php:52
+#: views/taxonomy-wpfc_preacher.php:51 views/taxonomy-wpfc_sermon_series.php:52
#: views/taxonomy-wpfc_sermon_topics.php:52
#: views/taxonomy-wpfc_service_type.php:45
msgid "Not Found"
msgstr "Nicht gefunden"
#: views/archive-wpfc_sermon.php:30 views/taxonomy-wpfc_bible_book.php:47
-#: views/taxonomy-wpfc_preacher.php:53
-#: views/taxonomy-wpfc_sermon_series.php:54
+#: views/taxonomy-wpfc_preacher.php:53 views/taxonomy-wpfc_sermon_series.php:54
#: views/taxonomy-wpfc_sermon_topics.php:54
#: views/taxonomy-wpfc_service_type.php:47
msgid "Apologies, but no sermons were found."
msgstr "Es tut uns leid, aber es wurden keine Predigten gefunden."
-#. translators: %s date
#: views/archive-wpfc_sermon.php:47 views/taxonomy-wpfc_bible_book.php:77
-#: views/taxonomy-wpfc_preacher.php:83
-#: views/taxonomy-wpfc_sermon_series.php:84
+#: views/taxonomy-wpfc_preacher.php:83 views/taxonomy-wpfc_sermon_series.php:84
#: views/taxonomy-wpfc_sermon_topics.php:84
#: views/taxonomy-wpfc_service_type.php:77
+#, php-format
msgid "Preached on %s"
msgstr "Gehalten am %s"
-#: views/archive-wpfc_sermon.php:59 views/archive-wpfc_sermon.php:60
-#: views/taxonomy-wpfc_bible_book.php:88 views/taxonomy-wpfc_preacher.php:94
-#: views/taxonomy-wpfc_sermon_series.php:95
-#: views/taxonomy-wpfc_sermon_topics.php:95
-#: views/taxonomy-wpfc_service_type.php:88
+#: views/archive-wpfc_sermon.php:60 views/taxonomy-wpfc_bible_book.php:89
+#: views/taxonomy-wpfc_preacher.php:95 views/taxonomy-wpfc_sermon_series.php:96
+#: views/taxonomy-wpfc_sermon_topics.php:96
+#: views/taxonomy-wpfc_service_type.php:89
+#, php-format
msgid "%s comment"
msgid_plural "%s comments"
msgstr[0] "%s Kommentar"
msgstr[1] "%s Kommentare"
-#: views/archive-wpfc_sermon.php:59 views/archive-wpfc_sermon.php:60
-#: views/taxonomy-wpfc_bible_book.php:88 views/taxonomy-wpfc_preacher.php:94
-#: views/taxonomy-wpfc_sermon_series.php:95
-#: views/taxonomy-wpfc_sermon_topics.php:95
-#: views/taxonomy-wpfc_service_type.php:88
+#: views/archive-wpfc_sermon.php:60 views/taxonomy-wpfc_bible_book.php:89
+#: views/taxonomy-wpfc_preacher.php:95 views/taxonomy-wpfc_sermon_series.php:96
+#: views/taxonomy-wpfc_sermon_topics.php:96
+#: views/taxonomy-wpfc_service_type.php:89
msgid "Leave a comment"
msgstr "Kommentar hinterlassen"
-#: views/single-wpfc_sermon.php:42
+#: views/single-wpfc_sermon.php:30
msgctxt "Previous post link"
msgid "←"
msgstr ""
-#: views/single-wpfc_sermon.php:44
+#: views/single-wpfc_sermon.php:33
msgctxt "Next post link"
msgid "→"
msgstr ""
#: views/taxonomy-wpfc_bible_book.php:20
+#, php-format
msgid "Sermons by Book: %s"
msgstr "Predigten nach Buch: %s"
-#. translators: %s see msgid "←", effectively ←
-#: views/taxonomy-wpfc_bible_book.php:36 views/taxonomy-wpfc_bible_book.php:99
-#: views/taxonomy-wpfc_preacher.php:42 views/taxonomy-wpfc_preacher.php:105
+#. translators: %s see msgid "←", effectively ←
+#: views/taxonomy-wpfc_bible_book.php:36 views/taxonomy-wpfc_bible_book.php:100
+#: views/taxonomy-wpfc_preacher.php:42 views/taxonomy-wpfc_preacher.php:106
#: views/taxonomy-wpfc_sermon_series.php:43
-#: views/taxonomy-wpfc_sermon_series.php:106
+#: views/taxonomy-wpfc_sermon_series.php:107
#: views/taxonomy-wpfc_sermon_topics.php:43
-#: views/taxonomy-wpfc_sermon_topics.php:106
+#: views/taxonomy-wpfc_sermon_topics.php:107
#: views/taxonomy-wpfc_service_type.php:36
-#: views/taxonomy-wpfc_service_type.php:99
+#: views/taxonomy-wpfc_service_type.php:100
+#, php-format
msgid "%s Older posts"
msgstr "%s Ältere Einträge"
-#. translators: %s see msgid "→", effectively →
-#: views/taxonomy-wpfc_bible_book.php:38
-#: views/taxonomy-wpfc_bible_book.php:101 views/taxonomy-wpfc_preacher.php:44
-#: views/taxonomy-wpfc_preacher.php:107
+#: views/taxonomy-wpfc_bible_book.php:36 views/taxonomy-wpfc_bible_book.php:100
+#: views/taxonomy-wpfc_preacher.php:42 views/taxonomy-wpfc_preacher.php:106
+#: views/taxonomy-wpfc_sermon_series.php:43
+#: views/taxonomy-wpfc_sermon_series.php:107
+#: views/taxonomy-wpfc_sermon_topics.php:43
+#: views/taxonomy-wpfc_sermon_topics.php:107
+#: views/taxonomy-wpfc_service_type.php:36
+#: views/taxonomy-wpfc_service_type.php:100
+msgid "←"
+msgstr ""
+
+#: views/taxonomy-wpfc_bible_book.php:38 views/taxonomy-wpfc_bible_book.php:102
+#: views/taxonomy-wpfc_preacher.php:44 views/taxonomy-wpfc_preacher.php:108
+#: views/taxonomy-wpfc_sermon_series.php:45
+#: views/taxonomy-wpfc_sermon_series.php:109
+#: views/taxonomy-wpfc_sermon_topics.php:45
+#: views/taxonomy-wpfc_sermon_topics.php:109
+#: views/taxonomy-wpfc_service_type.php:38
+#: views/taxonomy-wpfc_service_type.php:102
+msgid "→"
+msgstr ""
+
+#. translators: %s see msgid "→", effectively →
+#: views/taxonomy-wpfc_bible_book.php:38 views/taxonomy-wpfc_bible_book.php:102
+#: views/taxonomy-wpfc_preacher.php:44 views/taxonomy-wpfc_preacher.php:108
#: views/taxonomy-wpfc_sermon_series.php:45
-#: views/taxonomy-wpfc_sermon_series.php:108
+#: views/taxonomy-wpfc_sermon_series.php:109
#: views/taxonomy-wpfc_sermon_topics.php:45
-#: views/taxonomy-wpfc_sermon_topics.php:108
+#: views/taxonomy-wpfc_sermon_topics.php:109
#: views/taxonomy-wpfc_service_type.php:38
-#: views/taxonomy-wpfc_service_type.php:101
+#: views/taxonomy-wpfc_service_type.php:102
+#, php-format
msgid "Newer posts %s"
msgstr "Neuere Einträge %s"
#: views/taxonomy-wpfc_preacher.php:20
+#, php-format
msgid "Sermons by: %s"
msgstr "Predigten von: %s"
#: views/taxonomy-wpfc_sermon_series.php:20
+#, php-format
msgid "Sermons Series: %s"
msgstr "Predigtserie: %s"
#: views/taxonomy-wpfc_sermon_topics.php:20
+#, php-format
msgid "Sermons Topic: %s"
msgstr "Predigtthema: %s"
#: views/taxonomy-wpfc_service_type.php:20
+#, php-format
msgid "Sermons By Service: %s"
msgstr "Predigten nach Dienstart: %s"
diff --git a/languages/sermon-manager-for-wordpress-fr_FR.mo b/languages/sermon-manager-for-wordpress-fr_FR.mo
index d2f7442..ec15a9c 100644
Binary files a/languages/sermon-manager-for-wordpress-fr_FR.mo and b/languages/sermon-manager-for-wordpress-fr_FR.mo differ
diff --git a/languages/sermon-manager-for-wordpress-fr_FR.po b/languages/sermon-manager-for-wordpress-fr_FR.po
index d0e5780..96766f3 100644
--- a/languages/sermon-manager-for-wordpress-fr_FR.po
+++ b/languages/sermon-manager-for-wordpress-fr_FR.po
@@ -4,257 +4,274 @@ msgid ""
msgstr ""
"Project-Id-Version: sermon-manager-for-wordpress\n"
"Report-Msgid-Bugs-To: http://wordpress.org/tag/sermon-manager-for-wordpress\n"
-"POT-Creation-Date: 2017-10-01 07:03:00+0200\n"
-"PO-Revision-Date: 2017-09-27 16:55+0200\n"
+"POT-Creation-Date: 2017-10-10 14:00:00+0200\n"
+"PO-Revision-Date: 2017-10-10 14:20:00+0200\n"
"Last-Translator: Gilles PILLOUD \n"
-"Language-Team: \n"
+"Language-Team: WP for Church\n"
"Language: fr_FR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2;plural=n>2;\n"
-"X-Poedit-SourceCharset: UTF-8\n"
-"X-Generator: Poedit 2.0.3\n"
-"X-Poedit-KeywordsList: __;_e\n"
-"X-Poedit-Basepath: ..\n"
-"X-Poedit-SearchPath-0: .\n"
-"X-Poedit-SearchPathExcluded-0: includes/CMB2\n"
#. translators: %s see msgid "View sermon", effectively View sermon
-#: includes/admin-functions.php:124
+#: includes/admin-functions.php:125
#, php-format
msgid "Sermon updated. %s"
msgstr "Prédication mise à jour. %s"
-#: includes/admin-functions.php:124 includes/admin-functions.php:130
-#: includes/admin-functions.php:136 includes/class-sm-post-types.php:201
+#: includes/admin-functions.php:125 includes/admin-functions.php:132
+#: includes/admin-functions.php:144 includes/class-sm-post-types.php:201
#: includes/class-sm-post-types.php:202
msgid "View sermon"
msgstr "Voir la prédication"
-#: includes/admin-functions.php:125
+#: includes/admin-functions.php:126
msgid "Custom field updated."
msgstr "Champ personnalisé mis à jour."
-#: includes/admin-functions.php:126
+#: includes/admin-functions.php:127
msgid "Custom field deleted."
msgstr "Champ personnalisé supprimé."
-#: includes/admin-functions.php:127
+#: includes/admin-functions.php:128
msgid "Sermon updated."
msgstr "Prédication mise à jour."
-#: includes/admin-functions.php:129
+#. translators: %s date and time of the revision
+#: includes/admin-functions.php:130
#, php-format
msgid "Sermon restored to revision from %s"
msgstr "Prédication restaurée à la révision depuis %s"
#. translators: %s see msgid "View sermon", effectively View sermon
-#: includes/admin-functions.php:130
+#: includes/admin-functions.php:132
#, fuzzy, php-format
msgid "Sermon published. %s"
msgstr "prédication sauvegardée."
-#: includes/admin-functions.php:131
+#: includes/admin-functions.php:133
msgid "Sermon saved."
msgstr "prédication sauvegardée."
-#: includes/admin-functions.php:132 includes/admin-functions.php:135
+#: includes/admin-functions.php:135 includes/admin-functions.php:142
#, fuzzy
msgid "Preview sermon"
msgstr "Voir la prédication"
#. translators: %s see msgid "Preview sermon", effectively Preview sermon
-#: includes/admin-functions.php:132
+#: includes/admin-functions.php:135
#, fuzzy, php-format
msgid "Sermon submitted. %s"
msgstr "Prédication mise à jour."
#. translators: %1$s see msgid "%1$s at %2$s", effectively at
#. translators: %2$s see msgid "Preview sermon", effectively Preview sermon
-#: includes/admin-functions.php:133
+#: includes/admin-functions.php:138
#, php-format
msgid "Sermon scheduled for: %1$s. %2$s"
msgstr ""
#. translators: %1$s date
#. translators: %2$s time
-#: includes/admin-functions.php:134 includes/admin-functions.php:135
+#: includes/admin-functions.php:141
#, php-format
msgid "%1$s at %2$s"
msgstr ""
#. translators: %s see msgid "Preview sermon", effectively Preview sermon
-#: includes/admin-functions.php:136
+#: includes/admin-functions.php:144
#, fuzzy, php-format
msgid "Sermon draft updated. %s"
msgstr "Prédication mise à jour."
-#: includes/admin-functions.php:189
+#: includes/admin-functions.php:197
msgid "Sermon Title"
msgstr "Titre de la prédication"
-#. translators: %s: Preachers label (sentence case; plural)
-#: includes/admin-functions.php:191 includes/class-sm-post-types.php:44
+#. Translators: %s: Preacher label (sentence case; singular)
+#. translators: %s Preachers label (sentence case; plural)
+#. translators: %s Preachers label (sentence case; plural)
+#. translators: %s Preacher label (sentence case; singular)
+#: includes/admin-functions.php:199 includes/class-sm-post-types.php:44
#: includes/class-sm-post-types.php:47 includes/class-sm-post-types.php:49
#, php-format
msgid "%s"
msgstr ""
-#: includes/admin-functions.php:191 includes/admin-functions.php:192
-#: includes/types-taxonomies.php:120 includes/types-taxonomies.php:121
-#: includes/types-taxonomies.php:122
+#: includes/admin-functions.php:200 includes/types-taxonomies.php:120
+#: includes/types-taxonomies.php:121 includes/types-taxonomies.php:122
msgid "Sermon Series"
msgstr "Séries de prédications"
-#: includes/admin-functions.php:192 includes/admin-functions.php:193
-#: includes/class-sm-post-types.php:104 includes/class-sm-post-types.php:106
+#: includes/admin-functions.php:201 includes/class-sm-post-types.php:104
+#: includes/class-sm-post-types.php:106
msgid "Topics"
msgstr "Sujets"
-#: includes/admin-functions.php:193 includes/admin-functions.php:194
+#: includes/admin-functions.php:202
msgid "Views"
msgstr "Vues"
-#: includes/admin-functions.php:194 includes/admin-functions.php:195
-#: includes/sm-cmb-functions.php:85 includes/types-taxonomies.php:301
+#: includes/admin-functions.php:203 includes/sm-cmb-functions.php:85
+#: includes/types-taxonomies.php:301
#, fuzzy
msgid "Date Preached"
msgstr "Mettre à jour les prédicateurs"
-#: includes/admin-functions.php:195 includes/admin-functions.php:196
+#: includes/admin-functions.php:204
#, fuzzy
msgid "Bible Passage"
msgstr "Passage biblique principal"
#. translators: %s see msgid "Error:"
-#: includes/admin-functions.php:212 includes/admin-functions.php:213
+#: includes/admin-functions.php:222
#, php-format
msgid "%s Can’t find sermon ID."
msgstr ""
-#: includes/admin-functions.php:212 includes/admin-functions.php:213
-#: includes/admin-functions.php:252 includes/admin-functions.php:253
+#: includes/admin-functions.php:222 includes/admin-functions.php:261
+#: includes/admin-functions.php:262
msgid "Error:"
msgstr ""
-#: includes/admin-functions.php:290 includes/class-sm-post-types.php:193
-#: includes/types-taxonomies.php:59
-msgid "Sermon"
-msgstr "Prédication"
-
-#: includes/admin-functions.php:306 includes/admin-functions.php:307
+#. translators: %s integer count of sermons
+#: includes/admin-functions.php:317
#, fuzzy, php-format
msgid "%s sermon"
msgid_plural "%s sermons"
msgstr[0] "Nouvelle prédication"
msgstr[1] "Nouvelle prédication"
-#. translators: %s: Plugin name
-#: includes/class-sm-error-recovery.php:200
+#. translators: %s Plugin name
+#: includes/class-sm-error-recovery.php:212
#, php-format
msgid "%s encountered a fatal error and recovered successfully."
msgstr ""
-#: includes/class-sm-error-recovery.php:203
+#: includes/class-sm-error-recovery.php:215
msgid "The issue has already been submitted."
msgstr ""
-#: includes/class-sm-error-recovery.php:208
-msgctxt "Button"
+#: includes/class-sm-error-recovery.php:220
+msgctxt "button"
msgid "Send an anonymous report"
msgstr ""
-#: includes/class-sm-error-recovery.php:212
-msgctxt "Button"
+#: includes/class-sm-error-recovery.php:224
+msgctxt "button"
msgid "Show error message"
msgstr ""
-#: includes/class-sm-error-recovery.php:215
-msgctxt "Button"
+#: includes/class-sm-error-recovery.php:227
+msgctxt "button"
msgid "Reactivate Plugin"
msgstr ""
-#: includes/class-sm-error-recovery.php:222
-msgctxt "Title"
+#: includes/class-sm-error-recovery.php:234
+msgctxt "title"
msgid "Are you sure?"
msgstr ""
-#: includes/class-sm-error-recovery.php:224
+#: includes/class-sm-error-recovery.php:236
msgid ""
"If the issue is not fixed, website will crash. (but we will recover it again)"
msgstr ""
-#: includes/class-sm-error-recovery.php:226
+#: includes/class-sm-error-recovery.php:238
msgctxt "title"
msgid "Optional info"
msgstr ""
-#: includes/class-sm-error-recovery.php:228
+#: includes/class-sm-error-recovery.php:240
msgid ""
"If you have more information about the issue, please type it here (optional):"
msgstr ""
-#: includes/class-sm-error-recovery.php:230
-msgctxt "Label"
+#: includes/class-sm-error-recovery.php:242
+msgctxt "label"
msgid "Issue details"
msgstr ""
-#: includes/class-sm-error-recovery.php:232
-msgctxt "Placeholder"
+#: includes/class-sm-error-recovery.php:244
+msgctxt "placeholder"
msgid "Steps for how to reproduce, etc…"
msgstr ""
-#: includes/class-sm-error-recovery.php:233
+#: includes/class-sm-error-recovery.php:245
msgid "Email for further contact (optional)"
msgstr ""
-#: includes/class-sm-error-recovery.php:234
+#: includes/class-sm-error-recovery.php:246
msgid "name@example.com"
msgstr ""
-#: includes/class-sm-error-recovery.php:235
-#, fuzzy
-msgctxt "Label"
+#: includes/class-sm-error-recovery.php:247
+msgctxt "label"
msgid "Email"
msgstr "E-mail du propriétaire"
+#: includes/class-sm-install.php:158
+msgid "Monthly"
+msgstr ""
+
+#: includes/class-sm-install.php:173
+#, fuzzy
+msgid "View Sermon Manager settings"
+msgstr "Préférences de Sermon Manager"
+
+#: includes/class-sm-install.php:191
+msgid "Premium support"
+msgstr ""
+
+#: includes/class-sm-install.php:191
+msgid "Visit premium customer support"
+msgstr ""
+
+#. translators: %s Preachers label (sentence case; plural)
#: includes/class-sm-post-types.php:51
#, php-format
-msgctxt "Admin menu name"
+msgctxt "menu"
msgid "%s"
msgstr ""
+#. translators: %s Preachers label (lowercase; plural)
#: includes/class-sm-post-types.php:53 includes/types-taxonomies.php:96
#, fuzzy, php-format
msgid "Search %s"
msgstr "Rechercher dans les prédications"
+#. translators: %s Preachers label (lowercase; plural)
#: includes/class-sm-post-types.php:55 includes/types-taxonomies.php:98
#, php-format
msgid "All %s"
msgstr ""
+#. translators: %s Preacher label (lowercase; singular)
#: includes/class-sm-post-types.php:59 includes/types-taxonomies.php:99
#, fuzzy, php-format
msgid "Edit %s"
msgstr "Modifier"
+#. translators: %s Preacher label (lowercase; singular)
#: includes/class-sm-post-types.php:61 includes/types-taxonomies.php:100
#, fuzzy, php-format
msgid "Update %s"
msgstr "Mettre à jour les prédicateurs"
+#. translators: %s Preacher label (lowercase; singular)
#: includes/class-sm-post-types.php:63 includes/types-taxonomies.php:101
#, fuzzy, php-format
msgid "Add new %s"
msgstr "Ajouter"
+#. translators: %s Preacher label (lowercase; singular)
#: includes/class-sm-post-types.php:65
#, fuzzy, php-format
msgid "New %s name"
msgstr "Nom du nouveau prédicateur"
+#. translators: %s Preacher label (lowercase; singular)
#: includes/class-sm-post-types.php:67
#, fuzzy, php-format
msgid "No %s found"
@@ -267,8 +284,7 @@ msgid "Series"
msgstr "Séries de prédications"
#: includes/class-sm-post-types.php:83
-#, fuzzy
-msgctxt "Admin menu name"
+msgctxt "menu"
msgid "Series"
msgstr "Séries de prédications"
@@ -313,8 +329,7 @@ msgid "Topic"
msgstr "Sujets"
#: includes/class-sm-post-types.php:108
-#, fuzzy
-msgctxt "Admin menu name"
+msgctxt "menu"
msgid "Topics"
msgstr "Sujets"
@@ -366,7 +381,7 @@ msgid "Book"
msgstr ""
#: includes/class-sm-post-types.php:133
-msgctxt "Admin menu name"
+msgctxt "menu"
msgid "Books"
msgstr ""
@@ -416,8 +431,7 @@ msgid "Service Type"
msgstr "Type de culte"
#: includes/class-sm-post-types.php:158
-#, fuzzy
-msgctxt "Admin menu name"
+msgctxt "menu"
msgid "Service Types"
msgstr "Type de culte"
@@ -456,20 +470,23 @@ msgstr "Nom de la nouvelle série de prédication"
msgid "No service types found"
msgstr "Pas de prédication trouvée"
-#: includes/class-sm-post-types.php:192 includes/options.php:291
-#: includes/options.php:300 includes/types-taxonomies.php:58
+#: includes/class-sm-post-types.php:192 includes/options.php:269
+#: includes/options.php:278 includes/types-taxonomies.php:58
#: includes/types-taxonomies.php:68 views/archive-wpfc_sermon.php:13
msgid "Sermons"
msgstr "Prédications"
+#: includes/class-sm-post-types.php:193 includes/types-taxonomies.php:59
+msgid "Sermon"
+msgstr "Prédication"
+
#: includes/class-sm-post-types.php:194
#, fuzzy
msgid "All Sermons"
msgstr "Prédications"
#: includes/class-sm-post-types.php:195
-#, fuzzy
-msgctxt "Admin menu name"
+msgctxt "menu"
msgid "Sermons"
msgstr "Prédications"
@@ -482,12 +499,11 @@ msgstr "Ajouter"
msgid "Add new sermon"
msgstr "Ajouter une nouvelle prédication"
-#: includes/class-sm-post-types.php:198 views/archive-wpfc_sermon.php:61
-#: views/archive-wpfc_sermon.php:62 views/single-wpfc_sermon.php:35
-#: views/taxonomy-wpfc_bible_book.php:89 views/taxonomy-wpfc_preacher.php:95
-#: views/taxonomy-wpfc_sermon_series.php:96
-#: views/taxonomy-wpfc_sermon_topics.php:96
-#: views/taxonomy-wpfc_service_type.php:89
+#: includes/class-sm-post-types.php:198 views/archive-wpfc_sermon.php:62
+#: views/single-wpfc_sermon.php:23 views/taxonomy-wpfc_bible_book.php:90
+#: views/taxonomy-wpfc_preacher.php:96 views/taxonomy-wpfc_sermon_series.php:97
+#: views/taxonomy-wpfc_sermon_topics.php:97
+#: views/taxonomy-wpfc_service_type.php:90
msgid "Edit"
msgstr "Modifier"
@@ -563,237 +579,227 @@ msgstr "Fichiers de la prédication"
msgid "This is where you can add new sermons to your website."
msgstr "Les prédications les plus récentes sur votre site"
-#: includes/helper-functions.php:193 includes/template-tags.php:129
-#: includes/template-tags.php:400 includes/template-tags.php:426
-#: includes/template-tags.php:439 includes/template-tags.php:465
+#: includes/helper-functions.php:193 includes/template-tags.php:127
+#: includes/template-tags.php:410 includes/template-tags.php:456
#, fuzzy
msgid "Series: "
msgstr " Séries :"
-#: includes/options.php:74 includes/options.php:81
+#: includes/libraries/wp-background-process.php:423
+#, php-format
+msgid "Every %s minutes"
+msgstr ""
+
+#: includes/options.php:71 includes/options.php:165
msgid "Sermon Manager Settings"
msgstr "Préférences de Sermon Manager"
-#: includes/options.php:81 includes/options.php:94 includes/options.php:101
-#: includes/options.php:761 includes/options.php:770
-#: includes/taxonomy-images/taxonomy-images.php:333
+#: includes/options.php:71 includes/taxonomy-images/taxonomy-images.php:333
#: includes/taxonomy-images/taxonomy-images.php:1238
msgid "Settings"
msgstr "Préférences"
-#: includes/options.php:99 includes/options.php:106
-msgid "Support"
-msgstr "Support"
-
-#: includes/options.php:108 includes/options.php:115
-#: includes/taxonomy-images/taxonomy-images.php:1263
+#: includes/options.php:80 includes/taxonomy-images/taxonomy-images.php:1263
msgid "Manage Settings"
msgstr "Préférences"
-#: includes/options.php:197 includes/options.php:204
-msgid "Sermon Manager Options"
-msgstr "Options de Sermon Manager"
-
-#: includes/options.php:203 includes/options.php:209
+#: includes/options.php:170
#, fuzzy
msgid "General"
msgstr "Préférence générales"
-#: includes/options.php:205 includes/options.php:211
+#: includes/options.php:173
msgid "Verse"
msgstr ""
-#: includes/options.php:207 includes/options.php:213
+#: includes/options.php:176
#, fuzzy
msgid "Podcast"
msgstr "Préférence du podcast"
-#: includes/options.php:213 includes/options.php:219
-msgid "Options saved"
+#: includes/options.php:184
+msgid "Settings saved"
msgstr "Options sauvegardées."
-#: includes/options.php:222 includes/options.php:228
+#: includes/options.php:194
#, fuzzy
msgid "Need Some Help?"
msgstr "Besoin d'aide ?"
#. translators: %s see msgid "Sign up"
-#: includes/options.php:224 includes/options.php:230
+#: includes/options.php:198
#, php-format
msgid ""
"Did you know you can get expert support for only $49 per year! %s today and "
"get support from the developers who are building the Sermon Manager."
msgstr ""
-#: includes/options.php:224 includes/options.php:230
+#: includes/options.php:198
msgid "Sign up"
msgstr ""
-#: includes/options.php:227 includes/options.php:233
+#: includes/options.php:202
msgid "Free Support"
msgstr ""
-#: includes/options.php:228 includes/options.php:234
+#: includes/options.php:204
msgid "Priority Support"
msgstr ""
-#: includes/options.php:231 includes/options.php:237
+#: includes/options.php:207
msgid "We offer limited free support via WordPress.org"
msgstr ""
-#: includes/options.php:238 includes/options.php:243
+#: includes/options.php:214
msgid "Frequently Asked Questions"
msgstr ""
-#. translators: %s see msgid "Knowledge base"
-#: includes/options.php:253 includes/options.php:259
+#. translators: %s see msgid "knowledge base"
+#: includes/options.php:232
#, php-format
msgid "Find out more in our %s"
msgstr ""
-#: includes/options.php:253 includes/options.php:259
+#: includes/options.php:232
msgid "knowledge base"
msgstr ""
-#: includes/options.php:259 includes/options.php:265
+#: includes/options.php:239
msgid "Lets Make It Even Better!"
msgstr ""
-#: includes/options.php:264 includes/options.php:270
-msgid "Submit Your Idea"
-msgstr ""
-
-#: includes/options.php:267
+#: includes/options.php:242
msgid ""
"If you have ideas on how to make Sermon Manager or any of our products "
"better, let us know!"
msgstr ""
-#: includes/options.php:277 includes/options.php:283
+#: includes/options.php:246
+msgid "Submit Your Idea"
+msgstr ""
+
+#: includes/options.php:260
msgid "General Settings"
msgstr "Préférence générales"
-#: includes/options.php:281 includes/options.php:287
+#: includes/options.php:265
msgid "Archive Page Title"
msgstr "Archiver la page de titre"
-#: includes/options.php:289 includes/options.php:296
-msgid "Archive Page Slug"
-msgstr "Archiver le modèle de page"
-
-#: includes/options.php:291 includes/options.php:300 includes/options.php:490
-#: includes/options.php:494 includes/options.php:500 includes/options.php:504
-#: includes/options.php:510 includes/options.php:514 includes/options.php:520
-#: includes/options.php:524 includes/options.php:555 includes/options.php:559
-#: includes/options.php:603 includes/options.php:607 includes/options.php:616
-#: includes/options.php:620 includes/options.php:648 includes/options.php:661
+#: includes/options.php:269 includes/options.php:278 includes/options.php:488
+#: includes/options.php:498 includes/options.php:508 includes/options.php:518
+#: includes/options.php:554 includes/options.php:602 includes/options.php:615
+#: includes/options.php:643 includes/options.php:656
#, fuzzy, php-format
msgid "e.g. %s"
msgstr "ex "
+#: includes/options.php:274
+msgid "Archive Page Slug"
+msgstr "Archiver le modèle de page"
+
#. translators: %1$s see msgid "sermons/preacher", effectively sermons/preacher
#. translators: %2$s see msgid "sermons/series", effectively sermons/series
-#: includes/options.php:297 includes/options.php:305
+#: includes/options.php:285
#, php-format
msgid ""
"Common Base Slug — this is for users who want to have a common base "
"slug across all taxonomies, e.g. %1$s or %2$s."
msgstr ""
-#: includes/options.php:297 includes/options.php:305
+#: includes/options.php:285
#, fuzzy
msgid "sermons/preacher"
msgstr "Rechercher dans les prédicateurs"
-#: includes/options.php:297 includes/options.php:305
+#: includes/options.php:285
#, fuzzy
msgid "sermons/series"
msgstr "Séries de prédications"
-#: includes/options.php:302 includes/options.php:310
+#: includes/options.php:290
msgid "Enable a common base slug across all taxonomies"
msgstr ""
-#: includes/options.php:308 includes/options.php:316
+#: includes/options.php:296
#, fuzzy
msgid ""
"Enable Template Files — this is for users upgrading from an older "
"version who have issues with version 1.5+."
msgstr ""
-"Permettre les fichiers de template - Cela est pour les utilisateurs mettant "
-"à jour depuis une vieille version et qui ont des soucis avec la version 1.5+."
+"Permettre les fichiers de template - Cela est pour les utilisateurs mettant à "
+"jour depuis une vieille version et qui ont des soucis avec la version 1.5+."
#. translators: %s effectively /views
-#. Since /views is a locale independent folder name it MUST NOT be localized
-#: includes/options.php:313 includes/options.php:321
+#. translators: Since /views is a locale independent folder name it MUST NOT be localized
+#: includes/options.php:303
#, fuzzy, php-format
msgid "Enable template files found in the %s folder"
msgstr "Permettre les fichiers de template trouvés dans le dossier /views"
-#: includes/options.php:319 includes/options.php:327
+#: includes/options.php:309
msgid "Disable Sermon Styles"
msgstr "Désactiver les styles de prédication"
#. translators: %s effectively sermons.css
-#. Since sermons.css is a locale independent file name it MUST NOT be localized
-#: includes/options.php:324 includes/options.php:332
-#, fuzzy
+#: includes/options.php:315
+#, fuzzy, php-format
msgid ""
"Disable Sermon CSS. If you do this, you should copy the styles from %s and "
"include them in your theme CSS."
msgstr ""
"Désactiver les CSS sur les prédications. Si vous faites cela, vous devez "
-"copier les styles depuis sermons.css et l'inclure dans votre propre thème "
-"css."
+"copier les styles depuis sermons.css et l'inclure dans votre propre thème css."
-#: includes/options.php:338
+#: includes/options.php:321
msgid "Display audio player or video on archive pages"
msgstr ""
-#: includes/options.php:343
+#: includes/options.php:326
msgid "Display an audio player or video embed in the archive listing."
msgstr ""
-#: includes/options.php:349 includes/options.php:354
+#: includes/options.php:332 includes/options.php:337
msgid "Use old audio player"
msgstr ""
-#: includes/options.php:352 includes/options.php:360
+#: includes/options.php:343
msgid ""
"Custom label for “Preacher”. Note: it will also change preacher "
"slugs."
msgstr ""
-#: includes/options.php:360 includes/options.php:368
+#: includes/options.php:351
msgid "Sermon date format (used when creating a new Sermon)"
msgstr ""
-#: includes/options.php:389 includes/options.php:395
+#: includes/options.php:372 includes/options.php:378
msgid "Show key verse in widget"
msgstr ""
-#: includes/options.php:393 includes/options.php:401
+#. translators: %s version like x.x.x
+#: includes/options.php:385
#, php-format
msgid "Version %s"
msgstr ""
-#: includes/options.php:405 includes/options.php:406
+#: includes/options.php:389
msgid "Current Version"
msgstr ""
-#: includes/options.php:413 includes/options.php:414
+#: includes/options.php:398
msgid "Verse Settings"
msgstr "Préférence des versets"
-#: includes/options.php:418 includes/options.php:419
+#: includes/options.php:404
msgid "Verse Popups"
msgstr "Popup des versets"
-#: includes/options.php:424 includes/options.php:425
+#: includes/options.php:410
msgid "Disable Bib.ly verse popups"
msgstr "Désactiver les popup de Bib.ly"
-#: includes/options.php:430 includes/options.php:431
+#: includes/options.php:416
msgid "Select Bible Version for Verse Popups"
msgstr "Sélectionner la version de la bible à utiliser pour les popups"
@@ -802,108 +808,108 @@ msgstr "Sélectionner la version de la bible à utiliser pour les popups"
#. translators: %3$s effectively KJV
#. translators: %4$s effectively LEB
#. translators: %5$s see msgid "bib.ly", effectively bib.ly
-#: includes/options.php:444 includes/options.php:452
+#: includes/options.php:443
#, fuzzy, php-format
msgid "%1$s, %2$s, %3$s, or %4$s are the currently supported popups for %5$s."
msgstr "Les versions ESV, NET, KJV, et LEB sont actuellement supportées."
-#: includes/options.php:449 includes/options.php:457
+#: includes/options.php:448
msgid "bib.ly"
msgstr ""
#. translators: %s see effectively ESV
-#: includes/options.php:451 includes/options.php:459
+#: includes/options.php:451
#, php-format
msgid "Warning! %s is not supported if your site uses SSL (HTTPS)."
msgstr ""
-#: includes/options.php:464 includes/options.php:468
+#: includes/options.php:461
msgid "Podcast Settings"
msgstr "Préférence du podcast"
-#: includes/options.php:486 includes/options.php:490
+#: includes/options.php:484
msgid "Title"
msgstr "Titre"
-#: includes/options.php:496 includes/options.php:500
-#: includes/sm-cmb-functions.php:107 includes/types-taxonomies.php:323
+#: includes/options.php:494 includes/sm-cmb-functions.php:107
+#: includes/types-taxonomies.php:323
msgid "Description"
msgstr "Description"
-#: includes/options.php:506 includes/options.php:510
+#: includes/options.php:504
msgid "Website Link"
msgstr "Lien sur le site"
-#: includes/options.php:516 includes/options.php:520
+#: includes/options.php:514
msgid "Language"
msgstr "Langue"
-#: includes/options.php:526 includes/options.php:530
+#: includes/options.php:524
msgid "Copyright"
msgstr "Copyroght"
-#: includes/options.php:530 includes/options.php:534
+#: includes/options.php:528
#, fuzzy, php-format
msgid "e.g. Copyright © %s"
msgstr "ex Tous droits réservés"
#. translators: %s ©
-#: includes/options.php:535 includes/options.php:539
+#: includes/options.php:534
#, php-format
msgid "Tip: Use %s to generate a copyright symbol."
msgstr ""
-#: includes/options.php:541 includes/options.php:545
+#: includes/options.php:540
msgid "Webmaster Name"
msgstr "Nom du Webmaster"
-#: includes/options.php:545 includes/options.php:549
+#: includes/options.php:544
msgid "e.g. Your Name"
msgstr "ex : Votre Nom"
-#: includes/options.php:551 includes/options.php:555
+#: includes/options.php:550
msgid "Webmaster Email"
msgstr "E-mail du Webmaster"
-#: includes/options.php:561 includes/options.php:565
+#: includes/options.php:560
msgid "Author"
msgstr "Auteur"
-#: includes/options.php:565 includes/options.php:569
+#: includes/options.php:564
msgid "e.g. Primary Speaker or Church Name"
msgstr "ex : Personne principale ou nom de l'église"
-#: includes/options.php:569 includes/options.php:573
+#: includes/options.php:568
#, fuzzy
msgid "This will display at the “Artist” in the iTunes Store."
msgstr "Cela va apparaître dans la partie \"Artiste\" dans l'iTunes store."
-#: includes/options.php:574 includes/options.php:578
+#: includes/options.php:573
msgid "Subtitle"
msgstr "Sous-titre"
-#: includes/options.php:578 includes/options.php:582
+#: includes/options.php:577
#, fuzzy, php-format
msgid "e.g. Preaching and teaching audio from %s"
msgstr "ex : Prédication et enseignements audio"
-#: includes/options.php:582 includes/options.php:586
+#: includes/options.php:581
msgid ""
"Your subtitle should briefly tell the listener what they can expect to hear."
msgstr ""
"Vos sous-titres doivent courtement expliquer à votre auditeur ce qu'il est "
"sensé écouter."
-#: includes/options.php:587 includes/options.php:591
+#: includes/options.php:586
msgid "Summary"
msgstr "Résumé"
-#: includes/options.php:591 includes/options.php:595
+#: includes/options.php:590
#, fuzzy, php-format
msgid "e.g. Weekly teaching audio brought to you by %s in City, State."
msgstr "ex : Enseignement hebdomadaire présenté par"
-#: includes/options.php:594 includes/options.php:598
+#: includes/options.php:593
msgid ""
"Keep your Podcast Summary short, sweet and informative. Be sure to include a "
"brief statement about your mission and in what region your audio content "
@@ -913,175 +919,173 @@ msgstr ""
"d'inclure un bref résumé à propos de votre mission, et quelle est la "
"provenance de votre contenu."
-#: includes/options.php:599 includes/options.php:603
+#: includes/options.php:598
msgid "Owner Name"
msgstr "Propriétaire"
-#: includes/options.php:607 includes/options.php:611
+#: includes/options.php:606
msgid "This should typically be the name of your Church."
msgstr "Cela est typiquement le nom de votre église."
-#: includes/options.php:612 includes/options.php:616
+#: includes/options.php:611
msgid "Owner Email"
msgstr "E-mail du propriétaire"
-#: includes/options.php:620 includes/options.php:624
+#: includes/options.php:619
#, fuzzy
msgid ""
"Use an email address that you don’t mind being made public. If someone "
-"wants to contact you regarding your Podcast this is the address they will "
-"use."
+"wants to contact you regarding your Podcast this is the address they will use."
msgstr ""
"Utilisez une adresse qui ne vous dérange pas d'être publique. Si quelqu'un "
"désire vous contacter suite à l'écoute du podcast, il utilisera surement "
"cette adresse."
-#: includes/options.php:625 includes/options.php:629
+#: includes/options.php:624
msgid "Cover Image"
msgstr "Image de couverture"
-#: includes/options.php:632 includes/options.php:636
+#: includes/options.php:631
#, fuzzy
msgid "Upload Image"
msgstr "Charger."
-#: includes/options.php:635 includes/options.php:639
+#: includes/options.php:634
#, fuzzy
msgid ""
"This JPG will serve as the Podcast artwork in the iTunes Store. The image "
-"must be between 1,400px by 1,400px and 3,000px by 3,000px or else iTunes "
-"will not accept your feed."
+"must be between 1,400px by 1,400px and 3,000px by 3,000px or else iTunes will "
+"not accept your feed."
msgstr ""
-"Cette image jpeg sera utilisée comme icône par l'iTunes store. Cela doit "
-"être une image de 1400px par 1400px."
+"Cette image jpeg sera utilisée comme icône par l'iTunes store. Cela doit être "
+"une image de 1400px par 1400px."
-#: includes/options.php:640 includes/options.php:644
+#: includes/options.php:639
msgid "Top Category"
msgstr "Catégorie principale"
-#: includes/options.php:648 includes/options.php:652
+#: includes/options.php:647
msgid ""
"Choose the appropriate top-level category for your Podcast listing in iTunes."
msgstr ""
-"Choisissez la catégorie principale appropriée pour votre liste de podcast "
-"sur iTunes."
+"Choisissez la catégorie principale appropriée pour votre liste de podcast sur "
+"iTunes."
-#: includes/options.php:653 includes/options.php:657
+#: includes/options.php:652
msgid "Sub Category"
msgstr "Sous-catégorie"
-#: includes/options.php:661 includes/options.php:665
+#: includes/options.php:660
msgid "Choose the appropriate sub category for your Podcast listing in iTunes."
msgstr ""
"Choisissez la sous-catégorie appropriée pour votre liste de podcast sur "
"iTunes."
-#: includes/options.php:666 includes/options.php:670
+#: includes/options.php:665
msgid "PodTrac Tracking"
msgstr ""
-#: includes/options.php:671 includes/options.php:675
+#: includes/options.php:670
msgid "Enables PodTrac tracking."
msgstr ""
#. translators: %s podtrac.com
-#: includes/options.php:675 includes/options.php:679
+#: includes/options.php:675
#, php-format
msgid "For more info on PodTrac or to sign up for an account, visit %s"
msgstr ""
-#: includes/options.php:680 includes/options.php:684
+#: includes/options.php:680
#, fuzzy
msgid "HTML in description"
msgstr "Description"
-#: includes/options.php:686 includes/options.php:690
+#: includes/options.php:686
msgid "Enable HTML description"
msgstr ""
-#: includes/options.php:690 includes/options.php:694
+#: includes/options.php:690
msgid ""
"Enables showing of HTML in iTunes description field. Uncheck if description "
"looks messy."
msgstr ""
-#: includes/options.php:695 includes/options.php:699
+#: includes/options.php:695
#, fuzzy
msgid "Number of podcasts to show"
msgstr "Nombre de prédication à afficher :"
-#: includes/options.php:704 includes/options.php:708
+#: includes/options.php:704
msgid ""
"Shows custom podcast count. If not defined, it uses WordPress default count."
msgstr ""
-#: includes/options.php:715
+#: includes/options.php:711
#, fuzzy
msgid "Feed URL to Submit to iTunes"
msgstr "Soumettre à iTunes"
-#: includes/options.php:722 includes/options.php:725
+#: includes/options.php:722
msgid "Feed Validator"
msgstr "validateur de flux"
#. translators: %s Feed Validator link, see msgid "Feed Validator"
-#: includes/options.php:722 includes/options.php:725
+#: includes/options.php:722
#, fuzzy, php-format
msgid ""
-"Use the %s to diagnose and fix any problems before submitting your Podcast "
-"to iTunes."
+"Use the %s to diagnose and fix any problems before submitting your Podcast to "
+"iTunes."
msgstr ""
"pour diagnostiquer et corriger tous les problèmes avant de soumettre votre "
"podcast à iTunes."
#. translators: %s see msgid "Submit Your Podcast"
-#: includes/options.php:725 includes/options.php:728
+#: includes/options.php:726
#, fuzzy, php-format
msgid ""
"Once your Podcast Settings are complete and your Sermons are ready, it’"
"s time to %s to the iTunes Store!"
msgstr ""
-"Une fois les préférences de votre podcast complétées, et que vos "
-"prédications sont prêtes, il est temps de"
+"Une fois les préférences de votre podcast complétées, et que vos prédications "
+"sont prêtes, il est temps de"
-#: includes/options.php:725 includes/options.php:728
+#: includes/options.php:726
msgid "Submit Your Podcast"
msgstr "Soumettre votre podcast"
#. translators: %s see msgid "FeedBurner"
-#: includes/options.php:727 includes/options.php:731
+#: includes/options.php:730
#, fuzzy, php-format
msgid ""
-"Alternatively, if you want to track your Podcast subscribers, simply pass "
-"the Podcast Feed URL above through %s. FeedBurner will then give you a new "
-"URL to submit to iTunes instead."
+"Alternatively, if you want to track your Podcast subscribers, simply pass the "
+"Podcast Feed URL above through %s. FeedBurner will then give you a new URL to "
+"submit to iTunes instead."
msgstr ""
"Alternativement, si vous voulez tracer les souscrivants à votre podcast, "
"passez simplement l'url du flux à travers"
-#: includes/options.php:727 includes/options.php:731
+#: includes/options.php:730
msgid "FeedBurner"
msgstr "FeedBurner"
#. translators: %s see msgid "iTunes FAQ for Podcast Makers"
-#: includes/options.php:730 includes/options.php:734
+#: includes/options.php:734
#, fuzzy, php-format
msgid "Please read the %s for more information."
msgstr "pour d'avantage d'informations."
-#: includes/options.php:730 includes/options.php:734
+#: includes/options.php:734
msgid "iTunes FAQ for Podcast Makers"
msgstr "FAQ d'iTunes pour les créateurs de podcasts"
-#: includes/options.php:742 includes/options.php:751
-#: includes/taxonomy-images/taxonomy-images.php:395
+#. translators: Button on the custom administration page.
+#: includes/options.php:742 includes/taxonomy-images/taxonomy-images.php:395
msgid "Save Changes"
msgstr "Sauvegarder les changements"
-#: includes/shortcodes.php:781 includes/shortcodes.php:786
-#: includes/template-tags.php:114 views/archive-wpfc_sermon.php:40
-#: views/taxonomy-wpfc_bible_book.php:72 views/taxonomy-wpfc_preacher.php:78
-#: views/taxonomy-wpfc_sermon_series.php:79
+#: includes/shortcodes.php:805 includes/template-tags.php:112
+#: views/archive-wpfc_sermon.php:40 views/taxonomy-wpfc_bible_book.php:72
+#: views/taxonomy-wpfc_preacher.php:78 views/taxonomy-wpfc_sermon_series.php:79
#: views/taxonomy-wpfc_sermon_topics.php:79
#: views/taxonomy-wpfc_service_type.php:72
#, php-format
@@ -1096,7 +1100,7 @@ msgstr "Détails de la prédication"
msgid "(optional)"
msgstr ""
-#. translators: %s date format, effectively d/m/Y
or the like
+#. translators: %s date format, effectively d/m/Y
or the like
#: includes/sm-cmb-functions.php:86 includes/types-taxonomies.php:302
#, php-format
msgid "format: %s"
@@ -1112,7 +1116,7 @@ msgstr ""
msgid "Main Bible Passage"
msgstr "Passage biblique principal"
-#. translators: %s see msgid "John 3:16-18", effectively John 3:16-18
+#. translators: %s see msgid "John 3:16-18", effectively John 3:16-18
#: includes/sm-cmb-functions.php:102 includes/types-taxonomies.php:318
#, fuzzy, php-format
msgid "Enter the Bible passage with the full book names, e.g. %s."
@@ -1127,8 +1131,8 @@ msgstr ""
msgid ""
"Type a brief description about this sermon, an outline, or a full manuscript"
msgstr ""
-"Indiquez une brève description à propose de ce message, un résumé ou le "
-"texte complet"
+"Indiquez une brève description à propose de ce message, un résumé ou le texte "
+"complet"
#: includes/sm-cmb-functions.php:116 includes/types-taxonomies.php:332
msgid "Sermon Files"
@@ -1146,7 +1150,7 @@ msgstr "Chargez un fichier audio ou indiquez une URL."
msgid "MP3 Duration"
msgstr ""
-#. translators: %s see msgid "hh:mm:ss", effectively hh:mm:ss
+#. translators: %s see msgid "hh:mm:ss", effectively hh:mm:ss
#: includes/sm-cmb-functions.php:135 includes/types-taxonomies.php:351
#, php-format
msgid ""
@@ -1185,8 +1189,14 @@ msgstr "Fichiers de la prédication"
msgid "Upload a pdf file or enter an URL."
msgstr "Charger un fichier pdf ou indiquez une URL."
-#: includes/sm-cmb-functions.php:162 includes/template-tags.php:371
-#: includes/template-tags.php:397 includes/types-taxonomies.php:378
+#: includes/sm-cmb-functions.php:158 includes/sm-cmb-functions.php:167
+#: includes/types-taxonomies.php:374 includes/types-taxonomies.php:383
+#, fuzzy
+msgid "Add File"
+msgstr "Ajouter"
+
+#: includes/sm-cmb-functions.php:162 includes/template-tags.php:376
+#: includes/types-taxonomies.php:378
msgid "Bulletin"
msgstr ""
@@ -1232,27 +1242,27 @@ msgstr "Prédications"
#. translators: %4$s effectively tag.php
#. translators: %5$s effectively taxonomy.php
#. translators: %6$s see msgid "template hierarchy"
-#: includes/taxonomy-images/public-filters.php:385
+#: includes/taxonomy-images/public-filters.php:391
#, fuzzy, php-format
msgid ""
"%1$s is not a property of the current queried object. This usually happens "
-"when the %2$s filter is used in an unsupported template file. This filter "
-"has been designed to work in taxonomy archives which are traditionally "
-"served by one of the following template files: %3$s, %4$s or %5$s. Learn "
-"more about %6$s."
+"when the %2$s filter is used in an unsupported template file. This filter has "
+"been designed to work in taxonomy archives which are traditionally served by "
+"one of the following template files: %3$s, %4$s or %5$s. Learn more about "
+"%6$s."
msgstr ""
"%1$s n'est pas une propriété de la requête sur l'objet courant. Cela "
-"intervient habituellement quand le filtre %2$s est utilisé avec un fichier "
-"de template non-supporté. Ce filtre a été concu pour travaillé avec les "
+"intervient habituellement quand le filtre %2$s est utilisé avec un fichier de "
+"template non-supporté. Ce filtre a été concu pour travaillé avec les "
"anciennes archives qui sont traditionellement servies par l'un des templates "
"suivant : category.php, tag.php ou taxonomy.php. En savoir d'avantage à "
"propos de %3$s."
-#: includes/taxonomy-images/public-filters.php:386
+#: includes/taxonomy-images/public-filters.php:392
msgid "term_taxonomy_id"
msgstr "term_taxonomy_id"
-#: includes/taxonomy-images/public-filters.php:391
+#: includes/taxonomy-images/public-filters.php:397
msgid "template hierarchy"
msgstr ""
@@ -1271,10 +1281,12 @@ msgstr "ce terme"
msgid "Remove association with %1$s"
msgstr "Retirer l'association avec %1$s"
+#. translators: Notice displayed on the custom administration page.
#: includes/taxonomy-images/taxonomy-images.php:290
msgid "Image support for taxonomies successfully updated"
msgstr "Support des images pour les taxonomies mises à jour avec succès"
+#. translators: Notice displayed on the custom administration page.
#: includes/taxonomy-images/taxonomy-images.php:293
msgid "Image support has been disabled for all taxonomies."
msgstr "Le support des images à été désactivé pour toutes les taxonomies."
@@ -1288,10 +1300,12 @@ msgstr "Taxonomies"
msgid "Taxonomy Images"
msgstr "Images des Taxonomies"
+#. translators: Heading of the custom administration page.
#: includes/taxonomy-images/taxonomy-images.php:387
msgid "Taxonomy Images Plugin Settings"
msgstr "Préférences du plugin de gestion des images de taxonomie"
+#. translators: An ajax request has failed for an unknown reason.
#: includes/taxonomy-images/taxonomy-images.php:447
msgid "Unknown error encountered"
msgstr "Une erreur inconnue est intervenue"
@@ -1312,7 +1326,6 @@ msgid "You do not have the correct capability to manage this term"
msgstr "Vous n'avez pas les bonnes capacité pour gérer ce terme"
#: includes/taxonomy-images/taxonomy-images.php:551
-#: includes/taxonomy-images/taxonomy-images.php:633
msgid "No nonce included."
msgstr "Pas d'instance incluse."
@@ -1418,8 +1431,8 @@ msgstr "Retiré avec succès"
#: includes/taxonomy-images/taxonomy-images.php:1162
#, php-format
msgid ""
-"The %1$s argument for %2$s is set to %3$s which is not a registered "
-"taxonomy. Please check the spelling and update the argument."
+"The %1$s argument for %2$s is set to %3$s which is not a registered taxonomy. "
+"Please check the spelling and update the argument."
msgstr ""
"L'argument %1$s pour %2$s est définit pour %3$s avec une taxonomie non-"
"enregistrée. Merci de vérifier l'orthographe et mettre à jour l'argument."
@@ -1450,16 +1463,13 @@ msgstr "Don"
#: includes/taxonomy-images/taxonomy-images.php:1302
#: includes/taxonomy-images/taxonomy-images.php:1303
-#: includes/template-tags.php:160 includes/types-taxonomies.php:94
-#: includes/types-taxonomies.php:96 includes/types-taxonomies.php:97
-#: includes/types-taxonomies.php:98 includes/types-taxonomies.php:99
+#: includes/types-taxonomies.php:94 includes/types-taxonomies.php:96
+#: includes/types-taxonomies.php:97 includes/types-taxonomies.php:99
#: includes/types-taxonomies.php:100 includes/types-taxonomies.php:101
-#: includes/types-taxonomies.php:102 includes/types-taxonomies.php:103
-#: includes/types-taxonomies.php:104 includes/types-taxonomies.php:105
+#: includes/types-taxonomies.php:102 includes/types-taxonomies.php:104
msgid "Preacher"
msgstr "Prédicateur"
-#. translators: %s see msgid "Preacher"
#: includes/taxonomy-images/taxonomy-images.php:1302
#: includes/taxonomy-images/taxonomy-images.php:1303
#, fuzzy, php-format
@@ -1472,46 +1482,46 @@ msgstr "Rechercher une série de prédication"
msgid "Set Series image"
msgstr "Supprimer cette image"
-#: includes/template-tags.php:127 includes/template-tags.php:398
-#: includes/template-tags.php:424 includes/template-tags.php:437
-#: includes/template-tags.php:463 includes/widgets.php:96
+#: includes/template-tags.php:125 includes/template-tags.php:408
+#: includes/template-tags.php:454 includes/widgets.php:96
msgid "Bible Text: "
msgstr ""
-#: includes/template-tags.php:160
+#. Translators: %s: Preacher label (sentence case; singular)
+#: includes/template-tags.php:158
#, fuzzy, php-format
msgid "Filter by %s"
msgstr "Modifier la prédication"
-#: includes/template-tags.php:165
+#: includes/template-tags.php:163
#, fuzzy
msgid "Filter by Series"
msgstr "Organiser par séries"
-#: includes/template-tags.php:170
+#: includes/template-tags.php:168
#, fuzzy
msgid "Filter by Topic"
msgstr "Organiser par séries"
-#: includes/template-tags.php:175
+#: includes/template-tags.php:173
#, fuzzy
msgid "Filter by Book"
msgstr "Prédications par : %s"
-#: includes/template-tags.php:363 includes/template-tags.php:389
+#: includes/template-tags.php:368
#, fuzzy
msgid "Download Files"
msgstr "Fichier uploadés"
-#: includes/template-tags.php:365 includes/template-tags.php:391
+#: includes/template-tags.php:370
msgid "MP3"
msgstr ""
-#: includes/template-tags.php:368 includes/template-tags.php:394
+#: includes/template-tags.php:373
msgid "Notes"
msgstr ""
-#: includes/template-tags.php:413 includes/template-tags.php:439
+#: includes/template-tags.php:423
#, fuzzy
msgid "Sermon Topics: "
msgstr "Sujets des prédications"
@@ -1757,11 +1767,6 @@ msgstr "Choisir parmis les sujets de prédication les plus utilisés"
msgid "Add Sermon Audio"
msgstr "Ajouter une nouvelle prédication"
-#: includes/types-taxonomies.php:374 includes/types-taxonomies.php:383
-#, fuzzy
-msgid "Add File"
-msgstr "Ajouter"
-
#: includes/vendor/abstract-wp-rest-controller.php:29
#, php-format
msgid "The %s method must be overridden."
@@ -1827,98 +1832,75 @@ msgstr "Options de Sermon Manager"
msgid "Add audio and video sermons, manage speakers, series, and more."
msgstr ""
-#. translators: %s see msgid "←", effectively ←
-#: views/archive-wpfc_sermon.php:18 views/archive-wpfc_sermon.php:70
-#: views/archive-wpfc_sermon.php:71
+#: sermons.php:32
+#, php-format
+msgid "PHP %s"
+msgstr ""
+
+#. translators: %1$s current PHP version, see msgid "PHP %s", effectively PHP %s
+#. translators: %2$s required PHP version, see msgid "PHP %s", effectively PHP %s
+#: sermons.php:32
+#, php-format
+msgid "You are running %1$s, but Sermon Manager requires at least %2$s."
+msgstr ""
+
+#. translators: %s see msgid "←", effectively ←
+#: views/archive-wpfc_sermon.php:18 views/archive-wpfc_sermon.php:71
#, fuzzy, php-format
msgid "%s Older sermons"
msgstr "Modifier la prédication"
-#: views/archive-wpfc_sermon.php:18 views/archive-wpfc_sermon.php:70
-#: views/taxonomy-wpfc_bible_book.php:36 views/taxonomy-wpfc_bible_book.php:99
-#: views/taxonomy-wpfc_preacher.php:42 views/taxonomy-wpfc_preacher.php:105
-#: views/taxonomy-wpfc_sermon_series.php:43
-#: views/taxonomy-wpfc_sermon_series.php:106
-#: views/taxonomy-wpfc_sermon_topics.php:43
-#: views/taxonomy-wpfc_sermon_topics.php:106
-#: views/taxonomy-wpfc_service_type.php:36
-#: views/taxonomy-wpfc_service_type.php:99
-#, fuzzy
-msgid "←"
-msgstr "←"
-
-#: views/archive-wpfc_sermon.php:21 views/archive-wpfc_sermon.php:73
-#: views/taxonomy-wpfc_bible_book.php:38
-#: views/taxonomy-wpfc_bible_book.php:101 views/taxonomy-wpfc_preacher.php:44
-#: views/taxonomy-wpfc_preacher.php:107
-#: views/taxonomy-wpfc_sermon_series.php:52
-#: views/taxonomy-wpfc_sermon_series.php:108
-#: views/taxonomy-wpfc_sermon_topics.php:45
-#: views/taxonomy-wpfc_service_type.php:20
-#: views/taxonomy-wpfc_service_type.php:38
-#: views/taxonomy-wpfc_service_type.php:101
-#, fuzzy
-msgid "→"
-msgstr "→"
-
-#. translators: %s see msgid "→", effectively →
-#: views/archive-wpfc_sermon.php:21 views/archive-wpfc_sermon.php:73
-#: views/archive-wpfc_sermon.php:74
+#. translators: %s see msgid "→", effectively →
+#: views/archive-wpfc_sermon.php:21 views/archive-wpfc_sermon.php:74
#, fuzzy, php-format
msgid "Newer sermons %s"
msgstr "Nouvelle prédication"
#: views/archive-wpfc_sermon.php:28 views/taxonomy-wpfc_bible_book.php:45
-#: views/taxonomy-wpfc_preacher.php:51
-#: views/taxonomy-wpfc_sermon_series.php:52
+#: views/taxonomy-wpfc_preacher.php:51 views/taxonomy-wpfc_sermon_series.php:52
#: views/taxonomy-wpfc_sermon_topics.php:52
#: views/taxonomy-wpfc_service_type.php:45
msgid "Not Found"
msgstr "Pas trouvé"
#: views/archive-wpfc_sermon.php:30 views/taxonomy-wpfc_bible_book.php:47
-#: views/taxonomy-wpfc_preacher.php:53
-#: views/taxonomy-wpfc_sermon_series.php:54
+#: views/taxonomy-wpfc_preacher.php:53 views/taxonomy-wpfc_sermon_series.php:54
#: views/taxonomy-wpfc_sermon_topics.php:54
#: views/taxonomy-wpfc_service_type.php:47
msgid "Apologies, but no sermons were found."
msgstr "Désolé, mais aucune prédication n'a été trouvée."
-#. translators: %s date
#: views/archive-wpfc_sermon.php:47 views/taxonomy-wpfc_bible_book.php:77
-#: views/taxonomy-wpfc_preacher.php:83
-#: views/taxonomy-wpfc_sermon_series.php:84
+#: views/taxonomy-wpfc_preacher.php:83 views/taxonomy-wpfc_sermon_series.php:84
#: views/taxonomy-wpfc_sermon_topics.php:84
#: views/taxonomy-wpfc_service_type.php:77
#, fuzzy, php-format
msgid "Preached on %s"
msgstr "Prédicateurs"
-#: views/archive-wpfc_sermon.php:59 views/archive-wpfc_sermon.php:60
-#: views/taxonomy-wpfc_bible_book.php:88 views/taxonomy-wpfc_preacher.php:94
-#: views/taxonomy-wpfc_sermon_series.php:95
-#: views/taxonomy-wpfc_sermon_topics.php:95
-#: views/taxonomy-wpfc_service_type.php:88
+#: views/archive-wpfc_sermon.php:60 views/taxonomy-wpfc_bible_book.php:89
+#: views/taxonomy-wpfc_preacher.php:95 views/taxonomy-wpfc_sermon_series.php:96
+#: views/taxonomy-wpfc_sermon_topics.php:96
+#: views/taxonomy-wpfc_service_type.php:89
#, fuzzy, php-format
msgid "%s comment"
msgid_plural "%s comments"
msgstr[0] "% commentaires"
msgstr[1] "% commentaires"
-#: views/archive-wpfc_sermon.php:59 views/archive-wpfc_sermon.php:60
-#: views/taxonomy-wpfc_bible_book.php:88 views/taxonomy-wpfc_preacher.php:94
-#: views/taxonomy-wpfc_sermon_series.php:95
-#: views/taxonomy-wpfc_sermon_topics.php:95
-#: views/taxonomy-wpfc_service_type.php:88
+#: views/archive-wpfc_sermon.php:60 views/taxonomy-wpfc_bible_book.php:89
+#: views/taxonomy-wpfc_preacher.php:95 views/taxonomy-wpfc_sermon_series.php:96
+#: views/taxonomy-wpfc_sermon_topics.php:96
+#: views/taxonomy-wpfc_service_type.php:89
msgid "Leave a comment"
msgstr "Laisser un commentaire"
-#: views/single-wpfc_sermon.php:42
+#: views/single-wpfc_sermon.php:30
msgctxt "Previous post link"
msgid "←"
msgstr "←"
-#: views/single-wpfc_sermon.php:44
+#: views/single-wpfc_sermon.php:33
msgctxt "Next post link"
msgid "→"
msgstr "→"
@@ -1928,29 +1910,50 @@ msgstr "→"
msgid "Sermons by Book: %s"
msgstr "Prédications par : %s"
-#. translators: %s see msgid "←", effectively ←
-#: views/taxonomy-wpfc_bible_book.php:36 views/taxonomy-wpfc_bible_book.php:99
-#: views/taxonomy-wpfc_preacher.php:42 views/taxonomy-wpfc_preacher.php:105
+#. translators: %s see msgid "←", effectively ←
+#: views/taxonomy-wpfc_bible_book.php:36 views/taxonomy-wpfc_bible_book.php:100
+#: views/taxonomy-wpfc_preacher.php:42 views/taxonomy-wpfc_preacher.php:106
#: views/taxonomy-wpfc_sermon_series.php:43
-#: views/taxonomy-wpfc_sermon_series.php:106
+#: views/taxonomy-wpfc_sermon_series.php:107
#: views/taxonomy-wpfc_sermon_topics.php:43
-#: views/taxonomy-wpfc_sermon_topics.php:106
+#: views/taxonomy-wpfc_sermon_topics.php:107
#: views/taxonomy-wpfc_service_type.php:36
-#: views/taxonomy-wpfc_service_type.php:99
+#: views/taxonomy-wpfc_service_type.php:100
#, php-format
msgid "%s Older posts"
msgstr ""
-#. translators: %s see msgid "→", effectively →
-#: views/taxonomy-wpfc_bible_book.php:38
-#: views/taxonomy-wpfc_bible_book.php:101 views/taxonomy-wpfc_preacher.php:44
-#: views/taxonomy-wpfc_preacher.php:107
+#: views/taxonomy-wpfc_bible_book.php:36 views/taxonomy-wpfc_bible_book.php:100
+#: views/taxonomy-wpfc_preacher.php:42 views/taxonomy-wpfc_preacher.php:106
+#: views/taxonomy-wpfc_sermon_series.php:43
+#: views/taxonomy-wpfc_sermon_series.php:107
+#: views/taxonomy-wpfc_sermon_topics.php:43
+#: views/taxonomy-wpfc_sermon_topics.php:107
+#: views/taxonomy-wpfc_service_type.php:36
+#: views/taxonomy-wpfc_service_type.php:100
+msgid "←"
+msgstr "←"
+
+#: views/taxonomy-wpfc_bible_book.php:38 views/taxonomy-wpfc_bible_book.php:102
+#: views/taxonomy-wpfc_preacher.php:44 views/taxonomy-wpfc_preacher.php:108
+#: views/taxonomy-wpfc_sermon_series.php:45
+#: views/taxonomy-wpfc_sermon_series.php:109
+#: views/taxonomy-wpfc_sermon_topics.php:45
+#: views/taxonomy-wpfc_sermon_topics.php:109
+#: views/taxonomy-wpfc_service_type.php:38
+#: views/taxonomy-wpfc_service_type.php:102
+msgid "→"
+msgstr "→"
+
+#. translators: %s see msgid "→", effectively →
+#: views/taxonomy-wpfc_bible_book.php:38 views/taxonomy-wpfc_bible_book.php:102
+#: views/taxonomy-wpfc_preacher.php:44 views/taxonomy-wpfc_preacher.php:108
#: views/taxonomy-wpfc_sermon_series.php:45
-#: views/taxonomy-wpfc_sermon_series.php:108
+#: views/taxonomy-wpfc_sermon_series.php:109
#: views/taxonomy-wpfc_sermon_topics.php:45
-#: views/taxonomy-wpfc_sermon_topics.php:108
+#: views/taxonomy-wpfc_sermon_topics.php:109
#: views/taxonomy-wpfc_service_type.php:38
-#: views/taxonomy-wpfc_service_type.php:101
+#: views/taxonomy-wpfc_service_type.php:102
#, php-format
msgid "Newer posts %s"
msgstr ""
diff --git a/languages/sermon-manager-for-wordpress-pl_PL.mo b/languages/sermon-manager-for-wordpress-pl_PL.mo
index 1b9fd90..5288c8a 100644
Binary files a/languages/sermon-manager-for-wordpress-pl_PL.mo and b/languages/sermon-manager-for-wordpress-pl_PL.mo differ
diff --git a/languages/sermon-manager-for-wordpress-pl_PL.po b/languages/sermon-manager-for-wordpress-pl_PL.po
index 4317e9b..e1c6b0a 100644
--- a/languages/sermon-manager-for-wordpress-pl_PL.po
+++ b/languages/sermon-manager-for-wordpress-pl_PL.po
@@ -4,8 +4,8 @@ msgid ""
msgstr ""
"Project-Id-Version: sermon-manager-for-wordpress\n"
"Report-Msgid-Bugs-To: http://wordpress.org/tag/sermon-manager-for-wordpress\n"
-"POT-Creation-Date: 2017-10-01 07:03:00+0200\n"
-"PO-Revision-Date: 2017-10-02 12:56:00+0200\n"
+"POT-Creation-Date: 2017-10-10 14:00:00+0200\n"
+"PO-Revision-Date: 2017-10-10 14:17:00+0200\n"
"Last-Translator: GITNE \n"
"Language-Team: WP for Church\n"
"Language: pl\n"
@@ -16,224 +16,266 @@ msgstr ""
"|| n%100>=20) ? 1 : 2);\n"
#. translators: %s see msgid "View sermon", effectively View sermon
-#: includes/admin-functions.php:124
+#: includes/admin-functions.php:125
+#, php-format
msgid "Sermon updated. %s"
msgstr "Zaktualizowano kazanie. %s"
-#: includes/admin-functions.php:124 includes/admin-functions.php:130
-#: includes/admin-functions.php:136 includes/class-sm-post-types.php:201
+#: includes/admin-functions.php:125 includes/admin-functions.php:132
+#: includes/admin-functions.php:144 includes/class-sm-post-types.php:201
#: includes/class-sm-post-types.php:202
msgid "View sermon"
msgstr "Podgląd kazania"
-#: includes/admin-functions.php:125
+#: includes/admin-functions.php:126
msgid "Custom field updated."
msgstr "Zaktualizowano pole zindywidualizowane"
-#: includes/admin-functions.php:126
+#: includes/admin-functions.php:127
msgid "Custom field deleted."
msgstr "Usunięto pole zindywidualizowane"
-#: includes/admin-functions.php:127
+#: includes/admin-functions.php:128
msgid "Sermon updated."
msgstr "Zaktualizowano kazanie"
-#: includes/admin-functions.php:129
+#. translators: %s date and time of the revision
+#: includes/admin-functions.php:130
+#, php-format
msgid "Sermon restored to revision from %s"
msgstr "Przywrócono stan kazania z %s"
#. translators: %s see msgid "View sermon", effectively View sermon
-#: includes/admin-functions.php:130
+#: includes/admin-functions.php:132
+#, php-format
msgid "Sermon published. %s"
msgstr "Opublikowano kazanie. %s"
-#: includes/admin-functions.php:131
+#: includes/admin-functions.php:133
msgid "Sermon saved."
msgstr "Zapisano kazanie."
-#: includes/admin-functions.php:132 includes/admin-functions.php:135
+#: includes/admin-functions.php:135 includes/admin-functions.php:142
msgid "Preview sermon"
msgstr "Podgląd prototypu kazania"
#. translators: %s see msgid "Preview sermon", effectively Preview sermon
-#: includes/admin-functions.php:132
+#: includes/admin-functions.php:135
+#, php-format
msgid "Sermon submitted. %s"
msgstr "Wysłano kazanie. %s"
#. translators: %1$s see msgid "%1$s at %2$s", effectively at
#. translators: %2$s see msgid "Preview sermon", effectively Preview sermon
-#: includes/admin-functions.php:133
+#: includes/admin-functions.php:138
+#, php-format
msgid "Sermon scheduled for: %1$s. %2$s"
msgstr "Zaplanowano kazanie na %1$s. %2$s"
#. translators: %1$s date
#. translators: %2$s time
-#: includes/admin-functions.php:134 includes/admin-functions.php:135
+#: includes/admin-functions.php:141
+#, php-format
msgid "%1$s at %2$s"
msgstr "%1$s o godzinie %2$s"
#. translators: %s see msgid "Preview sermon", effectively Preview sermon
-#: includes/admin-functions.php:136
+#: includes/admin-functions.php:144
+#, php-format
msgid "Sermon draft updated. %s"
msgstr "Zaktualizowano szkic kazania. %s"
-#: includes/admin-functions.php:189
+#: includes/admin-functions.php:197
msgid "Sermon Title"
msgstr "Tytuł kazania"
-#. translators: %s: Preachers label (sentence case; plural)
-#: includes/admin-functions.php:191 includes/class-sm-post-types.php:44
+#. Translators: %s: Preacher label (sentence case; singular)
+#. translators: %s Preachers label (sentence case; plural)
+#. translators: %s Preachers label (sentence case; plural)
+#. translators: %s Preacher label (sentence case; singular)
+#: includes/admin-functions.php:199 includes/class-sm-post-types.php:44
#: includes/class-sm-post-types.php:47 includes/class-sm-post-types.php:49
+#, php-format
msgid "%s"
msgstr ""
-#: includes/admin-functions.php:191 includes/admin-functions.php:192
-#: includes/types-taxonomies.php:120 includes/types-taxonomies.php:121
-#: includes/types-taxonomies.php:122
+#: includes/admin-functions.php:200 includes/types-taxonomies.php:120
+#: includes/types-taxonomies.php:121 includes/types-taxonomies.php:122
msgid "Sermon Series"
msgstr "Seria kazań"
-#: includes/admin-functions.php:192 includes/admin-functions.php:193
-#: includes/class-sm-post-types.php:104 includes/class-sm-post-types.php:106
+#: includes/admin-functions.php:201 includes/class-sm-post-types.php:104
+#: includes/class-sm-post-types.php:106
msgid "Topics"
msgstr "Tematy"
-#: includes/admin-functions.php:193 includes/admin-functions.php:194
+#: includes/admin-functions.php:202
msgid "Views"
msgstr "Podglądy"
-#: includes/admin-functions.php:194 includes/admin-functions.php:195
-#: includes/sm-cmb-functions.php:85 includes/types-taxonomies.php:301
+#: includes/admin-functions.php:203 includes/sm-cmb-functions.php:85
+#: includes/types-taxonomies.php:301
msgid "Date Preached"
msgstr "Data wygłoszenia"
-#: includes/admin-functions.php:195 includes/admin-functions.php:196
+#: includes/admin-functions.php:204
msgid "Bible Passage"
msgstr "Fragment biblii"
#. translators: %s see msgid "Error:"
-#: includes/admin-functions.php:212 includes/admin-functions.php:213
+#: includes/admin-functions.php:222
+#, php-format
msgid "%s Can’t find sermon ID."
msgstr "%s Nie znaleziono identyfikatora kazania."
-#: includes/admin-functions.php:212 includes/admin-functions.php:213
-#: includes/admin-functions.php:252 includes/admin-functions.php:253
+#: includes/admin-functions.php:222 includes/admin-functions.php:261
+#: includes/admin-functions.php:262
msgid "Error:"
msgstr "Błąd:"
-#: includes/admin-functions.php:290 includes/class-sm-post-types.php:193
-#: includes/types-taxonomies.php:59
-msgid "Sermon"
-msgstr "Kazanie"
-
-#: includes/admin-functions.php:306 includes/admin-functions.php:307
+#. translators: %s integer count of sermons
+#: includes/admin-functions.php:317
+#, php-format
msgid "%s sermon"
msgid_plural "%s sermons"
msgstr[0] "%s kazanie"
msgstr[1] "%s kazania"
msgstr[2] "%s kazań"
-#. translators: %s: Plugin name
-#: includes/class-sm-error-recovery.php:200
+#. translators: %s Plugin name
+#: includes/class-sm-error-recovery.php:212
+#, php-format
msgid "%s encountered a fatal error and recovered successfully."
msgstr "„%s” napotkał błąd fatalny i skorygował go pomyślnie."
-#: includes/class-sm-error-recovery.php:203
+#: includes/class-sm-error-recovery.php:215
msgid "The issue has already been submitted."
msgstr "Ten problem już wysłano."
-#: includes/class-sm-error-recovery.php:208
-msgctxt "Button"
+#: includes/class-sm-error-recovery.php:220
+msgctxt "button"
msgid "Send an anonymous report"
msgstr "Wyślij raport anonimowy"
-#: includes/class-sm-error-recovery.php:212
-msgctxt "Button"
+#: includes/class-sm-error-recovery.php:224
+msgctxt "button"
msgid "Show error message"
msgstr "Pokaż komunikat błędu"
-#: includes/class-sm-error-recovery.php:215
-msgctxt "Button"
+#: includes/class-sm-error-recovery.php:227
+msgctxt "button"
msgid "Reactivate Plugin"
-msgstr "Reaktywuj wtyczkę"
+msgstr "Włącz wtyczkę ponownie"
-#: includes/class-sm-error-recovery.php:222
-msgctxt "Title"
+#: includes/class-sm-error-recovery.php:234
+msgctxt "title"
msgid "Are you sure?"
msgstr "Jesteś pewien?"
-#: includes/class-sm-error-recovery.php:224
+#: includes/class-sm-error-recovery.php:236
msgid ""
"If the issue is not fixed, website will crash. (but we will recover it again)"
msgstr ""
"Jeśli nie naprawiono problemu, witryna internetowa się zawiesi (mimo to "
"zostanie odrestaurowana)."
-#: includes/class-sm-error-recovery.php:226
+#: includes/class-sm-error-recovery.php:238
msgctxt "title"
msgid "Optional info"
msgstr "Informacje opcjonalne"
-#: includes/class-sm-error-recovery.php:228
+#: includes/class-sm-error-recovery.php:240
msgid ""
"If you have more information about the issue, please type it here (optional):"
msgstr ""
"Jeśli posiadasz dalsze informacje o problemie, proszę wprowadź je tutaj "
"(opcjonalne):"
-#: includes/class-sm-error-recovery.php:230
-msgctxt "Label"
+#: includes/class-sm-error-recovery.php:242
+msgctxt "label"
msgid "Issue details"
msgstr "Szczegóły problemu"
-#: includes/class-sm-error-recovery.php:232
-msgctxt "Placeholder"
+#: includes/class-sm-error-recovery.php:244
+msgctxt "placeholder"
msgid "Steps for how to reproduce, etc…"
msgstr "Instrukcja jak zreprodukować problem, itp…"
-#: includes/class-sm-error-recovery.php:233
+#: includes/class-sm-error-recovery.php:245
msgid "Email for further contact (optional)"
msgstr "E‑mail do dalszej korespondencji (opcjonalny)"
-#: includes/class-sm-error-recovery.php:234
+#: includes/class-sm-error-recovery.php:246
msgid "name@example.com"
msgstr "nazwisko@przykład.com"
-#: includes/class-sm-error-recovery.php:235
-msgctxt "Label"
+#: includes/class-sm-error-recovery.php:247
+msgctxt "label"
msgid "Email"
msgstr "E‑mail"
+#: includes/class-sm-install.php:158
+msgid "Monthly"
+msgstr "miesięcznie"
+
+#: includes/class-sm-install.php:173
+msgid "View Sermon Manager settings"
+msgstr "Podejrzyj ustawienia Menadżera Kazań"
+
+#: includes/class-sm-install.php:191
+msgid "Premium support"
+msgstr "Wsparcie priorytetowe"
+
+#: includes/class-sm-install.php:191
+msgid "Visit premium customer support"
+msgstr "Przejdź do wsparcia priorytetowego"
+
+#. translators: %s Preachers label (sentence case; plural)
#: includes/class-sm-post-types.php:51
-msgctxt "Admin menu name"
+#, php-format
+msgctxt "menu"
msgid "%s"
msgstr ""
+#. translators: %s Preachers label (lowercase; plural)
#: includes/class-sm-post-types.php:53 includes/types-taxonomies.php:96
+#, php-format
msgid "Search %s"
msgstr "Wyszukaj %s"
+#. translators: %s Preachers label (lowercase; plural)
#: includes/class-sm-post-types.php:55 includes/types-taxonomies.php:98
+#, php-format
msgid "All %s"
msgstr "Wszyscy/tkie %s"
+#. translators: %s Preacher label (lowercase; singular)
#: includes/class-sm-post-types.php:59 includes/types-taxonomies.php:99
+#, php-format
msgid "Edit %s"
msgstr "Edytuj %s"
+#. translators: %s Preacher label (lowercase; singular)
#: includes/class-sm-post-types.php:61 includes/types-taxonomies.php:100
+#, php-format
msgid "Update %s"
msgstr "Zaktualizuj %s"
+#. translators: %s Preacher label (lowercase; singular)
#: includes/class-sm-post-types.php:63 includes/types-taxonomies.php:101
+#, php-format
msgid "Add new %s"
msgstr "Dodaj nowego/ą %s"
+#. translators: %s Preacher label (lowercase; singular)
#: includes/class-sm-post-types.php:65
+#, php-format
msgid "New %s name"
msgstr "Nowa nazwa %s"
+#. translators: %s Preacher label (lowercase; singular)
#: includes/class-sm-post-types.php:67
+#, php-format
msgid "No %s found"
msgstr "Nie znaleziono %s"
@@ -243,7 +285,7 @@ msgid "Series"
msgstr "Seria"
#: includes/class-sm-post-types.php:83
-msgctxt "Admin menu name"
+msgctxt "menu"
msgid "Series"
msgstr "Seria"
@@ -280,7 +322,7 @@ msgid "Topic"
msgstr "Temat"
#: includes/class-sm-post-types.php:108
-msgctxt "Admin menu name"
+msgctxt "menu"
msgid "Topics"
msgstr "Tematy"
@@ -325,7 +367,7 @@ msgid "Book"
msgstr "Księga"
#: includes/class-sm-post-types.php:133
-msgctxt "Admin menu name"
+msgctxt "menu"
msgid "Books"
msgstr "Księgi"
@@ -368,7 +410,7 @@ msgid "Service Type"
msgstr "Rodzaj usługi"
#: includes/class-sm-post-types.php:158
-msgctxt "Admin menu name"
+msgctxt "menu"
msgid "Service Types"
msgstr "Rodzaje usługi"
@@ -400,18 +442,22 @@ msgstr "Nowa nazwa rodzaju usługi"
msgid "No service types found"
msgstr "Nie znaleziono rodzajów usługi"
-#: includes/class-sm-post-types.php:192 includes/options.php:291
-#: includes/options.php:300 includes/types-taxonomies.php:58
+#: includes/class-sm-post-types.php:192 includes/options.php:269
+#: includes/options.php:278 includes/types-taxonomies.php:58
#: includes/types-taxonomies.php:68 views/archive-wpfc_sermon.php:13
msgid "Sermons"
msgstr "Kazania"
+#: includes/class-sm-post-types.php:193 includes/types-taxonomies.php:59
+msgid "Sermon"
+msgstr "Kazanie"
+
#: includes/class-sm-post-types.php:194
msgid "All Sermons"
msgstr "Wszystkie kazania"
#: includes/class-sm-post-types.php:195
-msgctxt "Admin menu name"
+msgctxt "menu"
msgid "Sermons"
msgstr "Kazania"
@@ -423,12 +469,11 @@ msgstr "Dodaj nowe"
msgid "Add new sermon"
msgstr "Dodaj nowe kazanie"
-#: includes/class-sm-post-types.php:198 views/archive-wpfc_sermon.php:61
-#: views/archive-wpfc_sermon.php:62 views/single-wpfc_sermon.php:35
-#: views/taxonomy-wpfc_bible_book.php:89 views/taxonomy-wpfc_preacher.php:95
-#: views/taxonomy-wpfc_sermon_series.php:96
-#: views/taxonomy-wpfc_sermon_topics.php:96
-#: views/taxonomy-wpfc_service_type.php:89
+#: includes/class-sm-post-types.php:198 views/archive-wpfc_sermon.php:62
+#: views/single-wpfc_sermon.php:23 views/taxonomy-wpfc_bible_book.php:90
+#: views/taxonomy-wpfc_preacher.php:96 views/taxonomy-wpfc_sermon_series.php:97
+#: views/taxonomy-wpfc_sermon_topics.php:97
+#: views/taxonomy-wpfc_service_type.php:90
msgid "Edit"
msgstr "Edytuj"
@@ -454,19 +499,19 @@ msgstr "Nie znaleziono kazań w koszu"
#: includes/class-sm-post-types.php:206
msgid "Sermon image"
-msgstr "Obraz kazania"
+msgstr "Obrazek kazania"
#: includes/class-sm-post-types.php:207
msgid "Set sermon image"
-msgstr "Ustaw obraz kazania"
+msgstr "Ustaw obrazek kazania"
#: includes/class-sm-post-types.php:208
msgid "Remove sermon image"
-msgstr "Usuń obraz kazania"
+msgstr "Usuń obrazek kazania"
#: includes/class-sm-post-types.php:209
msgid "Use as sermon image"
-msgstr "Użyj jako obraz kazania"
+msgstr "Użyj jako obrazek kazania"
#: includes/class-sm-post-types.php:210
msgid "Insert to sermon"
@@ -492,58 +537,52 @@ msgstr "Lista kazań"
msgid "This is where you can add new sermons to your website."
msgstr "Tu możesz dodać nowe kazania do Twojej witryny internetowej."
-#: includes/helper-functions.php:193 includes/template-tags.php:129
-#: includes/template-tags.php:400 includes/template-tags.php:426
-#: includes/template-tags.php:439 includes/template-tags.php:465
+#: includes/helper-functions.php:193 includes/template-tags.php:127
+#: includes/template-tags.php:410 includes/template-tags.php:456
msgid "Series: "
msgstr "Seria: "
-#: includes/options.php:74 includes/options.php:81
+#: includes/libraries/wp-background-process.php:423
+#, php-format
+msgid "Every %s minutes"
+msgstr "Co %s minut"
+
+#: includes/options.php:71 includes/options.php:165
msgid "Sermon Manager Settings"
msgstr "Ustawienia Menadżera Kazań"
-#: includes/options.php:81 includes/options.php:94 includes/options.php:101
-#: includes/options.php:761 includes/options.php:770
-#: includes/taxonomy-images/taxonomy-images.php:333
+#: includes/options.php:71 includes/taxonomy-images/taxonomy-images.php:333
#: includes/taxonomy-images/taxonomy-images.php:1238
msgid "Settings"
msgstr "Ustawienia"
-#: includes/options.php:99 includes/options.php:106
-msgid "Support"
-msgstr "Wsparcie"
-
-#: includes/options.php:108 includes/options.php:115
-#: includes/taxonomy-images/taxonomy-images.php:1263
+#: includes/options.php:80 includes/taxonomy-images/taxonomy-images.php:1263
msgid "Manage Settings"
msgstr "Zarządzaj ustawieniami"
-#: includes/options.php:197 includes/options.php:204
-msgid "Sermon Manager Options"
-msgstr "Opcje Menadżera Kazań"
-
-#: includes/options.php:203 includes/options.php:209
+#: includes/options.php:170
msgid "General"
msgstr "Ogólne"
-#: includes/options.php:205 includes/options.php:211
+#: includes/options.php:173
msgid "Verse"
msgstr "Werset"
-#: includes/options.php:207 includes/options.php:213
+#: includes/options.php:176
msgid "Podcast"
msgstr ""
-#: includes/options.php:213 includes/options.php:219
-msgid "Options saved"
+#: includes/options.php:184
+msgid "Settings saved"
msgstr "Zapisano ustawienia"
-#: includes/options.php:222 includes/options.php:228
+#: includes/options.php:194
msgid "Need Some Help?"
msgstr "Potrzebujesz trochę pomocy?"
#. translators: %s see msgid "Sign up"
-#: includes/options.php:224 includes/options.php:230
+#: includes/options.php:198
+#, php-format
msgid ""
"Did you know you can get expert support for only $49 per year! %s today and "
"get support from the developers who are building the Sermon Manager."
@@ -552,44 +591,41 @@ msgstr ""
"tylko $49 rocznie? %s dziś i otrzymuj wsparcie techniczne od twó"
"rców Menadżera Kazań!"
-#: includes/options.php:224 includes/options.php:230
+#: includes/options.php:198
msgid "Sign up"
msgstr "Zarejestruj się"
-#: includes/options.php:227 includes/options.php:233
+#: includes/options.php:202
msgid "Free Support"
msgstr "Wsparcie bezpłatne"
-#: includes/options.php:228 includes/options.php:234
+#: includes/options.php:204
msgid "Priority Support"
msgstr "Wsparcie priorytetowe"
-#: includes/options.php:231 includes/options.php:237
+#: includes/options.php:207
msgid "We offer limited free support via WordPress.org"
msgstr "Udzielamy ograniczonego bezpłatnego wsparcia w ramach WordPress.org."
-#: includes/options.php:238 includes/options.php:243
+#: includes/options.php:214
msgid "Frequently Asked Questions"
msgstr "Często zadawane pytania"
-#. translators: %s see msgid "Knowledge base"
-#: includes/options.php:253 includes/options.php:259
+#. translators: %s see msgid "knowledge base"
+#: includes/options.php:232
+#, php-format
msgid "Find out more in our %s"
msgstr "Dowiedz się więcej z naszej %s"
-#: includes/options.php:253 includes/options.php:259
+#: includes/options.php:232
msgid "knowledge base"
msgstr "bazy wiedzy"
-#: includes/options.php:259 includes/options.php:265
+#: includes/options.php:239
msgid "Lets Make It Even Better!"
msgstr "Ulepszmy to razem!"
-#: includes/options.php:264 includes/options.php:270
-msgid "Submit Your Idea"
-msgstr "Wyślij Twój pomysł"
-
-#: includes/options.php:267
+#: includes/options.php:242
msgid ""
"If you have ideas on how to make Sermon Manager or any of our products "
"better, let us know!"
@@ -597,30 +633,34 @@ msgstr ""
"Jeśli masz pomysły na ulepszenie Menadżera Kazań lub naszych innych "
"produktów, to daj nam znać!"
-#: includes/options.php:277 includes/options.php:283
+#: includes/options.php:246
+msgid "Submit Your Idea"
+msgstr "Wyślij Twój pomysł"
+
+#: includes/options.php:260
msgid "General Settings"
msgstr "Ustawienia ogólne"
-#: includes/options.php:281 includes/options.php:287
+#: includes/options.php:265
msgid "Archive Page Title"
msgstr "Tytuł strony archiwum"
-#: includes/options.php:289 includes/options.php:296
-msgid "Archive Page Slug"
-msgstr "Uproszczona nazwa strony archiwum"
-
-#: includes/options.php:291 includes/options.php:300 includes/options.php:490
-#: includes/options.php:494 includes/options.php:500 includes/options.php:504
-#: includes/options.php:510 includes/options.php:514 includes/options.php:520
-#: includes/options.php:524 includes/options.php:555 includes/options.php:559
-#: includes/options.php:603 includes/options.php:607 includes/options.php:616
-#: includes/options.php:620 includes/options.php:648 includes/options.php:661
+#: includes/options.php:269 includes/options.php:278 includes/options.php:488
+#: includes/options.php:498 includes/options.php:508 includes/options.php:518
+#: includes/options.php:554 includes/options.php:602 includes/options.php:615
+#: includes/options.php:643 includes/options.php:656
+#, php-format
msgid "e.g. %s"
msgstr "np. %s"
+#: includes/options.php:274
+msgid "Archive Page Slug"
+msgstr "Uproszczona nazwa strony archiwum"
+
#. translators: %1$s see msgid "sermons/preacher", effectively sermons/preacher
#. translators: %2$s see msgid "sermons/series", effectively sermons/series
-#: includes/options.php:297 includes/options.php:305
+#: includes/options.php:285
+#, php-format
msgid ""
"Common Base Slug — this is for users who want to have a common base "
"slug across all taxonomies, e.g. %1$s or %2$s."
@@ -629,21 +669,20 @@ msgstr ""
"którzy chcą posiadać wspólną podstawową uproszczoną nazwę nad "
"wszystkimi systematykami, np. %1$s lub %2$s."
-#: includes/options.php:297 includes/options.php:305
+#: includes/options.php:285
msgid "sermons/preacher"
msgstr "kazania/kaznodzieja"
-#: includes/options.php:297 includes/options.php:305
+#: includes/options.php:285
msgid "sermons/series"
msgstr "kazania/seria"
-#: includes/options.php:302 includes/options.php:310
+#: includes/options.php:290
msgid "Enable a common base slug across all taxonomies"
msgstr ""
-"Włącz wspólną podstawową uproszczoną nazwę nad wszystkimi "
-"systematykami"
+"Włącz wspólną podstawową uproszczoną nazwę nad wszystkimi systematykami"
-#: includes/options.php:308 includes/options.php:316
+#: includes/options.php:296
msgid ""
"Enable Template Files — this is for users upgrading from an older "
"version who have issues with version 1.5+."
@@ -653,18 +692,19 @@ msgstr ""
"wersje 1.5 lub wyższe."
#. translators: %s effectively /views
-#. Since /views is a locale independent folder name it MUST NOT be localized
-#: includes/options.php:313 includes/options.php:321
+#. translators: Since /views is a locale independent folder name it MUST NOT be localized
+#: includes/options.php:303
+#, php-format
msgid "Enable template files found in the %s folder"
msgstr "Włącz obsługę plików szablonowych w podkatalogu %s"
-#: includes/options.php:319 includes/options.php:327
+#: includes/options.php:309
msgid "Disable Sermon Styles"
msgstr "Wyłącz style kazań"
#. translators: %s effectively sermons.css
-#. Since sermons.css is a locale independent file name it MUST NOT be localized
-#: includes/options.php:324 includes/options.php:332
+#: includes/options.php:315
+#, php-format
msgid ""
"Disable Sermon CSS. If you do this, you should copy the styles from %s and "
"include them in your theme CSS."
@@ -672,20 +712,19 @@ msgstr ""
"Wyłącz CSS kazań. Jeśli tego dokonasz, powinieneś skopiować style z %s i "
"scalić je z Twoim motywem CSS."
-#: includes/options.php:338
+#: includes/options.php:321
msgid "Display audio player or video on archive pages"
msgstr "Wyświetlaj odtwarzacz audio lub wideo na stronach archiwum"
-#: includes/options.php:343
+#: includes/options.php:326
msgid "Display an audio player or video embed in the archive listing."
-msgstr ""
-"Wyświetlaj kod osadzania odtwarzacza audio lub wideo na liście archiwum"
+msgstr "Wyświetlaj kod osadzania odtwarzacza audio lub wideo na liście archiwum"
-#: includes/options.php:349 includes/options.php:354
+#: includes/options.php:332 includes/options.php:337
msgid "Use old audio player"
msgstr "Używaj starego odtwarzacza dźwięku"
-#: includes/options.php:352 includes/options.php:360
+#: includes/options.php:343
msgid ""
"Custom label for “Preacher”. Note: it will also change preacher "
"slugs."
@@ -693,37 +732,38 @@ msgstr ""
"Zindywidualizowana oznaka „Kaznodzieja”. Zauważ: To ró"
"wnież zmieni uproszczone nazwy kaznodziei"
-#: includes/options.php:360 includes/options.php:368
+#: includes/options.php:351
msgid "Sermon date format (used when creating a new Sermon)"
msgstr ""
-"Format daty wygłoszenia kazania (potrzebne w trakcie tworzenia nowego "
-"kazania)"
+"Format daty wygłoszenia kazania (potrzebne w trakcie tworzenia nowego kazania)"
-#: includes/options.php:389 includes/options.php:395
+#: includes/options.php:372 includes/options.php:378
msgid "Show key verse in widget"
msgstr "Wyświetlaj werset kluczowy w widgetcie"
-#: includes/options.php:393 includes/options.php:401
+#. translators: %s version like x.x.x
+#: includes/options.php:385
+#, php-format
msgid "Version %s"
msgstr "Wersja %s"
-#: includes/options.php:405 includes/options.php:406
+#: includes/options.php:389
msgid "Current Version"
msgstr "Wersja bieżąca"
-#: includes/options.php:413 includes/options.php:414
+#: includes/options.php:398
msgid "Verse Settings"
msgstr "Ustawienia wersetów"
-#: includes/options.php:418 includes/options.php:419
+#: includes/options.php:404
msgid "Verse Popups"
msgstr "Baloniki z wersetami"
-#: includes/options.php:424 includes/options.php:425
+#: includes/options.php:410
msgid "Disable Bib.ly verse popups"
msgstr "Wyłącz baloniki z wersetami Bib.ly"
-#: includes/options.php:430 includes/options.php:431
+#: includes/options.php:416
msgid "Select Bible Version for Verse Popups"
msgstr "Wybierz wydanie biblii dla baloników z wersetami"
@@ -732,198 +772,204 @@ msgstr "Wybierz wydanie biblii dla baloników z wersetami"
#. translators: %3$s effectively KJV
#. translators: %4$s effectively LEB
#. translators: %5$s see msgid "bib.ly", effectively bib.ly
-#: includes/options.php:444 includes/options.php:452
+#: includes/options.php:443
+#, php-format
msgid "%1$s, %2$s, %3$s, or %4$s are the currently supported popups for %5$s."
msgstr ""
-"Wyłącznie %1$s, %2$s, %3$s i %4$s są aktualnie obsługiwane dla "
-"baloników z wersetami %5$s."
+"Wyłącznie %1$s, %2$s, %3$s i %4$s są aktualnie obsługiwane dla balonikó"
+"w z wersetami %5$s."
-#: includes/options.php:449 includes/options.php:457
+#: includes/options.php:448
msgid "bib.ly"
msgstr ""
#. translators: %s see effectively ESV
-#: includes/options.php:451 includes/options.php:459
+#: includes/options.php:451
+#, php-format
msgid "Warning! %s is not supported if your site uses SSL (HTTPS)."
msgstr ""
"UWAGA: W witrynach internetowych korzystających z SSL (HTTPS) %s nie jest "
"obsługiwane."
-#: includes/options.php:464 includes/options.php:468
+#: includes/options.php:461
msgid "Podcast Settings"
msgstr "Ustawienia podcastingowe"
-#: includes/options.php:486 includes/options.php:490
+#: includes/options.php:484
msgid "Title"
msgstr "Tytuł"
-#: includes/options.php:496 includes/options.php:500
-#: includes/sm-cmb-functions.php:107 includes/types-taxonomies.php:323
+#: includes/options.php:494 includes/sm-cmb-functions.php:107
+#: includes/types-taxonomies.php:323
msgid "Description"
msgstr "Opis"
-#: includes/options.php:506 includes/options.php:510
+#: includes/options.php:504
msgid "Website Link"
msgstr "Odnośnik witryny internetowej"
-#: includes/options.php:516 includes/options.php:520
+#: includes/options.php:514
msgid "Language"
msgstr "Język"
-#: includes/options.php:526 includes/options.php:530
+#: includes/options.php:524
msgid "Copyright"
msgstr "Prawa autorskie"
-#: includes/options.php:530 includes/options.php:534
+#: includes/options.php:528
+#, php-format
msgid "e.g. Copyright © %s"
msgstr "np. Copyright © %s"
#. translators: %s ©
-#: includes/options.php:535 includes/options.php:539
+#: includes/options.php:534
+#, php-format
msgid "Tip: Use %s to generate a copyright symbol."
msgstr "Wskazówka: Stosuj %s, aby wygenerować symbol copyright."
-#: includes/options.php:541 includes/options.php:545
+#: includes/options.php:540
msgid "Webmaster Name"
msgstr "Nazwa zarządcy witryny internetowej"
-#: includes/options.php:545 includes/options.php:549
+#: includes/options.php:544
msgid "e.g. Your Name"
msgstr "np. Twoje imię"
-#: includes/options.php:551 includes/options.php:555
+#: includes/options.php:550
msgid "Webmaster Email"
msgstr "E‑mail zarządcy witryny internetowej"
-#: includes/options.php:561 includes/options.php:565
+#: includes/options.php:560
msgid "Author"
msgstr "Autor"
-#: includes/options.php:565 includes/options.php:569
+#: includes/options.php:564
msgid "e.g. Primary Speaker or Church Name"
msgstr "np. mówca lub nazwa kościoła"
-#: includes/options.php:569 includes/options.php:573
+#: includes/options.php:568
msgid "This will display at the “Artist” in the iTunes Store."
msgstr "To będzie wyświetlane jako „Wykonawca” w sklepie iTunes."
-#: includes/options.php:574 includes/options.php:578
+#: includes/options.php:573
msgid "Subtitle"
msgstr "Podtytuł"
-#: includes/options.php:578 includes/options.php:582
+#: includes/options.php:577
+#, php-format
msgid "e.g. Preaching and teaching audio from %s"
msgstr "np. słuchowisko kazań i nauczań z %s"
-#: includes/options.php:582 includes/options.php:586
+#: includes/options.php:581
msgid ""
"Your subtitle should briefly tell the listener what they can expect to hear."
msgstr ""
-"Podtytuł powinien w krótki sposób opisywać czego słuchacze "
-"mogą się spodziewać."
+"Podtytuł powinien w krótki sposób opisywać czego słuchacze mogą "
+"się spodziewać."
-#: includes/options.php:587 includes/options.php:591
+#: includes/options.php:586
msgid "Summary"
msgstr "Streszczenie"
-#: includes/options.php:591 includes/options.php:595
+#: includes/options.php:590
+#, php-format
msgid "e.g. Weekly teaching audio brought to you by %s in City, State."
msgstr ""
"np. tygodniowe słuchowiska nauczań, produkowane przez %s w miasto, "
"województwo."
-#: includes/options.php:594 includes/options.php:598
+#: includes/options.php:593
msgid ""
"Keep your Podcast Summary short, sweet and informative. Be sure to include a "
"brief statement about your mission and in what region your audio content "
"originates."
msgstr ""
-"Ogranicz streszczenie podcastu do zachęcających i niezbędnych informacji. "
-"Nie zapomnij przedstawić Twojego posłania i regionu z którego "
-"słuchowisko pochodzi."
+"Ogranicz streszczenie podcastu do zachęcających i niezbędnych informacji. Nie "
+"zapomnij przedstawić Twojego posłania i regionu z którego słuchowisko "
+"pochodzi."
-#: includes/options.php:599 includes/options.php:603
+#: includes/options.php:598
msgid "Owner Name"
msgstr "Nazwa właściciela"
-#: includes/options.php:607 includes/options.php:611
+#: includes/options.php:606
msgid "This should typically be the name of your Church."
msgstr "Zwykle, jest to nazwa kościoła."
-#: includes/options.php:612 includes/options.php:616
+#: includes/options.php:611
msgid "Owner Email"
msgstr "E‑mail właściciela"
-#: includes/options.php:620 includes/options.php:624
+#: includes/options.php:619
msgid ""
"Use an email address that you don’t mind being made public. If someone "
-"wants to contact you regarding your Podcast this is the address they will "
-"use."
+"wants to contact you regarding your Podcast this is the address they will use."
msgstr ""
"Używaj w tym celu adresu e‑mail, który jest przeznaczony do "
"korespondencji publicznej. Jeśli ktoś będzie miał zamiar się skontaktować z "
"Tobą w sprawie podcastu, to będzie ten adres na który będą pisać."
-#: includes/options.php:625 includes/options.php:629
+#: includes/options.php:624
msgid "Cover Image"
-msgstr "Obraz okładki"
+msgstr "Obrazek okładki"
-#: includes/options.php:632 includes/options.php:636
+#: includes/options.php:631
msgid "Upload Image"
-msgstr "Załaduj obraz"
+msgstr "Załaduj obrazek"
-#: includes/options.php:635 includes/options.php:639
+#: includes/options.php:634
msgid ""
"This JPG will serve as the Podcast artwork in the iTunes Store. The image "
-"must be between 1,400px by 1,400px and 3,000px by 3,000px or else iTunes "
-"will not accept your feed."
+"must be between 1,400px by 1,400px and 3,000px by 3,000px or else iTunes will "
+"not accept your feed."
msgstr ""
-"Ten obraz będzie służył jako dzieło rozpoznawcze podcastu w sklepie iTunes. "
-"Obraz musi się mieścić w rozmiarach od 1 400 na 1 400 piksli, do nie więcej "
+"Ten obrazek będzie służył jako dzieło rozpoznawcze podcastu w sklepie iTunes. "
+"Obrazek musi się mieścić w rozmiarach od 1 400 na 1 400 piksli, do nie więcej "
"niż 3 000 na 3 000 piksli."
-#: includes/options.php:640 includes/options.php:644
+#: includes/options.php:639
msgid "Top Category"
msgstr "Kategoria naczelna"
-#: includes/options.php:648 includes/options.php:652
+#: includes/options.php:647
msgid ""
"Choose the appropriate top-level category for your Podcast listing in iTunes."
msgstr ""
"Wybierz właściwą kategorię naczelną dla Twojego podcastu w indeksie iTunes."
-#: includes/options.php:653 includes/options.php:657
+#: includes/options.php:652
msgid "Sub Category"
msgstr "Podkategoria"
-#: includes/options.php:661 includes/options.php:665
+#: includes/options.php:660
msgid "Choose the appropriate sub category for your Podcast listing in iTunes."
msgstr "Wybierz właściwą podkategorię dla Twojego podcastu w indeksie iTunes."
-#: includes/options.php:666 includes/options.php:670
+#: includes/options.php:665
msgid "PodTrac Tracking"
msgstr "Śledzenie PodTrac‑iem"
-#: includes/options.php:671 includes/options.php:675
+#: includes/options.php:670
msgid "Enables PodTrac tracking."
msgstr "Włącza śledzenie PodTrac‑iem"
#. translators: %s podtrac.com
-#: includes/options.php:675 includes/options.php:679
+#: includes/options.php:675
+#, php-format
msgid "For more info on PodTrac or to sign up for an account, visit %s"
msgstr ""
"Aby otrzymać więcej informacji o PodTrac‑u lub zarejestrować konto, "
-"odwiedź %s."
+"przejdź do %s."
-#: includes/options.php:680 includes/options.php:684
+#: includes/options.php:680
msgid "HTML in description"
msgstr "Obsługa HTML w opisie"
-#: includes/options.php:686 includes/options.php:690
+#: includes/options.php:686
msgid "Enable HTML description"
msgstr "Włącz obsługę HTML w opisie"
-#: includes/options.php:690 includes/options.php:694
+#: includes/options.php:690
msgid ""
"Enables showing of HTML in iTunes description field. Uncheck if description "
"looks messy."
@@ -931,36 +977,38 @@ msgstr ""
"Włącza obsługę HTML w polu „opis” wyświetlane w iTunes. Odhacz, "
"jeśli opis wygląda zaburzony."
-#: includes/options.php:695 includes/options.php:699
+#: includes/options.php:695
msgid "Number of podcasts to show"
msgstr "Ilość pozycji w podcast‑cie"
-#: includes/options.php:704 includes/options.php:708
+#: includes/options.php:704
msgid ""
"Shows custom podcast count. If not defined, it uses WordPress default count."
msgstr ""
-"Wyświetla określoną ilość pozycji w podcast‑cie. Jeśli ilość "
-"pozostanie niezdefiniowana, stosowana będzie domyślna ilość WordPressa."
+"Wyświetla określoną ilość pozycji w podcast‑cie. Jeśli ilość pozostanie "
+"niezdefiniowana, stosowana będzie domyślna ilość WordPressa."
-#: includes/options.php:715
+#: includes/options.php:711
msgid "Feed URL to Submit to iTunes"
msgstr "URL kanału internetowego podcastu do przekazania iTunes"
-#: includes/options.php:722 includes/options.php:725
+#: includes/options.php:722
msgid "Feed Validator"
msgstr "walidatora kanału internetowego"
#. translators: %s Feed Validator link, see msgid "Feed Validator"
-#: includes/options.php:722 includes/options.php:725
+#: includes/options.php:722
+#, php-format
msgid ""
-"Use the %s to diagnose and fix any problems before submitting your Podcast "
-"to iTunes."
+"Use the %s to diagnose and fix any problems before submitting your Podcast to "
+"iTunes."
msgstr ""
"Stosuj %s do diagnozy i naprawy wszelkich problemów zanim wyślesz "
"podcast do iTunes."
#. translators: %s see msgid "Submit Your Podcast"
-#: includes/options.php:725 includes/options.php:728
+#: includes/options.php:726
+#, php-format
msgid ""
"Once your Podcast Settings are complete and your Sermons are ready, it’"
"s time to %s to the iTunes Store!"
@@ -968,47 +1016,49 @@ msgstr ""
"Gdy sfinalizujesz ustawienia podcastingowe i przygotujesz kazania, nadejdzie "
"pora, aby %s do sklepu iTunes!"
-#: includes/options.php:725 includes/options.php:728
+#: includes/options.php:726
msgid "Submit Your Podcast"
msgstr "wysłać Twój podcast"
#. translators: %s see msgid "FeedBurner"
-#: includes/options.php:727 includes/options.php:731
+#: includes/options.php:730
+#, php-format
msgid ""
-"Alternatively, if you want to track your Podcast subscribers, simply pass "
-"the Podcast Feed URL above through %s. FeedBurner will then give you a new "
-"URL to submit to iTunes instead."
+"Alternatively, if you want to track your Podcast subscribers, simply pass the "
+"Podcast Feed URL above through %s. FeedBurner will then give you a new URL to "
+"submit to iTunes instead."
msgstr ""
"Jeśli chcesz śledzić abonentów Twojego podcastu, po prostu przewlecz "
-"powyższy URL kanału internetowego podcastu przez %s. FeedBurner wtedy wyda "
-"Ci nowy URL, który w zamian przekażesz iTunes."
+"powyższy URL kanału internetowego podcastu przez %s. FeedBurner wtedy wyda Ci "
+"nowy URL, który w zamian przekażesz iTunes."
-#: includes/options.php:727 includes/options.php:731
+#: includes/options.php:730
msgid "FeedBurner"
msgstr ""
#. translators: %s see msgid "iTunes FAQ for Podcast Makers"
-#: includes/options.php:730 includes/options.php:734
+#: includes/options.php:734
+#, php-format
msgid "Please read the %s for more information."
msgstr "Proszę, zapoznaj się ze %s."
-#: includes/options.php:730 includes/options.php:734
+#: includes/options.php:734
msgid "iTunes FAQ for Podcast Makers"
msgstr ""
-"zbiorem często zadawanych pytań dla twórców podcastów "
-"na iTunes"
+"zbiorem często zadawanych pytań dla twórców podcastów na "
+"iTunes"
-#: includes/options.php:742 includes/options.php:751
-#: includes/taxonomy-images/taxonomy-images.php:395
+#. translators: Button on the custom administration page.
+#: includes/options.php:742 includes/taxonomy-images/taxonomy-images.php:395
msgid "Save Changes"
msgstr "Zapisz zmiany"
-#: includes/shortcodes.php:781 includes/shortcodes.php:786
-#: includes/template-tags.php:114 views/archive-wpfc_sermon.php:40
-#: views/taxonomy-wpfc_bible_book.php:72 views/taxonomy-wpfc_preacher.php:78
-#: views/taxonomy-wpfc_sermon_series.php:79
+#: includes/shortcodes.php:805 includes/template-tags.php:112
+#: views/archive-wpfc_sermon.php:40 views/taxonomy-wpfc_bible_book.php:72
+#: views/taxonomy-wpfc_preacher.php:78 views/taxonomy-wpfc_sermon_series.php:79
#: views/taxonomy-wpfc_sermon_topics.php:79
#: views/taxonomy-wpfc_service_type.php:72
+#, php-format
msgid "Permalink to %s"
msgstr "Odnośnik wieczny do „%s”"
@@ -1020,8 +1070,9 @@ msgstr "Szczegóły kazania"
msgid "(optional)"
msgstr "(opcjonalne)"
-#. translators: %s date format, effectively d/m/Y
or the like
+#. translators: %s date format, effectively d/m/Y
or the like
#: includes/sm-cmb-functions.php:86 includes/types-taxonomies.php:302
+#, php-format
msgid "format: %s"
msgstr ""
@@ -1037,8 +1088,9 @@ msgstr ""
msgid "Main Bible Passage"
msgstr "Główny fragment biblii"
-#. translators: %s see msgid "John 3:16-18", effectively John 3:16-18
+#. translators: %s see msgid "John 3:16-18", effectively John 3:16-18
#: includes/sm-cmb-functions.php:102 includes/types-taxonomies.php:318
+#, php-format
msgid "Enter the Bible passage with the full book names, e.g. %s."
msgstr "Wprowadź fragment biblii razem z pełnymi nazwami ksiąg, np. %s."
@@ -1067,8 +1119,9 @@ msgstr "Załaduj plik dźwiękowy lub wprowadź URL."
msgid "MP3 Duration"
msgstr "Czas nagrania MP3"
-#. translators: %s see msgid "hh:mm:ss", effectively hh:mm:ss
+#. translators: %s see msgid "hh:mm:ss", effectively hh:mm:ss
#: includes/sm-cmb-functions.php:135 includes/types-taxonomies.php:351
+#, php-format
msgid ""
"Length in %s format (if left blank, will attempt to calculate automatically "
"when you save)"
@@ -1106,8 +1159,13 @@ msgstr "Notatki do kazania"
msgid "Upload a pdf file or enter an URL."
msgstr "Załaduj plik PDF lub wprowadź URL."
-#: includes/sm-cmb-functions.php:162 includes/template-tags.php:371
-#: includes/template-tags.php:397 includes/types-taxonomies.php:378
+#: includes/sm-cmb-functions.php:158 includes/sm-cmb-functions.php:167
+#: includes/types-taxonomies.php:374 includes/types-taxonomies.php:383
+msgid "Add File"
+msgstr "Dodaj plik"
+
+#: includes/sm-cmb-functions.php:162 includes/template-tags.php:376
+#: includes/types-taxonomies.php:378
msgid "Bulletin"
msgstr "Biuletyn"
@@ -1147,13 +1205,14 @@ msgstr "kazania"
#. translators: %4$s effectively tag.php
#. translators: %5$s effectively taxonomy.php
#. translators: %6$s see msgid "template hierarchy"
-#: includes/taxonomy-images/public-filters.php:385
+#: includes/taxonomy-images/public-filters.php:391
+#, php-format
msgid ""
"%1$s is not a property of the current queried object. This usually happens "
-"when the %2$s filter is used in an unsupported template file. This filter "
-"has been designed to work in taxonomy archives which are traditionally "
-"served by one of the following template files: %3$s, %4$s or %5$s. Learn "
-"more about %6$s."
+"when the %2$s filter is used in an unsupported template file. This filter has "
+"been designed to work in taxonomy archives which are traditionally served by "
+"one of the following template files: %3$s, %4$s or %5$s. Learn more about "
+"%6$s."
msgstr ""
"%1$s nie jest właściwością bieżąco wyszukiwanego obiektu. To się zdarza, gdy "
"filtr %2$s jest stosowany w nie obsługiwanym pliku szablonowym. Filtr ten, "
@@ -1161,15 +1220,16 @@ msgstr ""
"obsługiwane przez jeden z następujących plików szablonowych: %3$s, "
"%4$s lub %5$s. Dowiedz się więcej o %6$s."
-#: includes/taxonomy-images/public-filters.php:386
+#: includes/taxonomy-images/public-filters.php:392
msgid "term_taxonomy_id"
msgstr "hasło_systematyka_identyfikator"
-#: includes/taxonomy-images/public-filters.php:391
+#: includes/taxonomy-images/public-filters.php:397
msgid "template hierarchy"
msgstr "hierarchii szablonów"
#: includes/taxonomy-images/taxonomy-images.php:130
+#, php-format
msgid "Associate with %1$s"
msgstr "Powiąż z tym %1$s"
@@ -1179,16 +1239,19 @@ msgid "this term"
msgstr "hasłem"
#: includes/taxonomy-images/taxonomy-images.php:131
+#, php-format
msgid "Remove association with %1$s"
msgstr "Usuń powiązanie z %1$s"
+#. translators: Notice displayed on the custom administration page.
#: includes/taxonomy-images/taxonomy-images.php:290
msgid "Image support for taxonomies successfully updated"
-msgstr "Uaktualniono obsługę obrazów dla systematyki."
+msgstr "Uaktualniono obsługę obrazków dla systematyki."
+#. translators: Notice displayed on the custom administration page.
#: includes/taxonomy-images/taxonomy-images.php:293
msgid "Image support has been disabled for all taxonomies."
-msgstr "Wyłączono obsługę obrazów dla wszystkich systematyk."
+msgstr "Wyłączono obsługę obrazków dla wszystkich systematyk."
#: includes/taxonomy-images/taxonomy-images.php:339
msgid "Taxonomies"
@@ -1197,12 +1260,14 @@ msgstr "Systematyki"
#: includes/taxonomy-images/taxonomy-images.php:359
#: includes/taxonomy-images/taxonomy-images.php:360
msgid "Taxonomy Images"
-msgstr "Obrazy systematyki"
+msgstr "Obrazki systematyki"
+#. translators: Heading of the custom administration page.
#: includes/taxonomy-images/taxonomy-images.php:387
msgid "Taxonomy Images Plugin Settings"
-msgstr "Ustawienia wtyczki obrazów systematyki"
+msgstr "Ustawienia wtyczki obrazków systematyki"
+#. translators: An ajax request has failed for an unknown reason.
#: includes/taxonomy-images/taxonomy-images.php:447
msgid "Unknown error encountered"
msgstr "Nastąpił nieznany błąd."
@@ -1223,7 +1288,6 @@ msgid "You do not have the correct capability to manage this term"
msgstr "Brak poprawnej możliwości, aby zarządzać tym hasłem."
#: includes/taxonomy-images/taxonomy-images.php:551
-#: includes/taxonomy-images/taxonomy-images.php:633
msgid "No nonce included."
msgstr "Nie podano wyrazu."
@@ -1234,15 +1298,15 @@ msgstr "Wyraz nie pasuje."
#: includes/taxonomy-images/taxonomy-images.php:565
msgid "Image id not sent"
-msgstr "Nie wysłano identyfikatora obrazu."
+msgstr "Nie wysłano identyfikatora obrazku."
#: includes/taxonomy-images/taxonomy-images.php:573
msgid "Image id is not a positive integer"
-msgstr "Identyfikator obrazu nie jest pozytywną liczbą całkowitą."
+msgstr "Identyfikator obrazku nie jest pozytywną liczbą całkowitą."
#: includes/taxonomy-images/taxonomy-images.php:582
msgid "Image successfully associated"
-msgstr "Powiązano obraz."
+msgstr "Powiązano obrazek."
#: includes/taxonomy-images/taxonomy-images.php:588
msgid "Association could not be created"
@@ -1267,7 +1331,7 @@ msgstr "Nie można usunąć powiązania."
#: includes/taxonomy-images/taxonomy-images.php:739
#: includes/taxonomy-images/taxonomy-images.php:793
msgid "Image"
-msgstr "Obraz"
+msgstr "Obrazek"
#: includes/taxonomy-images/taxonomy-images.php:786
#: includes/taxonomy-images/taxonomy-images.php:823
@@ -1275,16 +1339,19 @@ msgid "term"
msgstr "hasło"
#: includes/taxonomy-images/taxonomy-images.php:797
+#, php-format
msgid "Associate an image from your media library to this %1$s."
-msgstr "Powiąż obraz w galerii mediów z „%1$s”."
+msgstr "Powiąż obrazek w galerii mediów z %1$s."
#: includes/taxonomy-images/taxonomy-images.php:846
+#, php-format
msgid "Associate an image with the %1$s named “%2$s”."
-msgstr "Powiąż obraz z „%1$s” o nazwie „%2$s”."
+msgstr "Powiąż obrazek z %1$s o nazwie „%2$s”."
#: includes/taxonomy-images/taxonomy-images.php:847
+#, php-format
msgid "Upload a new image for this %s."
-msgstr "Załaduj nowy obraz dla „%s”."
+msgstr "Załaduj nowy obrazek dla tego/tej %s."
#: includes/taxonomy-images/taxonomy-images.php:847
msgid "Upload."
@@ -1295,8 +1362,9 @@ msgid "Delete"
msgstr "Usuń"
#: includes/taxonomy-images/taxonomy-images.php:848
+#, php-format
msgid "Remove image from this %s."
-msgstr "Usuń obraz z „%s”."
+msgstr "Usuń obrazek od tego/tej %s."
#: includes/taxonomy-images/taxonomy-images.php:882
msgid "“"
@@ -1323,31 +1391,34 @@ msgid "Successfully Removed"
msgstr "Rozwiązano"
#: includes/taxonomy-images/taxonomy-images.php:1162
+#, php-format
msgid ""
-"The %1$s argument for %2$s is set to %3$s which is not a registered "
-"taxonomy. Please check the spelling and update the argument."
+"The %1$s argument for %2$s is set to %3$s which is not a registered taxonomy. "
+"Please check the spelling and update the argument."
msgstr ""
"Ustawienie „%3$s” parametru „%1$s” dla „"
-"%2$s” nie jest zarejestrowaną systematyką. Proszę sprawdź jego "
-"pisownię i dostosuj parametr."
+"%2$s” nie jest zarejestrowaną systematyką. Proszę sprawdź jego pisownię "
+"i dostosuj parametr."
#: includes/taxonomy-images/taxonomy-images.php:1163
msgid "taxonomy"
msgstr "systematyka"
#: includes/taxonomy-images/taxonomy-images.php:1174
+#, php-format
msgid "No taxonomies have image support. %1$s"
-msgstr "Brak systematyki powiązanej z obrazem. %1$s"
+msgstr "Brak systematyki powiązanej z obrazkiem. %1$s"
#: includes/taxonomy-images/taxonomy-images.php:1180
+#, php-format
msgid "The %1$s taxonomy does not have image support. %2$s"
-msgstr "Systematyce „%1$s” brakuje powiązanego obrazu. %2$s"
+msgstr "Systematyka „%1$s” nie obsługuje obrazków. %2$s"
#: includes/taxonomy-images/taxonomy-images.php:1206
+#, php-format
msgid "The %1$s has been called directly. Please use the %2$s filter instead."
msgstr ""
-"Bezpośrednio wywołano %1$s, w zamian proszę zastosuj filtr „"
-"%2$s”."
+"Bezpośrednio wywołano %1$s, w zamian proszę zastosuj filtr „%2$s”."
#: includes/taxonomy-images/taxonomy-images.php:1243
msgid "Donate"
@@ -1355,61 +1426,60 @@ msgstr "Ofiaruj"
#: includes/taxonomy-images/taxonomy-images.php:1302
#: includes/taxonomy-images/taxonomy-images.php:1303
-#: includes/template-tags.php:160 includes/types-taxonomies.php:94
-#: includes/types-taxonomies.php:96 includes/types-taxonomies.php:97
-#: includes/types-taxonomies.php:98 includes/types-taxonomies.php:99
+#: includes/types-taxonomies.php:94 includes/types-taxonomies.php:96
+#: includes/types-taxonomies.php:97 includes/types-taxonomies.php:99
#: includes/types-taxonomies.php:100 includes/types-taxonomies.php:101
-#: includes/types-taxonomies.php:102 includes/types-taxonomies.php:103
-#: includes/types-taxonomies.php:104 includes/types-taxonomies.php:105
+#: includes/types-taxonomies.php:102 includes/types-taxonomies.php:104
msgid "Preacher"
msgstr "Kaznodzieja"
-#. translators: %s see msgid "Preacher"
#: includes/taxonomy-images/taxonomy-images.php:1302
#: includes/taxonomy-images/taxonomy-images.php:1303
+#, php-format
msgid "Set %s’s image"
-msgstr "Ustaw obraz %s"
+msgstr "Ustaw obrazek %s"
#: includes/taxonomy-images/taxonomy-images.php:1304
#: includes/taxonomy-images/taxonomy-images.php:1305
msgid "Set Series image"
-msgstr "Ustaw obraz serii"
+msgstr "Ustaw obrazek serii"
-#: includes/template-tags.php:127 includes/template-tags.php:398
-#: includes/template-tags.php:424 includes/template-tags.php:437
-#: includes/template-tags.php:463 includes/widgets.php:96
+#: includes/template-tags.php:125 includes/template-tags.php:408
+#: includes/template-tags.php:454 includes/widgets.php:96
msgid "Bible Text: "
msgstr "Cytat biblijny: "
-#: includes/template-tags.php:160
+#. Translators: %s: Preacher label (sentence case; singular)
+#: includes/template-tags.php:158
+#, php-format
msgid "Filter by %s"
msgstr "Filtruj według %s"
-#: includes/template-tags.php:165
+#: includes/template-tags.php:163
msgid "Filter by Series"
msgstr "Filtruj według serii"
-#: includes/template-tags.php:170
+#: includes/template-tags.php:168
msgid "Filter by Topic"
msgstr "Filtruj według tematu"
-#: includes/template-tags.php:175
+#: includes/template-tags.php:173
msgid "Filter by Book"
msgstr "Filtruj według księgi"
-#: includes/template-tags.php:363 includes/template-tags.php:389
+#: includes/template-tags.php:368
msgid "Download Files"
msgstr "Pliki do pobrania"
-#: includes/template-tags.php:365 includes/template-tags.php:391
+#: includes/template-tags.php:370
msgid "MP3"
msgstr ""
-#: includes/template-tags.php:368 includes/template-tags.php:394
+#: includes/template-tags.php:373
msgid "Notes"
msgstr "Notatki"
-#: includes/template-tags.php:413 includes/template-tags.php:439
+#: includes/template-tags.php:423
msgid "Sermon Topics: "
msgstr "Tematy kazania: "
@@ -1444,22 +1514,27 @@ msgid "Preachers"
msgstr "Kaznodzieje"
#: includes/types-taxonomies.php:97
+#, php-format
msgid "Most frequent %s"
msgstr "Najczęstszy/a %s"
#: includes/types-taxonomies.php:102
+#, php-format
msgid "New %s"
msgstr "Nowy/a %s"
#: includes/types-taxonomies.php:103
+#, php-format
msgid "Separate multiple %s with commas"
msgstr "Przedzielaj %s przecinkiem"
#: includes/types-taxonomies.php:104
+#, php-format
msgid "Add or remove %s"
msgstr "Dodaj lub usuń %s"
#: includes/types-taxonomies.php:105
+#, php-format
msgid "Choose from most frequent %s"
msgstr "Wybierz z najczęstszych %s"
@@ -1621,11 +1696,8 @@ msgstr "Wybierz z najczęściej używanych rodzajów usługi"
msgid "Add Sermon Audio"
msgstr "Dodaj nagranie kazania"
-#: includes/types-taxonomies.php:374 includes/types-taxonomies.php:383
-msgid "Add File"
-msgstr "Dodaj plik"
-
#: includes/vendor/abstract-wp-rest-controller.php:29
+#, php-format
msgid "The %s method must be overridden."
msgstr "Metodę %s trzeba nadpisać."
@@ -1641,6 +1713,7 @@ msgstr "Metodę %s trzeba nadpisać."
#: includes/vendor/abstract-wp-rest-controller.php:149
#: includes/vendor/abstract-wp-rest-controller.php:161
#: includes/vendor/abstract-wp-rest-controller.php:174
+#, php-format
msgid "Method %s not implemented. Must be overridden in subclass."
msgstr ""
"Brak implementacji metody %s. Metodę trzeba nadpisać w klasie podrzędnej."
@@ -1693,144 +1766,149 @@ msgstr ""
"Dodawaj kazania w postaci słuchowiska i wideo, zarządzaj kaznodziejami, "
"seriami kazań i wiele więcej."
-#. translators: %s see msgid "←", effectively ←
-#: views/archive-wpfc_sermon.php:18 views/archive-wpfc_sermon.php:70
-#: views/archive-wpfc_sermon.php:71
-msgid "%s Older sermons"
-msgstr "%s Starsze kazania"
-
-#: views/archive-wpfc_sermon.php:18 views/archive-wpfc_sermon.php:70
-#: views/taxonomy-wpfc_bible_book.php:36 views/taxonomy-wpfc_bible_book.php:99
-#: views/taxonomy-wpfc_preacher.php:42 views/taxonomy-wpfc_preacher.php:105
-#: views/taxonomy-wpfc_sermon_series.php:43
-#: views/taxonomy-wpfc_sermon_series.php:106
-#: views/taxonomy-wpfc_sermon_topics.php:43
-#: views/taxonomy-wpfc_sermon_topics.php:106
-#: views/taxonomy-wpfc_service_type.php:36
-#: views/taxonomy-wpfc_service_type.php:99
-msgid "←"
+#: sermons.php:32
+#, php-format
+msgid "PHP %s"
msgstr ""
-#: views/archive-wpfc_sermon.php:21 views/archive-wpfc_sermon.php:73
-#: views/taxonomy-wpfc_bible_book.php:38
-#: views/taxonomy-wpfc_bible_book.php:101 views/taxonomy-wpfc_preacher.php:44
-#: views/taxonomy-wpfc_preacher.php:107
-#: views/taxonomy-wpfc_sermon_series.php:52
-#: views/taxonomy-wpfc_sermon_series.php:108
-#: views/taxonomy-wpfc_sermon_topics.php:45
-#: views/taxonomy-wpfc_service_type.php:20
-#: views/taxonomy-wpfc_service_type.php:38
-#: views/taxonomy-wpfc_service_type.php:101
-msgid "→"
-msgstr ""
+#. translators: %1$s current PHP version, see msgid "PHP %s", effectively PHP %s
+#. translators: %2$s required PHP version, see msgid "PHP %s", effectively PHP %s
+#: sermons.php:32
+#, php-format
+msgid "You are running %1$s, but Sermon Manager requires at least %2$s."
+msgstr "Uruchomiono %1$s, lecz Menadżer Kazań wymaga minumum %2$s."
+
+#. translators: %s see msgid "←", effectively ←
+#: views/archive-wpfc_sermon.php:18 views/archive-wpfc_sermon.php:71
+#, php-format
+msgid "%s Older sermons"
+msgstr "%s Starsze kazania"
-#. translators: %s see msgid "→", effectively →
-#: views/archive-wpfc_sermon.php:21 views/archive-wpfc_sermon.php:73
-#: views/archive-wpfc_sermon.php:74
+#. translators: %s see msgid "→", effectively →
+#: views/archive-wpfc_sermon.php:21 views/archive-wpfc_sermon.php:74
+#, php-format
msgid "Newer sermons %s"
msgstr "Nowsze kazania %s"
#: views/archive-wpfc_sermon.php:28 views/taxonomy-wpfc_bible_book.php:45
-#: views/taxonomy-wpfc_preacher.php:51
-#: views/taxonomy-wpfc_sermon_series.php:52
+#: views/taxonomy-wpfc_preacher.php:51 views/taxonomy-wpfc_sermon_series.php:52
#: views/taxonomy-wpfc_sermon_topics.php:52
#: views/taxonomy-wpfc_service_type.php:45
msgid "Not Found"
msgstr "Nie znaleziono"
#: views/archive-wpfc_sermon.php:30 views/taxonomy-wpfc_bible_book.php:47
-#: views/taxonomy-wpfc_preacher.php:53
-#: views/taxonomy-wpfc_sermon_series.php:54
+#: views/taxonomy-wpfc_preacher.php:53 views/taxonomy-wpfc_sermon_series.php:54
#: views/taxonomy-wpfc_sermon_topics.php:54
#: views/taxonomy-wpfc_service_type.php:47
msgid "Apologies, but no sermons were found."
msgstr "Przepraszamy, ale nie znaleziono kazań"
-#. translators: %s date
#: views/archive-wpfc_sermon.php:47 views/taxonomy-wpfc_bible_book.php:77
-#: views/taxonomy-wpfc_preacher.php:83
-#: views/taxonomy-wpfc_sermon_series.php:84
+#: views/taxonomy-wpfc_preacher.php:83 views/taxonomy-wpfc_sermon_series.php:84
#: views/taxonomy-wpfc_sermon_topics.php:84
#: views/taxonomy-wpfc_service_type.php:77
+#, php-format
msgid "Preached on %s"
msgstr "Wygłoszono dnia %s"
-#: views/archive-wpfc_sermon.php:59 views/archive-wpfc_sermon.php:60
-#: views/taxonomy-wpfc_bible_book.php:88 views/taxonomy-wpfc_preacher.php:94
-#: views/taxonomy-wpfc_sermon_series.php:95
-#: views/taxonomy-wpfc_sermon_topics.php:95
-#: views/taxonomy-wpfc_service_type.php:88
+#: views/archive-wpfc_sermon.php:60 views/taxonomy-wpfc_bible_book.php:89
+#: views/taxonomy-wpfc_preacher.php:95 views/taxonomy-wpfc_sermon_series.php:96
+#: views/taxonomy-wpfc_sermon_topics.php:96
+#: views/taxonomy-wpfc_service_type.php:89
+#, php-format
msgid "%s comment"
msgid_plural "%s comments"
msgstr[0] "%s komentarz"
msgstr[1] "%s komentarze"
msgstr[2] "%s komentarzy"
-#: views/archive-wpfc_sermon.php:59 views/archive-wpfc_sermon.php:60
-#: views/taxonomy-wpfc_bible_book.php:88 views/taxonomy-wpfc_preacher.php:94
-#: views/taxonomy-wpfc_sermon_series.php:95
-#: views/taxonomy-wpfc_sermon_topics.php:95
-#: views/taxonomy-wpfc_service_type.php:88
+#: views/archive-wpfc_sermon.php:60 views/taxonomy-wpfc_bible_book.php:89
+#: views/taxonomy-wpfc_preacher.php:95 views/taxonomy-wpfc_sermon_series.php:96
+#: views/taxonomy-wpfc_sermon_topics.php:96
+#: views/taxonomy-wpfc_service_type.php:89
msgid "Leave a comment"
msgstr "Pozostaw komentarz"
-#: views/single-wpfc_sermon.php:42
+#: views/single-wpfc_sermon.php:30
msgctxt "Previous post link"
msgid "←"
msgstr ""
-#: views/single-wpfc_sermon.php:44
+#: views/single-wpfc_sermon.php:33
msgctxt "Next post link"
msgid "→"
msgstr ""
#: views/taxonomy-wpfc_bible_book.php:20
+#, php-format
msgid "Sermons by Book: %s"
msgstr "Kazania według księgi: %s"
-#. translators: %s see msgid "←", effectively ←
-#: views/taxonomy-wpfc_bible_book.php:36 views/taxonomy-wpfc_bible_book.php:99
-#: views/taxonomy-wpfc_preacher.php:42 views/taxonomy-wpfc_preacher.php:105
+#. translators: %s see msgid "←", effectively ←
+#: views/taxonomy-wpfc_bible_book.php:36 views/taxonomy-wpfc_bible_book.php:100
+#: views/taxonomy-wpfc_preacher.php:42 views/taxonomy-wpfc_preacher.php:106
#: views/taxonomy-wpfc_sermon_series.php:43
-#: views/taxonomy-wpfc_sermon_series.php:106
+#: views/taxonomy-wpfc_sermon_series.php:107
#: views/taxonomy-wpfc_sermon_topics.php:43
-#: views/taxonomy-wpfc_sermon_topics.php:106
+#: views/taxonomy-wpfc_sermon_topics.php:107
#: views/taxonomy-wpfc_service_type.php:36
-#: views/taxonomy-wpfc_service_type.php:99
+#: views/taxonomy-wpfc_service_type.php:100
+#, php-format
msgid "%s Older posts"
msgstr "%s Starsze wpisy"
-#. translators: %s see msgid "→", effectively →
-#: views/taxonomy-wpfc_bible_book.php:38
-#: views/taxonomy-wpfc_bible_book.php:101 views/taxonomy-wpfc_preacher.php:44
-#: views/taxonomy-wpfc_preacher.php:107
+#: views/taxonomy-wpfc_bible_book.php:36 views/taxonomy-wpfc_bible_book.php:100
+#: views/taxonomy-wpfc_preacher.php:42 views/taxonomy-wpfc_preacher.php:106
+#: views/taxonomy-wpfc_sermon_series.php:43
+#: views/taxonomy-wpfc_sermon_series.php:107
+#: views/taxonomy-wpfc_sermon_topics.php:43
+#: views/taxonomy-wpfc_sermon_topics.php:107
+#: views/taxonomy-wpfc_service_type.php:36
+#: views/taxonomy-wpfc_service_type.php:100
+msgid "←"
+msgstr ""
+
+#: views/taxonomy-wpfc_bible_book.php:38 views/taxonomy-wpfc_bible_book.php:102
+#: views/taxonomy-wpfc_preacher.php:44 views/taxonomy-wpfc_preacher.php:108
#: views/taxonomy-wpfc_sermon_series.php:45
-#: views/taxonomy-wpfc_sermon_series.php:108
+#: views/taxonomy-wpfc_sermon_series.php:109
#: views/taxonomy-wpfc_sermon_topics.php:45
-#: views/taxonomy-wpfc_sermon_topics.php:108
+#: views/taxonomy-wpfc_sermon_topics.php:109
#: views/taxonomy-wpfc_service_type.php:38
-#: views/taxonomy-wpfc_service_type.php:101
+#: views/taxonomy-wpfc_service_type.php:102
+msgid "→"
+msgstr ""
+
+#. translators: %s see msgid "→", effectively →
+#: views/taxonomy-wpfc_bible_book.php:38 views/taxonomy-wpfc_bible_book.php:102
+#: views/taxonomy-wpfc_preacher.php:44 views/taxonomy-wpfc_preacher.php:108
+#: views/taxonomy-wpfc_sermon_series.php:45
+#: views/taxonomy-wpfc_sermon_series.php:109
+#: views/taxonomy-wpfc_sermon_topics.php:45
+#: views/taxonomy-wpfc_sermon_topics.php:109
+#: views/taxonomy-wpfc_service_type.php:38
+#: views/taxonomy-wpfc_service_type.php:102
+#, php-format
msgid "Newer posts %s"
msgstr "Nowsze wpisy %s"
#: views/taxonomy-wpfc_preacher.php:20
+#, php-format
msgid "Sermons by: %s"
msgstr "Kazania według kaznodzieja: %s"
#: views/taxonomy-wpfc_sermon_series.php:20
+#, php-format
msgid "Sermons Series: %s"
msgstr "Kazania z serii: %s"
#: views/taxonomy-wpfc_sermon_topics.php:20
+#, php-format
msgid "Sermons Topic: %s"
msgstr "Tematy kazań: %s"
#: views/taxonomy-wpfc_service_type.php:20
+#, php-format
msgid "Sermons By Service: %s"
msgstr "Kazania według usługi: %s"
-
-#~ msgid "”"
-#~ msgstr "rdquo;"
-
-#~ msgid "“"
-#~ msgstr "„"
diff --git a/languages/sermon-manager-for-wordpress.pot b/languages/sermon-manager-for-wordpress.pot
index 35b62ba..fca4d95 100644
--- a/languages/sermon-manager-for-wordpress.pot
+++ b/languages/sermon-manager-for-wordpress.pot
@@ -4,245 +4,268 @@ msgid ""
msgstr ""
"Project-Id-Version: sermon-manager-for-wordpress\n"
"Report-Msgid-Bugs-To: http://wordpress.org/tag/sermon-manager-for-wordpress\n"
-"POT-Creation-Date: 2017-10-01 07:03:00+0200\n"
-"PO-Revision-Date: 2017-09-30 07:03:00+0200\n"
+"POT-Creation-Date: 2017-10-10 14:00:00+0200\n"
+"PO-Revision-Date: YEAR-MO-DA HH:MM:SS\n"
"Language-Team: WP for Church\n"
-"Language: \n"
+"Language:\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. translators: %s see msgid "View sermon", effectively View sermon
-#: includes/admin-functions.php:124
+#: includes/admin-functions.php:125
#, php-format
msgid "Sermon updated. %s"
msgstr ""
-#: includes/admin-functions.php:124 includes/admin-functions.php:130
-#: includes/admin-functions.php:136 includes/class-sm-post-types.php:201
+#: includes/admin-functions.php:125 includes/admin-functions.php:132
+#: includes/admin-functions.php:144 includes/class-sm-post-types.php:201
#: includes/class-sm-post-types.php:202
msgid "View sermon"
msgstr ""
-#: includes/admin-functions.php:125
+#: includes/admin-functions.php:126
msgid "Custom field updated."
msgstr ""
-#: includes/admin-functions.php:126
+#: includes/admin-functions.php:127
msgid "Custom field deleted."
msgstr ""
-#: includes/admin-functions.php:127
+#: includes/admin-functions.php:128
msgid "Sermon updated."
msgstr ""
-#: includes/admin-functions.php:129
+#. translators: %s date and time of the revision
+#: includes/admin-functions.php:130
#, php-format
msgid "Sermon restored to revision from %s"
msgstr ""
#. translators: %s see msgid "View sermon", effectively View sermon
-#: includes/admin-functions.php:130
+#: includes/admin-functions.php:132
#, php-format
msgid "Sermon published. %s"
msgstr ""
-#: includes/admin-functions.php:131
+#: includes/admin-functions.php:133
msgid "Sermon saved."
msgstr ""
-#: includes/admin-functions.php:132 includes/admin-functions.php:135
+#: includes/admin-functions.php:135 includes/admin-functions.php:142
msgid "Preview sermon"
msgstr ""
#. translators: %s see msgid "Preview sermon", effectively Preview sermon
-#: includes/admin-functions.php:132
+#: includes/admin-functions.php:135
#, php-format
msgid "Sermon submitted. %s"
msgstr ""
#. translators: %1$s see msgid "%1$s at %2$s", effectively at
#. translators: %2$s see msgid "Preview sermon", effectively Preview sermon
-#: includes/admin-functions.php:133
+#: includes/admin-functions.php:138
#, php-format
msgid "Sermon scheduled for: %1$s. %2$s"
msgstr ""
#. translators: %1$s date
#. translators: %2$s time
-#: includes/admin-functions.php:134 includes/admin-functions.php:135
+#: includes/admin-functions.php:141
#, php-format
msgid "%1$s at %2$s"
msgstr ""
#. translators: %s see msgid "Preview sermon", effectively Preview sermon
-#: includes/admin-functions.php:136
+#: includes/admin-functions.php:144
#, php-format
msgid "Sermon draft updated. %s"
msgstr ""
-#: includes/admin-functions.php:189
+#: includes/admin-functions.php:197
msgid "Sermon Title"
msgstr ""
-#. translators: %s: Preachers label (sentence case; plural)
-#: includes/admin-functions.php:191 includes/class-sm-post-types.php:44
+#. Translators: %s: Preacher label (sentence case; singular)
+#. translators: %s Preachers label (sentence case; plural)
+#. translators: %s Preachers label (sentence case; plural)
+#. translators: %s Preacher label (sentence case; singular)
+#: includes/admin-functions.php:199 includes/class-sm-post-types.php:44
#: includes/class-sm-post-types.php:47 includes/class-sm-post-types.php:49
#, php-format
msgid "%s"
msgstr ""
-#: includes/admin-functions.php:191 includes/admin-functions.php:192
-#: includes/types-taxonomies.php:120 includes/types-taxonomies.php:121
-#: includes/types-taxonomies.php:122
+#: includes/admin-functions.php:200 includes/types-taxonomies.php:120
+#: includes/types-taxonomies.php:121 includes/types-taxonomies.php:122
msgid "Sermon Series"
msgstr ""
-#: includes/admin-functions.php:192 includes/admin-functions.php:193
-#: includes/class-sm-post-types.php:104 includes/class-sm-post-types.php:106
+#: includes/admin-functions.php:201 includes/class-sm-post-types.php:104
+#: includes/class-sm-post-types.php:106
msgid "Topics"
msgstr ""
-#: includes/admin-functions.php:193 includes/admin-functions.php:194
+#: includes/admin-functions.php:202
msgid "Views"
msgstr ""
-#: includes/admin-functions.php:194 includes/admin-functions.php:195
-#: includes/sm-cmb-functions.php:85 includes/types-taxonomies.php:301
+#: includes/admin-functions.php:203 includes/sm-cmb-functions.php:85
+#: includes/types-taxonomies.php:301
msgid "Date Preached"
msgstr ""
-#: includes/admin-functions.php:195 includes/admin-functions.php:196
+#: includes/admin-functions.php:204
msgid "Bible Passage"
msgstr ""
#. translators: %s see msgid "Error:"
-#: includes/admin-functions.php:212 includes/admin-functions.php:213
+#: includes/admin-functions.php:222
#, php-format
msgid "%s Can’t find sermon ID."
msgstr ""
-#: includes/admin-functions.php:212 includes/admin-functions.php:213
-#: includes/admin-functions.php:252 includes/admin-functions.php:253
+#: includes/admin-functions.php:222 includes/admin-functions.php:261
+#: includes/admin-functions.php:262
msgid "Error:"
msgstr ""
-#: includes/admin-functions.php:290 includes/class-sm-post-types.php:193
-#: includes/types-taxonomies.php:59
-msgid "Sermon"
-msgstr ""
-
-#: includes/admin-functions.php:306 includes/admin-functions.php:307
+#. translators: %s integer count of sermons
+#: includes/admin-functions.php:317
#, php-format
msgid "%s sermon"
msgid_plural "%s sermons"
-msgstr[0] "%s sermon"
-msgstr[1] "%s sermons"
+msgstr[0] ""
+msgstr[1] ""
-#. translators: %s: Plugin name
-#: includes/class-sm-error-recovery.php:200
+#. translators: %s Plugin name
+#: includes/class-sm-error-recovery.php:212
#, php-format
msgid "%s encountered a fatal error and recovered successfully."
msgstr ""
-#: includes/class-sm-error-recovery.php:203
+#: includes/class-sm-error-recovery.php:215
msgid "The issue has already been submitted."
msgstr ""
-#: includes/class-sm-error-recovery.php:208
-msgctxt "Button"
+#: includes/class-sm-error-recovery.php:220
+msgctxt "button"
msgid "Send an anonymous report"
msgstr ""
-#: includes/class-sm-error-recovery.php:212
-msgctxt "Button"
+#: includes/class-sm-error-recovery.php:224
+msgctxt "button"
msgid "Show error message"
msgstr ""
-#: includes/class-sm-error-recovery.php:215
-msgctxt "Button"
+#: includes/class-sm-error-recovery.php:227
+msgctxt "button"
msgid "Reactivate Plugin"
msgstr ""
-#: includes/class-sm-error-recovery.php:222
-msgctxt "Title"
+#: includes/class-sm-error-recovery.php:234
+msgctxt "title"
msgid "Are you sure?"
msgstr ""
-#: includes/class-sm-error-recovery.php:224
+#: includes/class-sm-error-recovery.php:236
msgid ""
"If the issue is not fixed, website will crash. (but we will recover it again)"
msgstr ""
-#: includes/class-sm-error-recovery.php:226
+#: includes/class-sm-error-recovery.php:238
msgctxt "title"
msgid "Optional info"
msgstr ""
-#: includes/class-sm-error-recovery.php:228
+#: includes/class-sm-error-recovery.php:240
msgid ""
"If you have more information about the issue, please type it here (optional):"
msgstr ""
-#: includes/class-sm-error-recovery.php:230
-msgctxt "Label"
+#: includes/class-sm-error-recovery.php:242
+msgctxt "label"
msgid "Issue details"
msgstr ""
-#: includes/class-sm-error-recovery.php:232
-msgctxt "Placeholder"
+#: includes/class-sm-error-recovery.php:244
+msgctxt "placeholder"
msgid "Steps for how to reproduce, etc…"
msgstr ""
-#: includes/class-sm-error-recovery.php:233
+#: includes/class-sm-error-recovery.php:245
msgid "Email for further contact (optional)"
msgstr ""
-#: includes/class-sm-error-recovery.php:234
+#: includes/class-sm-error-recovery.php:246
msgid "name@example.com"
msgstr ""
-#: includes/class-sm-error-recovery.php:235
-msgctxt "Label"
+#: includes/class-sm-error-recovery.php:247
+msgctxt "label"
msgid "Email"
msgstr ""
+#: includes/class-sm-install.php:158
+msgid "Monthly"
+msgstr ""
+
+#: includes/class-sm-install.php:173
+msgid "View Sermon Manager settings"
+msgstr ""
+
+#: includes/class-sm-install.php:191
+msgid "Premium support"
+msgstr ""
+
+#: includes/class-sm-install.php:191
+msgid "Visit premium customer support"
+msgstr ""
+
+#. translators: %s Preachers label (sentence case; plural)
#: includes/class-sm-post-types.php:51
#, php-format
-msgctxt "Admin menu name"
+msgctxt "menu"
msgid "%s"
msgstr ""
+#. translators: %s Preachers label (lowercase; plural)
#: includes/class-sm-post-types.php:53 includes/types-taxonomies.php:96
#, php-format
msgid "Search %s"
msgstr ""
+#. translators: %s Preachers label (lowercase; plural)
#: includes/class-sm-post-types.php:55 includes/types-taxonomies.php:98
#, php-format
msgid "All %s"
msgstr ""
+#. translators: %s Preacher label (lowercase; singular)
#: includes/class-sm-post-types.php:59 includes/types-taxonomies.php:99
#, php-format
msgid "Edit %s"
msgstr ""
+#. translators: %s Preacher label (lowercase; singular)
#: includes/class-sm-post-types.php:61 includes/types-taxonomies.php:100
#, php-format
msgid "Update %s"
msgstr ""
+#. translators: %s Preacher label (lowercase; singular)
#: includes/class-sm-post-types.php:63 includes/types-taxonomies.php:101
#, php-format
msgid "Add new %s"
msgstr ""
+#. translators: %s Preacher label (lowercase; singular)
#: includes/class-sm-post-types.php:65
#, php-format
msgid "New %s name"
msgstr ""
+#. translators: %s Preacher label (lowercase; singular)
#: includes/class-sm-post-types.php:67
#, php-format
msgid "No %s found"
@@ -254,7 +277,7 @@ msgid "Series"
msgstr ""
#: includes/class-sm-post-types.php:83
-msgctxt "Admin menu name"
+msgctxt "menu"
msgid "Series"
msgstr ""
@@ -291,7 +314,7 @@ msgid "Topic"
msgstr ""
#: includes/class-sm-post-types.php:108
-msgctxt "Admin menu name"
+msgctxt "menu"
msgid "Topics"
msgstr ""
@@ -336,7 +359,7 @@ msgid "Book"
msgstr ""
#: includes/class-sm-post-types.php:133
-msgctxt "Admin menu name"
+msgctxt "menu"
msgid "Books"
msgstr ""
@@ -379,7 +402,7 @@ msgid "Service Type"
msgstr ""
#: includes/class-sm-post-types.php:158
-msgctxt "Admin menu name"
+msgctxt "menu"
msgid "Service Types"
msgstr ""
@@ -411,18 +434,22 @@ msgstr ""
msgid "No service types found"
msgstr ""
-#: includes/class-sm-post-types.php:192 includes/options.php:291
-#: includes/options.php:300 includes/types-taxonomies.php:58
+#: includes/class-sm-post-types.php:192 includes/options.php:269
+#: includes/options.php:278 includes/types-taxonomies.php:58
#: includes/types-taxonomies.php:68 views/archive-wpfc_sermon.php:13
msgid "Sermons"
msgstr ""
+#: includes/class-sm-post-types.php:193 includes/types-taxonomies.php:59
+msgid "Sermon"
+msgstr ""
+
#: includes/class-sm-post-types.php:194
msgid "All Sermons"
msgstr ""
#: includes/class-sm-post-types.php:195
-msgctxt "Admin menu name"
+msgctxt "menu"
msgid "Sermons"
msgstr ""
@@ -434,12 +461,11 @@ msgstr ""
msgid "Add new sermon"
msgstr ""
-#: includes/class-sm-post-types.php:198 views/archive-wpfc_sermon.php:61
-#: views/archive-wpfc_sermon.php:62 views/single-wpfc_sermon.php:35
-#: views/taxonomy-wpfc_bible_book.php:89 views/taxonomy-wpfc_preacher.php:95
-#: views/taxonomy-wpfc_sermon_series.php:96
-#: views/taxonomy-wpfc_sermon_topics.php:96
-#: views/taxonomy-wpfc_service_type.php:89
+#: includes/class-sm-post-types.php:198 views/archive-wpfc_sermon.php:62
+#: views/single-wpfc_sermon.php:23 views/taxonomy-wpfc_bible_book.php:90
+#: views/taxonomy-wpfc_preacher.php:96 views/taxonomy-wpfc_sermon_series.php:97
+#: views/taxonomy-wpfc_sermon_topics.php:97
+#: views/taxonomy-wpfc_service_type.php:90
msgid "Edit"
msgstr ""
@@ -503,224 +529,216 @@ msgstr ""
msgid "This is where you can add new sermons to your website."
msgstr ""
-#: includes/helper-functions.php:193 includes/template-tags.php:129
-#: includes/template-tags.php:400 includes/template-tags.php:426
-#: includes/template-tags.php:439 includes/template-tags.php:465
+#: includes/helper-functions.php:193 includes/template-tags.php:127
+#: includes/template-tags.php:410 includes/template-tags.php:456
msgid "Series: "
msgstr ""
-#: includes/options.php:74 includes/options.php:81
+#: includes/libraries/wp-background-process.php:423
+#, php-format
+msgid "Every %s minutes"
+msgstr ""
+
+#: includes/options.php:71 includes/options.php:165
msgid "Sermon Manager Settings"
msgstr ""
-#: includes/options.php:81 includes/options.php:94 includes/options.php:101
-#: includes/options.php:761 includes/options.php:770
-#: includes/taxonomy-images/taxonomy-images.php:333
+#: includes/options.php:71 includes/taxonomy-images/taxonomy-images.php:333
#: includes/taxonomy-images/taxonomy-images.php:1238
msgid "Settings"
msgstr ""
-#: includes/options.php:99 includes/options.php:106
-msgid "Support"
-msgstr ""
-
-#: includes/options.php:108 includes/options.php:115
-#: includes/taxonomy-images/taxonomy-images.php:1263
+#: includes/options.php:80 includes/taxonomy-images/taxonomy-images.php:1263
msgid "Manage Settings"
msgstr ""
-#: includes/options.php:197 includes/options.php:204
-msgid "Sermon Manager Options"
-msgstr ""
-
-#: includes/options.php:203 includes/options.php:209
+#: includes/options.php:170
msgid "General"
msgstr ""
-#: includes/options.php:205 includes/options.php:211
+#: includes/options.php:173
msgid "Verse"
msgstr ""
-#: includes/options.php:207 includes/options.php:213
+#: includes/options.php:176
msgid "Podcast"
msgstr ""
-#: includes/options.php:213 includes/options.php:219
-msgid "Options saved"
+#: includes/options.php:184
+msgid "Settings saved"
msgstr ""
-#: includes/options.php:222 includes/options.php:228
+#: includes/options.php:194
msgid "Need Some Help?"
msgstr ""
#. translators: %s see msgid "Sign up"
-#: includes/options.php:224 includes/options.php:230
+#: includes/options.php:198
#, php-format
msgid ""
"Did you know you can get expert support for only $49 per year! %s today and "
"get support from the developers who are building the Sermon Manager."
msgstr ""
-#: includes/options.php:224 includes/options.php:230
+#: includes/options.php:198
msgid "Sign up"
msgstr ""
-#: includes/options.php:227 includes/options.php:233
+#: includes/options.php:202
msgid "Free Support"
msgstr ""
-#: includes/options.php:228 includes/options.php:234
+#: includes/options.php:204
msgid "Priority Support"
msgstr ""
-#: includes/options.php:231 includes/options.php:237
+#: includes/options.php:207
msgid "We offer limited free support via WordPress.org"
msgstr ""
-#: includes/options.php:238 includes/options.php:243
+#: includes/options.php:214
msgid "Frequently Asked Questions"
msgstr ""
-#. translators: %s see msgid "Knowledge base"
-#: includes/options.php:253 includes/options.php:259
+#. translators: %s see msgid "knowledge base"
+#: includes/options.php:232
#, php-format
msgid "Find out more in our %s"
msgstr ""
-#: includes/options.php:253 includes/options.php:259
+#: includes/options.php:232
msgid "knowledge base"
msgstr ""
-#: includes/options.php:259 includes/options.php:265
+#: includes/options.php:239
msgid "Lets Make It Even Better!"
msgstr ""
-#: includes/options.php:264 includes/options.php:270
-msgid "Submit Your Idea"
-msgstr ""
-
-#: includes/options.php:267
+#: includes/options.php:242
msgid ""
"If you have ideas on how to make Sermon Manager or any of our products "
"better, let us know!"
msgstr ""
-#: includes/options.php:277 includes/options.php:283
-msgid "General Settings"
+#: includes/options.php:246
+msgid "Submit Your Idea"
msgstr ""
-#: includes/options.php:281 includes/options.php:287
-msgid "Archive Page Title"
+#: includes/options.php:260
+msgid "General Settings"
msgstr ""
-#: includes/options.php:289 includes/options.php:296
-msgid "Archive Page Slug"
+#: includes/options.php:265
+msgid "Archive Page Title"
msgstr ""
-#: includes/options.php:291 includes/options.php:300 includes/options.php:490
-#: includes/options.php:494 includes/options.php:500 includes/options.php:504
-#: includes/options.php:510 includes/options.php:514 includes/options.php:520
-#: includes/options.php:524 includes/options.php:555 includes/options.php:559
-#: includes/options.php:603 includes/options.php:607 includes/options.php:616
-#: includes/options.php:620 includes/options.php:648 includes/options.php:661
+#: includes/options.php:269 includes/options.php:278 includes/options.php:488
+#: includes/options.php:498 includes/options.php:508 includes/options.php:518
+#: includes/options.php:554 includes/options.php:602 includes/options.php:615
+#: includes/options.php:643 includes/options.php:656
#, php-format
msgid "e.g. %s"
msgstr ""
+#: includes/options.php:274
+msgid "Archive Page Slug"
+msgstr ""
+
#. translators: %1$s see msgid "sermons/preacher", effectively sermons/preacher
#. translators: %2$s see msgid "sermons/series", effectively sermons/series
-#: includes/options.php:297 includes/options.php:305
+#: includes/options.php:285
#, php-format
msgid ""
"Common Base Slug — this is for users who want to have a common base "
"slug across all taxonomies, e.g. %1$s or %2$s."
msgstr ""
-#: includes/options.php:297 includes/options.php:305
+#: includes/options.php:285
msgid "sermons/preacher"
msgstr ""
-#: includes/options.php:297 includes/options.php:305
+#: includes/options.php:285
msgid "sermons/series"
msgstr ""
-#: includes/options.php:302 includes/options.php:310
+#: includes/options.php:290
msgid "Enable a common base slug across all taxonomies"
msgstr ""
-#: includes/options.php:308 includes/options.php:316
+#: includes/options.php:296
msgid ""
"Enable Template Files — this is for users upgrading from an older "
"version who have issues with version 1.5+."
msgstr ""
#. translators: %s effectively /views
-#. Since /views is a locale independent folder name it MUST NOT be localized
-#: includes/options.php:313 includes/options.php:321
+#. translators: Since /views is a locale independent folder name it MUST NOT be localized
+#: includes/options.php:303
#, php-format
msgid "Enable template files found in the %s folder"
msgstr ""
-#: includes/options.php:319 includes/options.php:327
+#: includes/options.php:309
msgid "Disable Sermon Styles"
msgstr ""
#. translators: %s effectively sermons.css
-#. Since sermons.css is a locale independent file name it MUST NOT be localized
-#: includes/options.php:324 includes/options.php:332
+#: includes/options.php:315
+#, php-format
msgid ""
"Disable Sermon CSS. If you do this, you should copy the styles from %s and "
"include them in your theme CSS."
msgstr ""
-#: includes/options.php:338
+#: includes/options.php:321
msgid "Display audio player or video on archive pages"
msgstr ""
-#: includes/options.php:343
+#: includes/options.php:326
msgid "Display an audio player or video embed in the archive listing."
msgstr ""
-#: includes/options.php:349 includes/options.php:354
+#: includes/options.php:332 includes/options.php:337
msgid "Use old audio player"
msgstr ""
-#: includes/options.php:352 includes/options.php:360
+#: includes/options.php:343
msgid ""
"Custom label for “Preacher”. Note: it will also change preacher "
"slugs."
msgstr ""
-#: includes/options.php:360 includes/options.php:368
+#: includes/options.php:351
msgid "Sermon date format (used when creating a new Sermon)"
msgstr ""
-#: includes/options.php:389 includes/options.php:395
+#: includes/options.php:372 includes/options.php:378
msgid "Show key verse in widget"
msgstr ""
-#: includes/options.php:393 includes/options.php:401
+#. translators: %s version like x.x.x
+#: includes/options.php:385
#, php-format
msgid "Version %s"
msgstr ""
-#: includes/options.php:405 includes/options.php:406
+#: includes/options.php:389
msgid "Current Version"
msgstr ""
-#: includes/options.php:413 includes/options.php:414
+#: includes/options.php:398
msgid "Verse Settings"
msgstr ""
-#: includes/options.php:418 includes/options.php:419
+#: includes/options.php:404
msgid "Verse Popups"
msgstr ""
-#: includes/options.php:424 includes/options.php:425
+#: includes/options.php:410
msgid "Disable Bib.ly verse popups"
msgstr ""
-#: includes/options.php:430 includes/options.php:431
+#: includes/options.php:416
msgid "Select Bible Version for Verse Popups"
msgstr ""
@@ -729,259 +747,257 @@ msgstr ""
#. translators: %3$s effectively KJV
#. translators: %4$s effectively LEB
#. translators: %5$s see msgid "bib.ly", effectively bib.ly
-#: includes/options.php:444 includes/options.php:452
+#: includes/options.php:443
#, php-format
msgid "%1$s, %2$s, %3$s, or %4$s are the currently supported popups for %5$s."
msgstr ""
-#: includes/options.php:449 includes/options.php:457
+#: includes/options.php:448
msgid "bib.ly"
msgstr ""
#. translators: %s see effectively ESV
-#: includes/options.php:451 includes/options.php:459
+#: includes/options.php:451
#, php-format
msgid "Warning! %s is not supported if your site uses SSL (HTTPS)."
msgstr ""
-#: includes/options.php:464 includes/options.php:468
+#: includes/options.php:461
msgid "Podcast Settings"
msgstr ""
-#: includes/options.php:486 includes/options.php:490
+#: includes/options.php:484
msgid "Title"
msgstr ""
-#: includes/options.php:496 includes/options.php:500
-#: includes/sm-cmb-functions.php:107 includes/types-taxonomies.php:323
+#: includes/options.php:494 includes/sm-cmb-functions.php:107
+#: includes/types-taxonomies.php:323
msgid "Description"
msgstr ""
-#: includes/options.php:506 includes/options.php:510
+#: includes/options.php:504
msgid "Website Link"
msgstr ""
-#: includes/options.php:516 includes/options.php:520
+#: includes/options.php:514
msgid "Language"
msgstr ""
-#: includes/options.php:526 includes/options.php:530
+#: includes/options.php:524
msgid "Copyright"
msgstr ""
-#: includes/options.php:530 includes/options.php:534
+#: includes/options.php:528
#, php-format
msgid "e.g. Copyright © %s"
msgstr ""
#. translators: %s ©
-#: includes/options.php:535 includes/options.php:539
+#: includes/options.php:534
#, php-format
msgid "Tip: Use %s to generate a copyright symbol."
msgstr ""
-#: includes/options.php:541 includes/options.php:545
+#: includes/options.php:540
msgid "Webmaster Name"
msgstr ""
-#: includes/options.php:545 includes/options.php:549
+#: includes/options.php:544
msgid "e.g. Your Name"
msgstr ""
-#: includes/options.php:551 includes/options.php:555
+#: includes/options.php:550
msgid "Webmaster Email"
msgstr ""
-#: includes/options.php:561 includes/options.php:565
+#: includes/options.php:560
msgid "Author"
msgstr ""
-#: includes/options.php:565 includes/options.php:569
+#: includes/options.php:564
msgid "e.g. Primary Speaker or Church Name"
msgstr ""
-#: includes/options.php:569 includes/options.php:573
+#: includes/options.php:568
msgid "This will display at the “Artist” in the iTunes Store."
msgstr ""
-#: includes/options.php:574 includes/options.php:578
+#: includes/options.php:573
msgid "Subtitle"
msgstr ""
-#: includes/options.php:578 includes/options.php:582
+#: includes/options.php:577
#, php-format
msgid "e.g. Preaching and teaching audio from %s"
msgstr ""
-#: includes/options.php:582 includes/options.php:586
+#: includes/options.php:581
msgid ""
"Your subtitle should briefly tell the listener what they can expect to hear."
msgstr ""
-#: includes/options.php:587 includes/options.php:591
+#: includes/options.php:586
msgid "Summary"
msgstr ""
-#: includes/options.php:591 includes/options.php:595
+#: includes/options.php:590
#, php-format
msgid "e.g. Weekly teaching audio brought to you by %s in City, State."
msgstr ""
-#: includes/options.php:594 includes/options.php:598
+#: includes/options.php:593
msgid ""
"Keep your Podcast Summary short, sweet and informative. Be sure to include a "
"brief statement about your mission and in what region your audio content "
"originates."
msgstr ""
-#: includes/options.php:599 includes/options.php:603
+#: includes/options.php:598
msgid "Owner Name"
msgstr ""
-#: includes/options.php:607 includes/options.php:611
+#: includes/options.php:606
msgid "This should typically be the name of your Church."
msgstr ""
-#: includes/options.php:612 includes/options.php:616
+#: includes/options.php:611
msgid "Owner Email"
msgstr ""
-#: includes/options.php:620 includes/options.php:624
+#: includes/options.php:619
msgid ""
"Use an email address that you don’t mind being made public. If someone "
-"wants to contact you regarding your Podcast this is the address they will "
-"use."
+"wants to contact you regarding your Podcast this is the address they will use."
msgstr ""
-#: includes/options.php:625 includes/options.php:629
+#: includes/options.php:624
msgid "Cover Image"
msgstr ""
-#: includes/options.php:632 includes/options.php:636
+#: includes/options.php:631
msgid "Upload Image"
msgstr ""
-#: includes/options.php:635 includes/options.php:639
+#: includes/options.php:634
msgid ""
"This JPG will serve as the Podcast artwork in the iTunes Store. The image "
-"must be between 1,400px by 1,400px and 3,000px by 3,000px or else iTunes "
-"will not accept your feed."
+"must be between 1,400px by 1,400px and 3,000px by 3,000px or else iTunes will "
+"not accept your feed."
msgstr ""
-#: includes/options.php:640 includes/options.php:644
+#: includes/options.php:639
msgid "Top Category"
msgstr ""
-#: includes/options.php:648 includes/options.php:652
+#: includes/options.php:647
msgid ""
"Choose the appropriate top-level category for your Podcast listing in iTunes."
msgstr ""
-#: includes/options.php:653 includes/options.php:657
+#: includes/options.php:652
msgid "Sub Category"
msgstr ""
-#: includes/options.php:661 includes/options.php:665
+#: includes/options.php:660
msgid "Choose the appropriate sub category for your Podcast listing in iTunes."
msgstr ""
-#: includes/options.php:666 includes/options.php:670
+#: includes/options.php:665
msgid "PodTrac Tracking"
msgstr ""
-#: includes/options.php:671 includes/options.php:675
+#: includes/options.php:670
msgid "Enables PodTrac tracking."
msgstr ""
#. translators: %s podtrac.com
-#: includes/options.php:675 includes/options.php:679
+#: includes/options.php:675
#, php-format
msgid "For more info on PodTrac or to sign up for an account, visit %s"
msgstr ""
-#: includes/options.php:680 includes/options.php:684
+#: includes/options.php:680
msgid "HTML in description"
msgstr ""
-#: includes/options.php:686 includes/options.php:690
+#: includes/options.php:686
msgid "Enable HTML description"
msgstr ""
-#: includes/options.php:690 includes/options.php:694
+#: includes/options.php:690
msgid ""
"Enables showing of HTML in iTunes description field. Uncheck if description "
"looks messy."
msgstr ""
-#: includes/options.php:695 includes/options.php:699
+#: includes/options.php:695
msgid "Number of podcasts to show"
msgstr ""
-#: includes/options.php:704 includes/options.php:708
+#: includes/options.php:704
msgid ""
"Shows custom podcast count. If not defined, it uses WordPress default count."
msgstr ""
-#: includes/options.php:715
+#: includes/options.php:711
msgid "Feed URL to Submit to iTunes"
msgstr ""
-#: includes/options.php:722 includes/options.php:725
+#: includes/options.php:722
msgid "Feed Validator"
msgstr ""
#. translators: %s Feed Validator link, see msgid "Feed Validator"
-#: includes/options.php:722 includes/options.php:725
+#: includes/options.php:722
#, php-format
msgid ""
-"Use the %s to diagnose and fix any problems before submitting your Podcast "
-"to iTunes."
+"Use the %s to diagnose and fix any problems before submitting your Podcast to "
+"iTunes."
msgstr ""
#. translators: %s see msgid "Submit Your Podcast"
-#: includes/options.php:725 includes/options.php:728
+#: includes/options.php:726
#, php-format
msgid ""
"Once your Podcast Settings are complete and your Sermons are ready, it’"
"s time to %s to the iTunes Store!"
msgstr ""
-#: includes/options.php:725 includes/options.php:728
+#: includes/options.php:726
msgid "Submit Your Podcast"
msgstr ""
#. translators: %s see msgid "FeedBurner"
-#: includes/options.php:727 includes/options.php:731
+#: includes/options.php:730
#, php-format
msgid ""
-"Alternatively, if you want to track your Podcast subscribers, simply pass "
-"the Podcast Feed URL above through %s. FeedBurner will then give you a new "
-"URL to submit to iTunes instead."
+"Alternatively, if you want to track your Podcast subscribers, simply pass the "
+"Podcast Feed URL above through %s. FeedBurner will then give you a new URL to "
+"submit to iTunes instead."
msgstr ""
-#: includes/options.php:727 includes/options.php:731
+#: includes/options.php:730
msgid "FeedBurner"
msgstr ""
#. translators: %s see msgid "iTunes FAQ for Podcast Makers"
-#: includes/options.php:730 includes/options.php:734
+#: includes/options.php:734
#, php-format
msgid "Please read the %s for more information."
msgstr ""
-#: includes/options.php:730 includes/options.php:734
+#: includes/options.php:734
msgid "iTunes FAQ for Podcast Makers"
msgstr ""
-#: includes/options.php:742 includes/options.php:751
-#: includes/taxonomy-images/taxonomy-images.php:395
+#. translators: Button on the custom administration page.
+#: includes/options.php:742 includes/taxonomy-images/taxonomy-images.php:395
msgid "Save Changes"
msgstr ""
-#: includes/shortcodes.php:781 includes/shortcodes.php:786
-#: includes/template-tags.php:114 views/archive-wpfc_sermon.php:40
-#: views/taxonomy-wpfc_bible_book.php:72 views/taxonomy-wpfc_preacher.php:78
-#: views/taxonomy-wpfc_sermon_series.php:79
+#: includes/shortcodes.php:805 includes/template-tags.php:112
+#: views/archive-wpfc_sermon.php:40 views/taxonomy-wpfc_bible_book.php:72
+#: views/taxonomy-wpfc_preacher.php:78 views/taxonomy-wpfc_sermon_series.php:79
#: views/taxonomy-wpfc_sermon_topics.php:79
#: views/taxonomy-wpfc_service_type.php:72
#, php-format
@@ -996,7 +1012,7 @@ msgstr ""
msgid "(optional)"
msgstr ""
-#. translators: %s date format, effectively d/m/Y
or the like
+#. translators: %s date format, effectively d/m/Y
or the like
#: includes/sm-cmb-functions.php:86 includes/types-taxonomies.php:302
#, php-format
msgid "format: %s"
@@ -1012,7 +1028,7 @@ msgstr ""
msgid "Main Bible Passage"
msgstr ""
-#. translators: %s see msgid "John 3:16-18", effectively John 3:16-18
+#. translators: %s see msgid "John 3:16-18", effectively John 3:16-18
#: includes/sm-cmb-functions.php:102 includes/types-taxonomies.php:318
#, php-format
msgid "Enter the Bible passage with the full book names, e.g. %s."
@@ -1043,7 +1059,7 @@ msgstr ""
msgid "MP3 Duration"
msgstr ""
-#. translators: %s see msgid "hh:mm:ss", effectively hh:mm:ss
+#. translators: %s see msgid "hh:mm:ss", effectively hh:mm:ss
#: includes/sm-cmb-functions.php:135 includes/types-taxonomies.php:351
#, php-format
msgid ""
@@ -1080,8 +1096,13 @@ msgstr ""
msgid "Upload a pdf file or enter an URL."
msgstr ""
-#: includes/sm-cmb-functions.php:162 includes/template-tags.php:371
-#: includes/template-tags.php:397 includes/types-taxonomies.php:378
+#: includes/sm-cmb-functions.php:158 includes/sm-cmb-functions.php:167
+#: includes/types-taxonomies.php:374 includes/types-taxonomies.php:383
+msgid "Add File"
+msgstr ""
+
+#: includes/sm-cmb-functions.php:162 includes/template-tags.php:376
+#: includes/types-taxonomies.php:378
msgid "Bulletin"
msgstr ""
@@ -1121,21 +1142,21 @@ msgstr ""
#. translators: %4$s effectively tag.php
#. translators: %5$s effectively taxonomy.php
#. translators: %6$s see msgid "template hierarchy"
-#: includes/taxonomy-images/public-filters.php:385
+#: includes/taxonomy-images/public-filters.php:391
#, php-format
msgid ""
"%1$s is not a property of the current queried object. This usually happens "
-"when the %2$s filter is used in an unsupported template file. This filter "
-"has been designed to work in taxonomy archives which are traditionally "
-"served by one of the following template files: %3$s, %4$s or %5$s. Learn "
-"more about %6$s."
+"when the %2$s filter is used in an unsupported template file. This filter has "
+"been designed to work in taxonomy archives which are traditionally served by "
+"one of the following template files: %3$s, %4$s or %5$s. Learn more about "
+"%6$s."
msgstr ""
-#: includes/taxonomy-images/public-filters.php:386
+#: includes/taxonomy-images/public-filters.php:392
msgid "term_taxonomy_id"
msgstr ""
-#: includes/taxonomy-images/public-filters.php:391
+#: includes/taxonomy-images/public-filters.php:397
msgid "template hierarchy"
msgstr ""
@@ -1154,10 +1175,12 @@ msgstr ""
msgid "Remove association with %1$s"
msgstr ""
+#. translators: Notice displayed on the custom administration page.
#: includes/taxonomy-images/taxonomy-images.php:290
msgid "Image support for taxonomies successfully updated"
msgstr ""
+#. translators: Notice displayed on the custom administration page.
#: includes/taxonomy-images/taxonomy-images.php:293
msgid "Image support has been disabled for all taxonomies."
msgstr ""
@@ -1171,10 +1194,12 @@ msgstr ""
msgid "Taxonomy Images"
msgstr ""
+#. translators: Heading of the custom administration page.
#: includes/taxonomy-images/taxonomy-images.php:387
msgid "Taxonomy Images Plugin Settings"
msgstr ""
+#. translators: An ajax request has failed for an unknown reason.
#: includes/taxonomy-images/taxonomy-images.php:447
msgid "Unknown error encountered"
msgstr ""
@@ -1195,7 +1220,6 @@ msgid "You do not have the correct capability to manage this term"
msgstr ""
#: includes/taxonomy-images/taxonomy-images.php:551
-#: includes/taxonomy-images/taxonomy-images.php:633
msgid "No nonce included."
msgstr ""
@@ -1301,8 +1325,8 @@ msgstr ""
#: includes/taxonomy-images/taxonomy-images.php:1162
#, php-format
msgid ""
-"The %1$s argument for %2$s is set to %3$s which is not a registered "
-"taxonomy. Please check the spelling and update the argument."
+"The %1$s argument for %2$s is set to %3$s which is not a registered taxonomy. "
+"Please check the spelling and update the argument."
msgstr ""
#: includes/taxonomy-images/taxonomy-images.php:1163
@@ -1330,16 +1354,13 @@ msgstr ""
#: includes/taxonomy-images/taxonomy-images.php:1302
#: includes/taxonomy-images/taxonomy-images.php:1303
-#: includes/template-tags.php:160 includes/types-taxonomies.php:94
-#: includes/types-taxonomies.php:96 includes/types-taxonomies.php:97
-#: includes/types-taxonomies.php:98 includes/types-taxonomies.php:99
+#: includes/types-taxonomies.php:94 includes/types-taxonomies.php:96
+#: includes/types-taxonomies.php:97 includes/types-taxonomies.php:99
#: includes/types-taxonomies.php:100 includes/types-taxonomies.php:101
-#: includes/types-taxonomies.php:102 includes/types-taxonomies.php:103
-#: includes/types-taxonomies.php:104 includes/types-taxonomies.php:105
+#: includes/types-taxonomies.php:102 includes/types-taxonomies.php:104
msgid "Preacher"
msgstr ""
-#. translators: %s see msgid "Preacher"
#: includes/taxonomy-images/taxonomy-images.php:1302
#: includes/taxonomy-images/taxonomy-images.php:1303
#, php-format
@@ -1351,42 +1372,42 @@ msgstr ""
msgid "Set Series image"
msgstr ""
-#: includes/template-tags.php:127 includes/template-tags.php:398
-#: includes/template-tags.php:424 includes/template-tags.php:437
-#: includes/template-tags.php:463 includes/widgets.php:96
+#: includes/template-tags.php:125 includes/template-tags.php:408
+#: includes/template-tags.php:454 includes/widgets.php:96
msgid "Bible Text: "
msgstr ""
-#: includes/template-tags.php:160
+#. Translators: %s: Preacher label (sentence case; singular)
+#: includes/template-tags.php:158
#, php-format
msgid "Filter by %s"
msgstr ""
-#: includes/template-tags.php:165
+#: includes/template-tags.php:163
msgid "Filter by Series"
msgstr ""
-#: includes/template-tags.php:170
+#: includes/template-tags.php:168
msgid "Filter by Topic"
msgstr ""
-#: includes/template-tags.php:175
+#: includes/template-tags.php:173
msgid "Filter by Book"
msgstr ""
-#: includes/template-tags.php:363 includes/template-tags.php:389
+#: includes/template-tags.php:368
msgid "Download Files"
msgstr ""
-#: includes/template-tags.php:365 includes/template-tags.php:391
+#: includes/template-tags.php:370
msgid "MP3"
msgstr ""
-#: includes/template-tags.php:368 includes/template-tags.php:394
+#: includes/template-tags.php:373
msgid "Notes"
msgstr ""
-#: includes/template-tags.php:413 includes/template-tags.php:439
+#: includes/template-tags.php:423
msgid "Sermon Topics: "
msgstr ""
@@ -1603,10 +1624,6 @@ msgstr ""
msgid "Add Sermon Audio"
msgstr ""
-#: includes/types-taxonomies.php:374 includes/types-taxonomies.php:383
-msgid "Add File"
-msgstr ""
-
#: includes/vendor/abstract-wp-rest-controller.php:29
#, php-format
msgid "The %s method must be overridden."
@@ -1671,96 +1688,75 @@ msgstr ""
msgid "Add audio and video sermons, manage speakers, series, and more."
msgstr ""
-#. translators: %s see msgid "←", effectively ←
-#: views/archive-wpfc_sermon.php:18 views/archive-wpfc_sermon.php:70
-#: views/archive-wpfc_sermon.php:71
+#: sermons.php:32
#, php-format
-msgid "%s Older sermons"
+msgid "PHP %s"
msgstr ""
-#: views/archive-wpfc_sermon.php:18 views/archive-wpfc_sermon.php:70
-#: views/taxonomy-wpfc_bible_book.php:36 views/taxonomy-wpfc_bible_book.php:99
-#: views/taxonomy-wpfc_preacher.php:42 views/taxonomy-wpfc_preacher.php:105
-#: views/taxonomy-wpfc_sermon_series.php:43
-#: views/taxonomy-wpfc_sermon_series.php:106
-#: views/taxonomy-wpfc_sermon_topics.php:43
-#: views/taxonomy-wpfc_sermon_topics.php:106
-#: views/taxonomy-wpfc_service_type.php:36
-#: views/taxonomy-wpfc_service_type.php:99
-msgid "←"
+#. translators: %1$s current PHP version, see msgid "PHP %s", effectively PHP %s
+#. translators: %2$s required PHP version, see msgid "PHP %s", effectively PHP %s
+#: sermons.php:32
+#, php-format
+msgid "You are running %1$s, but Sermon Manager requires at least %2$s."
msgstr ""
-#: views/archive-wpfc_sermon.php:21 views/archive-wpfc_sermon.php:73
-#: views/taxonomy-wpfc_bible_book.php:38
-#: views/taxonomy-wpfc_bible_book.php:101 views/taxonomy-wpfc_preacher.php:44
-#: views/taxonomy-wpfc_preacher.php:107
-#: views/taxonomy-wpfc_sermon_series.php:52
-#: views/taxonomy-wpfc_sermon_series.php:108
-#: views/taxonomy-wpfc_sermon_topics.php:45
-#: views/taxonomy-wpfc_service_type.php:20
-#: views/taxonomy-wpfc_service_type.php:38
-#: views/taxonomy-wpfc_service_type.php:101
-msgid "→"
+#. translators: %s see msgid "←", effectively ←
+#: views/archive-wpfc_sermon.php:18 views/archive-wpfc_sermon.php:71
+#, php-format
+msgid "%s Older sermons"
msgstr ""
-#. translators: %s see msgid "→", effectively →
-#: views/archive-wpfc_sermon.php:21 views/archive-wpfc_sermon.php:73
-#: views/archive-wpfc_sermon.php:74
+#. translators: %s see msgid "→", effectively →
+#: views/archive-wpfc_sermon.php:21 views/archive-wpfc_sermon.php:74
#, php-format
msgid "Newer sermons %s"
msgstr ""
#: views/archive-wpfc_sermon.php:28 views/taxonomy-wpfc_bible_book.php:45
-#: views/taxonomy-wpfc_preacher.php:51
-#: views/taxonomy-wpfc_sermon_series.php:52
+#: views/taxonomy-wpfc_preacher.php:51 views/taxonomy-wpfc_sermon_series.php:52
#: views/taxonomy-wpfc_sermon_topics.php:52
#: views/taxonomy-wpfc_service_type.php:45
msgid "Not Found"
msgstr ""
#: views/archive-wpfc_sermon.php:30 views/taxonomy-wpfc_bible_book.php:47
-#: views/taxonomy-wpfc_preacher.php:53
-#: views/taxonomy-wpfc_sermon_series.php:54
+#: views/taxonomy-wpfc_preacher.php:53 views/taxonomy-wpfc_sermon_series.php:54
#: views/taxonomy-wpfc_sermon_topics.php:54
#: views/taxonomy-wpfc_service_type.php:47
msgid "Apologies, but no sermons were found."
msgstr ""
-#. translators: %s date
#: views/archive-wpfc_sermon.php:47 views/taxonomy-wpfc_bible_book.php:77
-#: views/taxonomy-wpfc_preacher.php:83
-#: views/taxonomy-wpfc_sermon_series.php:84
+#: views/taxonomy-wpfc_preacher.php:83 views/taxonomy-wpfc_sermon_series.php:84
#: views/taxonomy-wpfc_sermon_topics.php:84
#: views/taxonomy-wpfc_service_type.php:77
#, php-format
msgid "Preached on %s"
msgstr ""
-#: views/archive-wpfc_sermon.php:59 views/archive-wpfc_sermon.php:60
-#: views/taxonomy-wpfc_bible_book.php:88 views/taxonomy-wpfc_preacher.php:94
-#: views/taxonomy-wpfc_sermon_series.php:95
-#: views/taxonomy-wpfc_sermon_topics.php:95
-#: views/taxonomy-wpfc_service_type.php:88
+#: views/archive-wpfc_sermon.php:60 views/taxonomy-wpfc_bible_book.php:89
+#: views/taxonomy-wpfc_preacher.php:95 views/taxonomy-wpfc_sermon_series.php:96
+#: views/taxonomy-wpfc_sermon_topics.php:96
+#: views/taxonomy-wpfc_service_type.php:89
#, php-format
msgid "%s comment"
msgid_plural "%s comments"
-msgstr[0] "%s comment"
-msgstr[1] "%s comments"
-
-#: views/archive-wpfc_sermon.php:59 views/archive-wpfc_sermon.php:60
-#: views/taxonomy-wpfc_bible_book.php:88 views/taxonomy-wpfc_preacher.php:94
-#: views/taxonomy-wpfc_sermon_series.php:95
-#: views/taxonomy-wpfc_sermon_topics.php:95
-#: views/taxonomy-wpfc_service_type.php:88
+msgstr[0] ""
+msgstr[1] ""
+
+#: views/archive-wpfc_sermon.php:60 views/taxonomy-wpfc_bible_book.php:89
+#: views/taxonomy-wpfc_preacher.php:95 views/taxonomy-wpfc_sermon_series.php:96
+#: views/taxonomy-wpfc_sermon_topics.php:96
+#: views/taxonomy-wpfc_service_type.php:89
msgid "Leave a comment"
msgstr ""
-#: views/single-wpfc_sermon.php:42
+#: views/single-wpfc_sermon.php:30
msgctxt "Previous post link"
msgid "←"
msgstr ""
-#: views/single-wpfc_sermon.php:44
+#: views/single-wpfc_sermon.php:33
msgctxt "Next post link"
msgid "→"
msgstr ""
@@ -1770,29 +1766,50 @@ msgstr ""
msgid "Sermons by Book: %s"
msgstr ""
-#. translators: %s see msgid "←", effectively ←
-#: views/taxonomy-wpfc_bible_book.php:36 views/taxonomy-wpfc_bible_book.php:99
-#: views/taxonomy-wpfc_preacher.php:42 views/taxonomy-wpfc_preacher.php:105
+#. translators: %s see msgid "←", effectively ←
+#: views/taxonomy-wpfc_bible_book.php:36 views/taxonomy-wpfc_bible_book.php:100
+#: views/taxonomy-wpfc_preacher.php:42 views/taxonomy-wpfc_preacher.php:106
#: views/taxonomy-wpfc_sermon_series.php:43
-#: views/taxonomy-wpfc_sermon_series.php:106
+#: views/taxonomy-wpfc_sermon_series.php:107
#: views/taxonomy-wpfc_sermon_topics.php:43
-#: views/taxonomy-wpfc_sermon_topics.php:106
+#: views/taxonomy-wpfc_sermon_topics.php:107
#: views/taxonomy-wpfc_service_type.php:36
-#: views/taxonomy-wpfc_service_type.php:99
+#: views/taxonomy-wpfc_service_type.php:100
#, php-format
msgid "%s Older posts"
msgstr ""
-#. translators: %s see msgid "→", effectively →
-#: views/taxonomy-wpfc_bible_book.php:38
-#: views/taxonomy-wpfc_bible_book.php:101 views/taxonomy-wpfc_preacher.php:44
-#: views/taxonomy-wpfc_preacher.php:107
+#: views/taxonomy-wpfc_bible_book.php:36 views/taxonomy-wpfc_bible_book.php:100
+#: views/taxonomy-wpfc_preacher.php:42 views/taxonomy-wpfc_preacher.php:106
+#: views/taxonomy-wpfc_sermon_series.php:43
+#: views/taxonomy-wpfc_sermon_series.php:107
+#: views/taxonomy-wpfc_sermon_topics.php:43
+#: views/taxonomy-wpfc_sermon_topics.php:107
+#: views/taxonomy-wpfc_service_type.php:36
+#: views/taxonomy-wpfc_service_type.php:100
+msgid "←"
+msgstr ""
+
+#: views/taxonomy-wpfc_bible_book.php:38 views/taxonomy-wpfc_bible_book.php:102
+#: views/taxonomy-wpfc_preacher.php:44 views/taxonomy-wpfc_preacher.php:108
+#: views/taxonomy-wpfc_sermon_series.php:45
+#: views/taxonomy-wpfc_sermon_series.php:109
+#: views/taxonomy-wpfc_sermon_topics.php:45
+#: views/taxonomy-wpfc_sermon_topics.php:109
+#: views/taxonomy-wpfc_service_type.php:38
+#: views/taxonomy-wpfc_service_type.php:102
+msgid "→"
+msgstr ""
+
+#. translators: %s see msgid "→", effectively →
+#: views/taxonomy-wpfc_bible_book.php:38 views/taxonomy-wpfc_bible_book.php:102
+#: views/taxonomy-wpfc_preacher.php:44 views/taxonomy-wpfc_preacher.php:108
#: views/taxonomy-wpfc_sermon_series.php:45
-#: views/taxonomy-wpfc_sermon_series.php:108
+#: views/taxonomy-wpfc_sermon_series.php:109
#: views/taxonomy-wpfc_sermon_topics.php:45
-#: views/taxonomy-wpfc_sermon_topics.php:108
+#: views/taxonomy-wpfc_sermon_topics.php:109
#: views/taxonomy-wpfc_service_type.php:38
-#: views/taxonomy-wpfc_service_type.php:101
+#: views/taxonomy-wpfc_service_type.php:102
#, php-format
msgid "Newer posts %s"
msgstr ""
diff --git a/languages/sermon-manager-pl_PL.mo b/languages/sermon-manager-pl_PL.mo
deleted file mode 100644
index d60695a..0000000
Binary files a/languages/sermon-manager-pl_PL.mo and /dev/null differ
diff --git a/readme.txt b/readme.txt
index f1ac33a..c7a3bb0 100755
--- a/readme.txt
+++ b/readme.txt
@@ -3,11 +3,11 @@ Contributors: wpforchurch, nikolam
Donate link: http://wpforchurch.com/
Tags: church, sermon, sermons, preaching, podcasting, manage, managing, podcasts, itunes
Requires at least: 4.5
-Tested up to: 4.8.2
+Tested up to: 4.9.1
Requires PHP: 5.3
-Stable tag: 2.8.6
+Stable tag: 2.9
License: GPLv2
-License URI: https://www.gnu.org/licenses/gpl-2.0.html
+License URI: https://www.gnu.org/licenses/gpl-2.0.html
Add audio and video sermons, manage speakers, series, and more to your church website.
@@ -15,30 +15,39 @@ Add audio and video sermons, manage speakers, series, and more to your church we
### Sermon Manager is the #1 WordPress Sermon Plugin ###
-Sermon Manager is designed to help churches easily publish sermons online. The features include:
+Sermon Manager is designed to help churches easily publish sermons online. Some of the features include:
-* Add Speakers, Series, Topics, Books and Service Types
+* Add Speakers, Series, Topics, Books, and Service Types
+* Attach images to sermons, series, speakers, and topics
* Attach MP3 files as well as PDF, DOC, PPT (or any other type!)
-* Embed video from popular providers such as Vimeo or YouTube
-* Attach images to sermons, series, speakers and topics
-* Super flexible shortcode system
* Bible references integrated via Bib.ly for easy text viewing
-* Works with any theme and can be customized to display just the way you like. You'll find the template files in the `/views` folder. You can copy these into the root of your theme folder and customize to suit your site's design.
-* Full-featured iTunes podcasting support for all sermons, plus each sermon series, preachers, sermon topics, or book of the Bible!
-* Full-featured API for developers (check it out at /wp-json/wp/v2/wpfc_sermon)
-* Jetpack support
* Completely integrated with WordPress search
-* PHP 7 ready - Sermon Manager is 100% compatible with latest PHP version
-* Quick and professional support
+* Embed video from popular providers such as Vimeo or YouTube
+* Full-featured API for developers (check it out at `/wp-json/wp/v2/wpfc_sermon`)
+* Full-featured iTunes podcasting support for all sermons, plus each sermon series, preachers, sermon topics, or book of the Bible!
+* Import sermons from other WordPress plugins
+* PHP 5.3+ - you can use Sermon Manager even with older websites!
+* PHP 7.1 ready - Sermon Manager is 100% compatible with latest PHP version
+* Super flexible shortcode system
+* Supports 3rd party plugins such as Yoast SEO, Jetpack, etc
+* Quick and professional *free* and paid support
+* Works with any theme and can be customized to display just the way you like. You’ll find the template files in the `/views` folder. You can copy these into the root of your theme folder and customize to suit your site’s design.
+
+### One-Click Importing ###
+
+Sermon Manager supports migration/importing from other popular sermon plugins, such as Sermon Browser and Series Engine.
+
+This is a one click process and currently only supports migration/importing within existing WordPress installations.
+Soon you will be able to migrate from those 3rd party plugins to Sermon Manager on a separate server. (for example: moving to completely new website & WordPress installation)
### Popular Shortcodes ###
-* `[sermons]` - This will list the 10 most recent sermons.
-* `[sermons per_page="20"]` - This will list the 20 most recent sermons.
-* `[sermon_images]` - This will list all sermon series and their associated image in a grid.
-* `[list_sermons]` - This will list all series or speakers in a simple unordered list.
-* `[latest_series]` - This will display information about the latest sermon series, including the image, title (optional), and description (optional).
-* `[sermon_sort_fields]` - Dropdown selections to quickly navigate to all sermons in a series or by a particular speaker.
+* `[sermons]` — This will list the 10 most recent sermons.
+* `[sermons per_page="20"]` — This will list the 20 most recent sermons.
+* `[sermon_images]` — This will list all sermon series and their associated image in a grid.
+* `[list_sermons]` — This will list all series or speakers in a simple unordered list.
+* `[latest_series]` — This will display information about the latest sermon series, including the image, title (optional), and description (optional).
+* `[sermon_sort_fields]` — Dropdown selections to quickly navigate to all sermons in a series or by a particular speaker.
For more information on each of these shortcodes please visit [our knowledge base](https://wpforchurch.com/my/knowledgebase/12/Sermon-Manager).
@@ -54,8 +63,6 @@ Bug fixing and fixing unexpected behavior *is free* and *always will be free*. J
Would you like to help improve Sermon Manager or report a bug you found? This project is open source on [GitHub](https://github.com/WP-for-Church/Sermon-Manager)
-Note: Any contribution via pull request will have a note with submitter's username in changelog, example: "(thanks @nikola3244)".
-
### WP for Church ###
* [WP for Church](https://wpforchurch.com/) provides plugins and responsive themes for churches using WordPress.
@@ -65,20 +72,20 @@ Note: Any contribution via pull request will have a note with submitter's userna
Installation is simple:
-1. Just use the "Add New" button in Plugin section of your WordPress blog's Control panel. To find the plugin there, search for `Sermon Manager`
+1. Just use the “Add New” button in Plugin section of your WordPress blog’s Control panel. To find the plugin there, search for `Sermon Manager`
2. Activate the plugin
3. Add a sermon through the Dashboard
-4. To display the sermons on the frontend of your site, just visit the http://yourdomain.com/sermons if you have permalinks enabled or http://yourdomain.com/?post_type=wpfc_sermon if not. Or you can use the shortcode `[sermons]` in any page.
+4. To display the sermons on the frontend of your site, just visit the `http://yourdomain.com/sermons` if you have permalinks enabled or `http://yourdomain.com/?post_type=wpfc_sermon` if not. Or you can use the shortcode `[sermons]` in any page.
## Frequently Asked Questions ##
### How do I display sermons on the frontend? ###
-Visit the http://yourdomain.com/sermons if you have permalinks enabled or http://yourdomain.com/?post_type=wpfc_sermon if not. Or you can use the shortcode `[sermons]` in any page.
+Visit the `http://yourdomain.com/sermons` if you have permalinks enabled or `http://yourdomain.com/?post_type=wpfc_sermon` if not. Or you can use the shortcode `[sermons]` in any page.
### How do I create a menu link? ###
-Go to Appearance => Menus. In the "Custom Links" box add "http://yourdomain.com/?post_type=wpfc_sermon" as the url and "Sermons" as the label and click "Add to Menu".
+Go to Appearance → Menus. In the “Custom Links” box add `http://yourdomain.com/?post_type=wpfc_sermon` as the URL and `Sermons` as the label and click “Add to Menu”.
### I wish Sermon Manager could... ###
@@ -93,87 +100,109 @@ Visit the [plugin homepage](https://wpforchurch.com/wordpress-plugins/sermon-man
2. Sermon Files
## Changelog ##
+### 2.9 ###
+* New: Admin - Add filter by Service Type
+* New: Import and export sermons, series, preachers, and more! (you can migrate from other plugins to Sermon Manager now)
+* Change: Admin - Improved All Sermons view
+* Change: Admin - Rewrite settings code - more stable and secure now
+* Change: Modify Books in filter to be sorted by biblical order
+* Change: Remove Error Recovery
+* Fix: "Settings" URL on plugins page
+* Fix: Admin - Fix sorting by columns
+* Fix: Feed not working on sites that don't have pretty permalinks turned on
+* Fix: Filtering sometimes not working
+* Fix: Preached date being wrong in some cases
+* Fix: Relative audio URLs in podcasts
+* Fix: Series & preacher admin pages not having proper thumbnails & generating error on some hosts
+* Fix: Series not showing up when sorted by date
+* Fix: Sermon archive page ordering being ascending sometimes
+* Fix: Shortcodes not working when broken quotes
+* Fix: Shortcode ordering not respecting Sermon Date
+* Fix: Some strings in Admin area were not being translated
+* Fix: Taxonomy images need resaving on some hosts to work
+* Fix: Timezone offset in Preached date
+
### 2.8.6 ###
-* Fix Service Type not being assigned (fixes sermons not appearing under some configurations)
+* Fix: Service Type not being assigned (fixes sermons not appearing under some configurations)
### 2.8.5 ###
-* Revert to old rendering engine, until we fix new one
+* Change: Revert to old rendering engine, until we fix new one
### 2.8.4 ###
-* Fix sermons having to be resaved to work
-* Fix fatal error when using plugin views
-* Fix update functions being executed multiple times
-* Fix update functions not being executed for users who skip versions
+* Fix: Fatal error when using plugin views
+* Fix: Sermons having to be re-saved to work
+* Fix: Update functions being executed multiple times
+* Fix: Update functions not being executed for users who skip versions
### 2.8.3 ###
-* Fix sermon audio not showing up
-* Fix sermon not updating on first save
-* Fix sermon video embed not saving
-* Fix styling of attachment links
+* Fix: Sermon audio not showing up
+* Fix: Sermon not updating on first save
+* Fix: Sermon video embed not saving
+* Fix: Styling of attachment links
### 2.8.2 ###
-* Disable error recovery since it's causing too many issues
-* Couple bugfixes for PHP 5.3
+* Change: Disable error recovery since it’s causing too many issues
+* Fix: Couple bug fixes for PHP 5.3
### 2.8.1 ###
-* Fix a PHP notice on new sermon creation
-* Fix sermon date not saving on first save
-* Fix sermons preached before 09/09/2001 not showing up
-* Fix confusion regarding date field (remove placeholder value)
+* Fix: A PHP notice on new sermon creation
+* Fix: Sermon date not saving on first save
+* Fix: Sermons preached before 09/09/2001 not showing up
+* Fix: Fix confusion regarding date field (remove placeholder value)
### 2.8 ###
-* Add better support for templating plugins (Elementor and Visual Composer, to mention some)
-* Add better compatibility with themes and search
-* Add more stable code for updating database structure
-* Add support for PHP 5.5, 5.4 and 5.3, but we still recommend to use at least PHP 5.6
-* Modify: Show all options in filtering dropdown - even if they don't have associated sermon
-* Modify: All language strings rewritten (huge thanks to @GITNE)
-* Fix styles not loading when "[sermons]" shortcode is used without filters
-* Fix image_size not working in "[sermons]" shortcode
-* Fix compatibility with PHP 5.3
-* Fix Recovery catching 3rd party errors
-* Fix 404 when "Common Base Slug" option is changed
-* Fix admin menu icon not being blue on hover
-* Fix HTML syntax for filtering
+* New: Better compatibility with themes and search
+* New: Better support for templating plugins (Elementor and Visual Composer, to mention some)
+* New: More stable code for updating database structure
+* New: Support for PHP 5.5, 5.4, and 5.3 but we still recommend to use at least PHP 5.6
+* Change: All language strings rewritten (huge thanks to @GITNE)
+* Change: Show all options in filtering dropdown — even if they don’t have associated sermon
+* Fix: `image_size` not working in `[sermons]` shortcode
+* Fix: 404 when “Common Base Slug” option is changed
+* Fix: Admin menu icon not being blue on hover
+* Fix: Compatibility with PHP 5.3
+* Fix: HTML syntax for filtering
+* Fix: Recovery catching 3rd party errors
+* Fix: Styles not loading when `[sermons]` shortcode is used without filters
### 2.7.2 ###
-* Fix 404 on series, preacher, topic, book and service type pages
+* Fix: Fix 404 on series, preacher, topic, book, and service type pages
### 2.7.1 ###
-* Fix shortcode ordering/no sermons
-* Fix crash on servers that do not have MBString extension
-* Fix sermon page sometimes giving 404
+* Fix: Crash on servers that do not have MBString extension
+* Fix: Sermon page sometimes giving 404
+* Fix: Shortcode ordering/no sermons
### 2.7 ###
-* Add WordPress search support to sermons
-* Add Jetpack Publicize and Omnisearch support to sermons
-* Add REST API support
-* Add automagical error recovery - no more unusable websites
-* Add support for different plugin languages
-* Make "Date Preached" field optional
-* Fix sermon ordering
-* Fix new sermons not appearing
-* Fix widget styling
-* Fix new sermons not working on some servers
-* Fix sermon time not being correct when using "Date Preached"
-* Fix filtering/sorting
-* Lots of minor bug fixes
-* General performance and compatibility fixes
+* New: Automagical error recovery - no more unusable websites
+* New: Jetpack Publicize and Omnisearch support for sermons
+* New: REST API support
+* New: Support for different plugin languages
+* New: WordPress search support for sermons
+* Change: “Date Preached” field optional
+* Fix: Filtering/sorting
+* Fix: General performance and compatibility fixes
+* Fix: Lots of minor bug fixes
+* Fix: New sermons not appearing
+* Fix: New sermons not working on some servers
+* Fix: Sermon ordering
+* Fix: Sermon time not being correct when using “Date Preached”
+* Fix: Widget styling
### 2.6.2 ###
-* Add more `` elements for more styling options
-* Fix podcast feed not working
+* New: More `` elements for more styling options
+* Fix: Podcast feed not working
### 2.6.1 ###
-* Fix fatal error on old PHP versions
-* Fix custom preacher slug not working
+* Fix: Custom preacher slug not working
+* Fix: Fatal error on old PHP versions
### 2.6 ###
-* Fix PHP warning regarding sorting
-* Fix Taxonomy images not working on initial plugin install (and sometimes for existing ones as well - needs plugin re-activation)
-* Fix space character is being URL encoded twice
-* Add more filters to the shortcode
-* Add back Sermon dates
+* New: Add back Sermon dates
+* New: More filters for the shortcode
+* Fix: PHP warning regarding sorting
+* Fix: Space character is being URL encoded twice
+* Fix: Taxonomy images not working on initial plugin install (and sometimes for existing ones as well - needs plugin re-activation)
### 2.5.2 ###
* Change preacher slugs as well when changing preacher label in settings
@@ -218,9 +247,9 @@ Visit the [plugin homepage](https://wpforchurch.com/wordpress-plugins/sermon-man
* Fix slashes in RSS feed
* Fix podcast cover image not selecting
* Fix first sermon image showing up as podcast cover image when none selected
-* Fix all dates issues (please allow the page to load after the update, it will take a minute; if you stop the load, please open `/wp-admin/?sm_fix_dates`)
-* Removed "Date" field (left side) in Sermon edit screen, "Published" date (right side) will be used from now on
-* Removed "Fix Dates" option tab, it's not necessary anymore
+* Fix all dates issues (please allow the page to load after the update, it will take a minute; if you stop the load, please open `/wp-admin/?sm_fix_dates`)
+* Removed “Date” field (left side) in Sermon edit screen, “Published” date (right side) will be used from now on
+* Removed “Fix Dates” option tab, it’s not necessary anymore
* Removed all warnings and error related to dates
* Replaced old media manager with new one for podcast cover image
@@ -237,7 +266,7 @@ Visit the [plugin homepage](https://wpforchurch.com/wordpress-plugins/sermon-man
### 2.4.4 ###
* Fix shortcode pagination broken on front page (thanks @antgiant)
* Fix new audio player not loading on some old themes
-* Add an option to show key verse in "Recent Sermons" widget
+* Add an option to show key verse in “Recent Sermons” widget
* Add HTML tags display in podcast description (can be disabled in settings)
* Improve scripts & styles loading (website performance improvements)
@@ -250,7 +279,7 @@ Visit the [plugin homepage](https://wpforchurch.com/wordpress-plugins/sermon-man
* Fix Sermon Manager interfering with regular post dates under some circumstances
* Fix fatal error when using UpdraftPlus
* Fix fatal error for longtime Sermon Manager users (thank you <3)
-* Fix audio URL duplication in "Download Files" section
+* Fix audio URL duplication in “Download Files” section
* Fix date checking URL
* Fix scripts and styles not loading when shortcode is used in ordinary posts
* Fix new player styles not loading
@@ -263,7 +292,7 @@ Visit the [plugin homepage](https://wpforchurch.com/wordpress-plugins/sermon-man
* Add a filter for changing sermon image link (thanks @macbookandrew)
* Add Polish translation (thanks @GITNE)
* Fix podcast feed not validating because of an non URL encoded ampersand in the Sermon image URL
-* Remove sermons that don't have mp3 files assigned to them from podcast XML file
+* Remove sermons that don’t have mp3 files assigned to them from podcast XML file
* Performance improvements
* Miscellaneous bug fixes
@@ -272,8 +301,8 @@ Visit the [plugin homepage](https://wpforchurch.com/wordpress-plugins/sermon-man
* Fix topics list in backend sometimes being corrupted
### 2.3.3 ###
-* Fix a typo in "Sort by Preacher" table column
-* Fix a PHP warning when a sermon is created with Service Type set to "None"
+* Fix a typo in “Sort by Preacher” table column
+* Fix a PHP warning when a sermon is created with Service Type set to “None”
* Fix Sermon Audio removing/uploading in backend not working
### 2.3.2 ###
@@ -287,7 +316,7 @@ Visit the [plugin homepage](https://wpforchurch.com/wordpress-plugins/sermon-man
* Fix `[sermons]` shortcode ordering
### 2.3.0 ###
-* Add an option to change "Preacher" to whatever user wants ("Teacher", "Speaker"...)
+* Add an option to change “Preacher” to whatever user wants (“Teacher”, “Speaker”...)
* Fix series image shortcode not working properly
* Fix disappeared bible passage
* Core improvements
@@ -332,7 +361,7 @@ Visit the [plugin homepage](https://wpforchurch.com/wordpress-plugins/sermon-man
### 2.0.8 ###
* Fix another date error
-* Revert fix for "fatal error with date processing", since it caused issues for some users
+* Revert fix for “fatal error with date processing”, since it caused issues for some users
* Fix video width being too wide
* Fix microphone issue
@@ -351,7 +380,7 @@ Visit the [plugin homepage](https://wpforchurch.com/wordpress-plugins/sermon-man
### 2.0.5 ###
-* Fix: Sermon Archive shortcode wasn't displaying properly
+* Fix: Sermon Archive shortcode wasn’t displaying properly
### 2.0.4 ###
@@ -394,13 +423,13 @@ Visit the [plugin homepage](https://wpforchurch.com/wordpress-plugins/sermon-man
### 1.9.4 ###
* Bugfix trailing / removed from podast feed
-* Bugfix don't include enclosure in podcast if there is no audio file
+* Bugfix don’t include enclosure in podcast if there is no audio file
* Bugfix `[list_sermons]` order/orderby attributes now work as expected
* Bugfix hide_nav works correctly in the `[sermons]` shortcode
* Bugfix setting defaults on activation now works correctly
### 1.9.3 ###
-* Now actions are used to load sermon content in a theme: sermon_single & sermon_excerpt. This makes it easy to override the content by removing the default action and adding your own custom action.
+* Now actions are used to load sermon content in a theme: `sermon_single` & `sermon_excerpt`. This makes it easy to override the content by removing the default action and adding your own custom action.
* Bugfix `[sermon_images]` shortcode now displays the description correctly
* Added podcast feed for service types
@@ -448,7 +477,7 @@ Visit the [plugin homepage](https://wpforchurch.com/wordpress-plugins/sermon-man
### 1.7 ###
* Improved many areas of the code; organized files
* Made a new permalink structure possible with a common base slug across all taxonomies, e.g. `sermons/preacher` or `sermons/series`.
-* Added new template tag for the podcast url
+* Added new template tag for the podcast URL
* Add series, preacher, topic, and book to post class
* Trim taxonomy description in Admin
* Improve widget CSS
@@ -462,12 +491,12 @@ Visit the [plugin homepage](https://wpforchurch.com/wordpress-plugins/sermon-man
### 1.6 ###
* Improved localization & added French translation
* Updated mediaelements.js to the latest version
-* Change Service Types to a custom taxonomy so you can add/edit as you wish (you'll see an admin notice to refresh your database)
+* Change Service Types to a custom taxonomy so you can add/edit as you wish (you’ll see an admin notice to refresh your database)
### 1.5.6 ###
* Added comma separator in case of multiple speakers or multiple series
* Added speaker name to widget
-* Added "sort by Book" to sermon sort fields
+* Added “sort by Book” to sermon sort fields
### 1.5.5 ###
* Fix settings for bib.ly
@@ -489,13 +518,13 @@ Visit the [plugin homepage](https://wpforchurch.com/wordpress-plugins/sermon-man
### 1.5 ###
* Improve page navigation styles with shortcode
-* Improve admin interface & added a "Sermon Notes" field
+* Improve admin interface & added a “Sermon Notes” field
* Fixed the views count for sermons
* Update function to add images to series & preachers
* Added podcasting with iTunes
* Properly enqueueing all JavaScript and CSS
* New template tags for easier theme customization
-* Added new taxonomy "Book of the Bible" to allow easy sorting of sermons
+* Added new taxonomy “Book of the Bible” to allow easy sorting of sermons
* Display a grid of images assigned to speakers or series with a new shortcode `[sermon-images]`
* Display a list of sermon series, preachers, sermon topics, or book of the Bible with a new shortcode `[list-sermons]`
diff --git a/sermons.php b/sermons.php
index 6078a17..a0b41df 100755
--- a/sermons.php
+++ b/sermons.php
@@ -3,11 +3,11 @@
* Plugin Name: Sermon Manager for WordPress
* Plugin URI: https://www.wpforchurch.com/products/sermon-manager-for-wordpress/
* Description: Add audio and video sermons, manage speakers, series, and more.
- * Version: 2.8.6
+ * Version: 2.9
* Author: WP for Church
* Author URI: https://www.wpforchurch.com/
* Requires at least: 4.5
- * Tested up to: 4.8.2
+ * Tested up to: 4.9.1
*
* Text Domain: sermon-manager-for-wordpress
* Domain Path: /languages/
@@ -27,7 +27,9 @@ function sm_render_php_version_error() {
?>
- PHP %s, but Sermon Manager requires at least PHP %s .", 'sermon-manager-for-wordpress' ), PHP_VERSION, '5.3.0' ); ?>
+ = // translators: %1$s current PHP version, see msgid "PHP %s", effectively PHP %s
+ // translators: %2$s required PHP version, see msgid "PHP %s", effectively PHP %s
+ wp_sprintf( esc_html__( 'You are running %1$s, but Sermon Manager requires at least %2$s.', 'sermon-manager-for-wordpress' ), '' . wp_sprintf( esc_html__( 'PHP %s', 'sermon-manager-for-wordpress' ), PHP_VERSION ) . ' ', '' . wp_sprintf( esc_html__( 'PHP %s', 'sermon-manager-for-wordpress' ), '5.3.0' ) . ' ' ); ?>
init();*/
-
- // Break if fatal error detected
- if ( defined( 'sm_break' ) && sm_break === true ) {
- return;
- }
-
if ( version_compare( PHP_VERSION, '5.6.0', '<' ) ) {
if ( is_admin() && ! get_option( 'dismissed-render_php_version_warning', 0 ) ) {
add_action( 'admin_notices', array( $this, 'render_php_version_warning' ) );
@@ -81,7 +73,7 @@ public function __construct() {
register_activation_hook( __FILE__, array( $this, 'set_default_options' ) );
// load translations
- add_action( 'init', array( $this, 'load_translations' ) );
+ add_action( 'after_setup_theme', array( $this, 'load_translations' ) );
// enqueue scripts & styles
add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts_styles' ) );
add_action( 'wp_footer', array( $this, 'enqueue_scripts_styles' ) );
@@ -99,12 +91,51 @@ public function __construct() {
SM_Dates_WP::hook();
// Render sermon HTML for search compatibility
add_action( 'wp_insert_post', array( $this, 'render_sermon_into_content' ), 10, 2 );
+ // Remove SB Help from SM pages, since it messes up the formatting
+ add_action( 'contextual_help', function () {
+ $screen = get_current_screen();
+ $screen_id = $screen ? $screen->id : '';
- if ( is_admin() ) {
- add_action( 'admin_enqueue_scripts', function () {
- wp_enqueue_style( 'sm-icon', SM_URL . 'assets/css/admin-icon.css', array(), SM_VERSION );
- } );
- }
+ if ( in_array( $screen_id, sm_get_screen_ids() ) ) {
+ remove_action( 'contextual_help', 'sb_add_contextual_help' );
+ }
+ }, 0 );
+ // Allow usage of remote URLs for attachments (used for images imported from SE)
+ add_filter( 'wp_get_attachment_url', function ( $url, $attachment_id ) {
+ if ( ( $db_url = get_post_meta( $attachment_id, '_wp_attached_file', true ) ) && parse_url( $db_url, PHP_URL_SCHEME ) !== null ) {
+ return $db_url;
+ }
+
+ return $url;
+ }, 10, 2 );
+
+
+ // temporary hook for importing until API is properly done
+ add_action( 'admin_init', function () {
+ if ( isset( $_GET['doimport'] ) ) {
+ $class = null;
+
+ switch ( $_GET['doimport'] ) {
+ case 'sb':
+ $class = new SM_Import_SB();
+ break;
+ case 'se':
+ $class = new SM_Import_SE();
+ break;
+ }
+
+ if ( $class !== null ) {
+ $class->import();
+ add_action( 'admin_notices', function () {
+ ?>
+
+ set( 'meta_value_num', time() );
$query->set( 'meta_compare', '<=' );
$query->set( 'orderby', 'meta_value_num' );
+ $query->set( 'order', 'DESC' );
}
}
}
@@ -253,18 +287,17 @@ public static function enqueue_scripts_styles() {
/**
* Instead of loading options variable each time in every code snippet, let's have it in one place.
*
- * @param string $name Option name
+ * @param string $name Option name
+ * @param string $default Default value to return if option is not set (defaults to empty string)
*
* @return mixed Returns option value or an empty string if it doesn't exist. Just like WP does.
*/
- public static function getOption( $name = '' ) {
- $options = get_option( 'wpfc_options' );
-
- if ( ! empty( $options[ $name ] ) ) {
- return $options[ $name ];
+ public static function getOption( $name = '', $default = '' ) {
+ if ( ! class_exists( 'SM_Admin_Settings' ) ) {
+ include_once 'includes/admin/class-sm-admin-settings.php';
}
- return '';
+ return SM_Admin_Settings::get_option( $name, $default );
}
/**
@@ -338,13 +371,6 @@ public static function set_default_options() {
update_option( 'wpfc_options', $arr );
}
- // add image support to taxonomies if it's not initialized
- if ( ! get_option( 'sermon_image_plugin_settings' ) ) {
- update_option( 'sermon_image_plugin_settings', array(
- 'taxonomies' => array( 'wpfc_sermon_series', 'wpfc_preacher', 'wpfc_sermon_topics' )
- ) );
- }
-
// Enable error recovery on plugin re-activation
update_option( '_sm_recovery_do_not_catch', 0 );
@@ -378,6 +404,10 @@ public function render_sermon_into_content( $post_ID, $post ) {
return;
}
+ if ( $post->post_content === '%todo_render%' ) {
+ return;
+ }
+
if ( defined( 'SM_SAVING_POST' ) ) {
return;
} else {
diff --git a/views/archive-wpfc_sermon.php b/views/archive-wpfc_sermon.php
index 4b53045..d68977d 100644
--- a/views/archive-wpfc_sermon.php
+++ b/views/archive-wpfc_sermon.php
@@ -15,10 +15,12 @@
max_num_pages > 1 ) : ?>
- ' . esc_html__( '←' ) . '' ) ); ?>
+ ← */
+ esc_html__( '%s Older sermons', 'sermon-manager-for-wordpress' ), '' . esc_html__( '←' ) . ' ' ) ); ?>
- ' . esc_html__( '→' ) . '' ) ); ?>
+ → */
+ esc_html__( 'Newer sermons %s', 'sermon-manager-for-wordpress' ), '' . esc_html__( '→' ) . ' ' ) ); ?>
@@ -44,10 +46,10 @@
-
+
by
- ID, 'wpfc_preacher', '', ', ', ' ' ); ?>
+ ID, 'wpfc_preacher', '', ', ', ' ' ); ?>
@@ -56,8 +58,8 @@
| ', ' ' ); ?>
@@ -68,10 +70,12 @@
max_num_pages > 1 ) : ?>
- ' . esc_html__( '←' ) . '' ) ); ?>
+ ← */
+ esc_html__( '%s Older sermons', 'sermon-manager-for-wordpress' ), '' . esc_html__( '←' ) . ' ' ) ); ?>
- ' . esc_html__( '→' ) . '' ) ); ?>
+ → */
+ esc_html__( 'Newer sermons %s', 'sermon-manager-for-wordpress' ), '' . esc_html__( '→' ) . ' ' ) ); ?>
diff --git a/views/taxonomy-wpfc_bible_book.php b/views/taxonomy-wpfc_bible_book.php
index 9496af8..84316b9 100644
--- a/views/taxonomy-wpfc_bible_book.php
+++ b/views/taxonomy-wpfc_bible_book.php
@@ -33,9 +33,11 @@
max_num_pages > 1 ) : ?>
' . esc_html__( '←', 'sermon-manager-for-wordpress' ) . '' ) ); ?>
+ class="nav-previous">← */
+ esc_html__( '%s Older posts', 'sermon-manager-for-wordpress' ), '
' . esc_html__( '←', 'sermon-manager-for-wordpress' ) . ' ' ) ); ?>
' . esc_html__( '→', 'sermon-manager-for-wordpress' ) . '' ) ); ?>
+ class="nav-next">→ */
+ esc_html__( 'Newer posts %s', 'sermon-manager-for-wordpress' ), '
' . esc_html__( '→', 'sermon-manager-for-wordpress' ) . ' ' ) ); ?>
@@ -74,9 +76,9 @@ class="nav-next">
+ class="meta-prep meta-prep-author">
by ID, 'wpfc_preacher', '', ', ', ' ' ); ?>
+ class="meta-sep"> by ID, 'wpfc_preacher', '', ', ', ' ' ); ?>
@@ -84,8 +86,8 @@ class="meta-sep"> by ID, 'wpfc_preacher', '
- ID ); ?>
- ID ); ?>
+
| ', ' ' ); ?>
@@ -97,9 +99,11 @@ class="comments-link">max_num_pages > 1 ) : ?>
' . esc_html__( '←', 'sermon-manager-for-wordpress' ) . '' ) ); ?>
+ class="nav-previous">← */
+ esc_html__( '%s Older posts', 'sermon-manager-for-wordpress' ), '
' . esc_html__( '←', 'sermon-manager-for-wordpress' ) . ' ' ) ); ?>
' . esc_html__( '→', 'sermon-manager-for-wordpress' ) . '' ) ); ?>
+ class="nav-next">→ */
+ esc_html__( 'Newer posts %s', 'sermon-manager-for-wordpress' ), '' . esc_html__( '→', 'sermon-manager-for-wordpress' ) . ' ' ) ); ?>
diff --git a/views/taxonomy-wpfc_preacher.php b/views/taxonomy-wpfc_preacher.php
index e815023..e7d4496 100644
--- a/views/taxonomy-wpfc_preacher.php
+++ b/views/taxonomy-wpfc_preacher.php
@@ -39,9 +39,11 @@
max_num_pages > 1 ) : ?>
' . esc_html__( '←', 'sermon-manager-for-wordpress' ) . '' ) ); ?>
+ class="nav-previous">← */
+ esc_html__( '%s Older posts', 'sermon-manager-for-wordpress' ), '
' . esc_html__( '←', 'sermon-manager-for-wordpress' ) . ' ' ) ); ?>
' . esc_html__( '→', 'sermon-manager-for-wordpress' ) . '' ) ); ?>
+ class="nav-next">→ */
+ esc_html__( 'Newer posts %s', 'sermon-manager-for-wordpress' ), '' . esc_html__( '→', 'sermon-manager-for-wordpress' ) . ' ' ) ); ?>
@@ -80,9 +82,9 @@ class="nav-next">
+ class="meta-prep meta-prep-author">
by ID, 'wpfc_preacher', '', ', ', ' ' ); ?>
+ class="meta-sep"> by ID, 'wpfc_preacher', '', ', ', ' ' ); ?>
@@ -90,8 +92,8 @@ class="meta-sep"> by ID, 'wpfc_preacher', '
- ID ); ?>
- ID ); ?>
+
| ', ' ' ); ?>
@@ -103,9 +105,11 @@ class="comments-link">max_num_pages > 1 ) : ?>
' . esc_html__( '←', 'sermon-manager-for-wordpress' ) . '' ) ); ?>
+ class="nav-previous">← */
+ esc_html__( '%s Older posts', 'sermon-manager-for-wordpress' ), '
' . esc_html__( '←', 'sermon-manager-for-wordpress' ) . ' ' ) ); ?>
' . esc_html__( '→', 'sermon-manager-for-wordpress' ) . '' ) ); ?>
+ class="nav-next">→ */
+ esc_html__( 'Newer posts %s', 'sermon-manager-for-wordpress' ), '' . esc_html__( '→', 'sermon-manager-for-wordpress' ) . ' ' ) ); ?>
diff --git a/views/taxonomy-wpfc_sermon_series.php b/views/taxonomy-wpfc_sermon_series.php
index 27c18b8..cab9814 100644
--- a/views/taxonomy-wpfc_sermon_series.php
+++ b/views/taxonomy-wpfc_sermon_series.php
@@ -40,9 +40,11 @@
max_num_pages > 1 ) : ?>
' . esc_html__( '←', 'sermon-manager-for-wordpress' ) . '' ) ); ?>
+ class="nav-previous">← */
+ esc_html__( '%s Older posts', 'sermon-manager-for-wordpress' ), '
' . esc_html__( '←', 'sermon-manager-for-wordpress' ) . ' ' ) ); ?>
' . esc_html__( '→', 'sermon-manager-for-wordpress' ) . '' ) ); ?>
+ class="nav-next">→ */
+ esc_html__( 'Newer posts %s', 'sermon-manager-for-wordpress' ), '' . esc_html__( '→', 'sermon-manager-for-wordpress' ) . ' ' ) ); ?>
@@ -81,9 +83,9 @@ class="nav-next">
+ class="meta-prep meta-prep-author">
by ID, 'wpfc_preacher', '', ', ', ' ' ); ?>
+ class="meta-sep"> by ID, 'wpfc_preacher', '', ', ', ' ' ); ?>
@@ -91,8 +93,8 @@ class="meta-sep"> by ID, 'wpfc_preacher', '
- ID ); ?>
- ID ); ?>
+
| ', ' ' ); ?>
@@ -104,9 +106,11 @@ class="comments-link">max_num_pages > 1 ) : ?>
' . esc_html__( '←', 'sermon-manager-for-wordpress' ) . '' ) ); ?>
+ class="nav-previous">← */
+ esc_html__( '%s Older posts', 'sermon-manager-for-wordpress' ), '
' . esc_html__( '←', 'sermon-manager-for-wordpress' ) . ' ' ) ); ?>
' . esc_html__( '→', 'sermon-manager-for-wordpress' ) . '' ) ); ?>
+ class="nav-next">→ */
+ esc_html__( 'Newer posts %s', 'sermon-manager-for-wordpress' ), '' . esc_html__( '→', 'sermon-manager-for-wordpress' ) . ' ' ) ); ?>
diff --git a/views/taxonomy-wpfc_sermon_topics.php b/views/taxonomy-wpfc_sermon_topics.php
index ecc1433..990f951 100644
--- a/views/taxonomy-wpfc_sermon_topics.php
+++ b/views/taxonomy-wpfc_sermon_topics.php
@@ -40,9 +40,11 @@
max_num_pages > 1 ) : ?>
' . esc_html__( '←', 'sermon-manager-for-wordpress' ) . '' ) ); ?>
+ class="nav-previous">← */
+ esc_html__( '%s Older posts', 'sermon-manager-for-wordpress' ), '
' . esc_html__( '←', 'sermon-manager-for-wordpress' ) . ' ' ) ); ?>
' . esc_html__( '→', 'sermon-manager-for-wordpress' ) . '' ) ); ?>
+ class="nav-next">→ */
+ esc_html__( 'Newer posts %s', 'sermon-manager-for-wordpress' ), '' . esc_html__( '→', 'sermon-manager-for-wordpress' ) . ' ' ) ); ?>
@@ -81,9 +83,9 @@ class="nav-next">
+ class="meta-prep meta-prep-author">
by ID, 'wpfc_preacher', '', ', ', ' ' ); ?>
+ class="meta-sep"> by ID, 'wpfc_preacher', '', ', ', ' ' ); ?>
@@ -91,8 +93,8 @@ class="meta-sep"> by ID, 'wpfc_preacher', '
- ID ); ?>
- ID ); ?>
+
| ', ' ' ); ?>
@@ -104,9 +106,11 @@ class="comments-link">max_num_pages > 1 ) : ?>
' . esc_html__( '←', 'sermon-manager-for-wordpress' ) . '' ) ); ?>
+ class="nav-previous">← */
+ esc_html__( '%s Older posts', 'sermon-manager-for-wordpress' ), '
' . esc_html__( '←', 'sermon-manager-for-wordpress' ) . ' ' ) ); ?>
' . esc_html__( '→', 'sermon-manager-for-wordpress' ) . '' ) ); ?>
+ class="nav-next">→ */
+ esc_html__( 'Newer posts %s', 'sermon-manager-for-wordpress' ), '' . esc_html__( '→', 'sermon-manager-for-wordpress' ) . ' ' ) ); ?>
diff --git a/views/taxonomy-wpfc_service_type.php b/views/taxonomy-wpfc_service_type.php
index 7595f32..3b83bfa 100644
--- a/views/taxonomy-wpfc_service_type.php
+++ b/views/taxonomy-wpfc_service_type.php
@@ -33,9 +33,11 @@
max_num_pages > 1 ) : ?>
' . esc_html__( '←', 'sermon-manager-for-wordpress' ) . '' ) ); ?>
+ class="nav-previous">← */
+ esc_html__( '%s Older posts', 'sermon-manager-for-wordpress' ), '
' . esc_html__( '←', 'sermon-manager-for-wordpress' ) . ' ' ) ); ?>
' . esc_html__( '→', 'sermon-manager-for-wordpress' ) . '' ) ); ?>
+ class="nav-next">→ */
+ esc_html__( 'Newer posts %s', 'sermon-manager-for-wordpress' ), '' . esc_html__( '→', 'sermon-manager-for-wordpress' ) . ' ' ) ); ?>
@@ -74,9 +76,9 @@ class="nav-next">
+ class="meta-prep meta-prep-author">
by ID, 'wpfc_preacher', '', ', ', ' ' ); ?>
+ class="meta-sep"> by ID, 'wpfc_preacher', '', ', ', ' ' ); ?>
@@ -84,8 +86,8 @@ class="meta-sep"> by ID, 'wpfc_preacher', '
- ID ); ?>
- ID ); ?>
+
| ', ' ' ); ?>
@@ -97,9 +99,11 @@ class="comments-link">max_num_pages > 1 ) : ?>
' . esc_html__( '←', 'sermon-manager-for-wordpress' ) . '' ) ); ?>
+ class="nav-previous">← */
+ esc_html__( '%s Older posts', 'sermon-manager-for-wordpress' ), '
' . esc_html__( '←', 'sermon-manager-for-wordpress' ) . ' ' ) ); ?>
' . esc_html__( '→', 'sermon-manager-for-wordpress' ) . '' ) ); ?>
+ class="nav-next">→ */
+ esc_html__( 'Newer posts %s', 'sermon-manager-for-wordpress' ), '' . esc_html__( '→', 'sermon-manager-for-wordpress' ) . ' ' ) ); ?>