TIST-17: added single recipe page #15
@ -17,8 +17,8 @@ class RecipeModel extends BaseModel
|
||||
|
||||
public $category_name;
|
||||
|
||||
const STATUS = [[ 'publish', 'Publish' ], [ 'pending', 'Pending' ]];
|
||||
|
||||
const STATUS = [['publish', 'Publish'], ['pending', 'Pending']];
|
||||
|
||||
static protected $search_fields = ['obj.title'];
|
||||
static protected $table_name = 'recipes';
|
||||
|
||||
@ -31,22 +31,22 @@ class RecipeModel extends BaseModel
|
||||
],
|
||||
[
|
||||
'field' => [
|
||||
|
||||
|
||||
],
|
||||
'join_table' => 'recipe_ingredients tb2 ON tb2.recipe_id = obj.id'
|
||||
]
|
||||
);
|
||||
static protected $table_fields = [
|
||||
'id' => 'int',
|
||||
'title' => 'string',
|
||||
'instruction' => 'string',
|
||||
'image_url' => 'string',
|
||||
'id' => 'int',
|
||||
'title' => 'string',
|
||||
'instruction' => 'string',
|
||||
'image_url' => 'string',
|
||||
'estimated_time' => 'int',
|
||||
'estimated_price' => 'float',
|
||||
'category_id' => 'int',
|
||||
'author_id' => 'int',
|
||||
'status' => 'string',
|
||||
'created_at' => 'DateTime'
|
||||
'category_id' => 'int',
|
||||
'author_id' => 'int',
|
||||
'status' => 'string',
|
||||
'created_at' => 'DateTime'
|
||||
];
|
||||
public static function init_table()
|
||||
{
|
||||
@ -68,7 +68,7 @@ class RecipeModel extends BaseModel
|
||||
);');
|
||||
return $result;
|
||||
}
|
||||
public function get_price()
|
||||
public function get_price()
|
||||
{
|
||||
return $this->field_estimated_price . '$';
|
||||
}
|
||||
@ -76,10 +76,20 @@ class RecipeModel extends BaseModel
|
||||
{
|
||||
return ucfirst($this->field_status);
|
||||
}
|
||||
public function get_image_url() {
|
||||
if($this->field_image_url)
|
||||
public function get_image_url()
|
||||
{
|
||||
if ($this->field_image_url)
|
||||
return MEDIA_URL . $this->field_image_url;
|
||||
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public function get_html_instruction(): string
|
||||
{
|
||||
return nl2br(trim($this->field_instruction));
|
||||
}
|
||||
|
||||
public function get_time(){
|
||||
return $this->field_estimated_time . " minutes";
|
||||
}
|
||||
}
|
||||
@ -1,4 +1,5 @@
|
||||
<?php
|
||||
require_once(INCLUDES_PATH . '/Const/recipes.php');
|
||||
the_header(
|
||||
$context['recipe']->field_title,
|
||||
'This is a single recipe page where you can view the details of the recipe, including ingredients, instructions, and more.',
|
||||
@ -36,7 +37,7 @@ the_header(
|
||||
</div>
|
||||
<div class="single-recipe-data__item">
|
||||
<span class="data-name">Time To Make: </span>
|
||||
|
greendavid004 marked this conversation as resolved
Outdated
|
||||
<span class="data"><?php echo $context['recipe']->field_estimated_time; ?> minutes</span>
|
||||
<span class="data"><?php echo $context['recipe']->get_time(); ?></span>
|
||||
</div>
|
||||
<div class="single-recipe-data__item">
|
||||
<span class="data-name">Ingredients: </span>
|
||||
@ -49,13 +50,9 @@ the_header(
|
||||
</div>
|
||||
<div class="button-ctrl">
|
||||
<select class="hidden" name="daily-meal-select" id="daily-meal-day">
|
||||
<option value="monday">Monday</option>
|
||||
<option value="tuesday">Tuesday</option>
|
||||
<option value="wednesday">Wednesday</option>
|
||||
<option value="thursday">Thursday</option>
|
||||
<option value="friday">Friday</option>
|
||||
<option value="saturday">Saturday</option>
|
||||
<option value="sunday">Sunday</option>
|
||||
<?php foreach (DAYS_OF_WEEK as $day): ?>
|
||||
<option value="<?= $day ?>"><?= ucfirst($day) ?></option>
|
||||
<?php endforeach; ?>
|
||||
<option value="remove">Remove From List</option>
|
||||
</select>
|
||||
<div class="day-select-wrapper">
|
||||
|
greendavid004 marked this conversation as resolved
Outdated
steve_dekart
commented
Days of the week can be used in different places, so it would be better to save them as a constant variable to make them reusable. You can create a new constant variable with all day of weeks in the format After that, include it using P.s. Only day of weeks. You don't need add to this array Days of the week can be used in different places, so it would be better to save them as a constant variable to make them reusable.
You can create a new constant variable with all day of weeks in the format `['monday' => 'Monday']`, and place it in the `Const/` directory as a file named `recipes.php` (create this directory inside `/includes/` if it doesn’t exist).
After that, include it using `require_once` and use a `foreach(DAY_OF_WEKS as $key => $label)` to generate the select options.
P.s. Only day of weeks. You don't need add to this array `remove`. It's not day of week. You can leave that option as it is.
steve_dekart
commented
Check TIST-27 Pull Request and approve it. After that, then I will merge it with develop, you can make In TIST-27 I have already added this const Check TIST-27 Pull Request and approve it. After that, then I will merge it with develop, you can make `git pull origin develop`.
In TIST-27 I have already added this const
|
||||
@ -65,28 +62,27 @@ the_header(
|
||||
<i class="fa-solid fa-list select-icon"></i>
|
||||
</div>
|
||||
<div id="custom-select-dropdown" class="custom-select-dropdown hidden">
|
||||
<div class="dropdown-item hover-anim" data-value="monday">Monday</div>
|
||||
<div class="dropdown-item hover-anim" data-value="tuesday">Tuesday</div>
|
||||
<div class="dropdown-item hover-anim" data-value="wednesday">Wednesday</div>
|
||||
<div class="dropdown-item hover-anim" data-value="thursday">Thursday</div>
|
||||
<div class="dropdown-item hover-anim" data-value="friday">Friday</div>
|
||||
<div class="dropdown-item hover-anim" data-value="saturday">Saturday</div>
|
||||
<div class="dropdown-item hover-anim" data-value="sunday">Sunday</div>
|
||||
<?php foreach (DAYS_OF_WEEK as $day): ?>
|
||||
<div class="dropdown-item hover-anim" data-value="<?= $day?>">
|
||||
<?= ucfirst($day) ?>
|
||||
</div>
|
||||
<?php endforeach; ?>
|
||||
<div class="dropdown-item hover-anim" data-value="remove">Remove From List</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="small-btns">
|
||||
|
greendavid004 marked this conversation as resolved
Outdated
steve_dekart
commented
Same comment as above Same comment as above
|
||||
<button class="btn btn-secondary btn-small hover-anim" title="Add To Favorites">
|
||||
<i class="fa-regular fa-heart"></i>
|
||||
</button>
|
||||
<a class="btn btn-secondary btn-small hover-anim"
|
||||
href="<?php the_permalink('recipes:export-pdf', [$context['recipe']->get_id()]); ?>"
|
||||
target="_blank" title="Export As PDF">
|
||||
<i class="fa-solid fa-download"></i>
|
||||
</a>
|
||||
<button class="btn btn-secondary btn-small hover-anim" id="qr-btn" title="Get QR Code">
|
||||
<i class="fa-solid fa-qrcode"></i>
|
||||
</button>
|
||||
<button class="btn btn-secondary btn-small hover-anim" title="Add To Favorites">
|
||||
<i class="fa-regular fa-heart"></i>
|
||||
</button>
|
||||
<a class="btn btn-secondary btn-small hover-anim"
|
||||
href="<?php the_permalink('recipes:export-pdf', [$context['recipe']->get_id()]); ?>"
|
||||
target="_blank" title="Export As PDF">
|
||||
<i class="fa-solid fa-download"></i>
|
||||
</a>
|
||||
<button class="btn btn-secondary btn-small hover-anim" id="qr-btn" title="Get QR Code">
|
||||
<i class="fa-solid fa-qrcode"></i>
|
||||
</button>
|
||||
</div>
|
||||
<div id="overlay" class="hidden"></div>
|
||||
<div class="qr-popup hidden">
|
||||
@ -102,11 +98,7 @@ the_header(
|
||||
<div class="single-instructions">
|
||||
<h2 class="title">Instructions</h2>
|
||||
|
||||
<?php
|
||||
$formatted = preg_replace('/(\d+\.\s)/', "\n$1", $context['recipe']->field_instruction);
|
||||
|
||||
echo nl2br(trim($formatted));
|
||||
?>
|
||||
<?= $context['recipe']->get_html_instruction(); ?>
|
||||
</div>
|
||||
<div class="single-ingredients">
|
||||
<h2 class="title">Ingredients</h2>
|
||||
@ -134,6 +126,8 @@ the_header(
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<?php the_footer(array(
|
||||
ASSETS_PATH . '/js/single.js',
|
||||
)); ?>
|
||||
1
assets/qrcode/qrcode.min.js
vendored
Normal file
@ -20,7 +20,7 @@
|
||||
|
||||
<script src="<?php echo ASSETS_PATH . '/js/main.js' ?>"></script>
|
||||
<script src="<?php echo ASSETS_PATH . '/toastify/toastify-js.js' ?>"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/qrcodejs/1.0.0/qrcode.min.js"></script>
|
||||
<script src="<?php echo ASSETS_PATH . '/qrcode/qrcode.min.js' ?>"></script>
|
||||
|
greendavid004 marked this conversation as resolved
Outdated
steve_dekart
commented
I think you need to save this file in the ASSETS_PATH like I think you need to save this file in the ASSETS_PATH like `toastify.js`.
|
||||
<?php foreach($scripts as $script): ?>
|
||||
<script src="<?php echo $script ?>"></script>
|
||||
<?php endforeach; ?>
|
||||
|
||||
Can you create a new function in the RecipeModel that returns a string combining the estimated_time field and the word “minutes”? I think it will be used repeatedly in the future.