Forums / National / Russian / Сборка «Фриланс-биржа» / в projects.offers.tpl Вывести: если проект просрочен то ...

vpktz
#1 2023-09-27 17:59

Услышал негодования, провел работу над ошибками, принял к сведению, впреть буду более серьезно относиться к публикациям. Спасибо за труд. heart

 

Переписал вопросы более грамотно

Первый вопрос

Затруднение у меня в том что я в projects.offers.tpl не могу вывести "Срок действия проекта завершен"

projects.offers.tpl эта tpl работает на странице projects.tpl то есть как бы внутри, это предложения на испонения других юзеров

То есть сам проект это projects.tpl и в нем указаны сроки но сроки реализованны с помощью плагина expiredprojects

У меня в projects.tpl это реализованно так

<!-- IF {PRJ_EXPIRED_DAYS} > 0 -->

  Осталось дней  {PRJ_EXPIRED_DAYS}

 <!-- ELSE -->

   Осталось дней 0

 <!-- ENDIF -->  

 
с такого числа {PRJ_DATE_STAMP|cot_date('d.m.Yг H:i', $this)} 
 

<!-- IF {PRJ_EXPIRED_DAYS} > 0 -->

   до такого числа {PRJ_EXPIRED|cot_date('d.m.Yг H:i', $this)}

<!-- ELSE -->

   Просрочено {PRJ_EXPIRED|cot_date('d.m.Yг H:i', $this)}

<!-- ENDIF -->

 

 

Теперь в projects.offers.tpl мне нужно вывести грубо говоря это но это

<!-- IF {PRJ_EXPIRED_DAYS} <= 0 -->

Срок действия проекта завершен

<!-- ENDIF -->

Но это не работает  projects.offers.tpl а будет работать только в не работает  projects.tpl

 

Второй вопрос попутно

Как в projects.offers.tpl в 

<!-- BEGIN: ROWS -->

вывести id владельца проекта

<!-- END: ROWS -->

Который в projects.tpl выводиться с помощью {PRJ_OWNER_ID}

Хочу таким образом добавить возможность видеть текст предложения на выполнения других участников только если ты:

1. ты администратор 

2. ты имеешь статус ПРО это при включеном плагине PayPro  (и купленом статусе) пишется в условии как {PHP|cot_getuserpro()}

3. ты владелец проекта

Это для плагина PayPro, типа если ты без премиум аккаунта то ты не видешь предложения других юзеров а если купил премиум то тебе видны. 

Пока цепочка такая

<!-- IF {PHP.usr.id} == {OFFER_ROW_OWNER_ID} OR {PHP|cot_getuserpro()} OR {PHP.usr.isadmin} -->
      Текст предложения: {OFFER_ROW_TEXT}
 <!-- ENDIF -->

Все срабатывает кроме того что владелец проекта сам не видит текст предложения

This post was edited by vpktz (2023-10-08 09:03, 7 months ago)
Argont
#2 2023-09-27 19:42

не юзал этот плагин, но что если добавить функцию как в модуле 'page' -

		$page_data['page_status'] = cot_page_status(
			$page_data['page_state'],
			$page_data['page_begin'],
			$page_data['page_expire']
		);

и уже исходить от статуса, полученного от наших дат, установленных при создании или редактировании карточки поста

иногда поржать над задравшим подбородок разработчиком
vpktz
#3 2023-09-30 09:10
#47133 Argont:

не юзал этот плагин, но что если добавить функцию как в модуле 'page' -

		$page_data['page_status'] = cot_page_status(
			$page_data['page_state'],
			$page_data['page_begin'],
			$page_data['page_expire']
		);

и уже исходить от статуса, полученного от наших дат, установленных при создании или редактировании карточки поста

Слишком сложно)))

Может есть какое то глобальное условие что типа если тут что то  а не пусто то выводим это

Например

 <!-- IF {что то} == 0 --> 
Тогда выводим это
 <!-- ENDIF -->

 

ИЛИ

 <!-- IF {что то}  --> 
Вывод это
 <!-- ELSE --> 
Вывод другое
 <!-- ENDIF -->

 

 

This post was edited by vpktz (2023-10-07 21:49, 7 months ago)
Kopusha
#4 2023-10-03 09:36

Попробуй выше while ($offer = $sql->fetch())
добавить $t_o->assign(cot_generate_usertags($item['item_userid'], 'OFFER_ROW_PRJ_OWNER_'));
и тогда в цикле ты получишь
OFFER_ROW_PRJ_OWNER_ID и все остальные теги

Либо внутрь
$t_o->assign(array( просто
"OFFER_ROW_PRJ_OWNER_ID" => $item['item_userid'],

Added 1 minute later:

старайся задавая такие вопросы выкладывать сам код файла в какой то php sandbox хотя бы, я сейчас просто угадываю
возможно там нет $item['item_userid'] и тогда все что выше до лампочки

Added 5 minutes later:

но по уму конечно это не в ТПЛ надо закрывать а в пхп типа так
if ($usr['id'] == $offer['offer_userid'] || $usr['id'] == $item['item_userid'] || $usr['isadmin']) и тд

Added 11 minutes later:

#47128 vpktz:

 

Есть идея, в projects.offers.tpl если проект просрочен то вывести уведомление - текст

в project.offers.php найди сам цикл с OFFER_FORM_ и в него добавь
"OFFER_FORM_PRJ_STATE" =>$item['item_state'],
И если он 1 то вроде как просрочен

PS Я реально без кода сейчас просто угадываю, все может быть чуть не так но общий принцип - такой же

Added 3 minutes later:

Не уверен что $item['item_state'] == 1 это именно просрочен, возможно надо как сверять даты cot date и какую то дату самого прожекта
Но суда по гуглу плагин єкспайрдпрожектс делает именно это

//змінюємо статуси для проектів що не актуальні
		$affectedRows = $db->query("UPDATE $db_projects
					SET item_state = 1 

 

This post was edited by Kopusha (2023-10-03 09:59, 7 months ago)
Kort
#5 2023-10-03 15:23

Как все же можно понять что именно надо сделать? Было и про просроченный проект и про ID владельца.

SED.by - создание сайтов, разработка плагинов и тем для Котонти
Kopusha
#6 2023-10-03 19:06

Я тут пытался угадать по двум вопросам)

Kort
#7 2023-10-03 21:00
#47128 vpktz:

Есть идея, в projects.offers.tpl если проект просрочен то вывести уведомление - текст

Речь об этом?

SED.by - создание сайтов, разработка плагинов и тем для Котонти
vpktz
#8 2023-10-04 08:42
#47193 Kort:
#47128 vpktz:

Есть идея, в projects.offers.tpl если проект просрочен то вывести уведомление - текст

Речь об этом?

Да, это первй вопрос))) а второй впрос про условие, как его доработать тоб работало для всех как надо. 

<!-- IF {PHP.usr.id} == {OFFER_ROW_OWNER_ID} OR {PHP|cot_getuserpro()} OR {PHP.usr.isadmin} -->
      <div class="uk-comment-body uk-margin-remove-top">
          {OFFER_ROW_TEXT}
      </div>
 <!-- ENDIF -->

 

клава сломалась не могу попробовать пока то то показаа Kopusha

Kort
#9 2023-10-04 10:01

По ID вот так?

SED.by - создание сайтов, разработка плагинов и тем для Котонти
vpktz
#10 2023-10-07 19:55

 

Добавлено 3 минуты спустя:

#47186 Kopusha:

Попробуй выше while ($offer = $sql->fetch())
добавить $t_o->assign(cot_generate_usertags($item['item_userid'], 'OFFER_ROW_PRJ_OWNER_'));
и тогда в цикле ты получишь
OFFER_ROW_PRJ_OWNER_ID и все остальные теги

Либо внутрь
$t_o->assign(array( просто
"OFFER_ROW_PRJ_OWNER_ID" => $item['item_userid'],

Added 1 minute later:

старайся задавая такие вопросы выкладывать сам код файла в какой то php sandbox хотя бы, я сейчас просто угадываю
возможно там нет $item['item_userid'] и тогда все что выше до лампочки

Added 5 minutes later:

но по уму конечно это не в ТПЛ надо закрывать а в пхп типа так
if ($usr['id'] == $offer['offer_userid'] || $usr['id'] == $item['item_userid'] || $usr['isadmin']) и тд

Added 11 minutes later:

#47128 vpktz:

 

Есть идея, в projects.offers.tpl если проект просрочен то вывести уведомление - текст

в project.offers.php найди сам цикл с OFFER_FORM_ и в него добавь
"OFFER_FORM_PRJ_STATE" =>$item['item_state'],
И если он 1 то вроде как просрочен

PS Я реально без кода сейчас просто угадываю, все может быть чуть не так но общий принцип - такой же

Added 3 minutes later:

Не уверен что $item['item_state'] == 1 это именно просрочен, возможно надо как сверять даты cot date и какую то дату самого прожекта
Но суда по гуглу плагин єкспайрдпрожектс делает именно это

//змінюємо статуси для проектів що не актуальні
		$affectedRows = $db->query("UPDATE $db_projects
					SET item_state = 1 

Не смог это опробывать, не осилил.  php не владею

Думал будет что то по легче, надеялся на то что это один модуль и все выведения только в нем, sad

 

This post was edited by vpktz (2023-10-07 21:49, 7 months ago)
Kort
#11 2023-10-08 08:26

Привет. По первому вопросу можно так:

<!-- IF {PHP.item.item_expired} > 0 -->
<!-- BEGIN: ADDOFFERFORM -->
<h4>{PHP.L.offers_ostavit_predl}</h3>
<div id="addofferform" class="customform">
...
</div>
<!-- END: ADDOFFERFORM -->
<!-- ELSE -->
<div class="alert alert-warning">
   Срок действия проекта завершен
</div>
<!-- ENDIF -->

Проверяй.

Как я понимаю, все ок? Тогда решение по второму вопросу:

{PHP.item.user_id}

Это по проверке владельца проекта.

SED.by - создание сайтов, разработка плагинов и тем для Котонти
This post was edited by Kort (2023-10-08 09:30, 7 months ago)
vpktz
#12 2023-10-08 17:38
#47201 Kort:

Привет. По первому вопросу можно так:

<!-- IF {PHP.item.item_expired} > 0 -->
<!-- BEGIN: ADDOFFERFORM -->
<h4>{PHP.L.offers_ostavit_predl}</h3>
<div id="addofferform" class="customform">
...
</div>
<!-- END: ADDOFFERFORM -->
<!-- ELSE -->
<div class="alert alert-warning">
   Срок действия проекта завершен
</div>
<!-- ENDIF -->

Проверяй.

Как я понимаю, все ок? Тогда решение по второму вопросу:

{PHP.item.user_id}

Это по проверке владельца проекта.

 

Ура, в первом вопросе все отлично работает,  но то что 

<!-- BEGIN: ADDOFFERFORM -->
<h4>{PHP.L.offers_ostavit_predl}</h3>
<div id="addofferform" class="customform">
...
</div>
<!-- END: ADDOFFERFORM -->

состоит в нутри условия 

<!-- IF {PHP.item.item_expired} > 0 -->
<!-- BEGIN: ADDOFFERFORM -->
<h4>{PHP.L.offers_ostavit_predl}</h3>
<div id="addofferform" class="customform">
...
</div>
<!-- END: ADDOFFERFORM -->
<!-- ELSE -->
<div class="alert alert-warning">
   Срок действия проекта завершен
</div>
<!-- ENDIF -->

 Дает возможность скрыть форму добавления предложений к проекту если кончалось время. Это дополнительный функционал и приятно еще больше чем просто вывести уведомление о Завершенном сроке проекта.

 

Второй впрос тоже все отлично работает если я все возможные варианты протестил, но вроде все протестил)))

Теперь чужие предложения видят юзеры только если имеет pro аккаунт, получилось еще один плюс если купишь про. По итогу цепочка такая

<!-- IF {PHP.usr.id} == {OFFER_ROW_OWNER_ID} OR {PHP.usr.id} == {PHP.item.user_id} OR {PHP|cot_getuserpro()} OR {PHP.usr.isadmin} -->
  <div class="uk-comment-body uk-margin-remove-top">
       {OFFER_ROW_TEXT}
   </div>
<!-- ENDIF -->

Еще не много тестов и можно закрывать тему. Спасибо особое Kort