Stable release of v2.0.18
Adds bottom module position on tag, search, ai and app pages. Fixed JavaScript Database Manager some more.
This commit is contained in:
parent
76ac03f902
commit
e9693965d3
@ -88,3 +88,8 @@
|
|||||||
# v2.0.17
|
# v2.0.17
|
||||||
|
|
||||||
- Adds brut-force protection
|
- Adds brut-force protection
|
||||||
|
|
||||||
|
# v2.0.18
|
||||||
|
|
||||||
|
- Adds bottom module position on tag, search, ai and app pages.
|
||||||
|
- Fixed JavaScript Database Manager some more.
|
20
README.md
20
README.md
@ -1,4 +1,4 @@
|
|||||||
# Get Bible (2.0.17)
|
# Get Bible (2.0.18)
|
||||||
|
|
||||||
![Get Bible image](https://git.vdm.dev/getBible/joomla-component/raw/branch/master/admin/assets/images/vdm-component.jpg "GetBible")
|
![Get Bible image](https://git.vdm.dev/getBible/joomla-component/raw/branch/master/admin/assets/images/vdm-component.jpg "GetBible")
|
||||||
|
|
||||||
@ -18,38 +18,38 @@ In essence, The Bible for Joomla is designed to transform how the Word of God is
|
|||||||
+ *Author*: [Llewellyn van der Merwe](mailto:joomla@vdm.io)
|
+ *Author*: [Llewellyn van der Merwe](mailto:joomla@vdm.io)
|
||||||
+ *Name*: [Get Bible](https://getbible.net)
|
+ *Name*: [Get Bible](https://getbible.net)
|
||||||
+ *First Build*: 3rd December, 2015
|
+ *First Build*: 3rd December, 2015
|
||||||
+ *Last Build*: 7th August, 2023
|
+ *Last Build*: 10th August, 2023
|
||||||
+ *Version*: 2.0.17
|
+ *Version*: 2.0.18
|
||||||
+ *Copyright*: Copyright (C) 2015. All Rights Reserved
|
+ *Copyright*: Copyright (C) 2015. All Rights Reserved
|
||||||
+ *License*: GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
|
+ *License*: GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
|
||||||
|
|
||||||
## Build Time
|
## Build Time
|
||||||
|
|
||||||
**550 Hours** or **69 Eight Hour Days** (actual time the author saved -
|
**552 Hours** or **69 Eight Hour Days** (actual time the author saved -
|
||||||
due to [Automated Component Builder](https://www.joomlacomponentbuilder.com))
|
due to [Automated Component Builder](https://www.joomlacomponentbuilder.com))
|
||||||
|
|
||||||
> (if creating a folder and file took **5 seconds** and writing one line of code took **10 seconds**,
|
> (if creating a folder and file took **5 seconds** and writing one line of code took **10 seconds**,
|
||||||
> never making one mistake or taking any coffee break.)
|
> never making one mistake or taking any coffee break.)
|
||||||
|
|
||||||
+ *Line count*: **196949**
|
+ *Line count*: **197705**
|
||||||
+ *File count*: **1712**
|
+ *File count*: **1717**
|
||||||
+ *Folder count*: **163**
|
+ *Folder count*: **163**
|
||||||
|
|
||||||
**362 Hours** or **45 Eight Hour Days** (the actual time the author spent)
|
**364 Hours** or **46 Eight Hour Days** (the actual time the author spent)
|
||||||
|
|
||||||
> (with the following break down:
|
> (with the following break down:
|
||||||
> **debugging @137hours** = codingtime / 4;
|
> **debugging @138hours** = codingtime / 4;
|
||||||
> **planning @79hours** = codingtime / 7;
|
> **planning @79hours** = codingtime / 7;
|
||||||
> **mapping @55hours** = codingtime / 10;
|
> **mapping @55hours** = codingtime / 10;
|
||||||
> **office @92hours** = codingtime / 6;)
|
> **office @92hours** = codingtime / 6;)
|
||||||
|
|
||||||
**912 Hours** or **114 Eight Hour Days**
|
**916 Hours** or **115 Eight Hour Days**
|
||||||
(a total of the realistic time frame for this project)
|
(a total of the realistic time frame for this project)
|
||||||
|
|
||||||
> (if creating a folder and file took **5 seconds** and writing one line of code took **10 seconds**,
|
> (if creating a folder and file took **5 seconds** and writing one line of code took **10 seconds**,
|
||||||
> with the normal everyday realities at the office, that includes the component planning, mapping & debugging.)
|
> with the normal everyday realities at the office, that includes the component planning, mapping & debugging.)
|
||||||
|
|
||||||
Project duration: **22.8 weeks** or **4.8 months**
|
Project duration: **23 weeks** or **4.8 months**
|
||||||
|
|
||||||
> This **component** was build with a Joomla [Automated Component Builder](https://www.joomlacomponentbuilder.com).
|
> This **component** was build with a Joomla [Automated Component Builder](https://www.joomlacomponentbuilder.com).
|
||||||
> Developed by [Llewellyn van der Merwe](mailto:joomla@vdm.io)
|
> Developed by [Llewellyn van der Merwe](mailto:joomla@vdm.io)
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Get Bible (2.0.17)
|
# Get Bible (2.0.18)
|
||||||
|
|
||||||
![Get Bible image](https://git.vdm.dev/getBible/joomla-component/raw/branch/master/admin/assets/images/vdm-component.jpg "GetBible")
|
![Get Bible image](https://git.vdm.dev/getBible/joomla-component/raw/branch/master/admin/assets/images/vdm-component.jpg "GetBible")
|
||||||
|
|
||||||
@ -18,38 +18,38 @@ In essence, The Bible for Joomla is designed to transform how the Word of God is
|
|||||||
+ *Author*: [Llewellyn van der Merwe](mailto:joomla@vdm.io)
|
+ *Author*: [Llewellyn van der Merwe](mailto:joomla@vdm.io)
|
||||||
+ *Name*: [Get Bible](https://getbible.net)
|
+ *Name*: [Get Bible](https://getbible.net)
|
||||||
+ *First Build*: 3rd December, 2015
|
+ *First Build*: 3rd December, 2015
|
||||||
+ *Last Build*: 7th August, 2023
|
+ *Last Build*: 10th August, 2023
|
||||||
+ *Version*: 2.0.17
|
+ *Version*: 2.0.18
|
||||||
+ *Copyright*: Copyright (C) 2015. All Rights Reserved
|
+ *Copyright*: Copyright (C) 2015. All Rights Reserved
|
||||||
+ *License*: GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
|
+ *License*: GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
|
||||||
|
|
||||||
## Build Time
|
## Build Time
|
||||||
|
|
||||||
**550 Hours** or **69 Eight Hour Days** (actual time the author saved -
|
**552 Hours** or **69 Eight Hour Days** (actual time the author saved -
|
||||||
due to [Automated Component Builder](https://www.joomlacomponentbuilder.com))
|
due to [Automated Component Builder](https://www.joomlacomponentbuilder.com))
|
||||||
|
|
||||||
> (if creating a folder and file took **5 seconds** and writing one line of code took **10 seconds**,
|
> (if creating a folder and file took **5 seconds** and writing one line of code took **10 seconds**,
|
||||||
> never making one mistake or taking any coffee break.)
|
> never making one mistake or taking any coffee break.)
|
||||||
|
|
||||||
+ *Line count*: **196949**
|
+ *Line count*: **197705**
|
||||||
+ *File count*: **1712**
|
+ *File count*: **1717**
|
||||||
+ *Folder count*: **163**
|
+ *Folder count*: **163**
|
||||||
|
|
||||||
**362 Hours** or **45 Eight Hour Days** (the actual time the author spent)
|
**364 Hours** or **46 Eight Hour Days** (the actual time the author spent)
|
||||||
|
|
||||||
> (with the following break down:
|
> (with the following break down:
|
||||||
> **debugging @137hours** = codingtime / 4;
|
> **debugging @138hours** = codingtime / 4;
|
||||||
> **planning @79hours** = codingtime / 7;
|
> **planning @79hours** = codingtime / 7;
|
||||||
> **mapping @55hours** = codingtime / 10;
|
> **mapping @55hours** = codingtime / 10;
|
||||||
> **office @92hours** = codingtime / 6;)
|
> **office @92hours** = codingtime / 6;)
|
||||||
|
|
||||||
**912 Hours** or **114 Eight Hour Days**
|
**916 Hours** or **115 Eight Hour Days**
|
||||||
(a total of the realistic time frame for this project)
|
(a total of the realistic time frame for this project)
|
||||||
|
|
||||||
> (if creating a folder and file took **5 seconds** and writing one line of code took **10 seconds**,
|
> (if creating a folder and file took **5 seconds** and writing one line of code took **10 seconds**,
|
||||||
> with the normal everyday realities at the office, that includes the component planning, mapping & debugging.)
|
> with the normal everyday realities at the office, that includes the component planning, mapping & debugging.)
|
||||||
|
|
||||||
Project duration: **22.8 weeks** or **4.8 months**
|
Project duration: **23 weeks** or **4.8 months**
|
||||||
|
|
||||||
> This **component** was build with a Joomla [Automated Component Builder](https://www.joomlacomponentbuilder.com).
|
> This **component** was build with a Joomla [Automated Component Builder](https://www.joomlacomponentbuilder.com).
|
||||||
> Developed by [Llewellyn van der Merwe](mailto:joomla@vdm.io)
|
> Developed by [Llewellyn van der Merwe](mailto:joomla@vdm.io)
|
||||||
|
362
admin/config.xml
362
admin/config.xml
@ -304,6 +304,96 @@
|
|||||||
<option value="2">
|
<option value="2">
|
||||||
COM_GETBIBLE_CONFIG_CASE_SENSITIVE</option>
|
COM_GETBIBLE_CONFIG_CASE_SENSITIVE</option>
|
||||||
</field>
|
</field>
|
||||||
|
<!-- Bottom_search_position Field. Type: Subform. (joomla) -->
|
||||||
|
<field
|
||||||
|
type="subform"
|
||||||
|
name="bottom_search_position"
|
||||||
|
label="COM_GETBIBLE_CONFIG_BOTTOM_SEARCH_POSITION_LABEL"
|
||||||
|
layout="joomla.form.field.subform.repeatable-table"
|
||||||
|
multiple="true"
|
||||||
|
buttons="add,remove,move"
|
||||||
|
icon="list"
|
||||||
|
max="5"
|
||||||
|
showon="activate_search:1"
|
||||||
|
>
|
||||||
|
<form hidden="true" name="list_bottom_search_position_modal" repeat="true">
|
||||||
|
<!-- Position Field. Type: Text. (joomla) -->
|
||||||
|
<field
|
||||||
|
type="text"
|
||||||
|
name="position"
|
||||||
|
label="COM_GETBIBLE_CONFIG_POSITION_LABEL"
|
||||||
|
size="10"
|
||||||
|
maxlength="50"
|
||||||
|
description="COM_GETBIBLE_CONFIG_POSITION_DESCRIPTION"
|
||||||
|
class="text_area"
|
||||||
|
message="COM_GETBIBLE_CONFIG_POSITION_MESSAGE"
|
||||||
|
hint="COM_GETBIBLE_CONFIG_POSITION_HINT"
|
||||||
|
autocomplete="on"
|
||||||
|
/>
|
||||||
|
<!-- Separator Field. Type: List. (joomla) -->
|
||||||
|
<field
|
||||||
|
type="list"
|
||||||
|
name="separator"
|
||||||
|
label="COM_GETBIBLE_CONFIG_SEPARATOR_LABEL"
|
||||||
|
class="list_class"
|
||||||
|
default="div">
|
||||||
|
<!-- Option Set. -->
|
||||||
|
<option value="none">
|
||||||
|
COM_GETBIBLE_CONFIG_NONE</option>
|
||||||
|
<option value="div">
|
||||||
|
COM_GETBIBLE_CONFIG_DIV</option>
|
||||||
|
<option value="list">
|
||||||
|
COM_GETBIBLE_CONFIG_LIST</option>
|
||||||
|
<option value="array">
|
||||||
|
COM_GETBIBLE_CONFIG_ARRAY</option>
|
||||||
|
<option value="break">
|
||||||
|
COM_GETBIBLE_CONFIG_BREAK</option>
|
||||||
|
</field>
|
||||||
|
<!-- Class Field. Type: Text. (joomla) -->
|
||||||
|
<field
|
||||||
|
type="text"
|
||||||
|
name="class"
|
||||||
|
label="COM_GETBIBLE_CONFIG_CLASS_LABEL"
|
||||||
|
size="50"
|
||||||
|
maxlength="150"
|
||||||
|
class="text_area"
|
||||||
|
filter="STRING"
|
||||||
|
message="COM_GETBIBLE_CONFIG_CLASS_MESSAGE"
|
||||||
|
hint="COM_GETBIBLE_CONFIG_CLASS_HINT"
|
||||||
|
autocomplete="on"
|
||||||
|
/>
|
||||||
|
</form>
|
||||||
|
</field>
|
||||||
|
<!-- Show_bottom_search_position_card Field. Type: Radio. (joomla) -->
|
||||||
|
<field
|
||||||
|
type="radio"
|
||||||
|
name="show_bottom_search_position_card"
|
||||||
|
label="COM_GETBIBLE_CONFIG_SHOW_BOTTOM_SEARCH_POSITION_CARD_LABEL"
|
||||||
|
class="btn-group btn-group-yesno"
|
||||||
|
default="1"
|
||||||
|
showon="activate_search:1">
|
||||||
|
<!-- Option Set. -->
|
||||||
|
<option value="1">
|
||||||
|
COM_GETBIBLE_CONFIG_YES</option>
|
||||||
|
<option value="0">
|
||||||
|
COM_GETBIBLE_CONFIG_NO</option>
|
||||||
|
</field>
|
||||||
|
<!-- Bottom_search_position_card_style Field. Type: List. (joomla) -->
|
||||||
|
<field
|
||||||
|
type="list"
|
||||||
|
name="bottom_search_position_card_style"
|
||||||
|
label="COM_GETBIBLE_CONFIG_BOTTOM_SEARCH_POSITION_CARD_STYLE_LABEL"
|
||||||
|
class="list_class"
|
||||||
|
default="default"
|
||||||
|
showon="activate_search:1[AND]show_bottom_search_position_card:1">
|
||||||
|
<!-- Option Set. -->
|
||||||
|
<option value="default">
|
||||||
|
COM_GETBIBLE_CONFIG_DEFAULT</option>
|
||||||
|
<option value="primary">
|
||||||
|
COM_GETBIBLE_CONFIG_PRIMARY</option>
|
||||||
|
<option value="secondary">
|
||||||
|
COM_GETBIBLE_CONFIG_SECONDARY</option>
|
||||||
|
</field>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<fieldset
|
<fieldset
|
||||||
name="notes_custom_config"
|
name="notes_custom_config"
|
||||||
@ -358,6 +448,96 @@
|
|||||||
<option value="1">
|
<option value="1">
|
||||||
COM_GETBIBLE_CONFIG_YES</option>
|
COM_GETBIBLE_CONFIG_YES</option>
|
||||||
</field>
|
</field>
|
||||||
|
<!-- Bottom_tag_position Field. Type: Subform. (joomla) -->
|
||||||
|
<field
|
||||||
|
type="subform"
|
||||||
|
name="bottom_tag_position"
|
||||||
|
label="COM_GETBIBLE_CONFIG_BOTTOM_TAG_POSITION_LABEL"
|
||||||
|
layout="joomla.form.field.subform.repeatable-table"
|
||||||
|
multiple="true"
|
||||||
|
buttons="add,remove,move"
|
||||||
|
icon="list"
|
||||||
|
max="5"
|
||||||
|
showon="activate_tags:1"
|
||||||
|
>
|
||||||
|
<form hidden="true" name="list_bottom_tag_position_modal" repeat="true">
|
||||||
|
<!-- Position Field. Type: Text. (joomla) -->
|
||||||
|
<field
|
||||||
|
type="text"
|
||||||
|
name="position"
|
||||||
|
label="COM_GETBIBLE_CONFIG_POSITION_LABEL"
|
||||||
|
size="10"
|
||||||
|
maxlength="50"
|
||||||
|
description="COM_GETBIBLE_CONFIG_POSITION_DESCRIPTION"
|
||||||
|
class="text_area"
|
||||||
|
message="COM_GETBIBLE_CONFIG_POSITION_MESSAGE"
|
||||||
|
hint="COM_GETBIBLE_CONFIG_POSITION_HINT"
|
||||||
|
autocomplete="on"
|
||||||
|
/>
|
||||||
|
<!-- Separator Field. Type: List. (joomla) -->
|
||||||
|
<field
|
||||||
|
type="list"
|
||||||
|
name="separator"
|
||||||
|
label="COM_GETBIBLE_CONFIG_SEPARATOR_LABEL"
|
||||||
|
class="list_class"
|
||||||
|
default="div">
|
||||||
|
<!-- Option Set. -->
|
||||||
|
<option value="none">
|
||||||
|
COM_GETBIBLE_CONFIG_NONE</option>
|
||||||
|
<option value="div">
|
||||||
|
COM_GETBIBLE_CONFIG_DIV</option>
|
||||||
|
<option value="list">
|
||||||
|
COM_GETBIBLE_CONFIG_LIST</option>
|
||||||
|
<option value="array">
|
||||||
|
COM_GETBIBLE_CONFIG_ARRAY</option>
|
||||||
|
<option value="break">
|
||||||
|
COM_GETBIBLE_CONFIG_BREAK</option>
|
||||||
|
</field>
|
||||||
|
<!-- Class Field. Type: Text. (joomla) -->
|
||||||
|
<field
|
||||||
|
type="text"
|
||||||
|
name="class"
|
||||||
|
label="COM_GETBIBLE_CONFIG_CLASS_LABEL"
|
||||||
|
size="50"
|
||||||
|
maxlength="150"
|
||||||
|
class="text_area"
|
||||||
|
filter="STRING"
|
||||||
|
message="COM_GETBIBLE_CONFIG_CLASS_MESSAGE"
|
||||||
|
hint="COM_GETBIBLE_CONFIG_CLASS_HINT"
|
||||||
|
autocomplete="on"
|
||||||
|
/>
|
||||||
|
</form>
|
||||||
|
</field>
|
||||||
|
<!-- Show_bottom_tag_position_card Field. Type: Radio. (joomla) -->
|
||||||
|
<field
|
||||||
|
type="radio"
|
||||||
|
name="show_bottom_tag_position_card"
|
||||||
|
label="COM_GETBIBLE_CONFIG_SHOW_BOTTOM_TAG_POSITION_CARD_LABEL"
|
||||||
|
class="btn-group btn-group-yesno"
|
||||||
|
default="1"
|
||||||
|
showon="activate_tags:1">
|
||||||
|
<!-- Option Set. -->
|
||||||
|
<option value="1">
|
||||||
|
COM_GETBIBLE_CONFIG_YES</option>
|
||||||
|
<option value="0">
|
||||||
|
COM_GETBIBLE_CONFIG_NO</option>
|
||||||
|
</field>
|
||||||
|
<!-- Bottom_tag_position_card_style Field. Type: List. (joomla) -->
|
||||||
|
<field
|
||||||
|
type="list"
|
||||||
|
name="bottom_tag_position_card_style"
|
||||||
|
label="COM_GETBIBLE_CONFIG_BOTTOM_TAG_POSITION_CARD_STYLE_LABEL"
|
||||||
|
class="list_class"
|
||||||
|
default="default"
|
||||||
|
showon="activate_tags:1[AND]show_bottom_tag_position_card:1">
|
||||||
|
<!-- Option Set. -->
|
||||||
|
<option value="default">
|
||||||
|
COM_GETBIBLE_CONFIG_DEFAULT</option>
|
||||||
|
<option value="primary">
|
||||||
|
COM_GETBIBLE_CONFIG_PRIMARY</option>
|
||||||
|
<option value="secondary">
|
||||||
|
COM_GETBIBLE_CONFIG_SECONDARY</option>
|
||||||
|
</field>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<fieldset
|
<fieldset
|
||||||
name="share_custom_config"
|
name="share_custom_config"
|
||||||
@ -670,8 +850,8 @@
|
|||||||
type="text"
|
type="text"
|
||||||
name="class"
|
name="class"
|
||||||
label="COM_GETBIBLE_CONFIG_CLASS_LABEL"
|
label="COM_GETBIBLE_CONFIG_CLASS_LABEL"
|
||||||
size="10"
|
size="50"
|
||||||
maxlength="50"
|
maxlength="150"
|
||||||
class="text_area"
|
class="text_area"
|
||||||
filter="STRING"
|
filter="STRING"
|
||||||
message="COM_GETBIBLE_CONFIG_CLASS_MESSAGE"
|
message="COM_GETBIBLE_CONFIG_CLASS_MESSAGE"
|
||||||
@ -1252,6 +1432,94 @@
|
|||||||
<option value="secondary">
|
<option value="secondary">
|
||||||
COM_GETBIBLE_CONFIG_SECONDARY</option>
|
COM_GETBIBLE_CONFIG_SECONDARY</option>
|
||||||
</field>
|
</field>
|
||||||
|
<!-- Bottom_app_position Field. Type: Subform. (joomla) -->
|
||||||
|
<field
|
||||||
|
type="subform"
|
||||||
|
name="bottom_app_position"
|
||||||
|
label="COM_GETBIBLE_CONFIG_BOTTOM_APP_POSITION_LABEL"
|
||||||
|
layout="joomla.form.field.subform.repeatable-table"
|
||||||
|
multiple="true"
|
||||||
|
buttons="add,remove,move"
|
||||||
|
icon="list"
|
||||||
|
max="5"
|
||||||
|
>
|
||||||
|
<form hidden="true" name="list_bottom_app_position_modal" repeat="true">
|
||||||
|
<!-- Position Field. Type: Text. (joomla) -->
|
||||||
|
<field
|
||||||
|
type="text"
|
||||||
|
name="position"
|
||||||
|
label="COM_GETBIBLE_CONFIG_POSITION_LABEL"
|
||||||
|
size="10"
|
||||||
|
maxlength="50"
|
||||||
|
description="COM_GETBIBLE_CONFIG_POSITION_DESCRIPTION"
|
||||||
|
class="text_area"
|
||||||
|
message="COM_GETBIBLE_CONFIG_POSITION_MESSAGE"
|
||||||
|
hint="COM_GETBIBLE_CONFIG_POSITION_HINT"
|
||||||
|
autocomplete="on"
|
||||||
|
/>
|
||||||
|
<!-- Separator Field. Type: List. (joomla) -->
|
||||||
|
<field
|
||||||
|
type="list"
|
||||||
|
name="separator"
|
||||||
|
label="COM_GETBIBLE_CONFIG_SEPARATOR_LABEL"
|
||||||
|
class="list_class"
|
||||||
|
default="div">
|
||||||
|
<!-- Option Set. -->
|
||||||
|
<option value="none">
|
||||||
|
COM_GETBIBLE_CONFIG_NONE</option>
|
||||||
|
<option value="div">
|
||||||
|
COM_GETBIBLE_CONFIG_DIV</option>
|
||||||
|
<option value="list">
|
||||||
|
COM_GETBIBLE_CONFIG_LIST</option>
|
||||||
|
<option value="array">
|
||||||
|
COM_GETBIBLE_CONFIG_ARRAY</option>
|
||||||
|
<option value="break">
|
||||||
|
COM_GETBIBLE_CONFIG_BREAK</option>
|
||||||
|
</field>
|
||||||
|
<!-- Class Field. Type: Text. (joomla) -->
|
||||||
|
<field
|
||||||
|
type="text"
|
||||||
|
name="class"
|
||||||
|
label="COM_GETBIBLE_CONFIG_CLASS_LABEL"
|
||||||
|
size="50"
|
||||||
|
maxlength="150"
|
||||||
|
class="text_area"
|
||||||
|
filter="STRING"
|
||||||
|
message="COM_GETBIBLE_CONFIG_CLASS_MESSAGE"
|
||||||
|
hint="COM_GETBIBLE_CONFIG_CLASS_HINT"
|
||||||
|
autocomplete="on"
|
||||||
|
/>
|
||||||
|
</form>
|
||||||
|
</field>
|
||||||
|
<!-- Show_bottom_app_position_card Field. Type: Radio. (joomla) -->
|
||||||
|
<field
|
||||||
|
type="radio"
|
||||||
|
name="show_bottom_app_position_card"
|
||||||
|
label="COM_GETBIBLE_CONFIG_SHOW_BOTTOM_APP_POSITION_CARD_LABEL"
|
||||||
|
class="btn-group btn-group-yesno"
|
||||||
|
default="1">
|
||||||
|
<!-- Option Set. -->
|
||||||
|
<option value="1">
|
||||||
|
COM_GETBIBLE_CONFIG_YES</option>
|
||||||
|
<option value="0">
|
||||||
|
COM_GETBIBLE_CONFIG_NO</option>
|
||||||
|
</field>
|
||||||
|
<!-- Bottom_app_position_card_style Field. Type: List. (joomla) -->
|
||||||
|
<field
|
||||||
|
type="list"
|
||||||
|
name="bottom_app_position_card_style"
|
||||||
|
label="COM_GETBIBLE_CONFIG_BOTTOM_APP_POSITION_CARD_STYLE_LABEL"
|
||||||
|
class="list_class"
|
||||||
|
default="default"
|
||||||
|
showon="show_bottom_app_position_card:1">
|
||||||
|
<!-- Option Set. -->
|
||||||
|
<option value="default">
|
||||||
|
COM_GETBIBLE_CONFIG_DEFAULT</option>
|
||||||
|
<option value="primary">
|
||||||
|
COM_GETBIBLE_CONFIG_PRIMARY</option>
|
||||||
|
<option value="secondary">
|
||||||
|
COM_GETBIBLE_CONFIG_SECONDARY</option>
|
||||||
|
</field>
|
||||||
<!-- Debug Field. Type: Radio. (joomla) -->
|
<!-- Debug Field. Type: Radio. (joomla) -->
|
||||||
<field
|
<field
|
||||||
type="radio"
|
type="radio"
|
||||||
@ -1458,6 +1726,96 @@
|
|||||||
step="0.1"
|
step="0.1"
|
||||||
showon="enable_open_ai:1"
|
showon="enable_open_ai:1"
|
||||||
/>
|
/>
|
||||||
|
<!-- Bottom_ai_position Field. Type: Subform. (joomla) -->
|
||||||
|
<field
|
||||||
|
type="subform"
|
||||||
|
name="bottom_ai_position"
|
||||||
|
label="COM_GETBIBLE_CONFIG_BOTTOM_AI_POSITION_LABEL"
|
||||||
|
layout="joomla.form.field.subform.repeatable-table"
|
||||||
|
multiple="true"
|
||||||
|
buttons="add,remove,move"
|
||||||
|
icon="list"
|
||||||
|
max="5"
|
||||||
|
showon="enable_open_ai:1"
|
||||||
|
>
|
||||||
|
<form hidden="true" name="list_bottom_ai_position_modal" repeat="true">
|
||||||
|
<!-- Position Field. Type: Text. (joomla) -->
|
||||||
|
<field
|
||||||
|
type="text"
|
||||||
|
name="position"
|
||||||
|
label="COM_GETBIBLE_CONFIG_POSITION_LABEL"
|
||||||
|
size="10"
|
||||||
|
maxlength="50"
|
||||||
|
description="COM_GETBIBLE_CONFIG_POSITION_DESCRIPTION"
|
||||||
|
class="text_area"
|
||||||
|
message="COM_GETBIBLE_CONFIG_POSITION_MESSAGE"
|
||||||
|
hint="COM_GETBIBLE_CONFIG_POSITION_HINT"
|
||||||
|
autocomplete="on"
|
||||||
|
/>
|
||||||
|
<!-- Separator Field. Type: List. (joomla) -->
|
||||||
|
<field
|
||||||
|
type="list"
|
||||||
|
name="separator"
|
||||||
|
label="COM_GETBIBLE_CONFIG_SEPARATOR_LABEL"
|
||||||
|
class="list_class"
|
||||||
|
default="div">
|
||||||
|
<!-- Option Set. -->
|
||||||
|
<option value="none">
|
||||||
|
COM_GETBIBLE_CONFIG_NONE</option>
|
||||||
|
<option value="div">
|
||||||
|
COM_GETBIBLE_CONFIG_DIV</option>
|
||||||
|
<option value="list">
|
||||||
|
COM_GETBIBLE_CONFIG_LIST</option>
|
||||||
|
<option value="array">
|
||||||
|
COM_GETBIBLE_CONFIG_ARRAY</option>
|
||||||
|
<option value="break">
|
||||||
|
COM_GETBIBLE_CONFIG_BREAK</option>
|
||||||
|
</field>
|
||||||
|
<!-- Class Field. Type: Text. (joomla) -->
|
||||||
|
<field
|
||||||
|
type="text"
|
||||||
|
name="class"
|
||||||
|
label="COM_GETBIBLE_CONFIG_CLASS_LABEL"
|
||||||
|
size="50"
|
||||||
|
maxlength="150"
|
||||||
|
class="text_area"
|
||||||
|
filter="STRING"
|
||||||
|
message="COM_GETBIBLE_CONFIG_CLASS_MESSAGE"
|
||||||
|
hint="COM_GETBIBLE_CONFIG_CLASS_HINT"
|
||||||
|
autocomplete="on"
|
||||||
|
/>
|
||||||
|
</form>
|
||||||
|
</field>
|
||||||
|
<!-- Show_bottom_ai_position_card Field. Type: Radio. (joomla) -->
|
||||||
|
<field
|
||||||
|
type="radio"
|
||||||
|
name="show_bottom_ai_position_card"
|
||||||
|
label="COM_GETBIBLE_CONFIG_SHOW_BOTTOM_AI_POSITION_CARD_LABEL"
|
||||||
|
class="btn-group btn-group-yesno"
|
||||||
|
default="1"
|
||||||
|
showon="enable_open_ai:1">
|
||||||
|
<!-- Option Set. -->
|
||||||
|
<option value="1">
|
||||||
|
COM_GETBIBLE_CONFIG_YES</option>
|
||||||
|
<option value="0">
|
||||||
|
COM_GETBIBLE_CONFIG_NO</option>
|
||||||
|
</field>
|
||||||
|
<!-- Bottom_ai_position_card_style Field. Type: List. (joomla) -->
|
||||||
|
<field
|
||||||
|
type="list"
|
||||||
|
name="bottom_ai_position_card_style"
|
||||||
|
label="COM_GETBIBLE_CONFIG_BOTTOM_AI_POSITION_CARD_STYLE_LABEL"
|
||||||
|
class="list_class"
|
||||||
|
default="default"
|
||||||
|
showon="enable_open_ai:1[AND]show_bottom_ai_position_card:1">
|
||||||
|
<!-- Option Set. -->
|
||||||
|
<option value="default">
|
||||||
|
COM_GETBIBLE_CONFIG_DEFAULT</option>
|
||||||
|
<option value="primary">
|
||||||
|
COM_GETBIBLE_CONFIG_PRIMARY</option>
|
||||||
|
<option value="secondary">
|
||||||
|
COM_GETBIBLE_CONFIG_SECONDARY</option>
|
||||||
|
</field>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<fieldset
|
<fieldset
|
||||||
name="permissions"
|
name="permissions"
|
||||||
|
@ -218,7 +218,15 @@ COM_GETBIBLE_CONFIG_BOOKS_TAB_HINT="Books"
|
|||||||
COM_GETBIBLE_CONFIG_BOOKS_TAB_LABEL="Books Tab"
|
COM_GETBIBLE_CONFIG_BOOKS_TAB_LABEL="Books Tab"
|
||||||
COM_GETBIBLE_CONFIG_BOOKS_TAB_MESSAGE="Error! Please add some name here."
|
COM_GETBIBLE_CONFIG_BOOKS_TAB_MESSAGE="Error! Please add some name here."
|
||||||
COM_GETBIBLE_CONFIG_BOTTOM="Bottom"
|
COM_GETBIBLE_CONFIG_BOTTOM="Bottom"
|
||||||
|
COM_GETBIBLE_CONFIG_BOTTOM_AI_POSITION_CARD_STYLE_LABEL="Bottom AI Position Card Style"
|
||||||
|
COM_GETBIBLE_CONFIG_BOTTOM_AI_POSITION_LABEL="Bottom AI Positions"
|
||||||
|
COM_GETBIBLE_CONFIG_BOTTOM_APP_POSITION_CARD_STYLE_LABEL="Bottom APP Position Card Style"
|
||||||
|
COM_GETBIBLE_CONFIG_BOTTOM_APP_POSITION_LABEL="Bottom Bible Positions"
|
||||||
COM_GETBIBLE_CONFIG_BOTTOM_MENU_TYPE_LABEL="Bottom Menu Type"
|
COM_GETBIBLE_CONFIG_BOTTOM_MENU_TYPE_LABEL="Bottom Menu Type"
|
||||||
|
COM_GETBIBLE_CONFIG_BOTTOM_SEARCH_POSITION_CARD_STYLE_LABEL="Bottom Search Position Card Style"
|
||||||
|
COM_GETBIBLE_CONFIG_BOTTOM_SEARCH_POSITION_LABEL="Bottom Search Positions"
|
||||||
|
COM_GETBIBLE_CONFIG_BOTTOM_TAG_POSITION_CARD_STYLE_LABEL="Bottom Tag Position Card Style"
|
||||||
|
COM_GETBIBLE_CONFIG_BOTTOM_TAG_POSITION_LABEL="Bottom Tag Positions"
|
||||||
COM_GETBIBLE_CONFIG_BREAK="break"
|
COM_GETBIBLE_CONFIG_BREAK="break"
|
||||||
COM_GETBIBLE_CONFIG_CASE_INSENSITIVE="Case Insensitive"
|
COM_GETBIBLE_CONFIG_CASE_INSENSITIVE="Case Insensitive"
|
||||||
COM_GETBIBLE_CONFIG_CASE_SENSITIVE="Case Sensitive"
|
COM_GETBIBLE_CONFIG_CASE_SENSITIVE="Case Sensitive"
|
||||||
@ -297,7 +305,7 @@ COM_GETBIBLE_CONFIG_NAME_HINT="Tab Name"
|
|||||||
COM_GETBIBLE_CONFIG_NAME_LABEL="Tab"
|
COM_GETBIBLE_CONFIG_NAME_LABEL="Tab"
|
||||||
COM_GETBIBLE_CONFIG_NAME_MESSAGE="Error! Please add some name here."
|
COM_GETBIBLE_CONFIG_NAME_MESSAGE="Error! Please add some name here."
|
||||||
COM_GETBIBLE_CONFIG_NO="No"
|
COM_GETBIBLE_CONFIG_NO="No"
|
||||||
COM_GETBIBLE_CONFIG_NONE="None"
|
COM_GETBIBLE_CONFIG_NONE="none"
|
||||||
COM_GETBIBLE_CONFIG_NOTES="Notes"
|
COM_GETBIBLE_CONFIG_NOTES="Notes"
|
||||||
COM_GETBIBLE_CONFIG_ONLY_EXTRA="Only Extra"
|
COM_GETBIBLE_CONFIG_ONLY_EXTRA="Only Extra"
|
||||||
COM_GETBIBLE_CONFIG_OPENAI_DOCUMENTATION_NOTE_DESCRIPTION="<p>Please review the OpenAI API documentation for creating a chat conversation at <a href='https://platform.openai.com/docs/api-reference/chat/create'>this link</a>. The document provides a comprehensive guide on parameters and methods to create chat completion using OpenAI's model. It includes instructions on:</p><ul> <li>How to post a request to create model responses</li> <li>The format for the request body including role, model, messages, and optional parameters such as name, content, and function_call</li> <li>Different ways to control the model's response such as temperature and top_p</li> <li>How to control the number of generated chat completion choices, the stop sequences, and maximum number of tokens</li> <li>Utilizing penalties and biases for managing the output</li> <li>Additional features like streaming and user tracking for abuse monitoring</li></ul>"
|
COM_GETBIBLE_CONFIG_OPENAI_DOCUMENTATION_NOTE_DESCRIPTION="<p>Please review the OpenAI API documentation for creating a chat conversation at <a href='https://platform.openai.com/docs/api-reference/chat/create'>this link</a>. The document provides a comprehensive guide on parameters and methods to create chat completion using OpenAI's model. It includes instructions on:</p><ul> <li>How to post a request to create model responses</li> <li>The format for the request body including role, model, messages, and optional parameters such as name, content, and function_call</li> <li>Different ways to control the model's response such as temperature and top_p</li> <li>How to control the number of generated chat completion choices, the stop sequences, and maximum number of tokens</li> <li>Utilizing penalties and biases for managing the output</li> <li>Additional features like streaming and user tracking for abuse monitoring</li></ul>"
|
||||||
@ -391,7 +399,11 @@ COM_GETBIBLE_CONFIG_SHOW_API_LINK_LABEL="API Link"
|
|||||||
COM_GETBIBLE_CONFIG_SHOW_BOOKS_CARD_LABEL="Show Books Card"
|
COM_GETBIBLE_CONFIG_SHOW_BOOKS_CARD_LABEL="Show Books Card"
|
||||||
COM_GETBIBLE_CONFIG_SHOW_BOOKS_ICON_LABEL="Show Books Icon"
|
COM_GETBIBLE_CONFIG_SHOW_BOOKS_ICON_LABEL="Show Books Icon"
|
||||||
COM_GETBIBLE_CONFIG_SHOW_BOOKS_TAB_TEXT_LABEL="Show Books Tab Text"
|
COM_GETBIBLE_CONFIG_SHOW_BOOKS_TAB_TEXT_LABEL="Show Books Tab Text"
|
||||||
|
COM_GETBIBLE_CONFIG_SHOW_BOTTOM_AI_POSITION_CARD_LABEL="Show Bottom AI Position Card"
|
||||||
|
COM_GETBIBLE_CONFIG_SHOW_BOTTOM_APP_POSITION_CARD_LABEL="Show Bottom APP Position Card"
|
||||||
COM_GETBIBLE_CONFIG_SHOW_BOTTOM_MENU_LABEL="Show Bottom Menu"
|
COM_GETBIBLE_CONFIG_SHOW_BOTTOM_MENU_LABEL="Show Bottom Menu"
|
||||||
|
COM_GETBIBLE_CONFIG_SHOW_BOTTOM_SEARCH_POSITION_CARD_LABEL="Show Bottom Search Position Card"
|
||||||
|
COM_GETBIBLE_CONFIG_SHOW_BOTTOM_TAG_POSITION_CARD_LABEL="Show Bottom Tag Position Card"
|
||||||
COM_GETBIBLE_CONFIG_SHOW_CHAPTERS_CARD_LABEL="Show Chapters Card"
|
COM_GETBIBLE_CONFIG_SHOW_CHAPTERS_CARD_LABEL="Show Chapters Card"
|
||||||
COM_GETBIBLE_CONFIG_SHOW_CHAPTERS_ICON_LABEL="Show Chapters Icon"
|
COM_GETBIBLE_CONFIG_SHOW_CHAPTERS_ICON_LABEL="Show Chapters Icon"
|
||||||
COM_GETBIBLE_CONFIG_SHOW_CHAPTERS_TAB_TEXT_LABEL="Show Chapters Tab Text"
|
COM_GETBIBLE_CONFIG_SHOW_CHAPTERS_TAB_TEXT_LABEL="Show Chapters Tab Text"
|
||||||
|
1
admin/sql/updates/mysql/2.0.17.sql
Normal file
1
admin/sql/updates/mysql/2.0.17.sql
Normal file
@ -0,0 +1 @@
|
|||||||
|
|
@ -1,15 +1,15 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<extension type="component" version="4" method="upgrade">
|
<extension type="component" version="4" method="upgrade">
|
||||||
<name>COM_GETBIBLE</name>
|
<name>COM_GETBIBLE</name>
|
||||||
<creationDate>7th August, 2023</creationDate>
|
<creationDate>10th August, 2023</creationDate>
|
||||||
<author>Llewellyn van der Merwe</author>
|
<author>Llewellyn van der Merwe</author>
|
||||||
<authorEmail>joomla@vdm.io</authorEmail>
|
<authorEmail>joomla@vdm.io</authorEmail>
|
||||||
<authorUrl>https://getbible.net</authorUrl>
|
<authorUrl>https://getbible.net</authorUrl>
|
||||||
<copyright>Copyright (C) 2015. All Rights Reserved</copyright>
|
<copyright>Copyright (C) 2015. All Rights Reserved</copyright>
|
||||||
<license>GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html</license>
|
<license>GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html</license>
|
||||||
<version>2.0.17</version>
|
<version>2.0.18</version>
|
||||||
<description><![CDATA[
|
<description><![CDATA[
|
||||||
<h1>Get Bible (v.2.0.17)</h1>
|
<h1>Get Bible (v.2.0.18)</h1>
|
||||||
<div style="clear: both;"></div>
|
<div style="clear: both;"></div>
|
||||||
<p>Welcome to the next level of scripture engagement - The Bible for Joomla! Our purpose is to bring the Word of God to every person, in their native language, entirely free. This isn't just a typical extension; it's a groundbreaking tool developed to span language divides and deliver a rich, customizable Bible study experience to users worldwide.
|
<p>Welcome to the next level of scripture engagement - The Bible for Joomla! Our purpose is to bring the Word of God to every person, in their native language, entirely free. This isn't just a typical extension; it's a groundbreaking tool developed to span language divides and deliver a rich, customizable Bible study experience to users worldwide.
|
||||||
|
|
||||||
|
@ -1108,7 +1108,7 @@ class com_getbibleInstallerScript
|
|||||||
$query = $db->getQuery(true);
|
$query = $db->getQuery(true);
|
||||||
// Field to update.
|
// Field to update.
|
||||||
$fields = array(
|
$fields = array(
|
||||||
$db->quoteName('params') . ' = ' . $db->quote('{"autorName":"Llewellyn van der Merwe","autorEmail":"joomla@vdm.io","default_translation":"kjv","show_install_button":"0","show_getbible_logo":"1","show_getbible_link":"1","show_hash_validation":"1","show_api_link":"1","activate_search":"0","search_found_color":"#4747ff","table_selection_color":"#dfdfdf","search_words":"1","search_match":"1","search_case":"1","activate_notes":"0","activate_tags":"0","allow_untagging":"0","activate_sharing":"1","verse_layout_share":"1","verse_number_share":"1","local_link_share":"1","text_reference_share":"3","type_translation_share":"2","default_format_share":"1","verse_selected_color":"#4747ff","show_header":"1","verse_per_line":"1","show_top_menu":"1","top_menu_type":"1","show_bottom_menu":"0","bottom_menu_type":"1","previous_next_navigation":"1","set_custom_tabs":"0","custom_tabs":"div","set_default_tab_names":"0","custom_icons":"0","show_scripture_tab_text":"1","show_scripture_icon":"1","show_scripture_card":"1","scripture_card_style":"default","show_books_tab_text":"1","show_books_icon":"1","show_books_card":"1","books_card_style":"default","show_chapters_tab_text":"1","show_chapters_icon":"1","show_chapters_card":"1","chapters_card_style":"default","show_translations_tab_text":"1","show_translations_icon":"1","show_translations_card":"1","translations_card_style":"default","show_settings":"0","show_settings_tab_text":"1","show_settings_icon":"1","show_settings_card":"1","settings_card_style":"default","show_details":"1","show_details_tab_text":"1","show_details_icon":"1","show_details_card":"1","details_card_style":"default","debug":"0","enable_open_ai":"0","openai_model":"gpt-4","openai_token":"secret","enable_open_ai_org":"0","openai_org_token":"secret","openai_max_tokens":"300","openai_temperature":"1","openai_top_p":"1","openai_n":"1","openai_presence_penalty":"0","openai_frequency_penalty":"0","check_in":"-1 day","save_history":"1","history_limit":"10","add_jquery_framework":"1","uikit_load":"1","uikit_min":""}'),
|
$db->quoteName('params') . ' = ' . $db->quote('{"autorName":"Llewellyn van der Merwe","autorEmail":"joomla@vdm.io","default_translation":"kjv","show_install_button":"0","show_getbible_logo":"1","show_getbible_link":"1","show_hash_validation":"1","show_api_link":"1","activate_search":"0","search_found_color":"#4747ff","table_selection_color":"#dfdfdf","search_words":"1","search_match":"1","search_case":"1","bottom_search_position":"div","show_bottom_search_position_card":"1","bottom_search_position_card_style":"default","activate_notes":"0","activate_tags":"0","allow_untagging":"0","bottom_tag_position":"div","show_bottom_tag_position_card":"1","bottom_tag_position_card_style":"default","activate_sharing":"1","verse_layout_share":"1","verse_number_share":"1","local_link_share":"1","text_reference_share":"3","type_translation_share":"2","default_format_share":"1","verse_selected_color":"#4747ff","show_header":"1","verse_per_line":"1","show_top_menu":"1","top_menu_type":"1","show_bottom_menu":"0","bottom_menu_type":"1","previous_next_navigation":"1","set_custom_tabs":"0","custom_tabs":"div","set_default_tab_names":"0","custom_icons":"0","show_scripture_tab_text":"1","show_scripture_icon":"1","show_scripture_card":"1","scripture_card_style":"default","show_books_tab_text":"1","show_books_icon":"1","show_books_card":"1","books_card_style":"default","show_chapters_tab_text":"1","show_chapters_icon":"1","show_chapters_card":"1","chapters_card_style":"default","show_translations_tab_text":"1","show_translations_icon":"1","show_translations_card":"1","translations_card_style":"default","show_settings":"0","show_settings_tab_text":"1","show_settings_icon":"1","show_settings_card":"1","settings_card_style":"default","show_details":"1","show_details_tab_text":"1","show_details_icon":"1","show_details_card":"1","details_card_style":"default","bottom_app_position":"div","show_bottom_app_position_card":"1","bottom_app_position_card_style":"default","debug":"0","enable_open_ai":"0","openai_model":"gpt-4","openai_token":"secret","enable_open_ai_org":"0","openai_org_token":"secret","openai_max_tokens":"300","openai_temperature":"1","openai_top_p":"1","openai_n":"1","openai_presence_penalty":"0","openai_frequency_penalty":"0","bottom_ai_position":"div","show_bottom_ai_position_card":"1","bottom_ai_position_card_style":"default","check_in":"-1 day","save_history":"1","history_limit":"10","add_jquery_framework":"1","uikit_load":"1","uikit_min":""}'),
|
||||||
);
|
);
|
||||||
// Condition.
|
// Condition.
|
||||||
$conditions = array(
|
$conditions = array(
|
||||||
@ -1539,7 +1539,7 @@ class com_getbibleInstallerScript
|
|||||||
echo '<a target="_blank" href="https://getbible.net" title="Get Bible">
|
echo '<a target="_blank" href="https://getbible.net" title="Get Bible">
|
||||||
<img src="components/com_getbible/assets/images/vdm-component.jpg"/>
|
<img src="components/com_getbible/assets/images/vdm-component.jpg"/>
|
||||||
</a>
|
</a>
|
||||||
<h3>Upgrade to Version 2.0.17 Was Successful! Let us know if anything is not working as expected.</h3>';
|
<h3>Upgrade to Version 2.0.18 Was Successful! Let us know if anything is not working as expected.</h3>';
|
||||||
|
|
||||||
// Set db if not set already.
|
// Set db if not set already.
|
||||||
if (!isset($db))
|
if (!isset($db))
|
||||||
|
@ -118,68 +118,68 @@ class ScrollMemory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class DatabaseManager {
|
class DatabaseManager {
|
||||||
#dbName;
|
dbName;
|
||||||
#storeName;
|
storeName;
|
||||||
#fields;
|
fields;
|
||||||
#db;
|
db;
|
||||||
#uniqueFields;
|
uniqueFields;
|
||||||
#isReady = false;
|
isReady = false;
|
||||||
#readyPromise = null;
|
readyPromise = null;
|
||||||
#data;
|
data;
|
||||||
constructor(dbName, storeName, fields) {
|
constructor(dbName, storeName, fields) {
|
||||||
this.#dbName = dbName;
|
this.dbName = dbName;
|
||||||
this.#storeName = storeName;
|
this.storeName = storeName;
|
||||||
this.#fields = fields;
|
this.fields = fields;
|
||||||
this.#uniqueFields = fields.filter((field) => field[1]).map((field) => field[0]);
|
this.uniqueFields = fields.filter((field) => field[1]).map((field) => field[0]);
|
||||||
this.#data = JSON.parse(localStorage.getItem(this.#storeName)) || [];
|
this.data = JSON.parse(localStorage.getItem(this.storeName)) || [];
|
||||||
if (window.indexedDB) {
|
if (window.indexedDB) {
|
||||||
this.#readyPromise = this.#openDB().then(() => {
|
this.readyPromise = this.openDB().then(() => {
|
||||||
this.#isReady = true;
|
this.isReady = true;
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
this.#isReady = true;
|
this.isReady = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#openDB = () => {
|
openDB = () => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
const request = window.indexedDB.open(this.#dbName);
|
const request = window.indexedDB.open(this.dbName);
|
||||||
request.onerror = (e) => {
|
request.onerror = (e) => {
|
||||||
console.log('Error opening db', e);
|
console.log('Error opening db', e);
|
||||||
reject('Error');
|
reject('Error');
|
||||||
};
|
};
|
||||||
request.onsuccess = (e) => {
|
request.onsuccess = (e) => {
|
||||||
this.#db = e.target.result;
|
this.db = e.target.result;
|
||||||
resolve();
|
resolve();
|
||||||
};
|
};
|
||||||
request.onupgradeneeded = (e) => {
|
request.onupgradeneeded = (e) => {
|
||||||
let db = e.target.result;
|
let db = e.target.result;
|
||||||
let store = db.createObjectStore(this.#storeName, { autoIncrement: true, keyPath: 'id' });
|
let store = db.createObjectStore(this.storeName, { autoIncrement: true, keyPath: 'id' });
|
||||||
this.#uniqueFields.forEach((field) => {
|
this.uniqueFields.forEach((field) => {
|
||||||
store.createIndex(field, field, { unique: true });
|
store.createIndex(field, field, { unique: true });
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
#waitUntilReady = () => {
|
waitUntilReady = () => {
|
||||||
return this.#isReady ? Promise.resolve() : this.#readyPromise;
|
return this.isReady ? Promise.resolve() : this.readyPromise;
|
||||||
}
|
}
|
||||||
#saveToLocalStorage = () => {
|
saveToLocalStorage = () => {
|
||||||
localStorage.setItem(this.#storeName, JSON.stringify(this.#data));
|
localStorage.setItem(this.storeName, JSON.stringify(this.data));
|
||||||
}
|
}
|
||||||
async set(data) {
|
async set(data) {
|
||||||
return this.#waitUntilReady().then(() => {
|
return this.waitUntilReady().then(() => {
|
||||||
if (!this.#db) {
|
if (!this.db) {
|
||||||
let existingItem = this.#data.find((item) => this.#uniqueFields.some((field) => item[field] === data[field]));
|
let existingItem = this.data.find((item) => this.uniqueFields.some((field) => item[field] === data[field]));
|
||||||
if (existingItem) {
|
if (existingItem) {
|
||||||
Object.assign(existingItem, data);
|
Object.assign(existingItem, data);
|
||||||
} else {
|
} else {
|
||||||
this.#data.push(data);
|
this.data.push(data);
|
||||||
}
|
}
|
||||||
this.#saveToLocalStorage();
|
this.saveToLocalStorage();
|
||||||
} else {
|
} else {
|
||||||
const transaction = this.#db.transaction([this.#storeName], 'readwrite');
|
const transaction = this.db.transaction([this.storeName], 'readwrite');
|
||||||
const store = transaction.objectStore(this.#storeName);
|
const store = transaction.objectStore(this.storeName);
|
||||||
this.#uniqueFields.forEach((field) => {
|
this.uniqueFields.forEach((field) => {
|
||||||
const index = store.index(field);
|
const index = store.index(field);
|
||||||
const getRequest = index.get(data[field]);
|
const getRequest = index.get(data[field]);
|
||||||
getRequest.onsuccess = () => {
|
getRequest.onsuccess = () => {
|
||||||
@ -199,16 +199,16 @@ class DatabaseManager {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
async get(value, key, field = 'guid') {
|
async get(value, key, field = 'guid') {
|
||||||
return this.#waitUntilReady().then(() => {
|
return this.waitUntilReady().then(() => {
|
||||||
if (!this.#db) {
|
if (!this.db) {
|
||||||
// If IndexedDB is not available, get value from local storage
|
// If IndexedDB is not available, get value from local storage
|
||||||
const item = this.#data.find(item => item[field] === value);
|
const item = this.data.find(item => item[field] === value);
|
||||||
return item ? item[key] : undefined;
|
return item ? item[key] : undefined;
|
||||||
} else {
|
} else {
|
||||||
// If IndexedDB is available, get value from the database
|
// If IndexedDB is available, get value from the database
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
let transaction = this.#db.transaction([this.#storeName], "readonly");
|
let transaction = this.db.transaction([this.storeName], "readonly");
|
||||||
let store = transaction.objectStore(this.#storeName);
|
let store = transaction.objectStore(this.storeName);
|
||||||
let request = store.index(field).get(value);
|
let request = store.index(field).get(value);
|
||||||
request.onsuccess = e => {
|
request.onsuccess = e => {
|
||||||
const item = e.target.result;
|
const item = e.target.result;
|
||||||
@ -222,13 +222,13 @@ class DatabaseManager {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
async item(value, field = 'guid') {
|
async item(value, field = 'guid') {
|
||||||
return this.#waitUntilReady().then(() => {
|
return this.waitUntilReady().then(() => {
|
||||||
if (!this.#db) {
|
if (!this.db) {
|
||||||
return this.#data.find((item) => item[field] === value);
|
return this.data.find((item) => item[field] === value);
|
||||||
} else {
|
} else {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
const transaction = this.#db.transaction([this.#storeName], 'readonly');
|
const transaction = this.db.transaction([this.storeName], 'readonly');
|
||||||
const store = transaction.objectStore(this.#storeName);
|
const store = transaction.objectStore(this.storeName);
|
||||||
const index = store.index(field);
|
const index = store.index(field);
|
||||||
const getRequest = index.get(value);
|
const getRequest = index.get(value);
|
||||||
getRequest.onsuccess = () => {
|
getRequest.onsuccess = () => {
|
||||||
@ -242,13 +242,13 @@ class DatabaseManager {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
async all() {
|
async all() {
|
||||||
return this.#waitUntilReady().then(() => {
|
return this.waitUntilReady().then(() => {
|
||||||
if (!this.#db) {
|
if (!this.db) {
|
||||||
return this.#data;
|
return this.data;
|
||||||
} else {
|
} else {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
const transaction = this.#db.transaction([this.#storeName], 'readonly');
|
const transaction = this.db.transaction([this.storeName], 'readonly');
|
||||||
const store = transaction.objectStore(this.#storeName);
|
const store = transaction.objectStore(this.storeName);
|
||||||
const getAllRequest = store.getAll();
|
const getAllRequest = store.getAll();
|
||||||
getAllRequest.onsuccess = () => {
|
getAllRequest.onsuccess = () => {
|
||||||
resolve(getAllRequest.result);
|
resolve(getAllRequest.result);
|
||||||
@ -261,17 +261,17 @@ class DatabaseManager {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
async remove(value, field = 'guid') {
|
async remove(value, field = 'guid') {
|
||||||
return this.#waitUntilReady().then(() => {
|
return this.waitUntilReady().then(() => {
|
||||||
if (!this.#db) {
|
if (!this.db) {
|
||||||
// Handle removal from localStorage
|
// Handle removal from localStorage
|
||||||
this.#data = this.#data.filter(item => item[field] !== value);
|
this.data = this.data.filter(item => item[field] !== value);
|
||||||
this.#saveToLocalStorage();
|
this.saveToLocalStorage();
|
||||||
return Promise.resolve();
|
return Promise.resolve();
|
||||||
} else {
|
} else {
|
||||||
// Handle removal from IndexedDB
|
// Handle removal from IndexedDB
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
const transaction = this.#db.transaction([this.#storeName], 'readwrite');
|
const transaction = this.db.transaction([this.storeName], 'readwrite');
|
||||||
const store = transaction.objectStore(this.#storeName);
|
const store = transaction.objectStore(this.storeName);
|
||||||
let index = store.index(field);
|
let index = store.index(field);
|
||||||
let request = index.openCursor(IDBKeyRange.only(value));
|
let request = index.openCursor(IDBKeyRange.only(value));
|
||||||
request.onsuccess = e => {
|
request.onsuccess = e => {
|
||||||
|
@ -223,7 +223,7 @@ COM_GETBIBLE_TOP_P="Top P"
|
|||||||
COM_GETBIBLE_TOTALTOKENS="TotalTokens"
|
COM_GETBIBLE_TOTALTOKENS="TotalTokens"
|
||||||
COM_GETBIBLE_TO_PERFORM_THIS_OPEN_THE_GLOBAL_OPTIONS_SECTION_OF_THE_GETBIBLE_BACKEND_LOCATE_THE_GLOBAL_TAB_AND_SWITCH_SHOW_INSTALL_BUTTON_TO_NO_THIS_STEP_ENSURES_THAT_YOUR_SYSTEM_RESOURCES_ARE_NOT_UTILIZED_UNNECESSARILY_ONCE_YOU_HAVE_SUCCESSFULLY_INSTALLED_ALL_YOUR_DESIRED_BIBLE_TRANSLATIONS="To perform this, open the 'Global Options' section of the getBible backend, locate the 'Global' Tab, and switch 'Show Install Button' to [No]. This step ensures that your system resources are not utilized unnecessarily once you have successfully installed all your desired Bible translations."
|
COM_GETBIBLE_TO_PERFORM_THIS_OPEN_THE_GLOBAL_OPTIONS_SECTION_OF_THE_GETBIBLE_BACKEND_LOCATE_THE_GLOBAL_TAB_AND_SWITCH_SHOW_INSTALL_BUTTON_TO_NO_THIS_STEP_ENSURES_THAT_YOUR_SYSTEM_RESOURCES_ARE_NOT_UTILIZED_UNNECESSARILY_ONCE_YOU_HAVE_SUCCESSFULLY_INSTALLED_ALL_YOUR_DESIRED_BIBLE_TRANSLATIONS="To perform this, open the 'Global Options' section of the getBible backend, locate the 'Global' Tab, and switch 'Show Install Button' to [No]. This step ensures that your system resources are not utilized unnecessarily once you have successfully installed all your desired Bible translations."
|
||||||
COM_GETBIBLE_TO_UNTAG_A_VERSE_DRAG_AND_DROP_THE_DESIRED_TAG_FROM_ACTIVE_TO_THE_AVAILABLE_TAGS_AREA="To un-tag a verse, drag and drop the desired tag from active to the available tags area."
|
COM_GETBIBLE_TO_UNTAG_A_VERSE_DRAG_AND_DROP_THE_DESIRED_TAG_FROM_ACTIVE_TO_THE_AVAILABLE_TAGS_AREA="To un-tag a verse, drag and drop the desired tag from active to the available tags area."
|
||||||
COM_GETBIBLE_TO_USE_A_DIFFERENT_PERSISTENT_SESSION_KEY_SIMPLY_ADD_IT_ABOVE_AND_CLICK_THE_BUTTON_BELOW_THAT_SAYS_LOAD_PREVIOUS_PERSISTENT_SESSION="To use a different persistent session key, simply add it above, and click the button below that says: Load Previous Persistent Session."
|
COM_GETBIBLE_TO_USE_A_DIFFERENT_PERSISTENT_SESSION_KEY_SIMPLY_ADD_IT_ABOVE_AND_CLICK_THE_BUTTON_BELOW="To use a different persistent session key, simply add it above, and click the button below."
|
||||||
COM_GETBIBLE_TRANSLATION="Translation"
|
COM_GETBIBLE_TRANSLATION="Translation"
|
||||||
COM_GETBIBLE_TRANSLATIONS="Translations"
|
COM_GETBIBLE_TRANSLATIONS="Translations"
|
||||||
COM_GETBIBLE_TYPE_YOUR_SEARCH_PHRASE_INTO_THE_SEARCH_BOX_AND_PRESS_ENTER_TO_SEARCH_THE_BSCRIPTURESB_DAILY="Type your search phrase into the search box and press [ENTER] to search the <b>Scriptures</b> daily!"
|
COM_GETBIBLE_TYPE_YOUR_SEARCH_PHRASE_INTO_THE_SEARCH_BOX_AND_PRESS_ENTER_TO_SEARCH_THE_BSCRIPTURESB_DAILY="Type your search phrase into the search box and press [ENTER] to search the <b>Scriptures</b> daily!"
|
||||||
|
@ -735,6 +735,39 @@
|
|||||||
<option value="secondary">
|
<option value="secondary">
|
||||||
COM_GETBIBLE_CONFIG_SECONDARY</option>
|
COM_GETBIBLE_CONFIG_SECONDARY</option>
|
||||||
</field>
|
</field>
|
||||||
|
<!-- Show_bottom_app_position_card Field. Type: Radio. (joomla) -->
|
||||||
|
<field
|
||||||
|
type="radio"
|
||||||
|
name="show_bottom_app_position_card"
|
||||||
|
label="COM_GETBIBLE_CONFIG_SHOW_BOTTOM_APP_POSITION_CARD_LABEL"
|
||||||
|
class="btn-group btn-group-yesno"
|
||||||
|
default="">
|
||||||
|
<!-- Global & Option Set. -->
|
||||||
|
<option value="">
|
||||||
|
JGLOBAL_USE_GLOBAL</option>
|
||||||
|
<option value="1">
|
||||||
|
COM_GETBIBLE_CONFIG_YES</option>
|
||||||
|
<option value="0">
|
||||||
|
COM_GETBIBLE_CONFIG_NO</option>
|
||||||
|
</field>
|
||||||
|
<!-- Bottom_app_position_card_style Field. Type: List. (joomla) -->
|
||||||
|
<field
|
||||||
|
type="list"
|
||||||
|
name="bottom_app_position_card_style"
|
||||||
|
label="COM_GETBIBLE_CONFIG_BOTTOM_APP_POSITION_CARD_STYLE_LABEL"
|
||||||
|
class="list_class"
|
||||||
|
default=""
|
||||||
|
showon="show_bottom_app_position_card:1">
|
||||||
|
<!-- Global & Option Set. -->
|
||||||
|
<option value="">
|
||||||
|
JGLOBAL_USE_GLOBAL</option>
|
||||||
|
<option value="default">
|
||||||
|
COM_GETBIBLE_CONFIG_DEFAULT</option>
|
||||||
|
<option value="primary">
|
||||||
|
COM_GETBIBLE_CONFIG_PRIMARY</option>
|
||||||
|
<option value="secondary">
|
||||||
|
COM_GETBIBLE_CONFIG_SECONDARY</option>
|
||||||
|
</field>
|
||||||
<!-- Debug Field. Type: Radio. (joomla) -->
|
<!-- Debug Field. Type: Radio. (joomla) -->
|
||||||
<field
|
<field
|
||||||
type="radio"
|
type="radio"
|
||||||
|
@ -31,7 +31,7 @@ defined('_JEXEC') or die('Restricted access');
|
|||||||
<?php echo JLayoutHelper::render('inputbox', ['id' => 'getbible-settings-session-linker', 'label' => JText::_('COM_GETBIBLE_PERSISTENT_SESSION_KEY'), 'class_other' => 'getbible-linker-guid-input uk-text-center', 'value' => $this->linker['guid']]); ?>
|
<?php echo JLayoutHelper::render('inputbox', ['id' => 'getbible-settings-session-linker', 'label' => JText::_('COM_GETBIBLE_PERSISTENT_SESSION_KEY'), 'class_other' => 'getbible-linker-guid-input uk-text-center', 'value' => $this->linker['guid']]); ?>
|
||||||
<button id="getbible-settings-session-copy" class="uk-button uk-button-primary uk-width-1-1 uk-margin-small-bottom" uk-tooltip="<?php echo JText::_('COM_GETBIBLE_YOU_CAN_SHARE_YOUR_SESSION_WITH_LOVED_ONES_SO_THEY_CAN_SEE_YOUR_NOTES_AND_TAGS'); ?>"><?php echo JText::_('COM_GETBIBLE_SHARE_YOUR_SESSION'); ?></button>
|
<button id="getbible-settings-session-copy" class="uk-button uk-button-primary uk-width-1-1 uk-margin-small-bottom" uk-tooltip="<?php echo JText::_('COM_GETBIBLE_YOU_CAN_SHARE_YOUR_SESSION_WITH_LOVED_ONES_SO_THEY_CAN_SEE_YOUR_NOTES_AND_TAGS'); ?>"><?php echo JText::_('COM_GETBIBLE_SHARE_YOUR_SESSION'); ?></button>
|
||||||
<button id="getbible-settings-session-name-update" class="uk-button uk-button-primary uk-width-1-1 uk-margin-small-bottom" uk-tooltip="<?php echo JText::_('COM_GETBIBLE_YOU_CAN_CHANGE_YOUR_SESSION_NAME_TO_SOMETHING_MORE_RECOGNIZABLE'); ?>"><?php echo JText::_('COM_GETBIBLE_UPDATE_PERSISTENT_SESSION_NAME'); ?></button>
|
<button id="getbible-settings-session-name-update" class="uk-button uk-button-primary uk-width-1-1 uk-margin-small-bottom" uk-tooltip="<?php echo JText::_('COM_GETBIBLE_YOU_CAN_CHANGE_YOUR_SESSION_NAME_TO_SOMETHING_MORE_RECOGNIZABLE'); ?>"><?php echo JText::_('COM_GETBIBLE_UPDATE_PERSISTENT_SESSION_NAME'); ?></button>
|
||||||
<p class="uk-text-muted"><?php echo JText::_('COM_GETBIBLE_TO_USE_A_DIFFERENT_PERSISTENT_SESSION_KEY_SIMPLY_ADD_IT_ABOVE_AND_CLICK_THE_BUTTON_BELOW_THAT_SAYS_LOAD_PREVIOUS_PERSISTENT_SESSION'); ?></p>
|
<p class="uk-text-muted"><?php echo JText::_('COM_GETBIBLE_TO_USE_A_DIFFERENT_PERSISTENT_SESSION_KEY_SIMPLY_ADD_IT_ABOVE_AND_CLICK_THE_BUTTON_BELOW'); ?></p>
|
||||||
<button id="getbible-settings-session-load" class="uk-button uk-button-default uk-width-1-1 uk-margin-small-bottom"><?php echo JText::_('COM_GETBIBLE_LOAD_PREVIOUS_PERSISTENT_SESSION'); ?></button>
|
<button id="getbible-settings-session-load" class="uk-button uk-button-default uk-width-1-1 uk-margin-small-bottom"><?php echo JText::_('COM_GETBIBLE_LOAD_PREVIOUS_PERSISTENT_SESSION'); ?></button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -83,3 +83,10 @@ if ($this->params->get('show_details') == 1)
|
|||||||
<?php echo $this->loadTemplate('getbibleappcustomtabs'); ?>
|
<?php echo $this->loadTemplate('getbibleappcustomtabs'); ?>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
</ul>
|
</ul>
|
||||||
|
<?php
|
||||||
|
$this->getBibleModules = [
|
||||||
|
'position' => 'bottom_app_position',
|
||||||
|
'page' => 'GetBible'
|
||||||
|
];
|
||||||
|
echo $this->loadTemplate('getbiblemodules');
|
||||||
|
?>
|
||||||
|
61
site/views/app/tmpl/default_getbiblemodules.php
Normal file
61
site/views/app/tmpl/default_getbiblemodules.php
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
<?php
|
||||||
|
/*----------------------------------------------------------------------------------| io.vdm.dev |----/
|
||||||
|
Vast Development Method
|
||||||
|
/-------------------------------------------------------------------------------------------------------/
|
||||||
|
|
||||||
|
@package getBible.net
|
||||||
|
|
||||||
|
@created 3rd December, 2015
|
||||||
|
@author Llewellyn van der Merwe <https://getbible.net>
|
||||||
|
@git Get Bible <https://git.vdm.dev/getBible>
|
||||||
|
@github Get Bible <https://github.com/getBible>
|
||||||
|
@support Get Bible <https://git.vdm.dev/getBible/support>
|
||||||
|
@copyright Copyright (C) 2015. All Rights Reserved
|
||||||
|
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
|
||||||
|
|
||||||
|
/------------------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
// No direct access to this file
|
||||||
|
defined('_JEXEC') or die('Restricted access');
|
||||||
|
use VDM\Joomla\Utilities\ObjectHelper;
|
||||||
|
|
||||||
|
$modules = $this->params->get($this->getBibleModules['position']);
|
||||||
|
$position_card = '';
|
||||||
|
$positions = [];
|
||||||
|
if (ObjectHelper::check($modules))
|
||||||
|
{
|
||||||
|
foreach ($modules as $module)
|
||||||
|
{
|
||||||
|
if (isset($module->position) && strlen($module->position) > 0)
|
||||||
|
{
|
||||||
|
if (($content = $this->getModules($module->position, $module->separator ?? '', $module->class ?? '')) !== false)
|
||||||
|
{
|
||||||
|
$positions[$module->position] = $content;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$positions[$module->position] = JLayoutHelper::render('modulepositionerror', ['position' => $module->position, 'page' => $this->getBibleModules['page']]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$position_card = ($this->params->get('show_' . $this->getBibleModules['position'] . '_card') == 1) ? 'uk-card uk-card-' . $this->params->get($this->getBibleModules['position'] . '_card_style', 'default') . ' uk-card-body uk-margin' : 'uk-margin';
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
||||||
|
<?php if ($positions !== []): ?>
|
||||||
|
<div class="<?php echo $this->getBibleModules['class'] ?? 'uk-margin'; ?>">
|
||||||
|
<?php foreach ($positions as $mod): ?>
|
||||||
|
<div class="<?php echo $position_card; ?>">
|
||||||
|
<?php if (is_array($mod)): ?>
|
||||||
|
<?php foreach ($mod as $pos): ?>
|
||||||
|
<?php echo $pos; ?>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
<?php elseif (is_string($mod)): ?>
|
||||||
|
<div uk-grid>
|
||||||
|
<?php echo $mod; ?>
|
||||||
|
</div>
|
||||||
|
<?php endif; ?>
|
||||||
|
</div>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</div>
|
||||||
|
<?php endif; ?>
|
@ -17,10 +17,10 @@
|
|||||||
|
|
||||||
// No direct access to this file
|
// No direct access to this file
|
||||||
defined('_JEXEC') or die('Restricted access');
|
defined('_JEXEC') or die('Restricted access');
|
||||||
jimport('joomla.application.module.helper');
|
use Joomla\CMS\Helper\ModuleHelper as JModuleHelper;
|
||||||
|
use VDM\Joomla\GetBible\Factory;
|
||||||
|
|
||||||
use Joomla\CMS\MVC\View\HtmlView;
|
use Joomla\CMS\MVC\View\HtmlView;
|
||||||
use VDM\Joomla\GetBible\Factory;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Getbible Html View class for the App
|
* Getbible Html View class for the App
|
||||||
@ -929,7 +929,6 @@ class GetbibleViewApp extends HtmlView
|
|||||||
default:
|
default:
|
||||||
return implode('<br />', $this->setModules[$position]);
|
return implode('<br />', $this->setModules[$position]);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
@ -71,3 +71,10 @@ if ($this->params->get('show_openai_details', 1) == 1)
|
|||||||
<?php echo $this->loadTemplate('getbibleaicustomtabs'); ?>
|
<?php echo $this->loadTemplate('getbibleaicustomtabs'); ?>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
</ul>
|
</ul>
|
||||||
|
<?php
|
||||||
|
$this->getBibleModules = [
|
||||||
|
'position' => 'bottom_ai_position',
|
||||||
|
'page' => 'GetBible AI'
|
||||||
|
];
|
||||||
|
echo $this->loadTemplate('getbiblemodules');
|
||||||
|
?>
|
||||||
|
61
site/views/openai/tmpl/default_getbiblemodules.php
Normal file
61
site/views/openai/tmpl/default_getbiblemodules.php
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
<?php
|
||||||
|
/*----------------------------------------------------------------------------------| io.vdm.dev |----/
|
||||||
|
Vast Development Method
|
||||||
|
/-------------------------------------------------------------------------------------------------------/
|
||||||
|
|
||||||
|
@package getBible.net
|
||||||
|
|
||||||
|
@created 3rd December, 2015
|
||||||
|
@author Llewellyn van der Merwe <https://getbible.net>
|
||||||
|
@git Get Bible <https://git.vdm.dev/getBible>
|
||||||
|
@github Get Bible <https://github.com/getBible>
|
||||||
|
@support Get Bible <https://git.vdm.dev/getBible/support>
|
||||||
|
@copyright Copyright (C) 2015. All Rights Reserved
|
||||||
|
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
|
||||||
|
|
||||||
|
/------------------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
// No direct access to this file
|
||||||
|
defined('_JEXEC') or die('Restricted access');
|
||||||
|
use VDM\Joomla\Utilities\ObjectHelper;
|
||||||
|
|
||||||
|
$modules = $this->params->get($this->getBibleModules['position']);
|
||||||
|
$position_card = '';
|
||||||
|
$positions = [];
|
||||||
|
if (ObjectHelper::check($modules))
|
||||||
|
{
|
||||||
|
foreach ($modules as $module)
|
||||||
|
{
|
||||||
|
if (isset($module->position) && strlen($module->position) > 0)
|
||||||
|
{
|
||||||
|
if (($content = $this->getModules($module->position, $module->separator ?? '', $module->class ?? '')) !== false)
|
||||||
|
{
|
||||||
|
$positions[$module->position] = $content;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$positions[$module->position] = JLayoutHelper::render('modulepositionerror', ['position' => $module->position, 'page' => $this->getBibleModules['page']]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$position_card = ($this->params->get('show_' . $this->getBibleModules['position'] . '_card') == 1) ? 'uk-card uk-card-' . $this->params->get($this->getBibleModules['position'] . '_card_style', 'default') . ' uk-card-body uk-margin' : 'uk-margin';
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
||||||
|
<?php if ($positions !== []): ?>
|
||||||
|
<div class="<?php echo $this->getBibleModules['class'] ?? 'uk-margin'; ?>">
|
||||||
|
<?php foreach ($positions as $mod): ?>
|
||||||
|
<div class="<?php echo $position_card; ?>">
|
||||||
|
<?php if (is_array($mod)): ?>
|
||||||
|
<?php foreach ($mod as $pos): ?>
|
||||||
|
<?php echo $pos; ?>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
<?php elseif (is_string($mod)): ?>
|
||||||
|
<div uk-grid>
|
||||||
|
<?php echo $mod; ?>
|
||||||
|
</div>
|
||||||
|
<?php endif; ?>
|
||||||
|
</div>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</div>
|
||||||
|
<?php endif; ?>
|
@ -17,7 +17,7 @@
|
|||||||
|
|
||||||
// No direct access to this file
|
// No direct access to this file
|
||||||
defined('_JEXEC') or die('Restricted access');
|
defined('_JEXEC') or die('Restricted access');
|
||||||
jimport('joomla.application.module.helper');
|
use Joomla\CMS\Helper\ModuleHelper as JModuleHelper;
|
||||||
|
|
||||||
use Joomla\CMS\MVC\View\HtmlView;
|
use Joomla\CMS\MVC\View\HtmlView;
|
||||||
|
|
||||||
@ -162,7 +162,6 @@ class GetbibleViewOpenai extends HtmlView
|
|||||||
default:
|
default:
|
||||||
return implode('<br />', $this->setModules[$position]);
|
return implode('<br />', $this->setModules[$position]);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
61
site/views/search/tmpl/default_getbiblemodules.php
Normal file
61
site/views/search/tmpl/default_getbiblemodules.php
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
<?php
|
||||||
|
/*----------------------------------------------------------------------------------| io.vdm.dev |----/
|
||||||
|
Vast Development Method
|
||||||
|
/-------------------------------------------------------------------------------------------------------/
|
||||||
|
|
||||||
|
@package getBible.net
|
||||||
|
|
||||||
|
@created 3rd December, 2015
|
||||||
|
@author Llewellyn van der Merwe <https://getbible.net>
|
||||||
|
@git Get Bible <https://git.vdm.dev/getBible>
|
||||||
|
@github Get Bible <https://github.com/getBible>
|
||||||
|
@support Get Bible <https://git.vdm.dev/getBible/support>
|
||||||
|
@copyright Copyright (C) 2015. All Rights Reserved
|
||||||
|
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
|
||||||
|
|
||||||
|
/------------------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
// No direct access to this file
|
||||||
|
defined('_JEXEC') or die('Restricted access');
|
||||||
|
use VDM\Joomla\Utilities\ObjectHelper;
|
||||||
|
|
||||||
|
$modules = $this->params->get($this->getBibleModules['position']);
|
||||||
|
$position_card = '';
|
||||||
|
$positions = [];
|
||||||
|
if (ObjectHelper::check($modules))
|
||||||
|
{
|
||||||
|
foreach ($modules as $module)
|
||||||
|
{
|
||||||
|
if (isset($module->position) && strlen($module->position) > 0)
|
||||||
|
{
|
||||||
|
if (($content = $this->getModules($module->position, $module->separator ?? '', $module->class ?? '')) !== false)
|
||||||
|
{
|
||||||
|
$positions[$module->position] = $content;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$positions[$module->position] = JLayoutHelper::render('modulepositionerror', ['position' => $module->position, 'page' => $this->getBibleModules['page']]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$position_card = ($this->params->get('show_' . $this->getBibleModules['position'] . '_card') == 1) ? 'uk-card uk-card-' . $this->params->get($this->getBibleModules['position'] . '_card_style', 'default') . ' uk-card-body uk-margin' : 'uk-margin';
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
||||||
|
<?php if ($positions !== []): ?>
|
||||||
|
<div class="<?php echo $this->getBibleModules['class'] ?? 'uk-margin'; ?>">
|
||||||
|
<?php foreach ($positions as $mod): ?>
|
||||||
|
<div class="<?php echo $position_card; ?>">
|
||||||
|
<?php if (is_array($mod)): ?>
|
||||||
|
<?php foreach ($mod as $pos): ?>
|
||||||
|
<?php echo $pos; ?>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
<?php elseif (is_string($mod)): ?>
|
||||||
|
<div uk-grid>
|
||||||
|
<?php echo $mod; ?>
|
||||||
|
</div>
|
||||||
|
<?php endif; ?>
|
||||||
|
</div>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</div>
|
||||||
|
<?php endif; ?>
|
@ -32,3 +32,10 @@ defined('_JEXEC') or die('Restricted access');
|
|||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
</div>
|
</div>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
|
<?php
|
||||||
|
$this->getBibleModules = [
|
||||||
|
'position' => 'bottom_search_position',
|
||||||
|
'page' => 'GetBible Search'
|
||||||
|
];
|
||||||
|
echo $this->loadTemplate('getbiblemodules');
|
||||||
|
?>
|
||||||
|
@ -17,9 +17,10 @@
|
|||||||
|
|
||||||
// No direct access to this file
|
// No direct access to this file
|
||||||
defined('_JEXEC') or die('Restricted access');
|
defined('_JEXEC') or die('Restricted access');
|
||||||
|
use Joomla\CMS\Helper\ModuleHelper as JModuleHelper;
|
||||||
|
use VDM\Joomla\GetBible\Factory;
|
||||||
|
|
||||||
use Joomla\CMS\MVC\View\HtmlView;
|
use Joomla\CMS\MVC\View\HtmlView;
|
||||||
use VDM\Joomla\GetBible\Factory;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Getbible Html View class for the Search
|
* Getbible Html View class for the Search
|
||||||
@ -209,6 +210,65 @@ class GetbibleViewSearch extends HtmlView
|
|||||||
$this->toolbar = JToolbar::getInstance();
|
$this->toolbar = JToolbar::getInstance();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the modules published in a position
|
||||||
|
*/
|
||||||
|
public function getModules($position, $seperator = '', $class = '')
|
||||||
|
{
|
||||||
|
// set default
|
||||||
|
$found = false;
|
||||||
|
// check if we aleady have these modules loaded
|
||||||
|
if (isset($this->setModules[$position]))
|
||||||
|
{
|
||||||
|
$found = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// this is where you want to load your module position
|
||||||
|
$modules = JModuleHelper::getModules($position);
|
||||||
|
if (GetbibleHelper::checkArray($modules, true))
|
||||||
|
{
|
||||||
|
// set the place holder
|
||||||
|
$this->setModules[$position] = array();
|
||||||
|
foreach($modules as $module)
|
||||||
|
{
|
||||||
|
$this->setModules[$position][] = JModuleHelper::renderModule($module);
|
||||||
|
}
|
||||||
|
$found = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// check if modules were found
|
||||||
|
if ($found && isset($this->setModules[$position]) && GetbibleHelper::checkArray($this->setModules[$position]))
|
||||||
|
{
|
||||||
|
// set class
|
||||||
|
if (GetbibleHelper::checkString($class))
|
||||||
|
{
|
||||||
|
$class = ' class="'.$class.'" ';
|
||||||
|
}
|
||||||
|
// set seperating return values
|
||||||
|
switch($seperator)
|
||||||
|
{
|
||||||
|
case 'none':
|
||||||
|
return implode('', $this->setModules[$position]);
|
||||||
|
break;
|
||||||
|
case 'div':
|
||||||
|
return '<div'.$class.'>'.implode('</div><div'.$class.'>', $this->setModules[$position]).'</div>';
|
||||||
|
break;
|
||||||
|
case 'list':
|
||||||
|
return '<ul'.$class.'><li>'.implode('</li><li>', $this->setModules[$position]).'</li></ul>';
|
||||||
|
break;
|
||||||
|
case 'array':
|
||||||
|
case 'Array':
|
||||||
|
return $this->setModules[$position];
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return implode('<br />', $this->setModules[$position]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Escapes a value for output in a view script.
|
* Escapes a value for output in a view script.
|
||||||
*
|
*
|
||||||
|
61
site/views/tag/tmpl/default_getbiblemodules.php
Normal file
61
site/views/tag/tmpl/default_getbiblemodules.php
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
<?php
|
||||||
|
/*----------------------------------------------------------------------------------| io.vdm.dev |----/
|
||||||
|
Vast Development Method
|
||||||
|
/-------------------------------------------------------------------------------------------------------/
|
||||||
|
|
||||||
|
@package getBible.net
|
||||||
|
|
||||||
|
@created 3rd December, 2015
|
||||||
|
@author Llewellyn van der Merwe <https://getbible.net>
|
||||||
|
@git Get Bible <https://git.vdm.dev/getBible>
|
||||||
|
@github Get Bible <https://github.com/getBible>
|
||||||
|
@support Get Bible <https://git.vdm.dev/getBible/support>
|
||||||
|
@copyright Copyright (C) 2015. All Rights Reserved
|
||||||
|
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
|
||||||
|
|
||||||
|
/------------------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
// No direct access to this file
|
||||||
|
defined('_JEXEC') or die('Restricted access');
|
||||||
|
use VDM\Joomla\Utilities\ObjectHelper;
|
||||||
|
|
||||||
|
$modules = $this->params->get($this->getBibleModules['position']);
|
||||||
|
$position_card = '';
|
||||||
|
$positions = [];
|
||||||
|
if (ObjectHelper::check($modules))
|
||||||
|
{
|
||||||
|
foreach ($modules as $module)
|
||||||
|
{
|
||||||
|
if (isset($module->position) && strlen($module->position) > 0)
|
||||||
|
{
|
||||||
|
if (($content = $this->getModules($module->position, $module->separator ?? '', $module->class ?? '')) !== false)
|
||||||
|
{
|
||||||
|
$positions[$module->position] = $content;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$positions[$module->position] = JLayoutHelper::render('modulepositionerror', ['position' => $module->position, 'page' => $this->getBibleModules['page']]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$position_card = ($this->params->get('show_' . $this->getBibleModules['position'] . '_card') == 1) ? 'uk-card uk-card-' . $this->params->get($this->getBibleModules['position'] . '_card_style', 'default') . ' uk-card-body uk-margin' : 'uk-margin';
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
||||||
|
<?php if ($positions !== []): ?>
|
||||||
|
<div class="<?php echo $this->getBibleModules['class'] ?? 'uk-margin'; ?>">
|
||||||
|
<?php foreach ($positions as $mod): ?>
|
||||||
|
<div class="<?php echo $position_card; ?>">
|
||||||
|
<?php if (is_array($mod)): ?>
|
||||||
|
<?php foreach ($mod as $pos): ?>
|
||||||
|
<?php echo $pos; ?>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
<?php elseif (is_string($mod)): ?>
|
||||||
|
<div uk-grid>
|
||||||
|
<?php echo $mod; ?>
|
||||||
|
</div>
|
||||||
|
<?php endif; ?>
|
||||||
|
</div>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</div>
|
||||||
|
<?php endif; ?>
|
@ -50,3 +50,10 @@ $tags_card = ($this->params->get('show_tags_card') == 1) ? 'uk-card uk-card-' .
|
|||||||
<?php echo $this->loadTemplate('getbibletagcustomtabs'); ?>
|
<?php echo $this->loadTemplate('getbibletagcustomtabs'); ?>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
</ul>
|
</ul>
|
||||||
|
<?php
|
||||||
|
$this->getBibleModules = [
|
||||||
|
'position' => 'bottom_tag_position',
|
||||||
|
'page' => 'GetBible Tag'
|
||||||
|
];
|
||||||
|
echo $this->loadTemplate('getbiblemodules');
|
||||||
|
?>
|
||||||
|
@ -17,10 +17,10 @@
|
|||||||
|
|
||||||
// No direct access to this file
|
// No direct access to this file
|
||||||
defined('_JEXEC') or die('Restricted access');
|
defined('_JEXEC') or die('Restricted access');
|
||||||
jimport('joomla.application.module.helper');
|
use Joomla\CMS\Helper\ModuleHelper as JModuleHelper;
|
||||||
|
use VDM\Joomla\GetBible\Factory;
|
||||||
|
|
||||||
use Joomla\CMS\MVC\View\HtmlView;
|
use Joomla\CMS\MVC\View\HtmlView;
|
||||||
use VDM\Joomla\GetBible\Factory;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Getbible Html View class for the Tag
|
* Getbible Html View class for the Tag
|
||||||
@ -320,7 +320,6 @@ class GetbibleViewTag extends HtmlView
|
|||||||
default:
|
default:
|
||||||
return implode('<br />', $this->setModules[$position]);
|
return implode('<br />', $this->setModules[$position]);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
@ -287,4 +287,22 @@
|
|||||||
<maintainerurl>https://getbible.net</maintainerurl>
|
<maintainerurl>https://getbible.net</maintainerurl>
|
||||||
<targetplatform name="joomla" version="3.*"/>
|
<targetplatform name="joomla" version="3.*"/>
|
||||||
</update>
|
</update>
|
||||||
|
<update>
|
||||||
|
<name>Get Bible</name>
|
||||||
|
<description>The Bible for Joomla</description>
|
||||||
|
<element>pkg_getbible</element>
|
||||||
|
<type>package</type>
|
||||||
|
<client>site</client>
|
||||||
|
<version>2.0.18</version>
|
||||||
|
<infourl title="Get Bible!">https://getbible.net</infourl>
|
||||||
|
<downloads>
|
||||||
|
<downloadurl type="full" format="zip">https://git.vdm.dev/api/v1/repos/getBible/joomla-pkg/archive/v2.0.18.zip</downloadurl>
|
||||||
|
</downloads>
|
||||||
|
<tags>
|
||||||
|
<tag>stable</tag>
|
||||||
|
</tags>
|
||||||
|
<maintainer>Llewellyn van der Merwe</maintainer>
|
||||||
|
<maintainerurl>https://getbible.net</maintainerurl>
|
||||||
|
<targetplatform name="joomla" version="3.*"/>
|
||||||
|
</update>
|
||||||
</updates>
|
</updates>
|
Loading…
Reference in New Issue
Block a user