+0.12
Рейтинг
0.34
Сила

Антон

  • avatar ramjke
  • 0
Тебе нужно править JS функцию ls.subscribe.toggle, потому что ты передаешь в нее аргумент this.checked, а тег не может быть checked в отличии от input.
  • avatar ramjke
  • 0
class="sublink {if $oSubscribeComment and $oSubscribeComment->getStatus()}active{/if}

Забыли пробел
  • avatar ramjke
  • 0
Если все работает тогда что еще нужно? Или дайте весь код всех файлов.
  • avatar ramjke
  • 0
Ты не передал значение формы в скрипт. В файле /classes/actions/ActionTopic.class.php в функциях SubmitEdit и SubmitAdd добавь после
$oTopic->setTags(getRequestStr('topic_tags'));

$oTopic->setAuthor(getRequestStr('topic_author'));
  • avatar ramjke
  • 0
$oUserCurrent и $oTopic работают потому что они переданы в шаблон, а $oSubscribeComment это совсем другой объект. Было бы не разумно передавать на каждую страницу все объекты движка.
  • avatar ramjke
  • 0
Либо вы можете сделать костыль и менять его вручную для каждого топика пока не хватает знаний, выглядить будет так:
public function getAuthor() {
    switch ($this->_getDataOne('topic_id')) {
    case 1:
        return "Пушкин";
        break;
    case 2:
        return "Лермонтов";
        break;
    case 23:
        return "Есенин";
        break;
    default:
       return "Неизвестный поэт";
    }
}

В таком случае для топика с ID=1 установлен автор «Пушкин», ID=2 «Лермонтов». ID=23 «Есенин». Все что не входит в этот список будет «Неизвестный поэт».
  • avatar ramjke
  • 0
Это хорошо что попробовали. В таком случае очевидно что в файл шаблона (.tpl) не передается объект $oSubscribeComment.
Так как вы не написали что за шаблон редактируется, то я не могу написать конкретно что сделать.
Вариантов 2:
1. Если шаблон includ'ится в другой шаблон, где использование $oSubscribeComment работает, то нужно поменять инклуд на следующий:
{include file='конечный шаблон.tpl' oSubscribeComment=$oSubscribeComment}

2. Если это сделать невозможно, то нужно получить и передать этот объект из PHP кода, ответственного за вывод этого шаблона, методом
$this->Viewer_Assign("oSubscribeComment",$oSubscribeComment);
  • avatar ramjke
  • 0
Дело в том, что в таблицу в таком случае ничего не записывается. В этой ситуации getAuthor() ВСЕГДА и для всех топиков будет возвращать «Пушкин». А, что если нужно написать для одних топиков «Пушкин», а для других «Лермонтов»? В таком случае вам нужно добавлять полноценное поле в таблицу topic базы данных и менять все функции как я описал.
  • avatar ramjke
  • 0
Я так понимаю вы ходите добавить в базу данных, а имено в таблицу topic информацию об авторе. В таком случае если автор = создатель топика будет проще получть его логин с помощью такой конструкции:
$oUser = $this->User_GetUserById($oTopic->getUserId());
echo ($oUser->getLogin()); //выводит логин автора топика


Если у вас другие задачи, то по вашей проблеме:
$this->aValidateRules[]=array('topic_author','string','max'=>500,'min'=>2,'allowEmpty'=>false,'label'=>$this->Lang_Get('topic_create_author'),'on'=>array('topic'));

Эта строчка проверяет не форму, а поле в таблице topic. Так как судя по тому что вы написали, вам также необходимо:
1. Добавить новое поле в таблицу topic (topic_author)
2. Добавить поле в функции InsertTopic и UpdateTopic, чтобы это значение записывалось в базу данных при добавлении нового топика и при его редактировании.
3. Получить это поле из формы и записать в объект методом который вы уже создали в topic.entity.class.php
Вставить в функции TopicEdit и TopicAdd
$oTopic->setAuthor(getRequestStr('topic_author'));


В общем, лучше присмотритесь к первому варианту.
  • avatar ramjke
  • 0
Автор вряд-ли сюда еще зайдет. Но движок не для слабых, это да.
  • avatar ramjke
  • 0
class=«subscribe {if $oSubscribeComment and $oSubscribeComment->getStatus()}active{/if}
  • avatar ramjke
  • 0
Я очень привык за пять лет к 1.0.3 и не вижу в нем недостатоков с точки зрения пользователей, заходящих на сайт. Удалось добиться загрузки страниц в среднем за 50 мс для главной и 120мс для топика с 50 комментариями (с плагином UserMedals). На 6 тыс. посетителей в день работает хорошо.
Так что и переходить на что-то не имеет смысла, вот если бы допиливали потихоньку то что есть. Маленькими шажками так сказать.
  • avatar ramjke
  • 0
Ошибка не
foreach ($directives as $key=>$value) {

а
foreach ($directives as $name=>$value) {
  • avatar ramjke
  • 1
1. Для решения проблемы с устаревшим методом each()
В файле framework/libs/vendor/DklabCache/Zend/Cache/Backend.php нужно заменить строки:
while (list($name, $value) = each($options)) {

на
foreach ($options as $name=>$value) {

А также:
while (list($name, $value) = each($directives)) {

на
foreach ($directives as $key=>$value) {

2. Насчет второго случая ошибка в скомпилированном файле, править его не имеет смысла, нужно найти .tpl файл откуда он скоптилировался и заменить count(). Скорее всего просто убрать его, так как в некоторых шаблонах я замечал что проверка на существования массива проводится через if (count($array)). В таких случаях достаточно if ($array) или if (is_array($array)).
3. Либо вы можете полностью отключить вывод предупреждений, в файл Config.local.php вставьте в начало:
error_reporting(E_ERROR);

Таким образом Livestreet будет выводить только критические ошибки.
  • avatar ramjke
  • 0
Может быть и заброшена, но работает замечательно.
  • avatar ramjke
  • 1
Этот баг возник из-за копирования кода из popup регистрации в обычную.
Проблема решается очень быстро и просто.
Нужно в файле шаблона {$skinname}/actions/ActionRegistration/index.tpl
Исправить ID всех четырех INPUTов
было id="popup-registration-login" стало "login"
было id="popup-registration-mail" стало "mail"
было id="popup-registration-user-password" стало "user-password"
было id="popup-registration-user-password-confirm" стало "assword-confirm"
  • avatar ramjke
  • 0
В общем хостер перезапустил службу и время теперь совпадает, однако проблема осталась.
  • avatar ramjke
  • 0
Проверил записав в базу данных параметр NOW(), записал на час вперед серверного времени.
  • avatar ramjke
  • 0
но несмотря на это в базу данных пишется время на час вперед
  • avatar ramjke
  • 0
Подскажите пожалуйста как вернуть время базы данных. Серверное время возвращаю через date(«l dS of F Y h:i:s A»);, показывает московское 03:06:10 PM, в mysql стоит system time zone = MSK, time zone = SYSTEM.