metrpro

Определить, что объявление просматривает его автор

Recommended Posts

Всем привет, собственно, сабж. Стоит задача сделать так, чтобы если автор просматривает своё объявление, то для него была бы возможность поднять объявление либо отредактировать его прямо со страницы.

Какое условие мы проверяем, дабы определить, что id залогиненного пользователя совпадает с id автора?

Данке

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
{if $smarty.session.user_id>0 $smarty.session.user_id==$user_data.user_id.value}

{/if}

или

{if $smarty.session.user_id>0 $smarty.session.user_id==$data_shared.user_id.value}

{/if}

второе более надежно, поскольку в $user_data поле user_id может быть недоступно для текущего пользователя (могут существовать и такие условия), что сведет проверку к невозможности выполниться, а в $data_shared поле user_id будет гарантированно доступно.

Условие $smarty.session.user_id>0 так же поможет отсечь неавторизированных и случайное попадание в ситуацию, когда гость неавторизирован и смотрит объявление, у которого не указан владелец из-за чего второе условие может выполниться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Только что, abushyk сказал:

второе более надежно, поскольку в $user_data поле user_id может быть недоступно для текущего пользователя (могут существовать и такие условия), что сведет проверку к невозможности выполниться, а в $data_shared поле user_id будет гарантированно доступно.

Условие $smarty.session.user_id>0 так же поможет отсечь неавторизированных и случайное попадание в ситуацию, когда гость неавторизирован и смотрит объявление, у которого не указан владелец из-за чего второе условие может выполниться.

 

Костя, я пытаюсь сделать возможность работы с VIP и premium через страницу просмотра, а не только через личный кабинет.

Естественно, стоИт задача проверки статуса объявления, но параметры, видимо, не все передаются на страницу, по крайней мере этот код ничего не возвращает:

{if $data.vip_status_end > $now}
<span class="vb"><i class="icon-star icon-black"></i> VIP до {$data.vip_status_end|date_format:"%d.%m.%Y %H:%M"}</span>
{else}
<a class="btn btn-small make_vip_modal" alt="{$data.id.value}">Сделать VIP</a>
{/if}

{if $data.premium_status_end > $now}
<span class="vb"><i class="icon-star icon-black"></i> Premium до {$data.premium_status_end|date_format:"%d.%m.%Y %H:%M"}</span>
{else}
<a class="btn btn-small make_premium_modal" alt="{$data.id.value}">Сделать premium</a>
{/if}

{if $data.bold_status_end > $now}
<span class="vb"><i class="icon-star icon-black"></i> Выделено до {$data.bold_status_end|date_format:"%d.%m.%Y %H:%M"}</span>
{else}
<a class="btn btn-small make_bold_modal" alt="{$data.id.value}">Выделить объявление</a>
{/if}

Как передать значения .bold_status_end и пр. на страницу realty_view вместо realty_grid_account?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
$data.vip_status_end

используйте

$data_shared.vip_status_end.value

$data_shared потому, что биллинг-поля обычно доступны только админу и в $data их просто не будет. А .value потому, что в карточке мы имеем модель обекта в отличии от сетки, где у нас выборка из БД без модели.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Только что, abushyk сказал:

используйте

$data_shared.vip_status_end.value

То, что надо! Теперь все функции подъема/редактирования/присвоения статусов доступны для автора на странице объявления!

Спасибо, Костя!!!

PS: Вот, как видит страницу её автор:

goodview.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Не совсем законченное решение!

Мне иногда требуется как админу управлять объектами, но, если объект не мой, то приходится редактировать карточку!

Вполне логично, то кроме владельца объявления, админ может совершать те же действия + редактировать объект!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 26.09.2016 в 12:09, metrpro сказал:

То, что надо! Теперь все функции подъема/редактирования/присвоения статусов доступны для автора на странице объявления!

Спасибо, Костя!!!

PS: Вот, как видит страницу её автор:

goodview.jpg

а у вас есть ссылки на страницы с данными статусами? их можно посмостреть? напишите парочку с актуальными/ можно в личку

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 18.10.2016 в 13:31, Александр Лубянский сказал:

Не совсем законченное решение!

Мне иногда требуется как админу управлять объектами, но, если объект не мой, то приходится редактировать карточку!

Вполне логично, то кроме владельца объявления, админ может совершать те же действия + редактировать объект!

Это вопрос к разработчикам. Админ может редактировать чужие объявления только через админку сайта. Через сам сайт и личный кабинет вы получите ошибку. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 26.09.2016 в 12:09, metrpro сказал:

То, что надо! Теперь все функции подъема/редактирования/присвоения статусов доступны для автора на странице объявления!

Спасибо, Костя!!!

PS: Вот, как видит страницу её автор:

goodview.jpg

а могли бы привести полный код? для возможности применения статуса и отображения сроков о них именно для владельца объявления, чтобы он именно со страницы карточки мог бы применить статусы не заходя в ЛК во все свои объявления

при изучении кода  правильнее наверное писать так

то есть вместо 
$data_shared.vip_status_end  пишем $data_shared.vip_status_end.value
и еще обратили внимание что при выводе формата даты у вас стоят ковычки "дата" а у нас просто запятая сверху `дата`   - вопрос что правильнее?

{if $data.vip_status_end.value > $now}
<span class="email"><i class="icon-star icon-black"></i> VIP до {$data_shared.vip_status_end.value|date_format:'%d.%m.%Y %H:%M'}</span>
{else}
<a class="btn btn-small make_vip_modal" alt="{$data.id.value}">Сделать VIP</a>
{/if}

применив такое на карточке объявления видим либо дату либо кнопку которую можно нажать, но нажимая ее ничего не происходит, что как и где прописать, чтобы только сам владелец мог применять статусы ?

спасибо

del2.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

здравствуйте вернемся к вопросу. данное уже реализовано в обновлениях ? так как говорилось что вроде выведут кнопки из личного объявления, в шаблон объекта при просмотре автором, чтобы наверняка работало, так как описанное выше всего лишь "полумера" , то есть сделано как бы работающе просто

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

все ждем ответа :)  так как еще одно удобство не помешало бы развитию

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Подскажите а как правильно и грамотно в карточке объявления узнать -является ли данное объявление VIP PREMIUM или BOLD 

так посмотрев все что выводится в $data -не нашли такую переменную или значение.

имеется только срок окончания срока даты. например [vip_status_end]
но это срок окончания 

а есть ли где то значение типа value=1
Хотелось бы в карточке объявления сделать пометку "данное объявление имеет статус VIP"
при проверке значения

Может быть и можно обойтись сравнением даты больше определенной, но наверное правильно брать значение "пусто" или "1", хотя не знаем как биллинг обрабатывает значения, может просто сравнением, может быть убиранием параметра.

Поэтому и хочется знать что и как правильно

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 7/30/2017 в 22:22, doma сказал:

Подскажите а как правильно и грамотно в карточке объявления узнать -является ли данное объявление VIP PREMIUM или BOLD 

так посмотрев все что выводится в $data -не нашли такую переменную или значение.

имеется только срок окончания срока даты. например [vip_status_end]
но это срок окончания 

а есть ли где то значение типа value=1
Хотелось бы в карточке объявления сделать пометку "данное объявление имеет статус VIP"
при проверке значения

Может быть и можно обойтись сравнением даты больше определенной, но наверное правильно брать значение "пусто" или "1", хотя не знаем как биллинг обрабатывает значения, может просто сравнением, может быть убиранием параметра.

Поэтому и хочется знать что и как правильно

Правильно брать дату окончания vip_status_end и сравнивать с текущим временем time(), если больше тогда это ВИП.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 01.08.2017 в 08:39, rumantic сказал:

Правильно брать дату окончания vip_status_end и сравнивать с текущим временем time(), если больше тогда это ВИП.

подскажите еще - а где и что поправить и что нужно сделать.
Ситуация следующая, например есть поля вип премиум и болд, порой приходится редактировать поля эти админу как через админку так и через личный кабинет
если идет редакция через админку то там один вид календаря, а если через ЛК то другой (уже не красивый)
Чт и как сделать чтобы и через ЛК был достойный календарь для редактирования?
как на скрине

delkarta.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 01.08.2017 в 08:39, rumantic сказал:

Правильно брать дату окончания vip_status_end и сравнивать с текущим временем time(), если больше тогда это ВИП.

Кстати делали -делали -сами все видели как выводится, а потом и бац оказывается мы то видели потому что авторизованы как админы, а вот видимо простые не зарегистрированные пользователи не могут видеть ?  так как если бы видели то и могли бы  изменять дату?
{if $data.vip_status_end.value больше чего то }  то вывести текст

следовательно как писать вывод оперделеного текста правильно?
1 вариант)  так как написано выше
2 вариант)  или все же так  {if $data_shared.vip_status_end.value>  чего то} то вывести текст для всех пользователей

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ну кто подскажет как правильно и как грамотно сделать присвоение статусов вип премимиум и болд при просмотре своего объявления автором объявления -было бы для пользователей удобно -не бегая туда сюда, сайт -лк - лк сайт и так далее

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

еще раз - как бы с карточки объявления (реалитивью сделать присвоение вип премиум и других статусов?)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

1.Вставить кнопку в шаблон.

2.Написать событие по клику на кнопке, запускающее на сервере процедуру установки статуса

3.Написать код в системе, который перехватит это событие и выполнит присвоение статуса

Иного пути, кроме выполнения этих трех пунктов, по сути нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
33 минуты назад, abushyk сказал:

1.Вставить кнопку в шаблон.

2.Написать событие по клику на кнопке, запускающее на сервере процедуру установки статуса

3.Написать код в системе, который перехватит это событие и выполнит присвоение статуса

Иного пути, кроме выполнения этих трех пунктов, по сути нет.

с этим согласны :) вопрос что и как написать :)
нужен код :) а то мы  "напридумываем кода по аналогии с личным кабинетом"  -намудрим -перемудрим и кучу чего наделаем не правильно
на наш взгляд пользователям было бы удобнее устанавливать статус не только в личном кабинете но и в самой карточке (чтобы не бегать туда сюда и не искать их тратя на это время -к примеру если у пользователя более 30-70-100 объявлений например)
поясним удобство
к примеру у пользователя была открыта карточка  потом он ушел и через пол дня пришел и решил поставить статус, если он это сделает с самой карточки это юудет удобно и дополнительный плюс нас (юзабилити) , а вот если он с карточки перейдет в ЛК потом будет там искать это объявление а так может быть что в одном доме например в новостройке агентство продает 3 похожих квартиры и  потом думать а какая именно - это потеря времени - клиент может просто плюнуть и не делать -мол времени нет бежать надо потом сделаю, а так вместо нажати и 5-10 раз и скролинга все в "один клик" получилось бы


Спасибо если будет решение

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, doma сказал:

нужен код :) а то мы  "напридумываем кода по аналогии с личным кабинетом"  -намудрим -перемудрим и кучу чего наделаем не правильно

Во-первых , код который Вы придумаете будет только Ваш. Вы должны четко знать (видеть) как он будет работать. Во-вторых, нельзя сделать неправильно, не зная как это делается. В-третьих Константин написал логику и последовательность того, что нужно сделать для Вашей идеи.

Итог: Если у  Вас есть решение, которое будет выполнять аналогичное действие по-аналогии личного кабинета, то поделитесь им с другими пользователями.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Только что, TopRaN сказал:

Во-первых , код который Вы придумаете будет только Ваш. Вы должны четко знать (видеть) как он будет работать. Во-вторых, нельзя сделать неправильно, не зная как это делается. В-третьих Константин написал логику и последовательность того, что нужно сделать для Вашей идеи.

Итог: Если у  Вас есть решение, которое будет выполнять аналогичное действие по-аналогии личного кабинета, то поделитесь им с другими пользователями.

в том то и нет кода :) чего и выпрашиваем - команде как разработчикам будет проще его написать и реализовать, зная как и что взаимодействует :)

пока мы будем копировать код из ЛК -чего только не намудрим :)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
6 минут назад, doma сказал:

в том то и нет кода :) чего и выпрашиваем - команде как разработчикам будет проще его написать и реализовать, зная как и что взаимодействует :)
пока мы будем копировать код из ЛК -чего только не намудрим :)

Вы же не пробуете, а говорите - дайте. Не объясняете на  какой стадии у Вас появилась та или иная ошибка.

p.s. Выкладывайте ваш код с описанием что куда писали, где изменяли. Будем разбираться. А выпрашивать, это в раздел "фриланс".

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 18.09.2017 в 23:25, TopRaN сказал:

Вы же не пробуете, а говорите - дайте. Не объясняете на  какой стадии у Вас появилась та или иная ошибка.

p.s. Выкладывайте ваш код с описанием что куда писали, где изменяли. Будем разбираться. А выпрашивать, это в раздел "фриланс".

код присвоения статусов длинный и если только его копировать из ЛК, там есть кнопки присвоения статусов написанных на 
<script type="text/javascript">
типа 
 

$(document).ready(function(){
    
    $('#makeVipModalWindow').find('form').submit(function(){
        return false;
    });
    
    $('#makeVipModalWindow').find('[name=days]').blur(function(){
        var v=Number($(this).val());
        var days=$('#makeVipModalWindow').find('[name=days]');
        if(isNaN(v)){
            v=1;
            days.val(1);
        }else if(v==0){
            v=1;
            days.val(1);
        }else if(v<0){
            v=-1*v;
            days.val(v);
        }
        var per_day_price=$('#makeVipModalWindow').find('[name=per_day_price]').val();
        $('#makeVipModalWindow').find(".calc_price").text(v*per_day_price);
    });


а потом еще много строк, но еще ниже идет код  модальных форм  в котрых выводится допинформация и кнопки для присвоения статусов

не факт что предложенные нами варианты правильные -поэтому и пишем на форуме так как не знаем как правильно это реализовать.
Поэтому варианты решения следующие
1) вариант скопировать 2 кода из файла аккаунт и реалити-вью и как бы дать возможность присвоения этих статусов из карточки
2) вариант - создать отдельный tpl файл в него скинкуть эти скрипты и модальные окна и потом уже inclaid -ом  подключать хоть в карточке - хоть в лк.
нужно лишь понимать id объявления к которому нужно это применять

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас