* theme forms in separate files.

* fixed problem with trimString function.
* fixed problem when it use jQuery in themes. {$("selector")} ->{$this->array['(\"selector\")']}
master
Victor De la Rocha 2008-10-30 14:29:28 +00:00
parent 316d2c2b6d
commit b3b04187fb
5 changed files with 35 additions and 296 deletions

View File

@ -170,34 +170,41 @@ if ($user->isAuthenticated()) {
if (!isset($_GET['new'])) $_GET['new'] = 'post';
$theme->set('date',$date);
$theme->set('id_user',$_SESSION['user_id']);
$theme->set('type',$_GET["new"]);
$theme->set('editBody',$body);
$form = new themes;
$form->set('date',$date);
$form->set('id_user',$_SESSION['user_id']);
$form->set('type',$_GET["new"]);
$form->set('editBody',$body);
switch ($_GET["new"]) {
case "post":
$theme->set('editTitle',$title);
$form->set('editTitle',$title);
$theme->set('form',$form->fetch(Absolute_Path.'admin/themes/admin/template_add_post.htm'));
break;
case "photo":
$url = str_replace("../", $conf->urlGelato."/", $url);
$theme->set('editUrl',$url);
$form->set('editUrl',$url);
$theme->set('form',$form->fetch(Absolute_Path.'admin/themes/admin/template_add_photo.htm'));
break;
case "quote":
$theme->set('editTitle',$title);
$form->set('editTitle',$title);
$theme->set('form',$form->fetch(Absolute_Path.'admin/themes/admin/template_add_quote.htm'));
break;
case "url":
$theme->set('editTitle',$title);
$theme->set('editUrl',$url);
$form->set('editTitle',$title);
$form->set('editUrl',$url);
$theme->set('form',$form->fetch(Absolute_Path.'admin/themes/admin/template_add_link.htm'));
break;
case "conversation":
$theme->set('editTitle',$title);
$form->set('editTitle',$title);
$theme->set('form',$form->fetch(Absolute_Path.'admin/themes/admin/template_add_conversation.htm'));
break;
case "video":
$theme->set('editUrl',$url);
$form->set('editUrl',$url);
$theme->set('form',$form->fetch(Absolute_Path.'admin/themes/admin/template_add_video.htm'));
break;
case "mp3":
$theme->set('editUrl',$url);
$form->set('editUrl',$url);
$theme->set('form',$form->fetch(Absolute_Path.'admin/themes/admin/template_add_mp3.htm'));
break;
}

View File

@ -72,275 +72,7 @@
<form action="index.php" method="post" {if {$new}=='photo'}enctype="multipart/form-data"{/if} name="frmAdd" id="autosave" class="newpost">
<fieldset>
{if {$postId}}<input type="hidden" name="id_post" id="id_post" value="{postId}" />{/if}
{if {$type}=='post'}
<div>
<label for="title" style="display:block;">Title <span class="option">(optional)</span></label>
<br /><input class="txt" type="text" name="title" id="title" value="{editTitle}" size="80" />
</div>
<div>
<label for="description" style="display:block;">Body</label>
<textarea rows="12" cols="84" name="description" id="description">{editBody}</textarea>
</div>
<input type="hidden" name="url" id="url" value="" />
<input type="hidden" name="type" id="type" value="{type}" />
<input type="hidden" name="date" id="date" value="{date}" />
<input type="hidden" name="id_user" id="id_user" value="{id_user}" />
<script>
$("#autosave").validate({
rules: {
description: "required"
},
errorElement: "span",
errorClass: "validate_span",
errorPlacement: function(label, element) {
label.prependTo(element.prev())
}
});
</script>
{elseif {$type}=='photo'}
<div id="photo_upload">
<label for="description">Photo</label>
<br /><input type="file" name="photo" id="photo" accept="image/gif,image/jpeg,image/jpg,image/png"/>
<div style="font-size:11px; color:#666; margin-top:5px;">
Supports JPEG, GIF and PNG.&nbsp; <strong>Max size is 10 MB.</strong>
</div>
<div style="font-size:11px; color:#666; margin-top:5px;">
<a href="#" class="linkFrm">Use a URL instead</a>
</div>
</div>
<div id="photo_url">
<label for="description">Photo URL</label>
<br /><input class="input-text" type="text" name="url" id="url" size="80" value="{editUrl}" />
<div style="font-size:11px; color:#666; margin-top:5px;">
<a href="#" class="linkFrm">Use a upload form instead</a>
</div>
</div>
<div>
<label for="description" style="display:block;">Caption <span class="option">(optional)</span></label>
<textarea rows="12" cols="84" name="description" id="description">{editBody}</textarea>
</div>
<input type="hidden" name="title" id="title" value="" />
<input type="hidden" name="MAX_FILE_SIZE" value="10485760" />
<input type="hidden" name="type" id="type" value="{type}" />
<input type="hidden" name="date" id="date" value="{date}" />
<input type="hidden" name="id_user" id="id_user" value="{id_user}" />
<script>
$('#photo_url').css('display','none');
$("#autosave").validate({
rules: {
photo: {
required: function() {
return ($('#photo_upload').css('display')!= 'none') ? true : false;
},
accept: "(jpe?g|gif|png)"
},
url: {
required: function() {
return ($('#photo_url').css('display')!= 'none') ? true : false;
},
url: true
}
},
errorElement: "span",
errorClass: "validate_span",
errorPlacement: function(label, element) {
label.prependTo(element.prev())
}
});
$("#photo_upload a.linkFrm").click( function() {
$('#photo_upload').css('display','none');
$('#photo_url').css('display','block');
$('#photo').val('');
return false;
}
);
$("#photo_url a.linkFrm").click( function() {
$('#photo_url').css('display','none');
$('#photo_upload').css('display','block');
$('#url').val('');
return false;
}
);
</script>
{elseif {$type}=='quote'}
<div>
<label for="description">Quote</label>
<br /><textarea rows="12" cols="84" name="description" id="description">{editBody}</textarea>
</div>
<div>
<label for="title">Source <span class="option">(optional)</span></label>
<br /><input class="txt" type="text" name="title" id="title" value="{editTitle}" size="80" />
</div>
<input type="hidden" name="url" id="url" value="" />
<input type="hidden" name="type" id="type" value="{type}" />
<input type="hidden" name="date" id="date" value="{date}" />
<input type="hidden" name="id_user" id="id_user" value="{id_user}" />
<script>
$("#autosave").validate({
rules: {
description: "required"
},
errorElement: "span",
errorClass: "validate_span",
errorPlacement: function(label, element) {
label.prependTo(element.prev())
}
});
</script>
{elseif {$type}=='url'}
<div>
<label for="title">Name <span class="option">(optional)</span></label>
<br /><input class="txt" type="text" name="title" id="title" value="{editTitle}" size="80" />
</div>
<div>
<label for="url">URL</label>
<br /><input class="txt" type="text" name="url" id="url" value="{editUrl}" size="80" />
</div>
<div>
<div id="add_link_description" style="margin-top:5px;">
<a class="linkFrm" href="#" onclick="document.getElementById('link_description').style.display = ''; document.getElementById('add_link_description').style.display = 'none'; return false;" style="font-size:11px;">Add a description</a><br /><br />
</div>
<div id="link_description" style="display:none;">
<label for="description">Description</label><br />
<textarea rows="12" cols="84" name="description" id="description">{editBody}</textarea>
</div>
</div>
<input type="hidden" name="type" id="type" value="{type}" />
<input type="hidden" name="date" id="date" value="{date}" />
<input type="hidden" name="id_user" id="id_user" value="{id_user}" />
<script>
$("#autosave").validate({
rules: {
url: {
required: true,
url: true
}
},
errorElement: "span",
errorClass: "validate_span",
errorPlacement: function(label, element) {
label.prependTo(element.prev())
}
});
</script>
{elseif {$type}=='conversation'}
<div>
<label for="title">Title <span class="option">(optional)</span></label><br />
<input class="txt" type="text" name="title" id="title" value="{editTitle}" size="80" />
</div>
<div>
<label for="description">Conversation</label>
<div style="color: rgb(136, 136, 136); margin-bottom: 10px; font-size: 10px;">
<span style="font-weight: bold;">Example</span><br>
<span style="font-style: italic;">
Geek: Wow an open source tumblelog CMS!!.<br>
Normal: Tumble... what??<br>
Geek: Read the wikipedia!!
</span>
</div>
<textarea rows="12" cols="84" name="description" id="description">{editBody}</textarea>
</div>
<input type="hidden" name="url" id="url" value="" />
<input type="hidden" name="type" id="type" value="{type}" />
<input type="hidden" name="date" id="date" value="{date}" />
<input type="hidden" name="id_user" id="id_user" value="{id_user}" />
<script>
$("#autosave").validate({
rules: {
description: "required"
},
errorElement: "span",
errorClass: "validate_span",
errorPlacement: function(label, element) {
label.prependTo(element.parent().children("label"))
}
});
</script>
{elseif {$type}=='video'}
<div>
<label for="url">Video URL</label>
<br /><input class="txt" type="text" name="url" id="url" value="{editUrl}" size="80" />
<div style="color: rgb(136, 136, 136); margin-bottom: 5px; font-size: 11px; font-weight: bold;">
This is the URL from the video sites YouTube, Vimeo, Yahoo, Daily Motion <br />
or even an Slide Share Presentation.<br />
<span style="font-size: 10px; font-weight: normal;">(ie. http://youtube.com/watch?v=HcBFLN9cli0)</span>
</div>
</div>
<div>
<label for="description">Caption <span class="option">(optional)</span></label><br />
<textarea rows="12" cols="84" name="description" id="description" tabindex="2">{editBody}</textarea>
</div>
<input type="hidden" name="title" id="title" value="" />
<input type="hidden" name="type" id="type" value="{type}" />
<input type="hidden" name="date" id="date" value="{date}" />
<input type="hidden" name="id_user" id="id_user" value="{id_user}" />
<script>
$("#autosave").validate({
rules: {
url: {
required: true,
url: true
}
},
errorElement: "span",
errorClass: "validate_span",
errorPlacement: function(label, element) {
label.prependTo(element.prev())
}
});
</script>
{elseif {$type}=='mp3'}
<div>
<label for="url">MP3 URL</label>
<br /><input class="txt" type="text" name="url" id="url" value="{editUrl}" size="80" />
<div style="color: rgb(136, 136, 136); margin-bottom: 5px; font-size: 11px; font-weight: bold;">
This is the MP3 file URL or a GoEar URL or an Odeo URL.<br>
<span style="font-size: 10px; font-weight: normal;">(ie. http://www.goear.com/listen.php?v=c0a2c85)</span>
</div>
</div>
<div>
<label for="description">Caption <span class="option">(optional)</span></label><br />
<textarea rows="12" cols="84" name="description" id="description" tabindex="2">{editBody}</textarea>
</div>
<input type="hidden" name="title" id="title" value="" />
<input type="hidden" name="type" id="type" value="{type}" />
<input type="hidden" name="date" id="date" value="{date}" />
<input type="hidden" name="id_user" id="id_user" value="{id_user}" />
<script>
$("#autosave").validate({
rules: {
url: {
required: true,
url: true
}
},
errorElement: "span",
errorClass: "validate_span",
errorPlacement: function(label, element) {
label.prependTo(element.prev())
}
});
</script>
{/if}
{form}
<p>
<span style="color: rgb(136, 136, 136); margin-bottom: 10px; font-size: 10px;">
{__("Some HTML allowed")}:<br />

View File

@ -487,12 +487,11 @@ if(!defined('entry') || !entry) die('Not a valid page');
return $tmpStr;
}
function trimString($string, $len = "") {
if($len>strlen($string) or $len<1 or strlen($string)<1) {
function trimString($string, $len=50) {
if($len>strlen(strip_tags($string)) or $len<1 or strlen(strip_tags($string))<1)
return strip_tags($string);
}
$string = strip_tags($string);
$len = (empty($len)) ? "50" : $len ;
return (strpos($string," ",$len))?substr_replace($string, "...", $len):$string;
}
?>

View File

@ -13,7 +13,7 @@ class themes{
var $vars=array(); //variable para apilar las variables que se asignan a la plantilla
function themes(){
#$this->l10n = l10n::getInstance();
}
function set($name, $value){
@ -46,6 +46,7 @@ class themes{
$this->registrar_vars();
$this->__();
$this->eval_control_structures();
//evaluate All as PHP code
ob_start();eval($this->output);
$this->output = stripslashes(ob_get_clean());
@ -67,9 +68,6 @@ class themes{
//Converting the $this->vars[\'variable\'] format to {$this->vars['variable']}
$this->output = preg_replace("/[\$]this->vars\[\\\'([^ \.\\\]+)\\\'\]\[\\\'([^ \.\\\]+)\\\'\]/","{\$this->vars['$1']['$2']}",$this->output);
$this->output = preg_replace("/[\$]this->vars\[\\\'([^ \.\\\]+)\\\'\]/","{\$this->vars['$1']}",$this->output);
//Converting the {__(\'word\')} format to {__('word')}
#$this->output = preg_replace("/[\$]this->vars\[\\\'([^ \.\\\]+)\\\'\]/","{\$this->vars['$1']}",$this->output);
}
//sustituye las variables en el output del template
@ -90,13 +88,18 @@ class themes{
//replacing {$key} format by $this->vars['key']
//replacing {$array.key} format by $this->vars['array']['key']
$patrones = array(
'/{\$([^ \.}]+)}/s',
'/{\$([^ \.}]+)\.([^ \.}]+)}/s'
#'/{\$([^ \.}]+)}/s',
#'/{\$([^ \.}]+)\.([^ \.}]+)}/s'
'/{\$(\w+)}/s',
'/{\$(\w+)\.(\w+)}/s',
'/\$(\W)/s'
);
$reemplazos = array(
"\$this->vars['$1']",
"\$this->vars['$1']['$2']"
"\$this->vars['$1']['$2']",
"\\\\$$1"
);
$this->output = preg_replace($patrones, $reemplazos, $this->output);
}

View File

@ -112,8 +112,6 @@ $theme = new themes;
$conversation = $register["description"];
$register["description"] = $register["description"];
$register["title"] = stripslashes($register["title"]);
$register["description"] = stripslashes($register["description"]);