class.imperavi.php 4.33 KB
<?php


//include_once(MAIN_SOURCE_PATH.'/ext/ckeditor/ckeditor.php');

class imperavi {
	private $name = false;
	private $value='';
	private $vars = array();
	private $attr = array();
 	private $toolbars = array();
  private $toolbar = 'admin_toolbar';
  		/*
  		*	çàáèâàåì ñòàíäàðòíûé íàáîð ïàíåëåé, òåîðåòè÷åñêè íóæíû ïàíåëè äëÿ àäìèíà è ïîëüçîâàòåëÿ è 
  		*	ýòî àêòóàëüíî äëÿ ëþáîãî ðåäàêòîðà. Ïîòîì ìîæíî áóäåò ìåíÿòü âñ¸ ýòî ñ ïîìîùüþ óíèâåðñàëüíîé 
  		*	ôóíêöèè set_toolbar					
  		*/
  	function __construct(){
  	global  $MAIN_USER;
  	  
  		//include(MAIN_SOURCE_PATH."/ext/ckeditor/ckeditor.php") ;
  		
  		/*
  			//	íàáîð ñòàíäàðòíûõ ïàíåëåé
  		$this -> toolbars['admin_toolbar'] = " [
	['Source','-','Preview'],
	['Cut','Copy','Paste','PasteText','PasteWord'],
	['Undo','Redo','-','Replace','-','SelectAll','RemoveFormat'],
	['FitWindow','-','About'],
	
	['Bold','Italic','Underline','StrikeThrough','-','Subscript','Superscript'],
	['OrderedList','UnorderedList','-','Outdent','Indent','Blockquote'],
	['JustifyLeft','JustifyCenter','JustifyRight','JustifyFull'],
	['Link','Unlink','Anchor'],
	['Image','Flash','Rule','Smiley','SpecialChar'],

	['Style','FontFormat','FontName','FontSize',],
	
	
]";
			 
	 $this -> toolbars['basic_toolbar'] =$this -> toolbars['user_toolbar'] = "[
	['Preview','FitWindow'],
	['Cut','Copy','Paste','PasteWord','Undo','Redo'],
	['Image','Link','Unlink'],
	['JustifyLeft','JustifyCenter','JustifyRight','JustifyFull'],
	['Bold','Italic','Underline','StrikeThrough',],
	['OrderedList','UnorderedList','-','Outdent','Indent','Blockquote'],
]";
	   
	 $this -> toolbars['design_toolbar']   ="[
	['Preview','FitWindow'],
	['Cut','Copy','Paste','PasteWord','Undo','Redo'],
	['Link','Unlink'],
	['JustifyLeft','JustifyCenter','JustifyRight','JustifyFull'],
	['Bold','Italic','Underline','StrikeThrough',],
	['OrderedList','UnorderedList','-','Outdent','Indent','Blockquote'],
]";
	      	//	àäìèíèñòðàòîðó íóæíî äàòü ðàñøèðåííûé íàáîð ôóíêöèé ðåäàêòîðà
		$c = $MAIN_USER -> is_admin() ? 'admin_toolbar' : 'user_toolbar';
		$this -> set_toolbar($c);
		
		
			//	íåêîòîðûå ñòàíäàðòíûå ïåðååííûå
		$this -> vars['AutoDetectLanguage'] = false;
  		$this -> vars['DefaultLanguage'] = 'ru';
  		$this -> vars['theme'] = 'default';
  		$this -> vars['skin'] = 'v2';

  		$this -> vars['filebrowserImageUploadUrl'] = '/?p_name=admin_images&act=editor_upload';
	 	$this -> vars['removePlugins'] = 'elementspath';
	 	$this -> vars['entities'] = false;
	 	
			//	ñòàíäàðòíûå àòðèáóòû
		$this -> set_attr("rows", 8);
		$this -> set_attr("cols", 60);	*/
		 
  	}
  	
  		//	óñòàíàâëèâàåì name ðåäàêòîðà
  	public function set_name($v){
  		if ( empty($v) ){
			  sys_error(ERROR_500,"1024: bad name '$v' for editor");
		  }
  		$this -> name = $v;
  		return true;
  	}	
  		//	óñòàíàâëèàåì ïåðâîí÷àëüíîå ñîäåðæèìîå ðåäàêòîðà
  	public function set_value($v){
  		$this -> value = $v;
  		return true;
  	}

		//	óñòàíàâëèâàåì àòðèáóòû
  	public function set_attr($k,$v){
  		if ( empty($k) ){
  			sys_error(ERROR_500,'1024: empty attr ');
  		}
  		$this -> attr[$k] = $v;
  		return true;
  	}
  	public function set_toolbar($v){
  		if ( empty($v) ){
  			sys_error(ERROR_500,'1024: empty toolbar ');
  		}
  		
  		if (  empty($this -> toolbars[$v]) ){
  			sys_error(ERROR_500,'1024: no  toolbar '.$v);
  		}
  		$this -> toolbar = $v;
  		return true;
  	}
  	
  	
  	
  	
  		//	âîçâðàùàåì êîä ðåäàêòîðà
  	public function show(){
	
  		if ( empty($this -> name) ){
			sys_error(ERROR_500,"1024: empty name for editor");
		}
		$this -> set_attr("id", $this -> name);
		

		$config = '"toolbar":'.$this ->toolbars[$this -> toolbar].",";
		foreach($this -> vars as $k=>$v ){
			$config.= '"'.$k.'": "'.$v.'",';
		}
		$text = str_replace('{name}',$this -> name,SCRIPT_TMPL);
		$text = str_replace('{id}',$this -> name,$text);
		$text = str_replace('{value}',$this -> value,$text);
		
		return  $text;
  	}
  	
  	
  	
 	 
 	 
 	 
}

 


define('SCRIPT_TMPL',
<<<SCRIPT_TMPL

<script src="/source/ext/imperavi/js/jquery-1.4.2.min.js"></script>
<script src="/source/ext/imperavi/js/redactor/redactor.js"></script>
<link rel="stylesheet" href="/source/ext/imperavi/js/redactor/css/redactor.css" />


<script type="text/javascript">

editor = {}
editor.create = function(id){

  
	var redactor_object;
	$(function()
	{
		redactor_object = $('#'+id).redactor();
	});
}

	</script>	
SCRIPT_TMPL

);

?>