0 Пользователей и 1 Гость просматривают эту тему.
  • 7 Ответов
  • 1422 Просмотров
*

Eugene1976

  • Новичок
  • 3
  • 0 / 0
Здравствуйте,

Eсть Joomla 2.5.7
в пользовательской части пытаюсь добавить собственную проверку текстового поля на валидность

в отличии от стандартной проверки на пусто должно проверяться что значение не равно еще и определенному слову
это слово прописано в языковых файлах

но похоже что фраза
if(value=="Joomla.JText._('COM_USERS_REGISTER_TESTFIELD')" || value=="")
в js файле так и остается непереведенной (не распарсенной)

может кто сможет подсказать в чем ошибка?

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

файлы:
/////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////
components/com_users/models/forms/testfield.js:
/////////////////////////////////////////////////////////////////
window.addEvent('domready', function() {
  document.formvalidator.setHandler('testfield',
    function (value)
    {
      if(value=="Joomla.JText._('COM_USERS_REGISTER_TESTFIELD')" || value=="")
        return false;
      else
        return true;
    });
  }
);


/////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////
components/com_users/models/forms/testfield.xml:
/////////////////////////////////////////////////////////////////
<?xml version="1.0" encoding="utf-8"?>
<form>
  <fieldset addfieldpath="/components/com_users/models/fields">
    <field
      name="testfield"
      type="text"
      default="Test Field"
      id="testfield"
      required="true"
      class="validate-testfield"
     />
  </fieldset>
</form>


/////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////
components/com_users/models/testfield.php
/////////////////////////////////////////////////////////////////
<?php
defined('_JEXEC') or die;
jimport('joomla.application.component.modelform');
class UsersModelTestfield extends JModelForm
{
  public function getForm($data = array(), $loadData = true)
  {
    $form = $this->loadForm($this->option . '.Testfield', 'Testfield', array('control' => 'jform', 'load_data' => $loadData));
    if (empty($form))
    {
      return false;
    }
    return $form;
  }
  public function getScript()
  {
    return 'components/' . $this->option . '/models/forms/testfield.js';
  }
  protected function loadFormData()
  {
  }
}


/////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////
com_users/views/testfield/view.html.php
/////////////////////////////////////////////////////////////////
<?php
defined('_JEXEC') or die('Restricted access');
jimport('joomla.application.component.view');
class UsersViewTestfield extends JViewLegacy
{
  protected $form;
  protected $script;
  public function display($tpl = null)
  {
    try
    {
      $this->form = $this->get('Form');
      $this->script = $this->get('Script');
      parent::display($tpl);
      $this->setDocument();
    }
    catch (Exception $e)
    {
      throw new Exception($e->getMessage());
    }
  }
  
  protected function setDocument()
  {
    $document = JFactory::getDocument();
    $document->addScript(JURI::root(). $this->script);
    JText::script('COM_USERS_REGISTER_TESTFIELD');
  }
}


/////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////
components/com_users/views/testfield/tmpl/default.php:
/////////////////////////////////////////////////////////////////
<?php
defined('_JEXEC') or die;
JHtml::_('behavior.framework');//на счет этой строки совсем не уверен но похоже что именно это строка должна отвечать за парсинг(перевод) js файла
JHtml::_('behavior.formvalidation');
?>
<form action="<?php echo JRoute::_('index.php?option=com_users&task=testfield.register');?>" method="post" name="testieldForm" id="testield-form" class="form-validate">
  <?php
  foreach ($this->form->getFieldset() as $field)
  {
  ?>
  <div class="login-fields"><?php echo $field->input; ?></div>
  <?php
  }
  ?>
  <button class="validate" type="submit"><?php echo JText::_('COM_USERS_REGISTER_SUBMIT'); ?></button>
  <input type="hidden" name="task" value="testfield.register">
  <input type="hidden" name="option" value="com_users" />
  <?php echo JHtml::_('form.token'); ?>
</form>


/////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////
components/com_users/controller.php
/////////////////////////////////////////////////////////////////
тут просто вставка чтоб увидеть нужное представление
.......
.......
case 'login':
  $model = $this->getModel($vName);
  break;
case 'testfield':
  $model = $this->getModel($vName);
  break;
.......


/////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////
/language/en-GB/en-GB.com_users.ini
/////////////////////////////////////////////////////////////////
тут просто добавил определения для строк
.............
.............
COM_USERS_REGISTER_TESTFIELD="Test Field"
COM_USERS_REGISTER_SUBMIT="Submit"


/////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////
вызывается все это примерно так:
http://localhost/Joomla_2.5.7-Stable-Full_Package/index.php?option=com_users&view=testfield
« Последнее редактирование: 23.09.2014, 00:39:42 от Eugene1976 »
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Как локализировать js файлы?
« Ответ #1 : 22.09.2014, 22:51:53 »
сдается мне тут не должно быть кавычек:
if(value==Joomla.JText._('COM_USERS_REGISTER_TESTFIELD') || value=="")...
интернет-блог: http://websiteprog.ru
*

AlekVolsk

  • Гуру
  • 6542
  • 380 / 4
Re: Как локализировать js файлы?
« Ответ #2 : 22.09.2014, 22:58:04 »
имхо, if (value == JText::_('COM_USERS_REGISTER_TESTFIELD') || value == "")
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Как локализировать js файлы?
« Ответ #3 : 22.09.2014, 23:10:50 »
имхо, if (value == JText::_('COM_USERS_REGISTER_TESTFIELD') || value == "")

Нет, JText::_(...) php-шный метод. Тут речь идет о методе из core.js библиотеки. Я проверял, вполне рабочий метод, например код:
Код: php
JHtml::_('behavior.framework');
$lang = JFactory::getLanguage();
$lang->load('com_users',JPATH_ROOT);
$doc = JFactory::getDocument();
JText::script('COM_USERS_EDIT_PROFILE');
$doc->addScriptDeclaration("window.addEvent('domready', function() { alert(Joomla.JText._('COM_USERS_EDIT_PROFILE')) });");

Выведет фразу "Изменить профиль" через javascript.
интернет-блог: http://websiteprog.ru
*

AlekVolsk

  • Гуру
  • 6542
  • 380 / 4
Re: Как локализировать js файлы?
« Ответ #4 : 22.09.2014, 23:14:45 »
Недоглядел про js, сори. Что делает JText::script()? Это ведь посредством него позволяется вывод Joomla.JText._() в js? или там что-то еще завязано?
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Как локализировать js файлы?
« Ответ #5 : 22.09.2014, 23:27:20 »
Недоглядел про js, сори. Что делает JText::script()? Это ведь посредством него позволяется вывод Joomla.JText._() в js?

Да, он генерит скрипт который загоняет строку в массив объектов посредством метода Joomla.JText.load(...);
интернет-блог: http://websiteprog.ru
*

AlekVolsk

  • Гуру
  • 6542
  • 380 / 4
Re: Как локализировать js файлы?
« Ответ #6 : 22.09.2014, 23:32:38 »
А я-то мучился, каждый раз делая что-то вроде $doc->addScriptDeclaration('var COM_USERS_EDIT_PROFILE = "'.JText::_('COM_USERS_EDIT_PROFILE').'";'); =) а тут вон оно как все просто оказывается
*

Eugene1976

  • Новичок
  • 3
  • 0 / 0
Re: Как локализировать js файлы?
« Ответ #7 : 23.09.2014, 00:38:58 »
сдается мне тут не должно быть кавычек:
if(value==Joomla.JText._('COM_USERS_REGISTER_TESTFIELD') || value=="")...


Огромное спасибо
все заработало
судя по всему действительно кавычки были лишними
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Где брать языковые файлы разных языков для 2,5

Автор kikimora17

Ответов: 2
Просмотров: 1448
Последний ответ 11.05.2012, 21:57:58
от kikimora17