手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表Tag:rsync

firefox TABGRoup 的 BUG

不知道从哪个版本开始。firefox有了tab group的功能,以前也从来没有注意过它存在的问题。直到昨天:
昨天發生了什麼?我用Tabgroup功能,為我的兩批URL分了一個組,在我創建第三個group的時候,出現了異常,這回好了,firefox崩潰了。
崩潰完後,再次啟動firefox的時候。我的tab group裏的信息都沒了。OH MYGOD
我沒有仔細的想這個問題,我猜測:sqlite 崩潰後,被系統自動重建了。然後。就啥也沒有了。。

哭泣,我辛苦收集的那些URL啊。早知道及時加入收藏得了

Tags: firefox

扩展yii的验证类

在项目中遇到文件上传的问题,这时候需要用到CFileValidator,但是官方的验证中少了一点点的处理,比如,对于图片,我只想上传尺寸正好是300x500的图片。怎么办?
所以我做了一点小小的扩展,于是我在rules里面加了这么两条:

PHP代码
  1. array('picname''application.validators.Myfile''on'=>'insert','types'=>'jpg,png','wrongType'=>'只允许上传jpg或者PNG','maxSize' => 1024*300,'tooLarge' => '图片最大只支持300K','imageSize'=>'768x1024','wrongImageSize'=>'对不起,图片尺寸只支持768*1024'),  
  2.          array('picname''application.validators.Myfile''on'=>'update','types'=>'jpg,png','wrongType'=>'只允许上传jpg或者PNG','maxSize' => 1024*300,'tooLarge' => '图片最大只支持300K','imageSize'=>'768x1024','wrongImageSize'=>'对不起,图片尺寸只支持768*1024','allowEmpty'=>true,),  

数组的第二个字段就是一个全路径,告诉rules,对于picname用的是application.validators.Myfile类。这个类其实很简单,只是简单的扩展了官方的CFileValidator类,大致如下:

PHP代码
  1. class Myfile extends CFileValidator{  
  2.     public $imageSize;  
  3.     public $wrongImageSize;  
  4.   
  5.     /** 
  6.      * @param CModel $object the object being validated 
  7.      * @param string $attribute the attribute being validated 
  8.      * @param CUploadedFile $file uploaded file passed to check against a set of rules 
  9.      * @return void 
  10.      */  
  11.     protected function validateFile($object$attribute$file){  
  12.         parent::validateFile($object,$attribute,$file);  
  13.         if($this->imageSize!=''&&strpos($this->imageSize,"x")!==false){  
  14.             list($width,$height) = @getimagesize($file->getTempName());  
  15.             $imageSize = sprintf("%sx%s",$width,$height);  
  16.             if($imageSize != $this->imageSize){  
  17.                 $message=$this->wrongImageSize!==null?$this->wrongImageSize : Yii::t('yii','The file "{file}" cannot be uploaded. Only files with these size are allowed: {imagesize}.');  
  18.                 $this->addError($object,$attribute,$message,array('{file}'=>$file->getName(), '{extensions}'=>$this->imageSize));  
  19.             }  
  20.         }  
  21.     }  
  22. }  

我这种只是简单的判断是否与指定尺寸相符,如果需要检测小于指定范围的图片,那就需要多一点的判断了,也不会太难啦。主要是一个思路(感谢烂桔提供思路)

Tags: yii

Discuz Uchome 小技巧

discuz的ajaxpost功能有点强大,但缺点也很明显,如果ajaxpost提交一个FORM,那么返回的时候只能显示showmessage的内容,而不会主动跳转,因此这里就有一个小技巧 了。。

比如默认submit按钮这样操作:onclick="ajaxpost('formid')";之类的,我们可以先这样。。
onclick="$('__formid').innerText='';ajaxpost('formid');checkPostResult();";
含义其实很简单,先把ajaxpost提示信息所在的div内容清空。然后提交。最后,根据返回值来判断。。

JavaScript代码
  1. function checkPostResult(){  
  2.     var cid = setInterval(function(){  
  3.         if( $('__formid').innerText == 'success'){  
  4.                 alert('提交成功');  
  5.                 location.href='xxxxx.php';  
  6.                 clearInterval(cid);  
  7.         }  
  8.     },1000);  
  9. }  

这个处理也很简单,为什么是用setInterval和clearInterval,主要是由于ajax是异步操作,如果不用setInterval方法 ,那么在ajaxpost结束的时候,其实提示信息还没有append到提示信息所在的ID里,所以用setInterval方法先延迟然后循环处理最后再结束提示。。。

clearInterval用的不太对,但短时间内想不到更好的。先这样临时解决喽。

Tags: discuz, uchome, tips