X   Сообщение сайта
(Сообщение закроется через 2 секунды)

Здравствуйте, гость ( Вход | Регистрация )

51 страниц Открыть меню  « < 32 33 34 35 36 > »   
Тема закрытаНачать новую тему
> Обсуждение RC5, Предложения, ошибки и т.д.
sanes
сообщение 2010-05-31, 17:52
Сообщение #661
Аноним
Иконка группы

Группа: Пользователи
Сообщений: 1 180
Регистрация: 2008-12-29
Из: Волгоград

Репутация:   нет  
Всего: 4


хм.. вроде нет..
Цитата
<?php
/*
Copyright © Eleanor CMS
URL: http://eleanor-cms.ru, http://eleanor-cms.com
E-mail: support@eleanor-cms.ru
Developing: Alexander Sunvas*
Interface: Rumin Sergey
=====
*Pseudonym. See addons/copyrights/info.txt for more information.
*/
if(!defined('CMS'))
die('Попытка взлома?');
class OwnBbCode_url extends BaseOwnBbCode
{
public function PreDisplay($tag,$params,$content,$canuse)
{
$params=$params ? Strings::ParseParams($params,'href') : array();
if(isset($params['noparse']))
{
unset($params['noparse']);
return parent::PreEdit($tag,$params,$content,true);
}
if(!isset($params['href']) and !isset($params['url']))
$params['href']=trim($content);

static $el=true;
if($el)
{
$this->Mainclass->LoadOptions(array('editor'),false);
$el=false;
}

$new_params=array('target'=>'_blank');
foreach($params as $k=>$v)
switch($k)
{
case 'url':
case 'href':
if(!Strings::XssCheckUrl($v))
return '';
if($this->Mainclass->vars['anti_directlink'] and 0!==strpos($v,ELEANOR_PROTOCOL.$this->Mainclass->domain) and false!==$pos=strpos($v,'://') and $pos<7)
$v='go.php?'.$v;
$new_params['href']=$v;
break;
case 'title':
$new_params['title']=$v;
break;
case 'target':
if($v=='_blank' or $v=='_self')
$new_params['target']=$v;
break;
case 'noparse':
$new_params['noparse']='noparse';
break;
case 'self':
unset($new_params['target']);
break;
}
return parent::PreDisplay('a',$new_params,$content,$canuse);
}

public function PreSave($tag,$params,$content,$canuse)
{
$params=Strings::ParseParams($params,$tag);
$new_params=array();
foreach($params as $k=>$v)
if(in_array($k,array('title','href',$tag,'self','target')))
$new_params[$k]=$v;
return parent::PreEdit($tag,$new_params,$content,$canuse);
}
}

class OwnBbCode_nobb extends BaseOwnBbCode
{
public function PreDisplay($tag,$params,$content,$canuse)
{
if(!$canuse)
return $this->RestrictDisplay();
if(strpos($params,'noparse')===false)
return $content;
return '['.$tag.']'.$content.'[/'.$tag.']';
}

public function PreSave($tag,$params,$content,$canuse)
{
$canuse&=strpos($params,'noparse')===false;
$this->Mainclass->LoadClass('classes/others/class_editor.php');
$content=$this->Mainclass->Editor->SafeHtml($content);
return '['.$tag.($canuse ? '' : ' noparse').']'.$content.'[/'.$tag.']';
}
}

class OwnBbCode_code extends BaseOwnBbCode
{
public function PreDisplay($tag,$params,$content,$canuse)
{
if(!$canuse)
return $this->RestrictDisplay();
$params=$params ? Strings::ParseParams($params,$tag) : array();
if(isset($params['noparse']))
{
unset($params['noparse']);
return parent::PreEdit($tag,$params,$content,true);
}
if(!isset($params[$tag]))
$params[$tag]='no-highlight';
$js='';
static $addedjs=true;
if($addedjs)
{
$js=Strings::AddJs('addons/highlight/highlight.pack.js').
'<script type="text/javascript">//<![CDATA[
AddStyle("addons/highlight/styles/default.css");
hljs.tabReplace=" ";
hljs.initHighlightingOnLoad("php","html","css");
//]]></script>';
$addedjs=false;
}
return '<pre><code'.(isset($params['auto']) ? '' : ' class="'.$params[$tag].'"').'>'.$content.'</code></pre>'.$js;
}

public function PreEdit($tag,$params,$content,$canuse)
{
$params=$params ? Strings::ParseParams($params,$tag) : array();
if(isset($params[$tag]) and $params[$tag]=='no-highlight')
unset($params[$tag]);
if($this->visual)
{
$content=str_replace("t",' ',$content);
$content=str_replace(' ',' ',$content);
$content=nl2br($content);
}
return parent::PreEdit($tag,$params,$content,$canuse);
}

public function PreSave($tag,$params,$content,$canuse)
{
if($this->visual)
$content=strip_tags($content,'<span><b><i><u><em><strong>');
$this->Mainclass->LoadClass('classes/others/class_editor.php');
$content=$this->Mainclass->Editor->SafeHtml($content);
$params=$params ? Strings::ParseParams($params,$tag) : array();
if(!isset($params[$tag]))
$params[$tag]='no-highlight';
return parent::PreEdit($tag,$params,$content,$canuse);
}
}

class OwnBbCode_csel extends BaseOwnBbCode
{
public function PreDisplay($tag,$params,$content,$canuse)
{
if(!$canuse)
return $this->RestrictDisplay();
if(strpos($params,'noparse')===false)
return '<span style="color:red;background-color:lightgray">'.$content.'</span>';
return parent::PreEdit($tag,array(),$content,true);
}

public function PreSave($tag,$params,$content,$canuse)
{
$canuse&=strpos($params,'noparse')===false;
return '['.$tag.($canuse ? '' : ' noparse').']'.$content.'[/'.$tag.']';
}
}

class OwnBbCode_quote extends BaseOwnBbCode
{
public function PreDisplay($tag,$params,$content,$canuse)
{
if(!$canuse)
return $this->RestrictDisplay();
$params=$params ? Strings::ParseParams($params) : array();
if(isset($params['noparse']))
{
unset($params['noparse']);
return parent::PreEdit($tag,$params,$content,true);
}
return '<div class="quote">'.$content.'</div>';
}

public function PreSave($tag,$params,$content,$canuse)
{
$content=preg_replace("#^(r?n?<br />r?n?)+#i",'<br />',$content);
$content=preg_replace("#(r?n?<br />r?n?)+$#i",'<br />',$content);
return parent::PreSave($tag,$params,$content,$canuse);
}
}

class OwnBbCode_script extends BaseOwnBbCode
{
public function PreDisplay($tag,$params,$content,$canuse)
{
if(!$canuse)
return $this->RestrictDisplay();
$params=$params ? Strings::ParseParams($params) : array();
if(isset($params['noparse']))
{
unset($params['noparse']);
return parent::PreEdit($tag,$params,$content,true);
}
if(isset($params['src']))
return '<script type="text/javascript" src="'.$params['src'].'"></script>';
return '<script type="text/javascript">//<![CDATA['."rn".trim($content)."rn//]]></script>";
}

public function PreSave($tag,$params,$content,$canuse)
{
$params=Strings::ParseParams($params,$tag);
$canuse&=!isset($params['noparse']);
$new_params=array();
if(isset($params['src']))
$new_params['src']=$params['src'];
return parent::PreEdit($tag,$new_params,$content,$canuse);
}
}

class OwnBbCode_php extends BaseOwnBbCode
{
public function PreDisplay($tag,$params,$content,$canuse)
{
if(!$canuse)
return $this->RestrictDisplay();
if(strpos($params,'noparse')===false)
{
ob_start();
$content=@eval($content);
$content.=ob_get_contents();
ob_end_clean();
return $content;
}
return '['.$tag.']'.$content.'[/'.$tag.']';
}

public function PreSave($tag,$params,$content,$canuse)
{
$canuse&=strpos($params,'noparse')===false;
return '['.$tag.($canuse ? '' : ' noparse').']'.$content.'[/'.$tag.']';
}
}

class OwnBbCode_dohtml extends BaseOwnBbCode
{
public function PreDisplay($tag,$params,$content,$canuse)
{
if(!$canuse)
return $this->RestrictDisplay();
return strpos($params,'noparse')===false ? $content : '['.$tag.']'.$content.'[/'.$tag.']';
}

public function PreSave($tag,$params,$content,$canuse)
{
$canuse&=strpos($params,'noparse')===false;
return '['.$tag.($canuse ? '' : ' noparse').']'.$content.'[/'.$tag.']';
}
}

class OwnBbCode_hide extends BaseOwnBbCode
{
public function PreDisplay($tag,$params,$content,$canuse)
{
if(!$canuse)
return $this->RestrictDisplay();
$params=$params ? Strings::ParseParams($params) : array();
if(isset($params['noparse']))
return '['.$tag.']'.$content.'[/'.$tag.']';
if($this->Mainclass->Login->IsUser())
return $content;
$this->LoadLang();
return '<div style="font-weight:bold;color:red;text-align:center;border: solid black 1px;">'.$this->lang['hidden'].'</div>';
}

public function PreSave($tag,$params,$content,$canuse)
{
$canuse&=strpos($params,'noparse')===false;
return '['.$tag.($canuse ? '' : ' noparse').']'.$content.'[/'.$tag.']';
}
}

class OwnBbCode_attach extends BaseOwnBbCode
{
public function PreDisplay($tag,$params,$content,$canuse)
{
if(!$canuse)
return $this->RestrictDisplay();
$params=$params ? Strings::ParseParams($params,'file') : array();
if(isset($params['noparse']) or !isset($params['file']))
return parent::PreDisplay($tag,$params,$content,$canuse);
$is_our=strpos($params['file'],'://')===false;
if($is_our)
$params['file']=ELEANOR_PROTOCOL.$this->Mainclass->domain.$this->Mainclass->site_path.'/'.$params['file'];
$type=isset($params['type']) ? $params['type'] : substr(strrchr($params['file'],'.'),1);
switch(strtolower($type))
{
case 'flv':
case 'mp4':
$params['width']=isset($params['width']) ? (int)$params['width'] : 520;
$params['height']=isset($params['height']) ? (int)$params['height'] : 330;
$autobuf='false';
case 'mp3':
$params['width']=isset($params['width']) ? (int)$params['width'] : 400;
$params['height']=isset($params['height']) ? (int)$params['height'] : 30;
if(!isset($autobuf))
$autobuf='false';
if(isset($params['autobuf']))
$autobuf='true';
$align=(isset($params['align']) and in_array($params['align'],array('left','center','right'))) ? 'float:'.$params['align'] : '';
self::$jscripts[]='addons/flowplayer/flowplayer-3.1.4.min.js';
$pl=uniqid('player_');
$html='<a href="'.$params['file'].'" style="display:block;width:'.$params['width'].'px;height:'.$params['height'].'px;'.$align.'" id="'.$pl.'"></a>
<script type="text/javascript">//<![CDATA[
flowplayer("'.$pl.'","addons/flowplayer/flowplayer-3.1.5.swf",{

plugins:{
controls: {
tooltips: {
// enable english tooltips on all buttons
buttons: true,
},
// background color for all tooltips
tooltipColor: "#112233",

// text color
tooltipTextColor: "#8899ff"
}
},

// pause on first frame of the video
clip: {
autoPlay: false,
autoBuffering: '.$autobuf.'
}

});
//]]></script>';
break;
case 'swf':
$id=uniqid('swf_');
$params['width']=isset($params['width']) ? (int)$params['width'] : 520;
$params['height']=isset($params['height']) ? (int)$params['height'] : 330;
self::$jscripts[]='js/swfobject.js';
$html='<div id="'.$id.'"></div><script type="text/javascript">//<![CDATA[
swfobject.embedSWF("'.$params['file'].'", "'.$id.'", "'.$params['width'].'", "'.$params['height'].'", "9.0.0");
//]]></script>';
break;
case 'jpeg':
case 'jpg':
case 'png':
case 'bmp':
case 'gif':
$params_img=array('alt'=>' alt=""','style'=>' style="max-width:'.(isset($params['mw']) ? (int)$params['mw'] : 200).'px"');
if(!isset($params['preview']))
$params['preview']=$params['file'];
foreach($params as $k=>$v)
switch(strtolower($k))
{
case 'border':
$v=abs((int)$v);
if($v>5)
$v=5;
$params_img['border']=' border="'.$v.'"';
break;
case 'alt':
$params_img['alt']=' alt="'.$v.'" title="'.$v.'"';
break;
case 'width':
$params_img['width']=' width="'.$v.'"';
break;
case 'style':
$params_img['style']=' style="'.str_ireplace(array('expression','url','@import'),'not_allowed',$v).'"';
break;
case 'height':
$params_img['height']=' height="'.$v.'"';
break;
case 'class':
$params_img['class']=' class="'.$v.'"';
break;
case 'align':
$params_img['align']=' align="'.$v.'"';
break;
}
self::$jscripts[]='js/wz_tooltip.js';
$html='<a href="'.$params['file'].'" target="_blank" onmouseover="var sw=Math.round(screen.width*0.8);Tip('<img src=&quot;'.$params['file'].'&quot; style=&quot;max-width:'+sw+'px&quot; alt=&quot;&quot; />',BGCOLOR,'#fff')" onmouseout="UnTip()"><img src="'.$params['preview'].'"'.join('',$params_img).' /></a>';
break;
case 'mpg':
case 'avi':
$params['height']=isset($params['height']) ? (int)$params['height'] : 420;
case 'mid':
case 'kar':
$params['width']=isset($params['width']) ? (int)$params['width'] : '100%';
$html=Strings::ScriptText('<embed type="application/x-mplayer2" pluginspage="http://www.microsoft.com/windows/mediaplayer/en/default.asp" src="'.$params['file'].'" width="'.$params['width'].'" height="'.$params['height'].'" autostart="0" showcontrols="true" showstatusbar="true" showdisplay="true" />');
break;
case 'mov':
$params['width']=isset($params['width']) ? (int)$params['width'] : 520;
$params['height']=isset($params['height']) ? (int)$params['height'] : 330;
$html=Strings::ScriptText('<embed type="application/x-mplayer2" pluginspage="http://www.apple.com/quicktime/download/indext.html" src="'.$params['file'].'" width="'.$params['width'].'" height="'.$params['height'].'" autostart="0" showcontrols="true" showstatusbar="true" showdisplay="true" />');
break;
default:
$html='<a href="'.$params['file'].'" target="_blank">'.$params['file'].'</a>';
}
return $html;
}
}

class OwnBbCode_video extends BaseOwnBbCode
{
public function PreDisplay($tag,$params,$content,$canuse)
{
if(!$canuse)
return $this->RestrictDisplay();
$params=$params ? Strings::ParseParams($params) : array();
if(isset($params['noparse']))
{
unset($params['noparse']);
return parent::PreEdit($tag,$params,$content,true);
}
$content=trim($content);
#YouTube
if(preg_match('%watch(?:?|#)v=([a-z0-9-_]+)%i',$content,$m)>0)
{
$w=isset($params['width']) ? (int)$params['width'] : 425;
$h=isset($params['height']) ? (int)$params['height'] : 344;
$video='<object width="'.$w.'" height="'.$h.'"><param name="movie" value="http://www.youtube.com/v/'.$m[1].'&hl=ru_RU&fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/'.$m[1].'&hl=ru_RU&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="'.$w.'" height="'.$h.'"></embed></object>';
}
#RuTube
elseif(preg_match('#v=([a-f0-9]{32})#i',$content,$m)>0)
{
$w=isset($params['width']) ? (int)$params['width'] : 470;
$h=isset($params['height']) ? (int)$params['height'] : 353;
$video='<object width="470" height="353"><param name="movie" value="http://video.rutube.ru/'.$m[1].'"></param><param name="wmode" value="window"></param><param name="allowfullscreen" value="true"></param><embed src="http://video.rutube.ru/'.$m[1].'" type="application/x-shockwave-flash" wmode="window" width="'.$w.'" height="'.$h.'" allowfullscreen="true" ></embed></object>';
}
#Smotri.com
elseif(preg_match('#?id=([a-z0-9]+)#i',$content,$m)>0)
{
$w=isset($params['width']) ? (int)$params['width'] : 400;
$h=isset($params['height']) ? (int)$params['height'] : 330;
$video='<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="'.$w.'" height="'.$h.'"><param name="movie" value="http://pics.smotri.com/scrubber_custom8.swf?file='.$m[1].'&bufferTime=3&autoStart=false&str_lang=rus&xmlsource=http%3A%2F%2Fpics.smotri.com%2Fcskins%2Fblue%2Fskin_color_lightaqua.xml&xmldatasource=http%3A%2F%2Fpics.smotri.com%2Fskin_ng.xml" /><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="true" /><param name="bgcolor" value="#ffffff" /><embed src="http://pics.smotri.com/scrubber_custom8.swf?file='.$m[1].'&bufferTime=3&autoStart=false&str_lang=rus&xmlsource=http%3A%2F%2Fpics.smotri.com%2Fcskins%2Fblue%2Fskin_color_lightaqua.xml&xmldatasource=http%3A%2F%2Fpics.smotri.com%2Fskin_ng.xml" quality="high" allowscriptaccess="always" allowfullscreen="true" wmode="window" width="'.$w.'" height="'.$h.'" type="application/x-shockwave-flash"></embed></object>';
}
#Big)mir
elseif(preg_match('#show/([0-9]+)/#i',$content,$m)>0)
{
$w=isset($params['width']) ? (int)$params['width'] : 625;
$h=isset($params['height']) ? (int)$params['height'] : 395;
$video='<object width="'.$w.'" height="'.$h.'"><param name="movie" value="http://video.bigmir.net/extplayer/'.$m[1].'/"></param><param name="wmode" value="transparent"></param><param name="flashvars" value=""></param><embed src="http://video.bigmir.net/extplayer/'.$m[1].'/" type="application/x-shockwave-flash" wmode="transparent" width="'.$w.'" height="'.$h.'" flashvars=""></embed></object>';
}
elseif(Strings::XssCheckUrl($content))
{
$href=$content;
if($this->Mainclass->vars['anti_directlink'] and 0!==strpos($v,ELEANOR_PROTOCOL.$this->Mainclass->domain) and false!==$pos=strpos($v,'://') and $pos<7)
$href='go.php?'.$href;
return '<a href="'.$href.'">'.$content.'</a>';
}
else
return '';
return $video;
}
}

class OwnBbCodes extends BaseClass
{
const
DISPLAY=1,
SHOW=2,#Это когда мы результат обработки должны сразу показать на экран. Отличие от DISPLAY состсавляет в том, что мы используем разрешение не gr_see, а gr_use!
EDIT=3,
SAVE=4;
public
$bbcodes=array(),
$visual=false;#Флаг определяющий, редактор визуальный или нет
protected
$notparsed,
$plugins=array();

public function __construct($Mainclass)
{
$this->bbcodes=$Mainclass->Cache->Get('ownbbcodes',true);
if($this->bbcodes===false)
$this->bbcodes=$this->RecacheBB();
}
/*
Функция парсит свои ББ коды.
$text - текст с ББ кодами.
$type - тип (см. выше константы)
$codes - только эти ББ коды нужно парсить. Задаются через запятую. Неверный формат недопустим! Например b,i,u
*/
public function ParseAll($text,$type=self::DISPLAY,$codes=array())
{
BaseOwnBbCode::$jscripts=array();
$text=$this->StoreNotParsed($text,$type);
$text=$this->ParseBbCodes($text,$type,$codes);
$text=$this->ParseNotParsed($text,$type);
BaseOwnBbCode::$jscripts=array_unique(BaseOwnBbCode::$jscripts);
return $text;
}

public function ParseBbCodes($text,$type,$codes=array())
{
switch($type)
{
case self::EDIT:
$method='PreEdit';
break;
case self::SAVE:
$method='PreSave';
break;
default:
$method='PreDisplay';
}
if(!is_array($codes))
$codes=$codes ? explode(',',$codes) : array();
$groups=$this->Mainclass->Account->GetUserGroups();
foreach($this->bbcodes as &$bbcode)
{
$canuse=true;
if($type==self::DISPLAY and $grs=$bbcode['gr_see'] or $type==self::SHOW and $grs=$bbcode['gr_use'] or $type>self::SHOW and $grs=$bbcode['gr_use'])
{
$grs=explode(',',$grs);
$canuse=count(array_intersect($grs,$groups))>0;
}
if($type==self::SHOW and !$canuse)
continue;
$tags=array($bbcode['tag']);
if($bbcode['aliases'])
$tags=array_merge($tags,explode(',',$bbcode['aliases']));
if($codes and count(array_intersect($codes,$tags))==0 or !$codes and $bbcode['special'])
continue;
foreach($tags as &$tag)
{
$oldcurpos=-1;
$curpos=0;
while(false!==$curpos=strpos($text,'['.$tag,$curpos))
{
if($curpos==$oldcurpos)
{
++$curpos;
continue;
}
$taglen=strlen($tag);
$next_let=substr($text,$curpos+$taglen+1,1);
#Если мы нашли нужный нам тег т.е. i != img (отшибем все следующие знаки после найденного тега - )
if(trim($next_let,'=] ')!='')
{
++$curpos;
continue;
}
$length=strpos($text,']',$curpos);
if($length===false)
{
++$curpos;
continue;
}
$params=trim(substr($text,$curpos+$taglen+1,$length-$curpos-$taglen-1));
if($bbcode['single'])
{
$length-=$curpos-1;#]
$content='';
}
else
{
$begin_content=$length+1;
$length=stripos($text,'[/'.$tag.']',$begin_content);
if($length===false)
{
++$curpos;
continue;
}
$content=substr($text,$begin_content,$length-$begin_content);
$length-=$curpos-$taglen-3;#[/]
}
$class_name='OwnBbCode_'.$bbcode['tag'];
if(!isset($this->plugins[$bbcode['tag']]))
{
if(!class_exists($class_name,false))
{
if(!$bbcode['file'])
{
++$curpos;
continue;
}
$file=$this->Mainclass->FormatPath($bbcode['file']);
if(!is_file($file))
{
++$curpos;
continue;
}
include $file;
}
$this->plugins[$bbcode['tag']]=new $class_name($this->Mainclass);
$this->plugins[$bbcode['tag']]->visual=$this->visual;
}
if(method_exists($this->plugins[$bbcode['tag']],'Total'.$method))
{
$m='Total'.$method;
$text=$this->plugins[$bbcode['tag']]->$m($text,$tags,$canuse,$params,$content,$curpos,$length,$bbcode['single']);
continue 3;
}
$replace=$this->plugins[$bbcode['tag']]->$method($bbcode['tag'],$params,$content,$canuse,$bbcode['single']);
$text=substr_replace($text,$replace,$curpos,$length);
$oldcurpos=$curpos;
}
}
}
return $text;
}

public function StoreNotParsed($text,$type)
{
$text=str_replace('<!-- ','<!-- ',$text);
$n=0;
$this->notparsed=array();
$groups=$this->Mainclass->Account->GetUserGroups();
foreach($this->bbcodes as &$bbcode)
{
if(!$bbcode['no_parse'])
continue;
if($type==self::DISPLAY and $grs=$bbcode['gr_see'] or $type==self::SHOW and $grs=$bbcode['gr_use'] or $type>self::SHOW and $grs=$bbcode['gr_use'])
{
$grs=explode(',',$grs);
if(count(array_intersect($grs,$groups))==0)
continue;
}
if($grs=$bbcode['gr_use'])
{
$grs=explode(',',$grs);
if(count(array_intersect($grs,$groups))==0)
continue;
}
$tags=array($bbcode['tag']);
if($bbcode['aliases'])
$tags=array_merge($tags,explode(',',$bbcode['aliases']));
foreach($tags as &$tag)
{
$oldcurpos=-1;
$curpos=0;
while(false!==$curpos=stripos($text,'['.$tag,$curpos))
{
if($curpos==$oldcurpos)
{
++$curpos;
continue;
}
$taglen=strlen($tag);
$next_let=substr($text,$curpos+$taglen+1,1);
#Если мы нашли нужный нам тег т.е. i != img (отшибем все следующие знаки после найденного тега - )
if(trim($next_let,'=] ')!='')
{
++$curpos;
continue;
}
if($bbcode['single'])
{
$length=strpos($text,']',$curpos);
if($length===false)
{
++$curpos;
continue;
}
$length-=$curpos-1;#]
}
else
{
if(false!==$nop=strpos($text,'noparse]',$curpos) and $nop<strpos($text,']',$curpos))
{
++$curpos;
continue;
}
$length=strpos($text,'[/'.$tag.']',$curpos);
if($length===false)
{
++$curpos;
continue;
}
$length-=$curpos-$taglen-3;#[/]
}
$replace='<!-- '.$n++.' -->';
$content=substr($text,$curpos,$length);
$text=substr_replace($text,$replace,$curpos,$length);
$this->notparsed[]=array(
'find'=>$replace,
'text'=>$content,
'code'=>$bbcode['sp_tags'] ? $tag.','.$bbcode['sp_tags'] : $tag,
);
$oldcurpos=$curpos;
}
}
}
return $text;
}
/*
Если $type===false - ничего не парсим.
*/
public function ParseNotParsed($text,$type)
{
if($this->notparsed)
{
if($type)
foreach($this->notparsed as &$v)
$text=str_replace($v['find'],$this->ParseBBCodes($v['text'],$type,$v['code']),$text);
else
foreach($this->notparsed as &$v)
$text=str_replace($v['find'],$v['text'],$text);
}
$this->notparsed=array();
return $text;
}

protected function RecacheBB()
{
$bbcodes=array();
$this->Mainclass->Db->Query('SELECT `tag`,`aliases`,`single`,`no_parse`,`special`,`file`,`sp_tags`,`gr_use`,`gr_see`,`options`,`sb` FROM `f_own_bbcodes` WHERE `active`=1 ORDER BY `pos` ASC',__file__,__line__);
while($arr=$this->Mainclass->Db->Fetch_assoc())
$bbcodes[]=$arr;
$this->Mainclass->Cache->Put('ownbbcodes',$bbcodes,0,true);
return $bbcodes;
}
}

class BaseOwnBbCode extends BaseClass
{
public
$visual=false;
static
$jscripts=array();
protected
$lang;
protected function LoadLang()
{
if(!$this->lang)
$this->lang=$this->Mainclass->LoadLanguage('langs','','ownbbcodes-%');
}

public function RestrictDisplay()
{
$this->LoadLang();
return isset($this->restrict_text) ? $this->restrict_text : '<div style="font-weight:bold;color:red;text-align:center;border: solid black 1px;">'.$this->lang['restrict'].'</div>';
}

public function PreDisplay($tag,$params,$content,$canuse)
{
if(!$canuse)
return $this->RestrictDisplay();
if(!is_array($params))
$params=Strings::ParseParams($params,$tag);
if(isset($params['noparse']))
{
unset($params['noparse']);
$putparams=isset($params[$tag]) ? '' : ' ';
foreach($params as $k=>$v)
if($k==$tag)
$putparams='='.$v.' '.$putparams;
else
{
if(strpos($v,' ')===false)
$sep='';
elseif(strpos($v,''')===false)
$sep='"';
else
$sep=''';
$putparams.=$k.'='.$sep.$v.$sep.' ';
}
return '['.$tag.rtrim($putparams).']'.$content.'[/'.$tag.']';
}
unset($params['noparse'],$params[$tag]);
$putparams=' ';
foreach($params as $k=>$v)
{
$sep=strpos($v,''')===false ? '"' : ''';
$putparams.=$k.'='.$sep.$v.$sep.' ';
}
return '<'.$tag.rtrim($putparams).'>'.$content.'</'.$tag.'>';
}

public function PreEdit($tag,$params,$content,$canuse,$single=false)
{
if(!is_array($params))
$params=Strings::ParseParams($params,$tag);
$putparams=isset($params[$tag]) ? '' : ' ';
if(!$canuse or isset($params['noparse']))
{
unset($params['noparse']);
$canuse=false;
}
foreach($params as $k=>$v)
if($k==$tag)
$putparams='='.$v.' '.$putparams;
elseif($v==$k)
$putparams.=$k.' ';
else
{
if(strpos($v,' ')===false)
$sep='';
elseif(strpos($v,''')===false)
$sep='"';
else
$sep=''';
$putparams.=$k.'='.$sep.$v.$sep.' ';
}
return '['.$tag.rtrim($putparams).($canuse ? '' : ' noparse').']'.$content.($single ? '' : '[/'.$tag.']');
}

public function PreSave($tag,$params,$content,$canuse,$single=false)
{
return $this->PreEdit($tag,$params,$content,$canuse,$single);
}
/*
Функции, которым для обработки необходимо передать весь массив текста
public function TotalPreSave($text,$tags,$canuse,$params,$content,$curpos,$length,$single){retur
n $text;}
public function TotalPreEdit($text,$tags,$canuse,$params,$content,$curpos,$length,$single){retur
n $text;}
public function TotalPreDisplay($text,$tags,$canuse,$params,$content,$curpos,$length,$single){re
turn $text;}
*/
}
?>
Цитата


Сообщение отредактировал sanes - 2010-05-31, 17:53
Перейти в начало страницы
+Цитировать сообщение
V.Nik
сообщение 2010-05-31, 19:03
Сообщение #662
Любитель
Иконка группы

Группа: Пользователи
Сообщений: 126
Регистрация: 2009-10-11

Репутация:   нет  
Всего: 2


Всё правильно, файл classes/others/class_ownbb.php Строка 734 (у меня так)
		return isset($this->restrict_text) ? $this->restrict_text : &#039;<div style="font-weight:bold;color:red;text-align:center;border: solid black 1px;">&#039;.$this->lang[&#039;restrict&#039;].&#039;</div>&#039;;


Но одного не пойму, почему после изменения, стиль меняется только при просмотре расширенной новости и в комментариях, а на главной (в кратком описание) нет.

Сообщение отредактировал V.Nik - 2010-05-31, 19:16
Перейти в начало страницы
+Цитировать сообщение
DeD
сообщение 2010-05-31, 21:09
Сообщение #663
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 153
Регистрация: 2009-03-01
Из: Россия, Краснодар

Репутация:   нет  
Всего: нет


V.Nik, а вы кеш почистили? если не изменится, попробуйте удалить кэш браузера.
Перейти в начало страницы
+Цитировать сообщение
Alexander
сообщение 2010-05-31, 21:55
Сообщение #664
Eleanor developer
Иконка группы

Группа: Администраторы
Сообщений: 5 261
Регистрация: 2008-11-11
Из: Николаев
Версия системы: RC5

Репутация:   нет  
Всего: 67


V.Nik, вероятно потому что на главной новсти кешируются..
Перейти в начало страницы
+Цитировать сообщение
V.Nik
сообщение 2010-05-31, 22:03
Сообщение #665
Любитель
Иконка группы

Группа: Пользователи
Сообщений: 126
Регистрация: 2009-10-11

Репутация:   нет  
Всего: 2


Цитата (Alexander @ 2010-05-31, 22:55)
V.Nik, вероятно потому что на главной новсти кешируются..


Как я понял, при создании новости у которой нет подробного содержания, код [hide] лучше не использовать, он просто не работает. То есть, создал (без подробного содержания) новость и вставил "скрытый текст", то у меня получается, что на главной он совсем не скрытый :D , а войдя в раздел НОВОСТИ, он становиться скрытым.
Перейти в начало страницы
+Цитировать сообщение
boltyn
сообщение 2010-06-01, 6:38
Сообщение #666
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 101
Регистрация: 2009-06-06

Репутация:   нет  
Всего: нет


наверно немного тупой но фсё же:
Цитата
Пересмотрена технология создания превьюшек, загружаемых изображений. Теперь превью создаются, но не отображаются в аплоадере. Изображение превью - это имя загруженного файла + приставка "_preview". Если для изображения доступна первьюшка - она будет автоматически вставлена, при публикации изображения через тег [ attach]
Как понимаю превью нужны для отображения двух видов картинок дабы не перегружать страницу трафиком лишним. Тип так открывается загружается превью, при наведении полноразмерной изображение, я прав? Если да то как ета фигня пашет, так как при атаче что каритнки что превьюшки в обоих случая на конечных страницах подгружается именно то что было прописано, а не связка превью + полная.

Сообщение отредактировал boltyn - 2010-06-01, 6:42
Перейти в начало страницы
+Цитировать сообщение
Loader
сообщение 2010-06-01, 14:04
Сообщение #667
Профессионал
Иконка группы

Группа: Eleanor user
Сообщений: 1 161
Регистрация: 2010-04-19

Репутация:   нет  
Всего: нет


 А что это у меня за фигня при добавлении новости постоянно вылазиет:

Кто-нибудь знает?


Warning: Invalid argument supplied for foreach() Line: 456 in file /home/users2/d/dozer36/domains/pda-kino.net.ru/classes/others/class_uploader.php
 URL: /ajax.php?JsHttpRequest=12753124941630-xml
 Date: 2010-05-31 16:28:16
 IP: 92.252.177.146

Warning: Invalid argument supplied for foreach() Line: 510 in file /home/users2/d/dozer36/domains/pda-kino.net.ru/classes/others/class_uploader.php
 URL: /ajax.php?JsHttpRequest=12753124941630-xml
 Date: 2010-05-31 16:28:16
 IP: 92.252.177.146

Warning: array_merge() [<a href=&#039;function.array-merge&#039;>function.array-merge</a>]: Argument #2 is not an array Line: 540 in file /home/users2/d/dozer36/domains/pda-kino.net.ru/classes/others/class_uploader.php
 URL: /ajax.php?JsHttpRequest=12753124941630-xml
 Date: 2010-05-31 16:28:16
 IP: 92.252.177.146

Warning: array_unshift() [<a href=&#039;function.array-unshift&#039;>function.array-unshift</a>]: The first argument should be an array Line: 543 in file /home/users2/d/dozer36/domains/pda-kino.net.ru/classes/others/class_uploader.php
 URL: /ajax.php?JsHttpRequest=12753124941630-xml
 Date: 2010-05-31 16:28:16
 IP: 92.252.177.146

Warning: implode() [<a href=&#039;function.implode&#039;>function.implode</a>]: Invalid arguments passed Line: 554 in file /home/users2/d/dozer36/domains/pda-kino.net.ru/classes/others/class_uploader.php
 URL: /ajax.php?JsHttpRequest=12753124941630-xml
 Date: 2010-05-31 16:28:16
 IP: 92.252.177.146




Цитата (boltyn @ 2010-06-01, 7:38)
наверно немного тупой но фсё же: Как понимаю превью нужны для отображения двух видов картинок дабы не перегружать страницу трафиком лишним. Тип так открывается загружается превью, при наведении полноразмерной изображение, я прав? Если да то как ета фигня пашет, так как при атаче что каритнки что превьюшки в обоих случая на конечных страницах подгружается именно то что было прописано, а не связка превью + полная.

НЕПРАВ!!!В том-то и дело что грузится всё подряд, целая+ превью ,никакой оптимизации!Нужно наверное как то по другому сделать, чтобы при наведении курсора полная подгружалась! А то Мегабайтовые страницы же получаются!!!
Перейти в начало страницы
+Цитировать сообщение
boltyn
сообщение 2010-06-01, 15:47
Сообщение #668
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 101
Регистрация: 2009-06-06

Репутация:   нет  
Всего: нет


странно, но у меня грузится либ целая либ превью. Как у вас получилось обе одновременно загрузить? :blink:
Перейти в начало страницы
+Цитировать сообщение
Alexander
сообщение 2010-06-01, 19:07
Сообщение #669
Eleanor developer
Иконка группы

Группа: Администраторы
Сообщений: 5 261
Регистрация: 2008-11-11
Из: Николаев
Версия системы: RC5

Репутация:   нет  
Всего: 67


boltyn, пропишите у аттача параметр mini - и на странице будет сразу показана не большая картинка, а та, которая указана в mini.
Перейти в начало страницы
+Цитировать сообщение
Loader
сообщение 2010-06-01, 19:19
Сообщение #670
Профессионал
Иконка группы

Группа: Eleanor user
Сообщений: 1 161
Регистрация: 2010-04-19

Репутация:   нет  
Всего: нет


Цитата (boltyn @ 2010-06-01, 16:47)
странно, но у меня грузится либ целая либ превью. Как у вас получилось обе одновременно загрузить? :blink:

На странице видимая картинка - это превью, но вместе со страницой грузится и оригинал,так как после загрузки страницы и наведении курсора СРАЗУ отображается оригинал,а не загружается.Проверял так - вставлял картинки через [img] - и размер страницы сразу раза в два уменьшался.
Перейти в начало страницы
+Цитировать сообщение
boltyn
сообщение 2010-06-02, 10:24
Сообщение #671
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 101
Регистрация: 2009-06-06

Репутация:   нет  
Всего: нет


Loader, открываю исходный код страницы и вижу что подгружается либ то либ то, но не оба :)
вставлял так:
[attach=uploads/files/6/1_preview.jpg]

и так
[attach=uploads/files/6/1.jpg]


Как ето реализовано в работающем виде на лайфинтернете:

http://www.liveinternet.ru/stat/eSosedi/index.html запускаем фаербаг, загрузка рекламы:
<img width="90" title="Готовые покупатели" heigth="90" id="banner" src="http://sticker.yadro.ru/ban/0014/14340.90x90.gif" style="width: 90px; height: 90px; top: 7px; left: 0px; position: static;">


При наведении мыши исполняется уже другой код:
<img width="90" title="Готовые покупатели" heigth="90" id="banner" src="http://sticker.yadro.ru/ban/0014/14340.200x200.gif" style="width: 200px; height: 200px; top: -53px; left: 0px; position: absolute;">


Alexander, а можно про мини по подобронее а то что то в документации на счёт релиза нету такого

Сообщение отредактировал Alexander - 2010-06-06, 13:57
Перейти в начало страницы
+Цитировать сообщение
Alexander
сообщение 2010-06-03, 3:05
Сообщение #672
Eleanor developer
Иконка группы

Группа: Администраторы
Сообщений: 5 261
Регистрация: 2008-11-11
Из: Николаев
Версия системы: RC5

Репутация:   нет  
Всего: 67


boltyn, извиняюсь немного перепутал параметр. нужно писать preview.

http://forum.eleanor-cms.ru/путь
Перейти в начало страницы
+Цитировать сообщение
Loader
сообщение 2010-06-03, 8:10
Сообщение #673
Профессионал
Иконка группы

Группа: Eleanor user
Сообщений: 1 161
Регистрация: 2010-04-19

Репутация:   нет  
Всего: нет


Цитата
boltyn
Loader, открываю исходный код страницы и вижу что подгружается либ то либ то, но не оба
вставлял так:


и так


Когда вставляешь так:  то грузится только превью !!!

А когда так:  то грузятся оба !!! Это 100% проверено!

Сообщение отредактировал Loader - 2010-06-03, 8:11
Перейти в начало страницы
+Цитировать сообщение
eklips
сообщение 2010-06-04, 1:10
Сообщение #674
Eleanor TEMP USER
Иконка группы

Группа: Eleanor user
Сообщений: 198
Регистрация: 2010-05-19
Версия системы: RC5

Репутация:   нет  
Всего: нет


В РЦ5 блоки только у меня не добавляються (из файла) иль у всех? Пишет типо нету такого файла для добавление, хотя он есть....
Перейти в начало страницы
+Цитировать сообщение
boltyn
сообщение 2010-06-06, 9:02
Сообщение #675
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 101
Регистрация: 2009-06-06

Репутация:   нет  
Всего: нет


Alexander, спасибо:

[attach=путь_к_полной preview=путь_к_превью]


всё ок пашет :)
Перейти в начало страницы
+Цитировать сообщение
Zorazo
сообщение 2010-06-07, 20:48
Сообщение #676
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 207
Регистрация: 2009-06-28
Из: Краснодар

Репутация:   нет  
Всего: нет


Что за фигня? &lt;_&lt; скачал свежий архив системы, поставил на локаль, все в кракозябрах, меняю кодировку в браузере на utf-8 - новости становятся норм а блоки все в кракозябрах.
На хостинг поставил-тоже самое... Раньше же 100 раз ставил

Прикрепленные файлы
Прикрепленные файлы  3.GIF ( 90.4 килобайт ) Скачиваний: 62
 
Перейти в начало страницы
+Цитировать сообщение
Alexander
сообщение 2010-06-07, 21:07
Сообщение #677
Eleanor developer
Иконка группы

Группа: Администраторы
Сообщений: 5 261
Регистрация: 2008-11-11
Из: Николаев
Версия системы: RC5

Репутация:   нет  
Всего: 67


Zorazo, блин... Сейчас все проверю. Какую ставили версию - cp1251 или utf-8?
Перейти в начало страницы
+Цитировать сообщение
Maximkaboom
сообщение 2010-06-07, 21:09
Сообщение #678
Опытный
Иконка группы

Группа: Eleanor user
Сообщений: 766
Регистрация: 2010-04-08
Версия системы: RC5

Репутация:   нет  
Всего: 1


Цитата (Zorazo @ 2010-06-07, 21:48)
Что за фигня? &lt;_&lt; скачал свежий архив системы, поставил на локаль, все в кракозябрах, меняю кодировку в браузере на utf-8 - новости становятся норм а блоки все в кракозябрах.
На хостинг поставил-тоже самое... Раньше же 100 раз ставил

для теста поставил utf-8 все нормально
Перейти в начало страницы
+Цитировать сообщение
Zorazo
сообщение 2010-06-07, 21:09
Сообщение #679
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 207
Регистрация: 2009-06-28
Из: Краснодар

Репутация:   нет  
Всего: нет


Цитата (Alexander @ 2010-06-07, 22:07)
Zorazo, блин... Сейчас все проверю. Какую ставили версию - cp1251 или utf-8?


cp1251
Перейти в начало страницы
+Цитировать сообщение
Alexander
сообщение 2010-06-07, 21:47
Сообщение #680
Eleanor developer
Иконка группы

Группа: Администраторы
Сообщений: 5 261
Регистрация: 2008-11-11
Из: Николаев
Версия системы: RC5

Репутация:   нет  
Всего: 67


Исправил. Систему обновил. Проверьте.
Перейти в начало страницы
+Цитировать сообщение

51 страниц Открыть меню  « < 32 33 34 35 36 > » 
Тема закрытаНачать новую тему
0 чел. читают эту тему (гостей: 0, скрытых пользователей: 0)
Пользователей: 0

 
RSS Текстовая версия 0.0413 сек.    12 запросов    GZIP включен    Сейчас: 2024-04-20, 6:53