[pLog-svn] r4145 - in plog/branches/lifetype-1.1.2: js/ui templates/admin

Oscar Renalias oscar at renalias.net
Fri Oct 20 21:52:15 GMT 2006


If there's any of you there using a character set other than  
iso-8859-1 or utf-8 could you give this a try? I'd like to verify  
that this is working for all sorts of character sets.

No need to download and install LT 1.1.2, just create a new user at  
http://devel.lifetype.net/register.php and test it there.

Thanks.

On 21 Oct 2006, at 00:05, oscar at devel.lifetype.net wrote:

> Author: oscar
> Date: 2006-10-20 21:05:51 +0000 (Fri, 20 Oct 2006)
> New Revision: 4145
>
> Modified:
>    plog/branches/lifetype-1.1.2/js/ui/common.js
>    plog/branches/lifetype-1.1.2/templates/admin/editpost.template
>    plog/branches/lifetype-1.1.2/templates/admin/newpost.template
> Log:
> no more clumsy code to implement the post preview feature and no  
> more problems with locale. I finally managed to find a way to  
> submit a form to a window created via window.open() so we can now  
> safely let the browswer do all the encoding of characters and  
> forget about our hacks. This seems to work fine with IE 6, Firefox  
> 2.0 and Safari 2.0 and it should fix issue 1066 (http:// 
> bugs.lifetype.net/view.php?id=1066)
>
>
> Modified: plog/branches/lifetype-1.1.2/js/ui/common.js
> ===================================================================
> --- plog/branches/lifetype-1.1.2/js/ui/common.js	2006-10-19  
> 11:08:45 UTC (rev 4144)
> +++ plog/branches/lifetype-1.1.2/js/ui/common.js	2006-10-20  
> 21:05:51 UTC (rev 4145)
> @@ -239,154 +239,7 @@
>    }
>  }
>
> -function getPostEditFormElements( formId )
> -{
> -	var formData = '';
> -	
> -	form = document.getElementById( formId );
> -	
> -	for(i = 0; i < form.elements.length; i++ ) {
> -		itemName = form.elements[i].name;
> -		itemValue = form.elements[i].value;
> -		
> -		if( itemName != "op" ) {
> -			// we don't want to send more than one "op" parameter... do we?
> -			if( itemName == "postCategories[]" ) {
> -				// we need to have a special case for this one because it's a  
> list that
> -				// allows multiple selection... only using the "value"  
> attribute will
> -				// return one of the items and we would like to have them all
> -				for (var j = 0; j < form.elements[i].options.length; j++) {
> -					if (form.elements[i].options[j].selected)
> -						formData = formData + itemName + "=" + form.elements 
> [i].options[j].value + "&";
> -				}
> -			}
> -			else if( itemName == "postText" && htmlAreaEnabled ) {
> -			    if ( blogLocale == "UTF-8" ) {
> -				    formData = formData + itemName + "=" + encodeURIComponent 
> (tinyMCE.getContent('postText')) + "&";
> -				} else {
> -				    formData = formData + itemName + "=" + escape 
> (tinyMCE.getContent('postText')) + "&";
> -				}
> -			}
> -			else if( itemName == "postExtendedText" && htmlAreaEnabled ) {
> -				if ( blogLocale == "UTF-8" ) {
> -				    formData = formData + itemName + "=" + encodeURIComponent 
> (tinyMCE.getContent('postExtendedText')) + "&";
> -			    } else {
> -				    formData = formData + itemName + "=" + escape 
> (tinyMCE.getContent('postExtendedText')) + "&";
> -                }
> -			}
> -			else {
> -				// for all other elements, normal handling
> -				if ( blogLocale == "UTF-8" ) {
> -				    formData = formData + itemName + "=" + encodeURIComponent 
> (itemValue) + "&";
> -				} else {
> -				    formData = formData + itemName + "=" + escape(itemValue) +  
> "&";
> -			    }
> -			}
> -		}
> -    }	
> -
> -    return formData;
> -}
> -
>  /**
> - * opens a new window where the post preview will be shown
> - */
> -function previewNewPost( htmlAreaEnabled )
> -{
> -	previewPost( "newPost", htmlAreaEnabled );
> -}
> -
> -function previewUpdatedPost( htmlAreaEnabled )
> -{
> -	previewPost( "editPost", htmlAreaEnabled );
> -}
> -	
> -function previewPost_old( formId )
> -{
> -	form = document.getElementById( formId );
> -	
> -	// we will only open this window if there is at least one  
> category selected, otherwise it
> -	// will cause problems!
> -	if( submitNewPost( form )) {
> -		url = "?op=previewPost&" + getPostEditFormElements( formId );
> -		//window.alert(url);
> -		postPreview = window.open 
> ( url,'Preview','scrollbars=yes,resizable=yes,toolbar=no');
> -	}
> -	
> -	return true;
> -}
> -
> -function previewPost( formId, htmlAreaEnabled )
> -{
> -    form = document.getElementById( formId )
> -
> -    if( submitNewPost( form )) {
> -        preview = window.open( '', '',  
> 'scrollbars=yes,resizable=yes,toolbar=no' );
> -        preview.focus();
> -
> -        // write the contents as a form with hidden fields
> -        preview.document.open();
> -        preview.document.write( '<html>' +
> -                                '<meta http-equiv="content-type"  
> content="text/html;charset=' + blogLocale + '" />' +
> -                                '<body><div style="display:none">' +
> -                                '<form name="previewForm"  
> method="post" action="admin.php" accept-charset="' + blogLocale +  
> '">' +
> -                                '<input type="hidden" name="op"  
> value="previewPost">' );
> -        // post text, slug and topic... if we put everything in  
> textareas, we avoid the need to escape things
> -        // also we should keep in mind whether we're using  
> htmlarea or not, since then we should use a different method
> -        // to get the value out of the textareas
> -        if( htmlAreaEnabled ) {
> -        	postText = tinyMCE.getContent('postText');
> -        	postExtendedText = tinyMCE.getContent('postExtendedText');
> -		}
> -        else {
> -        	postText = form.postText.value;
> -        	postExtendedText = form.postExtendedText.value;
> -		}
> -        preview.document.write( '<textarea name="postText">' +  
> postText + '</textarea>' +
> -                                '<textarea name="postTopic">' +  
> form.postTopic.value + '</textarea>' +
> -                                '<textarea  
> name="postExtendedText">' + postExtendedText + '</textarea>' +
> -                                '<input type="hidden"  
> name="postSlug" value="' + form.postSlug.value + '" />' );
> -        // post date and time
> -        preview.document.write( '<input type="hidden"  
> name="postDateTime" value="' + form.postDateTime.value + '" /> ' );
> -
> -        // article categories
> -        preview.document.write( '<select name="postCategories[]"  
> multiple="multiple">' );
> -        for( var i = 0; i < form.postCategories.options.length; i+ 
> + ) {
> -            if( form.postCategories.options[i].selected )
> -                preview.document.write( '<option  
> selected="selected" value="' + form.postCategories.options[i].value  
> + '">test</option>' );
> -        }
> -        preview.document.write( '</select>' );
> -        // custom fields -- since we don't know their exact names  
> and amount, we need to loop through the whole form to find them!
> -        for(var i = 0; i < form.elements.length; i++ ) {
> -            var itemName = form.elements[i].name;
> -            if( itemName ) {
> -                if( itemName.substr(0,11) == "customField" ) {
> -                    if( form.elements[i].type == "checkbox" )
> -                        preview.document.write( '<input  
> type="hidden" name="' + itemName + '" value="' + form.elements 
> [i].value + '" />' );
> -                    else
> -                        preview.document.write( '<textarea name="'  
> + itemName + '">' + form.elements[i].value + '</textarea>' );
> -                }
> -            }
> -        }
> -
> -        // footer
> -        preview.document.write( '</form></div>' +
> -                                '<b>Loading preview, please  
> wait...</b>' +
> -                                '</body></html>' );
> -        preview.document.close();
> -
> -        // and submit the form
> -		preview.document.previewForm.submit();
> -    }
> -}
> -
> -/*****
> - *
> - * functions for dealing with the "edit blog" screen
> - *
> - *****/
> -
> -/**
>   * generic function for moving elements from one list to another!
>   */
>  function moveElement(srcList, dstList)
>
> Modified: plog/branches/lifetype-1.1.2/templates/admin/ 
> editpost.template
> ===================================================================
> --- plog/branches/lifetype-1.1.2/templates/admin/editpost.template	 
> 2006-10-19 11:08:45 UTC (rev 4144)
> +++ plog/branches/lifetype-1.1.2/templates/admin/editpost.template	 
> 2006-10-20 21:05:51 UTC (rev 4145)
> @@ -22,10 +22,29 @@
>    var msgSaving = "{$locale->tr("saving_message")}";
>    var msgShowOptionPanel = "{$locale->tr("show_option_panel")}";
>    var msgHideOptionPanel = "{$locale->tr("hide_option_panel")}";
> +  var preview = false;
>
>    {include file="$admintemplatepath/calendarstuff.template"}
> +
> +{literal}
> +
> +function selectOperation( t )
> +{
> +	if( preview ) {	
> +		document.editPost.op.value="previewPost";
> +		window.open("", t, "scrollbars=yes,resizable=yes,toolbar=no" );
> +		return true;
> +	}
> +	else {
> +		document.editPost.op.value="updatePost";
> +		document.editPost.target="";
> +		document.editPost.action="admin.php";
> +		return true;
> +	}
> +}
> +{/literal}
>   </script>
> -  <form name="editPost" id="editPost" action="admin.php"  
> method="post">
> +  <form name="editPost" id="editPost" method="post"  
> onSubmit="return selectOperation(this.target);" target="admin">
>     <fieldset class="inputField">
>     <legend>{$locale->tr("editPost")}</legend>
>
> @@ -159,8 +178,8 @@
>  	</div>
>  	</fieldset>
>  	<div class="buttons">
> -      <input type="button" name="previewPost" value="{$locale->tr 
> ("preview")}" onclick="javascript:previewUpdatedPost 
> (htmlAreaEnabled)" />	
> -      <input type="submit" name="updatePost" value="{$locale->tr 
> ("update")}"/>
> +      <input type="submit" name="previewPost" value="{$locale->tr 
> ("preview")}" onClick="preview=true" />	
> +      <input type="submit" name="updatePost" value="{$locale->tr 
> ("update")}" onClick="preview=false"/>
>        <input type="hidden" name="op" value="updatePost"/>
>        <input type="hidden" name="postId" id="postId"  
> value="{$postId}"/>
>  	</div>  	
>
> Modified: plog/branches/lifetype-1.1.2/templates/admin/ 
> newpost.template
> ===================================================================
> --- plog/branches/lifetype-1.1.2/templates/admin/newpost.template	 
> 2006-10-19 11:08:45 UTC (rev 4144)
> +++ plog/branches/lifetype-1.1.2/templates/admin/newpost.template	 
> 2006-10-20 21:05:51 UTC (rev 4145)
> @@ -34,16 +34,35 @@
>
>    var todayDay = '{$today->getDay()}';
>    var todayMonth = '{$today->getMonth()}';
> -  var todayYear = '{$today->getYear()}';
> +  var todayYear = '{$today->getYear()}';
>
> +  // this needs to be pre-initialized
> +  var preview = false;
> +
>    {include file="$admintemplatepath/calendarstuff.template"}
> -
> - </script>
>
> -  <form name="newPost" id="newPost" action="admin.php" method="post">
> +{literal}
> +
> +function selectOperation( t )
> +{
> +	if( preview ) {	
> +		document.newPost.op.value="previewPost";
> +		window.open("", t, "scrollbars=yes,resizable=yes,toolbar=no" );
> +		return true;
> +	}
> +	else {
> +		document.newPost.op.value="addPost";
> +		document.newPost.target="";
> +		document.newPost.action="admin.php";
> +		return true;
> +	}
> +}
> +{/literal}
> +</script>
> +
> +  <form name="newPost" id="newPost" method="post" onSubmit="return  
> selectOperation(this.target);" target="admin">
>     <fieldset class="inputField">
>     <legend>{$locale->tr("newPost")}</legend>
> -
>     <div class="optionIcon">
>       <a id="optionIconLink" href="#" title="{$locale->tr 
> ("hide_option_panel")}" onclick="switchOptionPanel()">{$locale->tr 
> ("hide_option_panel")}</a>
>     </div>
> @@ -192,10 +211,10 @@
>  		{if $browser->has_feature("xmlhttpreq")}
>  		<input type="button" name="saveDraftAndContinue" value="{$locale- 
> >tr("save_draft_and_continue")}"  
> onclick="javascript:saveDraftArticleAjax()" />
>  		{/if}	
> -		<input type="button" name="previewPost" value="{$locale->tr 
> ("preview")}" onclick="javascript:previewNewPost(htmlAreaEnabled)" />
> -		<input type="submit" name="addPost" value="{$locale->tr 
> ("add_post")}" />
> +		<input type="submit" name="previewPost" value="{$locale->tr 
> ("preview")}" onClick="preview=true"/>
> +		<input type="submit" name="addPost" value="{$locale->tr 
> ("add_post")}" onClick="preview=false" />
>  		<input type="hidden" name="isDraft" value="" />
> -		<input type="hidden" name="op" value="addPost"/>
> +		<input type="hidden" name="op" value="addPost" />
>  		<input type="hidden" name="postId" id="postId" value="{$postId}" />
>      </div>
>    </form>
>
> _______________________________________________
> pLog-svn mailing list
> pLog-svn at devel.lifetype.net
> http://devel.lifetype.net/mailman/listinfo/plog-svn
>



More information about the pLog-svn mailing list