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

tarkasha

  • Захожу иногда
  • 95
  • 0 / 0
Добрый день. Не подскажите как реализовать ограничения в поле name при подаче с фронта.

1. Нужно чтоб пои подаче фронт выбивал ошибку если итем с таким названием уже существует.
2. Ограничить количество символов в поле name.

Напомню что подача осуществляется с фронта.
Заранее спасибо и вот мой код файла itemname.php (www\media\zoo\elements\itemname)

Код
<?php
/**
* @package   com_zoo
* @author    YOOtheme http://www.yootheme.com
* @copyright Copyright (C) YOOtheme GmbH
* @license   http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
*/

/*
Class: ElementItemName
The item name element class
*/
class ElementItemName extends Element implements iSubmittable {

/*
Function: hasValue
Checks if the element's value is set.

   Parameters:
$params - render parameter

Returns:
Boolean - true, on success
*/
public function hasValue($params = array()) {
return true;
}

/*
   Function: edit
       Renders the edit form field.

   Returns:
       String - HTML
*/
public function edit() {
return null;
}

/*
Function: render
Renders the element.

   Parameters:
            $params - render parameter

Returns:
String - HTML
*/
public function render($params = array()) {
if (!empty($this->_item)) {

$params = $this->app->data->create($params);

if ($params->get('link_to_item', false) && $this->_item->getState()) {

return '<a title="'.$this->_item->name.'" href="' . $this->app->route->item($this->_item). '">' . $this->_item->name . '</a>';

} else {

return $this->_item->name;

}
}
}

/*
Function: renderSubmission
Renders the element in submission.

   Parameters:
$value  - AppData value
            $params - AppData submission parameters

Returns:
String - HTML
*/
public function renderSubmission($params = array()) {
       return '<input type="text" name="'.$this->getControlName('value').'" size="60" value="'.$this->_item->name.'" />';
}

/*
Function: validateSubmission
Validates the submitted element

   Parameters:
            $value  - AppData value
            $params - AppData submission parameters

Returns:
Array - cleaned value
*/
public function validateSubmission($value, $params) {
return array('value' => $this->app->validator->create('string', array('required' => $params->get('required')))->clean($value->get('value')));
}

/*
Function: bindData
Set data through data array.

Parameters:
$data - array

Returns:
Void
*/
public function bindData($data = array()) {
$this->_item->name = @$data['value'];
}

}

 
*

likrion

  • Давно я тут
  • 750
  • 129 / 2
Re: Ограничить подачу с фронта итема
« Ответ #1 : 02.10.2013, 20:24:45 »
по поводу оганичения могу посоветовать паттерны


заменить

Код
public function renderSubmission($params = array()) {
       return '<input type="text" name="'.$this->getControlName('value').'" size="60"  value="'.$this->_item->name.'" />';
}

на

Код
public function renderSubmission($params = array()) {
       return '<input type="text" name="'.$this->getControlName('value').'" size="60" pattern="[A-Za-zА-Яа-яЁё]{,20}" value="'.$this->_item->name.'" />';
}

где 20 максимальное количество символов, а [A-Za-zА-Яа-яЁё]  любое слово на англ и русском языках

или еще проще 

Код
public function renderSubmission($params = array()) {
       return '<input type="text" name="'.$this->getControlName('value').'" size="60" maxlength="20" value="'.$this->_item->name.'" />';
}

где 20 максимальное количество символов

по поводу проверки наличия имени, надо подумать как красивее сделать... думаю что лучше AJAX проверку
« Последнее редактирование: 02.10.2013, 20:51:43 от likrion »
R331474010295
*

tarkasha

  • Захожу иногда
  • 95
  • 0 / 0
Re: Ограничить подачу с фронта итема
« Ответ #2 : 03.10.2013, 12:19:59 »
по поводу оганичения могу посоветовать паттерны


заменить

Код
public function renderSubmission($params = array()) {
       return '<input type="text" name="'.$this->getControlName('value').'" size="60"  value="'.$this->_item->name.'" />';
}

на

Код
public function renderSubmission($params = array()) {
       return '<input type="text" name="'.$this->getControlName('value').'" size="60" pattern="[A-Za-zА-Яа-яЁё]{,20}" value="'.$this->_item->name.'" />';
}

где 20 максимальное количество символов, а [A-Za-zА-Яа-яЁё]  любое слово на англ и русском языках

или еще проще 

Код
public function renderSubmission($params = array()) {
       return '<input type="text" name="'.$this->getControlName('value').'" size="60" maxlength="20" value="'.$this->_item->name.'" />';
}

где 20 максимальное количество символов

по поводу проверки наличия имени, надо подумать как красивее сделать... думаю что лучше AJAX проверку

Действительно. Все работает. Подозревал про параметр maxlength, но не знал куда поставить. Спасибо Вам. А по поводу AJAX  действительно нужно подумать... )
*

likrion

  • Давно я тут
  • 750
  • 129 / 2
Re: Ограничить подачу с фронта итема
« Ответ #3 : 03.10.2013, 18:21:08 »
дайте адрес страницы подачи или ее HTML код для настройки realtime проверки наличия имени итема
R331474010295
*

tarkasha

  • Захожу иногда
  • 95
  • 0 / 0
Re: Ограничить подачу с фронта итема
« Ответ #4 : 04.10.2013, 00:59:50 »
дайте адрес страницы подачи или ее HTML код для настройки realtime проверки наличия имени итема
К сожалению у меня сайт на локалке, так что высылаю код подачи. очень рад что Вы заинтересовались моей проблемой.
Код
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns:fb="http://www.facebook.com/2008/fbml" xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru-ru" lang="ru-ru">
<head>
  <base href="http://flash123.ru/index.php/add" />
  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  <meta name="generator" content="Joomla! - Open Source Content Management" />
  <title>Добавить Добавить Flash игру</title>
  <link href="/templates/zt_pandy/favicon.ico" rel="shortcut icon" type="image/vnd.microsoft.icon" />
  <link href="http://flash123.ru/index.php/component/search/?Itemid=123&amp;format=opensearch" rel="search" title="Искать flash" type="application/opensearchdescription+xml" />
  <link rel="stylesheet" href="/media/system/css/modal.css" type="text/css" />
  <link rel="stylesheet" href="/components/com_k2/css/k2.css" type="text/css" />
  <link rel="stylesheet" href="/media/zoo/assets/css/reset.css?ver=20130520" type="text/css" />
  <link rel="stylesheet" href="/media/zoo/applications/movie/templates/default/assets/css/zoo.css?ver=20130520" type="text/css" />
  <link rel="stylesheet" href="/media/zoo/libraries/jquery/jquery-ui.custom.css?ver=20130520" type="text/css" />
  <link rel="stylesheet" href="/media/zoo/libraries/jquery/plugins/timepicker/timepicker.css?ver=20130520" type="text/css" />
  <link rel="stylesheet" href="/media/zoo/assets/css/submission.css?ver=20130520" type="text/css" />
  <link rel="stylesheet" href="/cache/widgetkit/widgetkit-8e6fe1a0.css" type="text/css" />
  <link rel="stylesheet" href="http://flash123.ru/templates/zt_pandy/zt_menus/zt_megamenu/zt.megamenu.css" type="text/css" />
  <link rel="stylesheet" href="http://flash123.ru/templates/system/css/system.css" type="text/css" />
  <link rel="stylesheet" href="http://flash123.ru/templates/system/css/general.css" type="text/css" />
  <link rel="stylesheet" href="http://flash123.ru/templates/zt_pandy/css/default.css" type="text/css" />
  <link rel="stylesheet" href="http://flash123.ru/templates/zt_pandy/css/template.css" type="text/css" />
  <link rel="stylesheet" href="http://flash123.ru/templates/zt_pandy/css/css3.css" type="text/css" />
  <link rel="stylesheet" href="http://flash123.ru/templates/zt_pandy/css/typo.css" type="text/css" />
  <link rel="stylesheet" href="http://flash123.ru/templates/zt_pandy/css/fonts.css" type="text/css" />
  <link rel="stylesheet" href="http://flash123.ru/components/com_community/templates/blueface/css/style.css" type="text/css" />
  <link rel="stylesheet" href="http://flash123.ru/components/com_community/assets/window.css" type="text/css" />
  <link rel="stylesheet" href="http://flash123.ru/modules/mod_hellome/style.css" type="text/css" />
  <link rel="stylesheet" href="/modules/mod_zooitem/tmpl/list/style.css?ver=20130520" type="text/css" />
  <link rel="stylesheet" href="/media/zoo/elements/rating/assets/css/rating.css?ver=20130520" type="text/css" />
  <link rel="stylesheet" href="/templates/zt_pandy/css/style_click.css" type="text/css" />
  <script src="/media/system/js/mootools-core.js" type="text/javascript"></script>
  <script src="/media/system/js/core.js" type="text/javascript"></script>
  <script src="/media/system/js/mootools-more.js" type="text/javascript"></script>
  <script src="/media/system/js/modal.js" type="text/javascript"></script>
  <script src="/components/com_k2/js/k2.js" type="text/javascript"></script>
  <script src="/media/zoo/libraries/jquery/jquery.js?ver=20130520" type="text/javascript"></script>
  <script src="/components/com_zoo/assets/js/default.js?ver=20130520" type="text/javascript"></script>
  <script src="/media/zoo/libraries/jquery/jquery-ui.custom.min.js?ver=20130520" type="text/javascript"></script>
  <script src="/media/zoo/libraries/jquery/plugins/timepicker/timepicker.js?ver=20130520" type="text/javascript"></script>
  <script src="/media/zoo/assets/js/submission.js?ver=20130520" type="text/javascript"></script>
  <script src="/media/zoo/assets/js/placeholder.js?ver=20130520" type="text/javascript"></script>
  <script src="/media/zoo/assets/js/item.js?ver=20130520" type="text/javascript"></script>
  <script src="/media/zoo/assets/js/finder.js?ver=20130520" type="text/javascript"></script>
  <script src="/media/zoo/elements/download/assets/js/download.js?ver=20130520" type="text/javascript"></script>
  <script src="/media/zoo/elements/image/image.js?ver=20130520" type="text/javascript"></script>
  <script src="/media/zoo/elements/media/assets/js/media.js?ver=20130520" type="text/javascript"></script>
  <script src="/cache/widgetkit/widgetkit-9f01cd51.js" type="text/javascript"></script>
  <script src="http://flash123.ru/templates/zt_pandy/zt_menus/zt_megamenu/zt.megamenu.js" type="text/javascript"></script>
  <script src="/media/system/js/caption.js" type="text/javascript"></script>
  <script src="http://flash123.ru/templates/zt_pandy/js/zt.script.js" type="text/javascript"></script>
  <script src="http://flash123.ru/components/com_community/assets/joms.jquery.js" type="text/javascript"></script>
  <script src="http://flash123.ru/components/com_community/assets/script-1.2.js" type="text/javascript"></script>
  <script src="http://flash123.ru/components/com_community/assets/window-1.0.js" type="text/javascript"></script>
  <script src="/media/zoo/elements/rating/assets/js/rating.js?ver=20130520" type="text/javascript"></script>
  <script src="/modules/mod_zt_accordion_menu/assets/js/zt.accordion_click.js" type="text/javascript"></script>
  <script type="text/javascript">

window.addEvent('domready', function() {

SqueezeBox.initialize({});
SqueezeBox.assign($$('a.modal'), {
parse: 'rel'
});
});
var K2SitePath = '/';
window.addEvent('load', function() {
new JCaption('1');
});
  </script>
  <script type='text/javascript'>
/*<![CDATA[*/
var jax_live_site = 'http://flash123.ru/index.php';
var jax_site_type = '1.5';
var jax_token_var='25b5ca61ad86560817629fe7e0a97a00';
/*]]>*/
</script><script type="text/javascript" src="http://flash123.ru/plugins/system/azrul.system/pc_includes/ajax_1.5.pack.js"></script>

<link href="http://flash123.ru/templates/zt_pandy//css/colors/.css" rel="stylesheet" type="text/css" />
<script type="text/javascript">
var baseurl = "http://flash123.ru/";
var ztpathcolor = 'http://flash123.ru/templates/zt_pandy//css/colors/';
var tmplurl = 'http://flash123.ru/templates/zt_pandy/';
var CurrentFontSize = parseInt('3');
</script>
<!--[if lte IE 7]>
<link rel="stylesheet" href="http://flash123.ru/templates/zt_pandy/css/ie7.css" type="text/css" />
<![endif]-->
</head>
<body id="bd" class="fs3   ltr">
<div id="zt-wrapper">
<div id="zt-wrapper-inner">

<div id="zt-header" class="clearfix">
<div class="zt-wrapper">
<div id="zt-header-inner">

<div id="zt-logo">
<a class="png" href="http://flash123.ru/" title="flash"></a><span>flash</span>
</div>


<div id="zt-search">
<div class="moduletable">
<form action="/index.php/add" method="post">
<div class="search">
<label for="mod-search-searchword">Искать...</label><input name="searchword" id="mod-search-searchword" maxlength="20"  class="inputbox" type="text" size="20" value="Поиск..."  onblur="if (this.value=='') this.value='Поиск...';" onfocus="if (this.value=='Поиск...') this.value='';" /><input type="submit" value="Search" class="button" onclick="this.form.searchword.focus();"/> <input type="hidden" name="task" value="search" />
<input type="hidden" name="option" value="com_search" />
<input type="hidden" name="Itemid" value="123" />
</div>
</form>
</div>

</div>

</div>
</div>
</div>
   
<div id="zt-mainmenu" class="clearfix">
<div class="zt-wrapper">
<div id="zt-mainmenu-inner">
<div class="menusys_mega"><ul id="menusys_mega" class="level0"><li class="first-item  item"><a href="/"  class=' item' id="menusys70"  title="Главная"><span class="no-image"><span class="menu-title">Главная</span></span></a></li><li class=" active"><a href="/index.php/add"  class='item active' id="menusys123"  title="Добавить игру"><span class="no-image"><span class="menu-title">Добавить игру</span></span></a></li><li class="last-item  item"><a href="/index.php/jomsocial"  class=' item' id="menusys192"  title="JomSocial"><span class="no-image"><span class="menu-title">JomSocial</span></span></a></li></ul><script type="text/javascript"> /*<![CDATA[ */ window.addEvent("domready", function(){var _smart = Array();var megas = $(document.body).getElements('div[class="menusub_mega"]');megas.each(function(mega, i){var id = mega.getProperty("id").split("_");if(id[2] != null){var smart = "_" + id[1] + "_" + id[2];_smart.include(smart); }});_smart.each(function(item, index){ZTMenu(350, 0, 0, item, "megamenu_close", true, 350, Fx.Transitions.linear);});}); /* ]]> */ </script></div> </div>
</div>
</div>





<!-- MAINBODY -->
<div id="zt-mainbody" class="clearfix">
<div id="zt-mainbody-t">
<div id="zt-mainbody-b">
<div id="zt-mainbody-c">

<div class="zt-wrapper">
<div id="zt-mainbody-inner">

<!-- CONTAINER -->
<div id="zt-container" class="clearfix">

<div id="zt-left">
<div id="zt-left-inner">
<div class="moduletable_menu">
<div class="module-head clearfix">
<div class="module-head-inner">
<h3 class="moduletitle">Flash<span> игры</span></h3>
</div>
</div>

<div class="modulecontent-l clearfix">
<div class="modulecontent-r">
<div class="modulecontent-inner">
<script language="javascript">
var exppand_active = false;var slide = false;</script>

<div class="jv_aclickmenu_wrap">
<div id="jv_amenu_side116">
<ul class="jv_maccordion menu"><li id="jv_amenu116_122" class="jv_amenu_item last-child"><a style="display:block;" href="/index.php/action">Стрелялки</a><div class="clear"></div></li><li id="jv_amenu116_159" class="jv_amenu_item last-child"><a style="display:block;" href="/index.php/racing">Гонки</a><div class="clear"></div></li><li id="jv_amenu116_160" class="jv_amenu_item last-child"><a style="display:block;" href="/index.php/strategy">Стратегии</a><div class="clear"></div></li><li id="jv_amenu116_161" class="jv_amenu_item last-child"><a style="display:block;" href="/index.php/flight">Леталки</a><div class="clear"></div></li><li id="jv_amenu116_162" class="jv_amenu_item last-child"><a style="display:block;" href="/index.php/arcade">Аркады</a><div class="clear"></div></li><li id="jv_amenu116_163" class="jv_amenu_item last-child"><a style="display:block;" href="/index.php/quests">Квесты</a><div class="clear"></div></li><li id="jv_amenu116_164" class="jv_amenu_item last-child"><a style="display:block;" href="/index.php/table">Настольные</a><div class="clear"></div></li><li id="jv_amenu116_165" class="jv_amenu_item last-child"><a style="display:block;" href="/index.php/sports">Спортивные</a><div class="clear"></div></li><li id="jv_amenu116_166" class="jv_amenu_item last-child"><a style="display:block;" href="/index.php/rpg">RPG, приключения</a><div class="clear"></div></li><li id="jv_amenu116_167" class="jv_amenu_item last-child"><a style="display:block;" href="/index.php/logic">Логические</a><div class="clear"></div></li><li id="jv_amenu116_168" class="jv_amenu_item last-child"><a style="display:block;" href="/index.php/fights">Драки</a><div class="clear"></div></li><li id="jv_amenu116_169" class="jv_amenu_item last-child"><a style="display:block;" href="/index.php/gambling">Азартные</a><div class="clear"></div></li></ul> </div>
</div> </div>
</div>
</div>
<div class="module-br clearfix"><div class="module-bl"></div></div>
</div>
<div class="moduletable">
<div class="module-head clearfix">
<div class="module-head-inner">
<h3 class="moduletitle">Poll<span> Custom</span></h3>
</div>
</div>

<div class="modulecontent-l clearfix">
<div class="modulecontent-r">
<div class="modulecontent-inner">


<div class="custom"  >
<div class="zt-poll">
    <div class="zt-poll-inner">
      <p>Joomla! is used for?</p>
        <ul id="joom">
        <li><span class="expand joom1"></span><em>Community Sites </em></li>
        <li><span class="expand joom2"></span><em>Public Brand Sites </em></li>
        <li><span class="expand joom3"></span><em>eCommerce </em></li>
        <li><span class="expand joom4"></span><em>Blogs</em></li>
        <li><span class="expand joom5"></span><em>Photo and Media Sites </em></li>
        </ul>
    </div>
</div></div>
</div>
</div>
</div>
<div class="module-br clearfix"><div class="module-bl"></div></div>
</div>
<div class="moduletable">
<div class="module-head clearfix">
<div class="module-head-inner">
<h3 class="moduletitle">Statistics</h3>
</div>
</div>

<div class="modulecontent-l clearfix">
<div class="modulecontent-r">
<div class="modulecontent-inner">
<ul class="static">
<li>
<span class="color1">ОС : </span> <strong class="color2">Windows </strong><br />
</li>
<li>
<span class="color1">PHP : </span> <strong class="color2">5.3.13 </strong><br />
</li>
<li>
<span class="color1">MySQL : </span> <strong class="color2">5.1.40-community </strong><br />
</li>
<li>
<span class="color1">Время : </span> <strong class="color2">21:53 </strong><br />
</li>
<li>
<span class="color1">Кэширование : </span> <strong class="color2">Отключено </strong><br />
</li>
<li>
<span class="color1">GZip : </span> <strong class="color2">Отключено </strong><br />
</li>
<li>
<span class="color1">Посетители : </span> <strong class="color2">2 </strong><br />
</li>
<li>
<span class="color1">Материалы : </span> <strong class="color2">59 </strong><br />
</li>
<li>
<span class="color1">Cсылки : </span> <strong class="color2">6 </strong><br />
</li>
<li>
<span class="color1">Количество просмотров материалов : </span> <strong class="color2">1898 </strong><br />
</li>
</ul> </div>
</div>
</div>
<div class="module-br clearfix"><div class="module-bl"></div></div>
</div>

</div>
</div>

<div id="zt-content">
<div id="zt-maincontent-inset">

<div id="zt-maininset">You are here: <span class="breadcrumbs pathway">
<a href="/" class="pathway">Home</a> <img src="/media/system/images/arrow.png" alt=""  /> Добавить игру</span>

</div>


<div id="zt-component" class="clearfix">

<div id="system-message-container">
</div>
   
<div id="yoo-zoo" class="yoo-zoo movie-default movie-default-add-flash-game">

<div class="submission">

<h1 class="headline">Добавить Добавить Flash игру</h1>



<form id="item-submission" action="/index.php/add/submission/submission/add-flash-game/flash-module-main/ef447152c496b0fd61d4180dd62321f4/" method="post" name="submissionForm" accept-charset="utf-8" enctype="multipart/form-data">


<fieldset class="pos-content creation-form">
<legend>Добавить Flash игру</legend>

<div class="element element-itemname first required">
<strong>Название</strong><input type="text" name="elements[_itemname][value]" size="60" maxlength="20" value="" /></div>
<div class="element element-download required">
<strong>Файл SWF</strong>
<div id="34de5a12-1ce0-4615-ba37-6c8e7b2bbb7d">

<div class="download-select">

<div class="upload">
<input type="text" id="filename34de5a12-1ce0-4615-ba37-6c8e7b2bbb7d" readonly="readonly" />
<div class="button-container">
<button class="button-grey search" type="button">Обзор</button>
<input type="file" name="elements_34de5a12-1ce0-4615-ba37-6c8e7b2bbb7d" onchange="javascript: document.getElementById('filename34de5a12-1ce0-4615-ba37-6c8e7b2bbb7d').value = this.value.replace(/^.*[\/\\]/g, '');" />
</div>
</div>


<input type="hidden" class="upload" name="elements[34de5a12-1ce0-4615-ba37-6c8e7b2bbb7d][upload]" value="" />

       
    </div>

    <div class="download-preview">
        <span class="preview"></span>
        <span class="download-cancel" title=""></span>
    </div>

   
    <script type="text/javascript">
jQuery(function($) {
$('#34de5a12-1ce0-4615-ba37-6c8e7b2bbb7d').DownloadSubmission();
});
    </script>

</div></div>
<div class="element element-image required">
<strong>Изображение</strong>
<div class="9fc70ed2-ec02-4195-a169-9c4b6aea6760">

<div class="image-select">

<div class="upload">
<input type="text" id="filename9fc70ed2-ec02-4195-a169-9c4b6aea6760" readonly="readonly" />
<div class="button-container">
<button class="button-grey search" type="button">Обзор</button>
<input type="file" name="elements_9fc70ed2-ec02-4195-a169-9c4b6aea6760" onchange="javascript: document.getElementById('filename9fc70ed2-ec02-4195-a169-9c4b6aea6760').value = this.value.replace(/^.*[\/\\]/g, '');" />
</div>
</div>


<input type="hidden" class="image" name="elements[9fc70ed2-ec02-4195-a169-9c4b6aea6760][image]" value="">


</div>

<div class="image-preview">
<img src="/" alt="preview">
<span class="image-cancel" title=""></span>
</div>


</div>

<script>

jQuery(function($) {
$('#item-submission .9fc70ed2-ec02-4195-a169-9c4b6aea6760').ImageSubmission({ uri: 'http://flash123.ru/' });
});

</script></div>
<div class="element element-itemcategory required">
<strong>Жанр</strong><select id="elements_itemcategoryvalue" name="elements[_itemcategory][value][]" size="15">
<option value="1">&nbsp;&nbsp;-&nbsp;Стрелялки</option>
<option value="10">&nbsp;&nbsp;-&nbsp;Квесты</option>
<option value="9">&nbsp;&nbsp;-&nbsp;Настольные</option>
<option value="12">&nbsp;&nbsp;-&nbsp;Леталки</option>
<option value="7">&nbsp;&nbsp;-&nbsp;Спортивные</option>
<option value="8">&nbsp;&nbsp;-&nbsp;RPG, приключения</option>
<option value="5">&nbsp;&nbsp;-&nbsp;Логические</option>
<option value="4">&nbsp;&nbsp;-&nbsp;Драки</option>
<option value="3">&nbsp;&nbsp;-&nbsp;Азартные</option>
<option value="2">&nbsp;&nbsp;-&nbsp;Аркады</option>
<option value="6">&nbsp;&nbsp;-&nbsp;Стратегии</option>
<option value="11">&nbsp;&nbsp;-&nbsp;Гонки</option>
</select>
</div>
<div class="element element-textarea">
<strong>Описание</strong><div class="repeatable-content">

<textarea name="elements[94d8ce7e-dff2-4842-814d-119beeca2eb3][0][value]" cols=60 rows=20 />Описание отсутствует</textarea>

</div>
<span class="delete" title="Удалить элемент"></span></div>
<div class="element element-media last">
<strong>.</strong>
<div>

    <div class="row">
       
<input type="text" name="elements[5a4a560f-c1d5-41e7-a077-71f9c7838898][url]" value="" class="url" size="50" maxlength="255" title="URL" placeholder="URLd" />
    </div>

   
</div></div>
</fieldset>




<p class="info">Поля, отмеченные (*), – обязательны.</p>

<div class="submit">
<button type="submit" id="submit-button" class="button-green">ДОБАВИТЬ</button>
</div>

<input type="hidden" name="option" value="com_zoo" />
<input type="hidden" name="controller" value="submission" />
<input type="hidden" name="task" value="save" />

<input type="hidden" name="25b5ca61ad86560817629fe7e0a97a00" value="1" />
</form>

<script type="text/javascript">
jQuery(function($) {
$('#item-submission').EditItem();
$('#item-submission').Submission({ uri: 'http://flash123.ru/' });
});
</script>
</div>

</div>
</div>





</div>
</div>

<div id="zt-right">
<div id="zt-right-inner">
<div class="moduletable">
<div class="module-head clearfix">
<div class="module-head-inner">
<h3 class="moduletitle">Авторизация</h3>
</div>
</div>

<div class="modulecontent-l clearfix">
<div class="modulecontent-r">
<div class="modulecontent-inner">
<div class="hello-me">
<form action="/index.php/component/users/?task=user.login" method="post" name="form-login" id="form-login" >
<fieldset class="input">
<p id="form-login-username">
<label for="username">
Логин<br />
<input name="username" id="username" type="text" class="inputbox" alt="username" size="18" />
</label>
</p>
<p id="form-login-password">
<label for="passwd">
Пароль<br />
<input type="password" name="password" id="passwd" class="inputbox" size="18" alt="password" />
</label>
</p>
<p id="form-login-remember">
<label for="remember">
Запомнить меня <input type="checkbox" name="remember" id="remember" value="yes" alt="Remember Me" />
</label>
</p>
<input type="submit" name="Submit" class="button" value="Войти" />
</fieldset>
<div class="Gbutton">
<a style="color: white;" href="/index.php/jomsocial/register" >
Регистрация </a>
</div>
<div class="Gcentertools">
<div>
<a href="/index.php/component/users/?view=reset">
Забыли пароль? </a>
</div>
<div>
<a href="/index.php/component/users/?view=remind">
Забыли логин? </a>
</div>
<div>
<a href="/index.php/jomsocial/register/activation" class="login-forgot-username">
<span>Запросить код активации</span>
</a>
</div>
</div>

<input type="hidden" name="option" value="com_users" />
<input type="hidden" name="task" value="user.login" />
<input type="hidden" name="return" value="L2luZGV4LnBocC9qb21zb2NpYWwvcHJvZmlsZQ==" />
<input type="hidden" name="25b5ca61ad86560817629fe7e0a97a00" value="1" /> </form>
</div> </div>
</div>
</div>
<div class="module-br clearfix"><div class="module-bl"></div></div>
</div>
<div class="moduletable">
<div class="module-head clearfix">
<div class="module-head-inner">
<h3 class="moduletitle">Популярное</h3>
</div>
</div>

<div class="modulecontent-l clearfix">
<div class="modulecontent-r">
<div class="modulecontent-inner">


<ul class="zoo-item-list zoo-list">
<li>
<div class="layout-default ">

<div class="media media-left">
<a href="/index.php/action/item/mario"   title="Mario somer quest"  ><img src="http://flash123.ru/cache/com_zoo/images/179-1_bbf88517999ea35916f5729c4b867634.jpg" title="Mario somer quest" alt="Mario somer quest" width="52" height="52" /></a>
 </div>

<p class="title"> <a title="Mario somer quest" href="/index.php/action/item/mario">Mario somer quest</a> </p>

<p class="meta"><span class="element element-itemcategory first last">
<a href="/index.php/action">Стрелялки</a></span></p>


<div class="description"><div class="element element-rating first last">
<div id="055c3bd0-006d-4d0b-a3e9-84873b291e36-524de7702813a" class="yoo-zoo rating">

<div class="rating-container star5">
<div class="previous-rating" style="width: 100%;"></div>

</div>

</div>
</div></div>



</div></li>
<li>
<div class="layout-default ">

<div class="media media-left">
<a href="/index.php/action/item/marrior"   title="Marrior"  ><img src="http://flash123.ru/cache/com_zoo/images/179-5_01ff492dddc41abbcfe5c3c3e98ef855.jpg" title="Marrior" alt="Marrior" width="52" height="52" /></a>
 </div>

<p class="title"> <a title="Marrior" href="/index.php/action/item/marrior">Marrior</a> </p>

<p class="meta"><span class="element element-itemcategory first last">
<a href="/index.php/action">Стрелялки</a></span></p>


<div class="description"><div class="element element-rating first last">
<div id="055c3bd0-006d-4d0b-a3e9-84873b291e36-524de7703555c" class="yoo-zoo rating">

<div class="rating-container star5">
<div class="previous-rating" style="width: 80%;"></div>

</div>

</div>
</div></div>



</div></li>
<li>
<div class="layout-default ">

<div class="media media-left">
<a href="/index.php/action/item/snuu"   title="snuu"  ><img src="http://flash123.ru/cache/com_zoo/images/adresse-303-billiard_9c0fd98a32e441a8df50368916a32d41.jpg" title="snuu" alt="snuu" width="52" height="52" /></a>
 </div>

<p class="title"> <a title="snuu" href="/index.php/action/item/snuu">snuu</a> </p>

<p class="meta"><span class="element element-itemcategory first last">
<a href="/index.php/action">Стрелялки</a></span></p>


<div class="description"><div class="element element-rating first last">
<div id="055c3bd0-006d-4d0b-a3e9-84873b291e36-524de770424c7" class="yoo-zoo rating">

<div class="rating-container star5">
<div class="previous-rating" style="width: 60%;"></div>

</div>

</div>
</div></div>



</div></li>
<li>
<div class="layout-default ">

<div class="media media-left">
<a href="/index.php/action/item/skdhfkshdkhgiehwgohegpwhpeghwhghepgsgphsphgphseghsphigshpghsphgposhgops"   title="skdhfkshdkhgiehwgohegpwhpeghwhghepgsgphsphgphseghsphigshpghsphgposhgops"  ><img src="http://flash123.ru/cache/com_zoo/images/linker_18705bef414dc6755dbd7d7dc862656d.png" title="skdhfkshdkhgiehwgohegpwhpeghwhghepgsgphsphgphseghsphigshpghsphgposhgops" alt="skdhfkshdkhgiehwgohegpwhpeghwhghepgsgphsphgphseghsphigshpghsphgposhgops" width="52" height="52" /></a>
 </div>

<p class="title"> <a title="skdhfkshdkhgiehwgohegpwhpeghwhghepgsgphsphgphseghsphigshpghsphgposhgops" href="/index.php/action/item/skdhfkshdkhgiehwgohegpwhpeghwhghepgsgphsphgphseghsphigshpghsphgposhgops">skdhfkshdkhgiehwgohegpwhpeghwhghepgsgphsphgphseghsphigshpghsphgposhgops</a> </p>

<p class="meta"><span class="element element-itemcategory first last">
<a href="/index.php/action">Стрелялки</a></span></p>


<div class="description"><div class="element element-rating first last">
<div id="055c3bd0-006d-4d0b-a3e9-84873b291e36-524de7704f332" class="yoo-zoo rating">

<div class="rating-container star5">
<div class="previous-rating" style="width: 40%;"></div>

</div>

</div>
</div></div>



</div></li>
<li>
<div class="layout-default ">

<div class="media media-left">
<a href="/index.php/action/item/1234"   title="1234"  ><img src="http://flash123.ru/cache/com_zoo/images/179-4_50f999eb7d94942c70f4a6b4ef034705.jpg" title="1234" alt="1234" width="52" height="52" /></a>
 </div>

<p class="title"> <a title="1234" href="/index.php/action/item/1234">1234</a> </p>

<p class="meta"><span class="element element-itemcategory first last">
<a href="/index.php/action">Стрелялки</a></span></p>


<div class="description"><div class="element element-rating first last">
<div id="055c3bd0-006d-4d0b-a3e9-84873b291e36-524de7705bd47" class="yoo-zoo rating">

<div class="rating-container star5">
<div class="previous-rating" style="width: 20%;"></div>

</div>

</div>
</div></div>



</div></li>
<li>
<div class="layout-default ">

<div class="media media-left">
<a href="/index.php/action/item/op"   title="op"  ><img src="http://flash123.ru/cache/com_zoo/images/179-6_27a95c57afa9534a49ca406df6791dd9.jpg" title="op" alt="op" width="52" height="52" /></a>
 </div>

<p class="title"> <a title="op" href="/index.php/action/item/op">op</a> </p>

<p class="meta"><span class="element element-itemcategory first last">
<a href="/index.php/action">Стрелялки</a></span></p>


<div class="description"><div class="element element-rating first last">
<div id="055c3bd0-006d-4d0b-a3e9-84873b291e36-524de77068971" class="yoo-zoo rating">

<div class="rating-container star5">
<div class="previous-rating" style="width: 0%;"></div>

</div>

</div>
</div></div>



</div></li>
</ul>

</div>
</div>
</div>
<div class="module-br clearfix"><div class="module-bl"></div></div>
</div>

</div>
</div>
<!-- END CONTAINER -->

</div>

</div>
</div>

</div>
</div>
</div>
</div>
<!-- END MAINBODY -->


<div id="zt-userwrap7" class="clearfix png">
<div class="zt-wrapper">
<div id="zt-userwrap7-inner">
<div id="zt-logo-into">
<a class="png" href="http://flash123.ru/" title="flash"></a>
</div>
<div id="zt-footermenu">
<div id="zt-footermenu-inner">
<ul class="menu">
<li class="item-28"><a href="http://www.zootemplate.com/Contact-Us/Support.html" >Contact Us</a></li><li class="item-29"><a href="/index.php/features" >Features</a></li><li class="item-18"><a href="/index.php/news" >News</a></li><li class="item-30"><a href="/index.php/the-community" >The Community</a></li></ul>


<div class="custom"  >
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script type="text/javascript">
jQuery.noConflict();
    jQuery(document).ready(function()
            {

            jQuery('div.button-container>input[type=file]:first').on('change', function()
              {
                var val = jQuery('div.upload>input:first').val();
                 jQuery('div.row>input.url').val('/images/zoo/uploads/'+val);
              });
    });
</script>
</div>
</div>
</div>
</div>
</div>
</div>

<div id="zt-bottom" class="clearfix">
<div class="zt-wrapper">
<div id="zt-bottom-inner">
<div id="zt-copyright">
Copyright &copy; 2008 - 2013 <a href="http://www.zootemplate.com" title="Joomla Templates">Joomla Templates</a>  by ZooTemplate.Com. All rights reserved.
</div>
<div id="zt-footer" class="clearfix">

</div>
</div>
</div>
</div>


</div>
</div>

</body>
</html>

*

likrion

  • Давно я тут
  • 750
  • 129 / 2
Re: Ограничить подачу с фронта итема
« Ответ #5 : 05.10.2013, 03:47:32 »
http://likrion.net/test  такой вариант подойдет?


попробуйте ввести либое слово или для отказа название любого моего елемента
R331474010295
*

tarkasha

  • Захожу иногда
  • 95
  • 0 / 0
Re: Ограничить подачу с фронта итема
« Ответ #6 : 05.10.2013, 13:18:15 »
http://likrion.net/test  такой вариант подойдет?


попробуйте ввести либое слово или для отказа название любого моего елемента
Это просто гениально. То что доктор прописал. А данная проверка при обнаружении повторяемого названия будет препятствовать подаче итема?
*

likrion

  • Давно я тут
  • 750
  • 129 / 2
Re: Ограничить подачу с фронта итема
« Ответ #7 : 05.10.2013, 14:12:48 »
да, при совпадении имен форма просто не будет отправляться, допишу js до нормального вида и выложу решение
R331474010295
*

tarkasha

  • Захожу иногда
  • 95
  • 0 / 0
Re: Ограничить подачу с фронта итема
« Ответ #8 : 05.10.2013, 14:16:31 »
да, при совпадении имен форма просто не будет отправляться, допишу js до нормального вида и выложу решение
Спасибо. С нетерпением жду.
*

likrion

  • Давно я тут
  • 750
  • 129 / 2
Re: Ограничить подачу с фронта итема
« Ответ #9 : 06.10.2013, 05:23:45 »
в файле media/zoo/elements/itemname/itemname.php

заменить


Код: php

public function renderSubmission($params = array()) {
       return '<input type="text" name="'.$this->getControlName('value').'" size="60"  value="'.$this->_item->name.'" />';
}



на

Код: php

public function renderSubmission($params = array()) {
$this->app->document->addScript('elements:itemname/itemname.js') ;
$dval = 0;    
if(isset($_POST["value"]) && trim($_POST["value"])!= "") {
$db =& JFactory::getDBO();
                        $sql="SELECT COUNT('id') FROM `#__zoo_item` WHERE  `#__zoo_item`.`name` = '$_POST[value]'";
                        $db->setQuery($sql);
                        $val = $db->loadResult();
                        ($val != '0')? $dval = 1 :null;
}
return '<input type="text" data-val="'.$dval.'" name="'.$this->getControlName('value').'" size="60" minlength="3" maxlength="20" value="'.$this->_item->name.'" />';
}


далее поместить прикрепленный itemname.js в папку media/zoo/elements/itemname/

листинг  itemname.js

Код: javascript

jQuery(document).ready(function(){
jQuery('div.element-itemname').append('<span></span>');
jQuery('div.element-itemname > input').on('keyup', function(){
var text = jQuery(this).val();
if (text.length > 2){
jQuery.post(window.location.href ,{value: text}, function(data){
var val = jQuery(data).find('div.element-itemname > input').data('val');
if (val == 1){
                                        jQuery('#item-submission').submit(function() {return false;});
jQuery('div.element-itemname > input').css('border-color','red');
jQuery('div.element-itemname > span').html('<span style="color:red; margin-left:15px">Это название уже занято</span>');
}else{
jQuery('div.element-itemname > input').css('border-color','green');
jQuery('div.element-itemname > span').html('<span style="color:green; margin-left:15px">Это название свободно</span>');
}
});
}
});
});


жесть.. поймал себя на мысли что пишу jquery из головы... :laugh:
у кого козябры перекодируйте данный файл в utf8 без BOM

Спойлер
[свернуть]

Спойлер
[свернуть]
« Последнее редактирование: 06.10.2013, 05:36:27 от likrion »
R331474010295
*

tarkasha

  • Захожу иногда
  • 95
  • 0 / 0
Re: Ограничить подачу с фронта итема
« Ответ #10 : 06.10.2013, 13:42:56 »
Тему можно закрывать. :D
« Последнее редактирование: 06.10.2013, 17:27:03 от tarkasha »
*

-Dima-

  • Захожу иногда
  • 85
  • 14 / 0
Re: Ограничить подачу с фронта итема
« Ответ #11 : 10.10.2013, 15:29:44 »
Цитировать
$sql="SELECT COUNT('id') FROM `#__zoo_item` WHERE  `#__zoo_item`.`name` = '$_POST[value]'";

вот так запросто вставлять данные из POST... не боитесь, что поламают?
*

tarkasha

  • Захожу иногда
  • 95
  • 0 / 0
Re: Ограничить подачу с фронта итема
« Ответ #12 : 10.10.2013, 15:33:31 »
вот так запросто вставлять данные из POST... не боитесь, что поламают?
Предложите альтернативу.
*

likrion

  • Давно я тут
  • 750
  • 129 / 2
Re: Ограничить подачу с фронта итема
« Ответ #13 : 10.10.2013, 17:43:24 »
Код: PHP
public function renderSubmission($params = array()) {
$this->app->document->addScript('elements:itemname/itemname.js') ;
$dval = 0;     
if(isset($_POST["value"]) && trim($_POST["value"])!= "") {
$db =& JFactory::getDBO();
$_POST["value"] = htmlspecialchars(stripslashes($_POST["value"]));
$_POST["value"] = str_ireplace("script", "blocked", $_POST["value"]);
$_POST["value"] = mysql_escape_string($_POST["value"]);
                        $sql="SELECT COUNT('id') FROM `#__zoo_item` WHERE  `#__zoo_item`.`name` = '$_POST[value]'";
                        $db->setQuery($sql);
                        $val = $db->loadResult();
                        ($val != '0')? $dval = 1 :null;
}
return '<input type="text" data-val="'.$dval.'" name="'.$this->getControlName('value').'" size="60" minlength="3" maxlength="20" value="'.$this->_item->name.'" />';
}
 
R331474010295
*

tarkasha

  • Захожу иногда
  • 95
  • 0 / 0
Re: Ограничить подачу с фронта итема
« Ответ #14 : 01.11.2013, 12:41:38 »
Код: PHP
public function renderSubmission($params = array()) {
$this->app->document->addScript('elements:itemname/itemname.js') ;
$dval = 0;     
if(isset($_POST["value"]) && trim($_POST["value"])!= "") {
$db =& JFactory::getDBO();
$_POST["value"] = htmlspecialchars(stripslashes($_POST["value"]));
$_POST["value"] = str_ireplace("script", "blocked", $_POST["value"]);
$_POST["value"] = mysql_escape_string($_POST["value"]);
                        $sql="SELECT COUNT('id') FROM `#__zoo_item` WHERE  `#__zoo_item`.`name` = '$_POST[value]'";
                        $db->setQuery($sql);
                        $val = $db->loadResult();
                        ($val != '0')? $dval = 1 :null;
}
return '<input type="text" data-val="'.$dval.'" name="'.$this->getControlName('value').'" size="60" minlength="3" maxlength="20" value="'.$this->_item->name.'" />';
}
 
Гениально
*

tarkasha

  • Захожу иногда
  • 95
  • 0 / 0
Re: Ограничить подачу с фронта итема
« Ответ #15 : 01.11.2013, 21:00:31 »
Код: PHP
public function renderSubmission($params = array()) {
$this->app->document->addScript('elements:itemname/itemname.js') ;
$dval = 0;     
if(isset($_POST["value"]) && trim($_POST["value"])!= "") {
$db =& JFactory::getDBO();
$_POST["value"] = htmlspecialchars(stripslashes($_POST["value"]));
$_POST["value"] = str_ireplace("script", "blocked", $_POST["value"]);
$_POST["value"] = mysql_escape_string($_POST["value"]);
                        $sql="SELECT COUNT('id') FROM `#__zoo_item` WHERE  `#__zoo_item`.`name` = '$_POST[value]'";
                        $db->setQuery($sql);
                        $val = $db->loadResult();
                        ($val != '0')? $dval = 1 :null;
}
return '<input type="text" data-val="'.$dval.'" name="'.$this->getControlName('value').'" size="60" minlength="3" maxlength="20" value="'.$this->_item->name.'" />';
}
 
А вот чисто гипотетически моно ли это проделать с добавлением файла? Элемент Download :
Код Download.php:
Код
<?php
/**
* @package   com_zoo
* @author    YOOtheme http://www.yootheme.com
* @copyright Copyright (C) YOOtheme GmbH
* @license   http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
*/

// register ElementFile class
App::getInstance('zoo')->loader->register('ElementFile', 'elements:file/file.php');

/*
Class: ElementDownload
The file download element class
*/
class ElementDownload extends ElementFile implements iSubmittable {

/*
   Function: Constructor
*/
public function __construct() {

// call parent constructor
parent::__construct();

// set defaults
$this->config->set('secret', $this->app->system->config->getValue('config.secret'));

// set callbacks
$this->registerCallback('download');
$this->registerCallback('reset');
$this->registerCallback('files');
}

/*
Function: getSize
Gets the download file size.

Returns:
String - Download file with KB/MB suffix
*/
public function getSize() {
return $this->app->filesystem->formatFilesize($this->get('size', 0));
}

/*
Function: getSize
Gets the download file size.

Returns:
String - Download file with KB/MB suffix
*/
function isDownloadLimitReached() {
return ($limit = $this->get('download_limit')) && $this->get('hits', 0) >= $limit;
}

/*
Function: getLink
Gets the link to the download.

Returns:
String - link
*/
public function getLink() {

// init vars
$download_mode = $this->config->get('download_mode');

// create download link
$query = array('task' => 'callelement', 'format' => 'raw', 'item_id' => $this->_item->id, 'element' => $this->identifier, 'method' => 'download');

if ($download_mode == 1) {
return $this->app->link($query);
} else if ($download_mode == 2) {
$query['args[0]'] = $this->filecheck();
return $this->app->link($query);
} else {
return $this->get('file');
}

}

/*
Function: render
Renders the element.

   Parameters:
    $params - render parameter

Returns:
String - HTML
*/
public function render($params = array()) {

// init vars
$params = $this->app->data->create($params);
$file = $this->get('file');
$filename = basename($file);

// render layout
if ($layout = $this->getLayout()) {
return $this->renderLayout($layout,
array(
'file' => $file,
'filename' => $filename,
'size' => $this->getSize(),
'hits' => (int) $this->get('hits', 0),
'download_name' => $this->app->string->str_ireplace('{filename}', $filename, $params->get('download_name', '')),
'download_link' => $this->getLink(),
'filetype' => $this->getExtension(),
'display' => $params->get('display', null),
'limit_reached' => $this->isDownloadLimitReached(),
'download_limit' => $this->get('download_limit')
)
);
}
}

/*
Function: download
Download the file.

Returns:
Binary - File data
*/
public function download($check = '') {

// init vars
$filepath = $this->app->path->path('root:'.$this->get('file'));
$download_mode = $this->config->get('download_mode');

// check limit
if ($this->isDownloadLimitReached()) {
header('Content-Type: text/html');
echo JText::_('Download limit reached!');
return;
}

// trigger on download event
$canDownload = true;
$this->app->event->dispatcher->notify($this->app->event->create($this, 'element:download', array('check' => $check, 'canDownload' => &$canDownload)));

if ($canDownload) {

// output file
if ($download_mode == 1 && is_readable($filepath) && is_file($filepath)) {
$this->set('hits', $this->get('hits', 0) + 1);
$this->app->filesystem->output($filepath);
} else if ($download_mode == 2 && $this->filecheck() == $check && is_readable($filepath) && is_file($filepath)) {
$this->set('hits', $this->get('hits', 0) + 1);
$this->app->filesystem->output($filepath);
} else {
header('Content-Type: text/html');
echo JText::_('Invalid file!');
}

// save item
$this->app->table->item->save($this->getItem());

}

}

/*
   Function: filecheck
       Get the file check string.

   Returns:
       String - md5(file + secret + date)
*/
public function filecheck() {
return md5($this->get('file').$this->config->get('secret').date('Y-m-d'));
}

/*
   Function: edit
       Renders the edit form field.

   Returns:
       String - HTML
*/
public function edit(){

// create info
$info[] = JText::_('Size').': '.$this->getSize();
$info[] = JText::_('Hits').': '.(int)$this->get('hits', 0);
$info   = ' ('.implode(', ', $info).')';

        if ($layout = $this->getLayout('edit.php')) {
            return $this->renderLayout($layout,
                array(
'info' => $info,
                    'hits' => $this->get('hits', 0)
                )
            );
        }

}

/*
Function: loadAssets
Load elements css/js assets.

Returns:
Void
*/
public function loadAssets() {
parent::loadAssets();
$this->app->document->addScript('elements:download/assets/js/download.js');
}

public function reset() {

$this->set('hits', 0);

//save item
$this->app->table->item->save($this->getItem());

return $this->edit();
}

/*
Function: bindData
Set data through data array.

Parameters:
$data - array

Returns:
Void
*/
public function bindData($data = array()) {
parent::bindData($data);

// add size to data
$filepath = $this->app->path->path('root:'.$this->get('file'));
if (is_readable($filepath) && is_file($filepath)) {
$this->set('size', sprintf('%u', filesize($filepath)));
} else {
$this->set('size', 0);
}
}

/*
Function: renderSubmission
Renders the element in submission.

   Parameters:
            $params - AppData submission parameters

Returns:
String - HTML
*/
public function renderSubmission($params = array()) {

        // get params
        $trusted_mode = $params->get('trusted_mode');

        // init vars
        $upload = $this->get('file');

        if (empty($upload) && $trusted_mode) {
            $upload = $this->get('upload');
        }

        // is uploaded file
        $upload = is_array($upload)? '' : $upload;

        // build upload select
        $lists = array();
        if ($trusted_mode) {
            $options = array($this->app->html->_('select.option', '', '- '.JText::_('Select File').' -'));
            if (!empty($upload) && !$this->_inUploadPath($upload)) {
                $options[] = $this->app->html->_('select.option', $upload, '- '.JText::_('No Change').' -');
            }
foreach ($this->app->path->files('root:'.$this->_getUploadPath()) as $file) {
                $options[] = $this->app->html->_('select.option', $this->_getUploadPath().'/'.$file, basename($file));
            }
            $lists['upload_select'] = $this->app->html->_('select.genericlist', $options, $this->getControlName('upload'), 'class="upload"', 'value', 'text', $upload);
        }

        if (!empty($upload)) {
            $upload = basename($upload);
        }

        if ($layout = $this->getLayout('submission.php')) {
            return $this->renderLayout($layout,
                compact('lists', 'upload', 'trusted_mode')
            );
        }

}

/*
Function: validateSubmission
Validates the submitted element

   Parameters:
            $value  - AppData value
            $params - AppData submission parameters

Returns:
Array - cleaned value
*/
public function validateSubmission($value, $params) {

        // init vars
        $trusted_mode = $params->get('trusted_mode');

        // get old file value
$old_file = $this->get('file');

        $file = '';
        // get file from select list
        if ($trusted_mode && $file = $value->get('upload')) {

            if (!$this->_inUploadPath($file) && $file != $old_file) {
                throw new AppValidatorException(sprintf('This file is not located in the upload directory.'));
            }

            if (!JFile::exists($file)) {
                throw new AppValidatorException(sprintf('This file does not exist.'));
            }

        // get file from upload
        } else {

            try {

                // get the uploaded file information
                $userfile = $value->get('userfile', null);

// get legal extensions
$extensions = array_map(create_function('$ext', 'return strtolower(trim($ext));'), explode(',', $this->config->get('upload_extensions', 'swf')));

//get legal mime types
$legal_mime_types = $this->app->data->create(array_intersect_key($this->app->filesystem->getMimeMapping(), array_flip($extensions)))->flattenRecursive();

// get max upload size
$max_upload_size = $this->config->get('max_upload_size', '512') * 1024;
$max_upload_size = empty($max_upload_size)? null : $max_upload_size;

// validate
                $file = $this->app->validator
->create('file', array('mime_types' => $legal_mime_types, 'max_size' => $max_upload_size))
->addMessage('mime_types', 'Неверный формат файла, требуестя формат SWF.')
->clean($userfile);

            } catch (AppValidatorException $e) {

                if ($e->getCode()!= UPLOAD_ERR_NO_FILE) {
                    throw $e;
                }

                if (!$trusted_mode && $old_file && $value->get('upload')) {
                    $file = $old_file;
                }

            }

        }

        if ($params->get('required') && empty($file)) {
            throw new AppValidatorException('Пожалуйста, укажите файл для загрузки.');
        }

        $download_limit = (string) $this->app->validator
->create('integer', array('required' => false), array('number' => 'The Download Limit needs to be a number.'))
->clean($value->get('download_limit'));

// connect to submission beforesave event
$this->app->event->dispatcher->connect('submission:saved', array($this, 'submissionSaved'));

return compact('file', 'download_limit');
}

/*
Function: submissionSaved
Callback after item submission is saved

Returns:
void
*/
    public function submissionSaved() {

        // get the uploaded file information
        if (($userfile = $this->get('file')) && is_array($userfile)) {

            // get file name
            $ext = $this->app->filesystem->getExtension($userfile['name']);
            $base_path = JPATH_ROOT . '/' . $this->_getUploadPath(). '/';
            $file = $tmp = $base_path . $userfile['name'];
            $filename = basename($file, '.'.$ext);

            $i = 1;
            while (JFile::exists($tmp)) {
                $tmp = $base_path . $filename . '-' . $i++ . '.' . $ext;
            }
            $file = $this->app->path->relative($tmp);

            if (!JFile::upload($userfile['tmp_name'], $file)) {
                throw new AppException('Unable to upload file.');
            }

            $this->set('file', $file);

        }
    }

    protected function _inUploadPath($image) {
        return $this->_getUploadPath() == dirname($image);
    }

    protected function _getUploadPath() {
        return trim(trim($this->config->get('upload_directory', 'images/zoo/uploads/')), '\/');
    }

}
*

likrion

  • Давно я тут
  • 750
  • 129 / 2
Re: Ограничить подачу с фронта итема
« Ответ #16 : 01.11.2013, 23:23:21 »
туда думаю не стоит лезть... иначе все обернется шеллом... там и так все отлично
R331474010295
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Ограничить выгрузку товаров на Яндекс маркет

Автор xenos

Ответов: 0
Просмотров: 1230
Последний ответ 01.07.2015, 15:08:13
от xenos
Автоматическая публикация при добавлении материалов с фронта сайта?

Автор TMSergey

Ответов: 3
Просмотров: 2018
Последний ответ 28.03.2015, 18:53:58
от Пастор Шлаг
Ошибка при добавлении материала с фронта

Автор zaur111

Ответов: 6
Просмотров: 2764
Последний ответ 26.09.2014, 16:10:51
от kost757
Загрузка с фронта пользователями фото

Автор ag

Ответов: 0
Просмотров: 913
Последний ответ 28.12.2013, 13:41:13
от ag
Ограничить длину заголовков Zoo

Автор Tony Jones

Ответов: 5
Просмотров: 3245
Последний ответ 23.08.2013, 13:44:10
от ostrova