From ef8409af117f408fdf08bfde089f00a9bd8b94c0 Mon Sep 17 00:00:00 2001
From: YuCheng Hu ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:1:{i:0;a:5:{s:4:"data";s:6:"Joomla";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:6:"author";a:1:{i:0;a:5:{s:4:"data";s:10:"honeymoose";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Tue, 29 Jun 2010 04:55:32 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:1;a:6:{s:4:"data";s:47:"
+
+
+
+
+
+
+ ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:1:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:52:"Joomla 可以为不同的用户指定默认的语言";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:56:"http://forums.hawebs.net/computer/viewthread.php?tid=838";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:663:"登录 Joomla 的后台。
+
+选择要修改的用户后,对用户的属性进行修改。
+
+我们可以为这个用户指定前台和后台的的语言。
+
+1463[/attach]
+
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:1:{i:0;a:5:{s:4:"data";s:6:"Joomla";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:6:"author";a:1:{i:0;a:5:{s:4:"data";s:10:"honeymoose";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Mon, 28 Jun 2010 19:12:24 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:2;a:6:{s:4:"data";s:47:"
+
+
+
+
+
+
+ ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:1:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:72:"Joomla 默认页语言的读取是读取语言包里面的 xml 文件的";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:56:"http://forums.hawebs.net/computer/viewthread.php?tid=837";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:611:"如果需要在进行语言选择时候的显示。
+
+那么需要修改语言文件包里面的文件。
+
+1462[/attach]
+
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:1:{i:0;a:5:{s:4:"data";s:6:"Joomla";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:6:"author";a:1:{i:0;a:5:{s:4:"data";s:10:"honeymoose";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Mon, 28 Jun 2010 18:25:35 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:3;a:6:{s:4:"data";s:47:"
+
+
+
+
+
+
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:1:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:41:"Joomal 1.5 的生命周期和维护时间";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:56:"http://forums.hawebs.net/computer/viewthread.php?tid=836";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:831:"2010年6月,Joomla! 1.6 已经进入 Bate 版本的测试了。
在 Joomla 1.6 版本进入稳定发行后, 1.5 版的 Joomla 可能会保持 1 年左右的维护时间。
@@ -48,7 +101,7 @@ a:4:{s:5:"child";a:1:{s:0:"";a:1:{s:3:"rss";a:1:{i:0;a:6:{s:4:"data";s:4:"
Joomla 1.5 从正式发行到现在,已经总共超过了 3.5 年的维护 ...
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:1:{i:0;a:5:{s:4:"data";s:6:"Joomla";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:6:"author";a:1:{i:0;a:5:{s:4:"data";s:10:"honeymoose";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Mon, 28 Jun 2010 06:40:59 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:1;a:6:{s:4:"data";s:47:"
+
+ * require_once 'ProgressBar.class.php';
+ * $bar = new ProgressBar();
+ * $bar->setMessage("Let's talk to the user!");
+ *
+ * $bar->initialize(3); //initialize the bar with the total number of elements to process
+ *
+ * //do something time consuming here...
+ * $bar->increase(); //call for first element
+ *
+ * //do something time consuming here...
+ * $bar->increase(); //call for second element
+ * $bar->setMessage("Tell the user what you are doing!");
+ *
+ * //do something time consuming here...
+ * $bar->increase(); //call for third element. end of bar...
+ *
+ *
+ * @changes
+ * Version 1.2
+ * - added method setMessage() to change the message at runtime (JavaScript)
+ * - minor changes in HTML-code
+ * - refactoring: added new setter-methods
+ *
+ * Version 1.1: Use $bar->stop(true) stop the bar instantly at any time.
+ *
+ */
+
+defined( '_JEXEC' ) or die( 'Restricted access-class' );
+
+class ProgressBar {
+ /**
+ * Flag for class initialization.
+ * @param bool $initialized true=class initialized
+ */
+ private $initialized;
+
+ /**
+ * Flag for start of the progress bar.
+ * @started bool $started true=progress bar has been started.
+ */
+ private $started;
+
+ /**
+ * Flag for the end of the progress bar.
+ * @param bool $finished true=progress bar has reached the end.
+ */
+ private $finished;
+
+ private $firstStep;
+
+ /**
+ * Constructor
+ *
+ * @param str $message Message shown above the bar eg. "Please wait...". Default: ''
+ * @param bool $hide Hide the bar after completion (with JavaScript).
+ * Default: false
+ * @param int $sleepOnFinish Seconds to sleep after bar completion. Default: 0
+ * @param int $barLength Length in pixels. Default: 200
+ * @param int $precision Desired number of steps to show. Default: 20. Precision will become $numElements when greater than $numElements. $barLength will increase if $precision is greater than $barLength.
+ * @param str $backgroundColor Color of the bar background
+ * @param str $foregroundColor Color of the actual progress-bar
+ * @param str $domID Html-Attribute "id" for the bar
+ * @param str $stepElement Element the bar is build from
+ */
+ function ProgressBar($message='', $hide=false, $sleepOnFinish=0, $barLength=300, $precision=20,
+ $backgroundColor='#cccccc', $foregroundColor='blue', $domID='progressbar',
+ $stepElement='')
+ {
+ global $pb_instance;
+ $this->instance = $pb_instance++;
+
+ $this->setAutohide($hide);
+ $this->setSleepOnFinish($sleepOnFinish);
+ $this->setDomIDs($domID);
+ $this->setMessage($message);
+ $this->setStepElement($stepElement);
+ $this->setPrecision($precision);
+ $this->setBackgroundColor($backgroundColor);
+ $this->setForegroundColor($foregroundColor);
+ $this->setBarLength($barLength);
+
+ //Initialization
+ $this->initialized = false;
+ $this->started = false;
+ $this->finished = false;
+ $this->firstStep = null;
+ }
+
+
+ /**
+ * Print the empty progress bar
+ * @param int $numElements Number of Elements to be processed and number of times $bar->initialize() will be called while processing
+ */
+ function initialize($numElements)
+ {
+ //increase time limit if allowed
+ if(!ini_get('safe_mode')){
+ set_time_limit(0);
+ }
+
+ $this->StepCount = 0;
+ $this->CallCount = 0;
+
+ $numElements = (int) $numElements ;
+
+ if($numElements == 0){
+ $numElements = 1;
+ }
+
+ //calculate the number of calls for one step
+ $this->CallsPerStep = ceil(($numElements/$this->precision)); // eg. 1000/200 = 100
+
+ //calculate the total number of steps
+ if($numElements >= $this->CallsPerStep){
+ $this->numSteps = round($numElements/$this->CallsPerStep);
+ }else{
+ $this->numSteps = round($numElements);
+ }
+
+ //calculate the length of one step
+ $this->stepLength = floor($this->barLength/$this->numSteps); // eg. 100/10 = 10
+
+ //the rest is the first step
+ $this->rest = $this->barLength-($this->stepLength*$this->numSteps);
+
+ if($this->rest > 0){
+ $this->firstStep = $this->getStep($this->rest);
+ }
+
+ //build bar background
+ $backgroundLength = $this->rest+($this->stepLength*$this->numSteps);
+ $this->backgroundBar = sprintf($this->stepElement,$backgroundLength,$this->backgroundColor);
+
+ //stop buffering (only when a buffer is active)
+ if (count(ob_list_handlers()) != 0) {
+ ob_end_flush();
+ }
+
+ //start buffering
+ ob_start();
+
+ echo '';
+ ob_flush();
+ flush();
+
+ //sleep x seconds before ending the script
+ if(!$error){
+ if($this->sleepOnFinish > 0){
+ sleep($this->sleepOnFinish);
+ }
+
+ //hide the bar
+ if($this->hide){
+ echo '';
+ ob_flush();
+ flush();
+ }
+ }
+ $this->finished = true;
+ }
+
+ function setMessage($text)
+ {
+ if($this->initialized){
+ echo '';
+ ob_flush();flush();
+ }else{
+ $this->message = $text;
+ }
+ }
+
+ function setAutohide($hide)
+ {
+ $this->hide = (bool) $hide;
+ }
+
+ function setSleepOnFinish($sleepOnFinish)
+ {
+ $this->sleepOnFinish = (int) $sleepOnFinish;
+ }
+
+ function setDomIDs($domID)
+ {
+ $this->domID = strip_tags($domID).$this->instance;
+ $this->domIDMessage = $this->domID.'_message';
+ }
+
+ function setStepElement($stepElement)
+ {
+ $this->stepElement = $stepElement;
+ }
+
+ function setBarLength($barLength)
+ {
+ $this->barLength = (int) $barLength;
+
+ if($this->barLength < $this->precision){
+ $this->barLength = $this->precision;
+ }
+ }
+
+ function setPrecision($precision)
+ {
+ $this->precision = (int) $precision;
+ }
+
+ function setBackgroundColor($color)
+ {
+ $this->backgroundColor = strip_tags($color);
+ }
+
+ function setForegroundColor($color)
+ {
+ $this->foregroundColor = strip_tags($color);
+ }
+
+ function getStep($length=null)
+ {
+ if($length==null){
+ $length = $this->stepLength;
+ }
+ return sprintf($this->stepElement,$length,$this->foregroundColor);
+ }
+}
+?>
\ No newline at end of file
diff --git a/oss/joomla/trunk/administrator/components/com_jdownloads/admin.jdownloads.html.php b/oss/joomla/trunk/administrator/components/com_jdownloads/admin.jdownloads.html.php
index cbc54327..6f57cbda 100644
--- a/oss/joomla/trunk/administrator/components/com_jdownloads/admin.jdownloads.html.php
+++ b/oss/joomla/trunk/administrator/components/com_jdownloads/admin.jdownloads.html.php
@@ -315,7 +315,8 @@ function categoriesEdit($option, $row, $inputbox_pic, $access_box, $last_dir_ent
-
+
+
@@ -730,6 +731,39 @@ echo $pane->startPanel(JText::_('JLIST_BACKEND_FILESEDIT_TABTITLE_2'),'daten2');
+ | + |
+
+ + + |
+
+ + |
+ + |
+ |
| @@ -2876,7 +3024,7 @@ echo $pane->startPanel(JText::_('JLIST_BACKEND_SETTINGS_TABTEXT_FRONTEND'),'fron |
- + '.JText::_('JLIST_BACKEND_SETTINGS_FRONTEND_HEADER_DESC2');?> |
|
- + |
||
- + |
@@ -2910,13 +3058,13 @@ echo $pane->startPanel(JText::_('JLIST_BACKEND_SETTINGS_TABTEXT_FRONTEND'),'fron | |
- + |
||
@@ -2976,7 +3124,42 @@ echo $pane->startPanel(JText::_('JLIST_BACKEND_SETTINGS_TABTEXT_FRONTEND'),'fron |
||
+ + |
+
+ + + |
+ |
+ + |
+
+ + + |
+ |
+ + |
+
+ + + |
+
+ |
+ |
+
+ + + |
+ |
@@ -3003,7 +3186,7 @@ echo $pane->startPanel(JText::_('JLIST_BACKEND_SETTINGS_TABTEXT_FRONTEND'),'fron |
||
@@ -3021,7 +3204,8 @@ echo $pane->startPanel(JText::_('JLIST_BACKEND_SETTINGS_TABTEXT_FRONTEND'),'fron |
- ||
startPanel(JText::_('JLIST_BACKEND_SETTINGS_TABTEXT_FRONTEND'),'fron |
||
+ + |
+ + + | +|
- + |
@@ -4077,7 +4276,7 @@ echo $pane->startPanel(JText::_('JLIST_BACKEND_SETTINGS_TABTEXT_SPECIALS'),'spec | |||||||
- + |
@@ -4088,6 +4287,52 @@ echo $pane->startPanel(JText::_('JLIST_BACKEND_SETTINGS_TABTEXT_SPECIALS'),'spec |
|||||||
| + | ||||||||
+
|
+ ||||||||
'.JText::_('JLIST_BACKEND_AUTOCHECK_TITLE').'';
+ echo '
|
| '.JText::_('JLIST_BACKEND_AUTOCHECK_LOG_TITLE').' '.$log_message.' |
| '.JText::_('JLIST_BACKEND_AUTOCHECK_TITLE').' | '; if ($new_files > 0){ - echo ''.$new_files.' '.JText::_('JLIST_BACKEND_AUTOCHECK_NEW_FILES').' '.JText::_('JLIST_BACKEND_AUTOCHECK_REFRESH_MESSAGE').' | ';
+ echo ''.$new_files.' '.JText::_('JLIST_BACKEND_AUTOCHECK_NEW_FILES').' '.JText::_('JLIST_BACKEND_AUTOCHECK_REFRESH_MESSAGE').' | ';
} else {
- echo ''.JText::_('JLIST_BACKEND_AUTOCHECK_NO_NEW_FILES').' | '; + echo ''.JText::_('JLIST_BACKEND_AUTOCHECK_NO_NEW_FILES').' | '; } if ($mis_files > 0){ - echo ''.$mis_files.' '.JText::_('JLIST_BACKEND_AUTOCHECK_MISSING_FILES').' '.JText::_('JLIST_BACKEND_AUTOCHECK_REFRESH_MESSAGE').' |
| '.JText::_('JLIST_BACKEND_AUTOCHECK_LOG_TITLE').' '.$log_message.' |
| '.JText::_('JLIST_BACKEND_AUTOCHECK_TITLE').' | '; if ($new_cats_create > 0){ - echo ''.$new_cats_create.' '.JText::_('JLIST_BACKEND_AUTOCHECK_NEW_CATS').' '.JText::_('JLIST_BACKEND_AUTOCHECK_REFRESH_MESSAGE').' | ';
+ echo ''.$new_cats_create.' '.JText::_('JLIST_BACKEND_AUTOCHECK_NEW_CATS').' '.JText::_('JLIST_BACKEND_AUTOCHECK_REFRESH_MESSAGE').' | ';
} else {
- echo ''.JText::_('JLIST_BACKEND_AUTOCHECK_NO_NEW_CATS').' | '; + echo ''.JText::_('JLIST_BACKEND_AUTOCHECK_NO_NEW_CATS').' | '; } if ($mis_cats > 0){ - echo ''.$mis_cats.' '.JText::_('JLIST_BACKEND_AUTOCHECK_MISSING_CATS').' '.JText::_('JLIST_BACKEND_AUTOCHECK_REFRESH_MESSAGE').' |
| '.JText::_('JLIST_BACKEND_AUTOCHECK_LOG_TITLE').' '.$log_message.' |
![]() - |
-
|
+ ![]() + |
+
+ |
wfV0A~dWGHmMD%l?6%q5OxE(nr(Z z8`FpeH4+6R5G^b@WPJ zv)q$(n%WF9GK_9$Yz)(j&0q1x*C^pOAL-(x*NF~S>$nc$!%Ex9<7Vm;JmvEO;(}XR zu5=KQc%K|bs=`w757DC!hA>B#Vc9tF>u38?oNL)O?dffJX4v>*h07UVFv=xeB|K(v zNPkt;YwF7SyExr3sfa+#Tf7DS2QuBSd_lyRbizzUmx~`07VSw}yWWK;)Mm #o4t1pYGvs=k1cG8)rSn4WQj``au`o*voNDX zXijZ$j$@;y9!7=z rOn_B(cg$}IBR!-C?O$fOOUrF ziVAnQHmDc(--R}3CzQ57q*&@TDr8*|dwkYYFw?RtT+iJRbNIbuDH$N+nz&9WJ~va4 zbBhSV_L{$EBp;Frk8y54l}FjwdW5M?zgUJ(6IGYWvbFTRtxc@wDP| #TTpwI$S PUx_nf@~(2!i({~W>>Dl_?QJJ z`>Ynuy8dB)vACJ8R;1Ac0#B)H_XPey zIsScD-i~w^GiCD0OvsFn561_!jBLE)C$=j=&zs&+qSceLk`NyomY$jT7Q=nYCPuKQ z3F+&enmOftqk9V@KbL@Cy)q;gIcTOkqWhco4RT`!+6LNWxsAfr!ncwplHM@Ppyhha z8?H@7UITo8eNp*&&c{=z&tyotWSpp(pG)d*(cf+Eh6yOwQcncfHpL6Tx2!Y0Brm+I z;@j{xJk?lvt&ATnCxYiuwX1oaXB&^b_Sd~HUw0o)cAB#5k3WP}NIN*BB$i)QJC`c5 z^f)$JzwNGADL(m0ub?(w{w8T_`$NL*IESL|mexKc2uT0p$38 ) z>MH&0%T{d_#<->dgUA(_{KFM8YHie`cWQA50U8? l)8tRdo|H1pO_@~UM$1?x!y;T3t~HL$NaDK6-6P=V zZJ#Q2_k3deJWWx(9$ J&QQkvEkDOP2Auj_&G>+ (GC05AzHaMfwpkE9$H=KaK8Seg^P;udTlpp;q(oP?fv|;Xrji>JngmL2 z1!IH**{m&;>%1?D)$Lc_aPvVQTe|I!ROsF!hXa9c79q{+5;SjS$tyB@BszX%>^aPS z u4= zM5c?SYX>WGA$Y?ycKCjOgMWg5AJhhWZPR6u4+H=zd47ex3gH~rF|0K|rgHeG>WVUA zFWRmILUQS-0LB)~;1@qiUdGQKh3-dzxc|FbCN>9VgWj2GIr(zO3FzEoL8*CN|p> z(nimjlbu`OpSm5D?A n?$Do#WGm8irFZjYVZ;Ij?3Wr;6) zl7`3Sw9q06n)Z>{2l4~Q-v~iXic-M?c4r*)o5<@@=9Th1y^vxHvs8_=;e9y8o8Gc4 zwwu<#IsXy*q}?iK6~4;y`3RRsDS2EV!(F4q!pd-_N7_a4OpKs-JXNj^Iy-9NHTTLF zbNk@jLuRw+%QK=pMUp7nBzd7=1MG0|l!W<|8;Rj_S{{o+5kdQlh3cOYPw&-*Mr$?G zh}n?)&1oN?wq+SvWpY6CsiTi3+s@_ddKai#lS(2bONs*Esbh5vc08CpJJnID(?Yf- zz$=wm Gb9odajUI z@53yoK`g(x^041B;v-MVR`c9)>)Lgu`=3bgamJTz1sYu^-#9ZRKxdqjI=GgqtztE9 zy #Fk7q+PYE@yj2f{F2Y{X+-&oM`}7&!Z+d- zqB6b+KI(5rjW2U5$ObuT*m4S*@3V~B@ZNyF2V#>WPo>6m$#kd-Ii&Mc`ySnWV;Hes zRb>=9XFy>cAq166eeMB|8V1X 1ZNN0Po~flt<*MiZ=Q16yEmT32(JzH z?X(_IB`OI7N(}Wqik4c8W^x2-hAbg{JFk2+`Ua8Rc~tPQwXg}2rQ7sMB=5#R@k&%g z+5py30{!lOx|+tI_A;)!?QrEX88VJMYgy&n>Abkjn!iza)E%s|!2P+p0=bvq-F|O& z_5!C`E_u2$L5i6Zqm_HK+{pK}zaG^u6HeXO#C37LmLH^)Zn}s0#Es&FozYrYr|aML z@6NY)afCkB$F}y;dx)NAV#{LY+jAF+gs`foL(oTS?P6{L5$AY69bIB^UXk=$!F6)i zqM0v32|ok&oA{9#>S0sYr0SnOD_zyYC$e1+&Qc5_jWe%Rr_xMSZ$U} *dWKTMXYS2w{``(r+dfcpv|(Wt0{oBY2m)Xu!gB#hf cIWNP~Z?{{X o5PIMmVv#L5l$JxGeQdNx#+g 7t)quX%BL4IO;$T$RM9=BsI#%doc3c3+cj;|kHrMg+F? z_? 8Cf`>BDE!DVG!Hod mO#ZVn?f3jr)4Xc8nNy6+lYi0?wFTR0C00L6qI&&b4bI?m0;%De~osEG4nM z*Nc)p*P(JRIxKj~YSN%i$CeEt4^>eXi*uvMmIdhppQY*4`0P2_;bjd5d@WufMWqDB zAclErQ{ThVtw2_Aw8k-oN%-cw-kL!E-3zfPWCCy^lUMGN&th%5u9 wE~R;aCRmdJ&Y z@jGNPCUe}~lCqaJJIonO_Ts{2np(ZNxXh(=x5C?o(-WcR*CpD+DE0Joiv_ _6k+sqn&f1lu^iAWY|OMia+;nb273Sz?cEW`C2d4%X0pV!;4W{JK%9@KoN z2NIDkt*gB1*W|aJ6q#&vEOtzpfoTC-Z+(9lD)ijWvj@n4Jd~6UscXa)$j_}sef`v2 z(4yXzds0!3Y8}*YqUFcJPxM>BkfE%FGeV405A`C=22=O*740J}nJ0XMcw%2`{Ub9{ z@R50B`kcDmizcR_OZ-6XlW@OYv2VFWa&{n_ZJ4El((NCSmz9My*AvE~UfSSkB!fuE zm**LSkL8qV1@DqRfYqotx7Z3L@0w9LqprJgBU3rCN*NSK$2Z{#H}?tlRt-gXgBh~{ zxw;hI&$X3;beQ}Xe71ze6>fVyS$T*<|Fp1&^|EbW*^8-uODM59=_O*ouzOh0)eCf@ zaswAWRVtyhIWeEXQO{v94UmFJs@Rl133;7rWfN_TmEHhLX9eO8shy+VV*K>y{1H5h zn&2Nr{w6Oe4X7(gRxw}FEpYX0N3D1Ity`+57W8HuF^an%hyc0Dg;F1(Y*ZniK@-2+ zQKg4@t;I7=&s@QsZdvz%1=Q6MZ&%7%5b$GuA^ht=HeWt_gHC)=|Ma+0eAVQGlq=B< z_%QP>udW V8-Xlbdo9(=#3x8WV! zfx=$+m36Fvef<-9a(ym8&VZAL5*4DCd)`~W?93(VFjBUKNi_Yt_#@fXPJ;R^*(DR` z;*jeWL*LU_`8u`aR_e*zy5DVM)b?(5?`l<-*NsVD8jmUCve{FuwcEF7DWSRkn8P&} z%w8ae!REUkneH151_m7@FqPTeJjUx6Im4z0Z*=`Q)kH_t$z{u9H zH+QD7;dtJ4dd9-DMTuZGU0Ym6j@Z~CdYPCLvS5NMkH&s}SnZ=1iU{$zbY|&u7PSRJ z%c~EtPlU4>z0tE8?QM6K4iCG|?0n0k9LQ4=s4s-+jniUSPM6VTuiW+RPSi05rLyMQ zKCXPK-T3ASBE9qPBI7F vdDU9!37nNe|HvZj7{N_+ 28KVl@#S=!A zkvg6@>>Iz E_UuVnn#GcFhog4!7fg+w zk9u~-KBi1|C_7EEJK?hSeQ5GwMf#07qspKNWP-N_n>u8GFELod$B8d^SOqA9FW2;Z z`}d6x@>?>CI@k5d`qxq0Dy_)%Q&`()tQ=`L&w8p3^ xJOy2V4k+oZmq{#~QENf+ z|Fb-rU)xg*&9xK(Lyg)=NyQ0!m&!RwN=49$s7aZVmpBGhGd(J< IHsyRd?%j(v3hG@5|> zWC~HZbw9cy0PpgnXJ>t_r~UQrOyTNevXv573ZsT5 {j9v z?Db-5KC+MYUYji!cC0!t7*+Aujyck!u{o|VOETK8G*ZQFh%0ruMpgvmFbP#>&J2pt znx^WU#I`Vd VV^#>zRdq6%Sc$4M<=e_ILl+e@u$aMX^X=FQ8r zZ#Y S@ + zQ&5!F?(|P2i~d)Ufb}GbQeDiBe{e3i>hKo6)|mg*$?DrLD88$)S>7y()vBhvjizhC z)ehA5@;oKtpapwvV`_vp<*|H#fk3}Zv;0+~nB)%ZLF3HJ#;a}bdmope|4IMgz7wGn z8+L#r*Sv77;?Eu-wDlF*)VhhxWi>co>+9 >et1^`UiC7KoV$h@Tq@w1LT+V{R{rV^#?wJ^Ao&alE4p;Kd}rZ!pFw`8)W~r M+bjS85cWI$2kGhRuK)l5 diff --git a/oss/joomla/trunk/administrator/components/com_jdownloads/scan.php b/oss/joomla/trunk/administrator/components/com_jdownloads/scan.php new file mode 100644 index 00000000..0de7a313 --- /dev/null +++ b/oss/joomla/trunk/administrator/components/com_jdownloads/scan.php @@ -0,0 +1,772 @@ + + + + + + + + + + jDownloads - check download area + + + + +load('com_jdownloads'); +$mainframe->setPageTitle( JText::_('JLIST_RUN_MONITORING_TITLE')); + +echo ''.JText::_('JLIST_RUN_MONITORING_INFO2').''; + +flush(); +$time_start = microtime_float(); +checkFiles($task); +$time_end = microtime_float(); +$time = $time_end - $time_start; + +echo '
'.JText::_('JLIST_RUN_MONITORING_INFO').'
The scan duration: '.number_format ( $time, 2).' seconds.'; +echo ''; + + +/* checkFiles +/ +/ check uploaddir and subdirs for variations +/ +/ +*/ +function checkFiles($task) { + global $jlistConfig, $lang; + ini_set('max_execution_time', '600'); + ignore_user_abort(true); + + $database = &JFactory::getDBO(); + //check if all files and dirs in the uploaddir directory are listed + if($jlistConfig['files.autodetect'] || $task == 'restore.run' || $task == 'scan.files'){ + if(file_exists(JPATH_SITE.$jlistConfig['files.uploaddir'])){ + $startdir = JPATH_SITE.$jlistConfig['files.uploaddir'].'/'; + $dir_len = strlen($startdir); + $dir = $startdir; + $only = FALSE; + $type = array(); + if ($jlistConfig['all.files.autodetect']){ + $allFiles = true; + } else { + $allFiles = FALSE; + $type = explode(',', $jlistConfig['file.types.autodetect']); + } + $recursive = TRUE; + $onlyDir = TRUE; + $files = array(); + $file = array(); + + $dirlist = array(); + + $new_files = 0; + $new_dirs_found = 0; + $new_dirs_create = 0; + $new_dirs_errors = 0; + $new_dirs_exists = 0; + $new_cats_create = 0; + $log_message = ''; + $success = FALSE; + + $log_array = array(); + + // ******************************************** + // first search new categories + // ******************************************** + + clearstatcache(); + $searchdir = JPATH_SITE.$jlistConfig['files.uploaddir'].'/'; + $searchdirs = array(); + $dirlist = searchdir($searchdir); + + $no_writable = 0; + for ($i=0; $i < count($dirlist); $i++) { + // no tempzifiles directory + if(strpos($dirlist[$i], 'tempzipfiles') === FALSE) { + if (!is_writable($dirlist[$i])){ + $no_writable++; + } + $dirlist[$i] = str_replace($searchdir, '', $dirlist[$i]); + // delete last slash / + if ($pos = strrpos($dirlist[$i], '/')){ + $searchdirs[] = substr($dirlist[$i], 0, $pos); + } + // $dirlist[$i] = substr($dirlist[$i], 0, $pos); + // $searchdirs[] = $dirlist[$i]; + } + } + unset($dirlist); + $count_cats = count($searchdirs); + // first progressbar for cats + $title1 = JText::_('JLIST_RUN_MONITORING_INFO3'); + $bar = new ProgressBar(); + $bar->setMessage($title1); + $bar->setAutohide(false); + $bar->setSleepOnFinish(0); + $bar->setPrecision(100); + $bar->setForegroundColor('#990000'); + $bar->setBackgroundColor('#CCCCCC'); + $bar->setBarLength(300); + $bar->initialize($count_cats-1); // print the empty bar + + for ($i=0; $i < count($searchdirs); $i++) { + $dirs = explode('/', $searchdirs[$i]); + $sum = count($dirs); + // this characters are not allowed in foldernames + if (!eregi("[?!:;\*@#%~=\+\$\^'\"\(\)\<\>]", $searchdirs[$i])) { + // check that folder exist + $database->setQuery("SELECT COUNT(*) FROM #__jdownloads_cats WHERE cat_dir = '$searchdirs[$i]'"); + $cat_da = $database->loadResult(); + // when not exist - add it + if (!$cat_da) { + $new_dirs_found++; + // create new cat + $row = new jlist_cats($database); + // bind it to the table + if (!$row -> bind($_POST)) { + echo "\n"; + exit(); + } + $row->cat_description = ''; + $row->cat_title = $dirs[$sum - 1]; + $row->cat_pic = $jlistConfig['cat.pic.default.filename']; + if ($sum > 1) { + // get cat_id value for parent_id + $parent = substr($searchdirs[$i], 0, strrpos($searchdirs[$i] , '/') ); + $database->setQuery("SELECT cat_id FROM #__jdownloads_cats WHERE cat_dir = '$parent'"); + $row->parent_id = $database->loadResult(); + } + $row->cat_alias = $row->cat_title; + $row->cat_alias = JFilterOutput::stringURLSafe($row->cat_alias); + if(trim(str_replace('-','',$row->cat_alias)) == '') { + $datenow =& JFactory::getDate(); + $row->cat_alias = $datenow->toFormat("%Y-%m-%d-%H-%M-%S"); + } + $row->cat_dir = $searchdirs[$i]; + + // set publishing? + if ($jlistConfig['autopublish.founded.files']){ + $row->published = 1; + } else { + $row->published = 0; + } + + // get a correct ordering value + if (!$row->ordering) { + $row->ordering = $row->getNextOrder(); + } + if (!$row -> store()) { + echo "\n"; + exit(); + } else { + if(!$row->cat_id) $row->cat_id = mysql_insert_id(); + } + $new_cats_create++; + $log_array[] = strftime($jlistConfig['global.datetime']).' - '.JText::_('JLIST_AUTO_CAT_CHECK_ADDED').' '.$searchdirs[$i].'
'; + } + } else { + // folder with illegal characters in name founded - create msg + $log_array[] = strftime($jlistConfig['global.datetime']).' - '.$searchdirs[$i].' '.JText::_('JLIST_AUTO_CAT_CHECK_ILLEGAL_NAME_FOUND_MSG').'
'; + } + $bar->increase(); // calls the bar with every processed element + } + echo '
'.JText::_('JLIST_BACKEND_AUTOCHECK_SUM_FOLDERS').' '.count($searchdirs).'
'; + + unset($dirs); + unset($searchdirs); + + // ******************************************** + // Prüfen ob alle publishte cat-dirs existieren + // ******************************************** + + $mis_cats = 0; + $database->setQuery("SELECT * FROM #__jdownloads_cats WHERE published=1"); + $cats = $database->loadObjectList(); + + $count_cats = count($cats); + // first progressbar for cats + $bar = new ProgressBar(); + $title2 = JText::_('JLIST_RUN_MONITORING_INFO4'); + $bar->setMessage($title2); + $bar->setAutohide(false); + $bar->setSleepOnFinish(0); + $bar->setPrecision(100); + $bar->setForegroundColor('#990000'); + $bar->setBarLength(300); + $bar->initialize($count_cats); // print the empty bar + + foreach($cats as $cat){ + $cat_dir = $searchdir.$cat->cat_dir; + // wenn nicht da - unpublishen + if(!is_dir($cat_dir)){ + $database->setQuery("UPDATE #__jdownloads_cats SET published = 0 WHERE cat_id = '$cat->cat_id'"); + $database->query(); + $mis_cats++; + $log_array[] = strftime($jlistConfig['global.datetime']).' - '.JText::_('JLIST_AUTO_CAT_CHECK_DISABLED').' '.$cat->cat_dir.'
'; + } + $bar->increase(); // calls the bar with every processed element + } + echo '
'; + // when add categories - the access rigts must checked from all + if ($new_cats_create){ + $sum = set_rights_of_cat (0, '00', $sum); // all cats will checked + } + + unset($cats); + + // **************************************************** + // search all files and compare it with the files table + // **************************************************** + + $all_dirs = scan_dir($dir, $type, $only, $allFiles, $recursive, $onlyDir, $files); + if ($all_dirs != FALSE) { + $count_files = count($files); + // first progressbar for cats + $bar = new ProgressBar(); + $title3 = JText::_('JLIST_RUN_MONITORING_INFO5'); + $bar->setMessage($title3); + $bar->setAutohide(false); + $bar->setSleepOnFinish(0); + $bar->setPrecision(100); + $bar->setForegroundColor('#990000'); + $bar->setBarLength(300); + $bar->initialize($count_files); // print the empty bar + + reset ($files); + $new_files = 0; + foreach($files as $key3 => $array2) { + $filename = $files[$key3]['file']; + if ($filename <> '') { + // no files in tempzipfiles and jD root directory + if(strpos($files[$key3]['path'], 'tempzipfiles') === FALSE && $files[$key3]['path'] != $startdir) { + $dir_path_total = $files[$key3]['path']; + $restpath = substr($files[$key3]['path'], $dir_len); + $only_dirs = substr($restpath, 0, strlen($restpath) - 1); + // existiert filename in files? + $exist_file = false; + $database->setQuery("SELECT cat_id FROM #__jdownloads_files WHERE url_download = '".utf8_encode($filename)."'"); + $row_file_exists = $database->loadObjectList(); + // wenn da - in cats suchen + if ($row_file_exists) { + foreach ($row_file_exists as $row_file_exist) { + if (!$exist_file) { + $database->setQuery("SELECT COUNT(*) FROM #__jdownloads_cats WHERE cat_dir = '$only_dirs' AND cat_id = '$row_file_exist->cat_id'" ); + $row_cat_find = $database->loadResult(); + + if ($row_cat_find) { + $exist_file = true; + } else { + $exist_file = false; + } + } + } + } else { + $exist_file = false; + } + + if(!$exist_file) { + // not check the filename when restore backup file + if ($task != 'restore.run'){ + $filename_new = checkFileName($filename); + if ($filename_new != $filename) { + if (utf8_decode($filename_new) != $filename){ + $success = @rename($startdir.$only_dirs.'/'.$filename, $startdir.$only_dirs.'/'.$filename_new); + if ($success) { + $filename = $filename_new; + } else { + // could not rename filename + } + } else { + $filename = $filename_new; + } + } + } + $database->setQuery("SELECT cat_id FROM #__jdownloads_cats WHERE cat_dir = '$only_dirs'"); + $cat_id = $database->loadResult(); + if ($cat_id) { + $file_extension = strtolower(substr(strrchr($filename,"."),1)); + // fill the data + $file_file_id = 0; + $file_url_download = $filename; + $file_file_title = str_replace('.'.$file_extension, '', $filename); + $file_size = $files[$key3]['size']; + $file_description = ''; + $file_date_added = JHTML::_('date', 'now','%Y.%m.%d %H:%M:%S'); + $file_file_date = '0000-00-00 00:00:00'; + $file_cat_id = $cat_id; + $file_file_alias = $file_file_title; + $file_file_alias = JFilterOutput::stringURLSafe($file_file_alias); + if(trim(str_replace('-','',$file_file_alias)) == '') { + $datenow =& JFactory::getDate(); + $file_file_alias = $datenow->toFormat("%Y-%m-%d-%H-%M-%S"); + } + $filepfad = JPATH_SITE.'images/jdownloads/fileimages/'.$file_extension.'.png'; + if(file_exists(JPATH_SITE.'images/jdownloads/fileimages/'.$file_extension.'.png')){ + $file_file_pic = $file_extension.'.png'; + } else { + $file_file_pic = $jlistConfig['file.pic.default.filename']; + } + $file_created_by = JText::_('JLIST_AUTO_FILE_CHECK_IMPORT_BY'); + // publish only when option is activated + if ($jlistConfig['autopublish.founded.files']){ + $file_published = 1; + } else { + $file_published = 0; + } + + $database->setQuery("INSERT INTO #__jdownloads_files (`file_id`, `file_title`, `file_alias`, `description`, `description_long`, `file_pic`, `thumbnail`, `price`, `release`, `language`, `system`, `license`, `url_license`, `update_active`, `cat_id`, `metakey`, `metadesc`, `size`, `date_added`, `file_date`, `publish_from`, `publish_to`, `url_download`, `extern_file`, `url_home`, `author`, `url_author`, `created_by`, `created_mail`, `modified_by`, `modified_date`, `submitted_by`, `downloads`, `ordering`, `published`, `checked_out`, `checked_out_time`) + VALUES ('', '$file_file_title', '$file_file_alias', '$file_description', '$file_description_long', '$file_file_pic', '', '', '', '', '', '', '', '', '$file_cat_id', '', '', '$file_size', '$file_date_added', '$file_file_date', '', '', '$file_url_download', '', '', '', '', '$file_created_by', '', '', '', '', '', '$file_ordering', '$file_published', '0', '0000-00-00 00:00:00')"); + if (!$database->query()) { + echo $database->stderr(); + exit; + } else { + if (!$file_file_id) $file_file_id = mysql_insert_id(); + if ($file_file_id){ + $database->setQuery("SELECT max(ordering) FROM #__jdownloads_files WHERE cat_id = '$file_cat_id'"); + $ord = (int)$database->loadResult() + 1; + $database->setQuery("UPDATE #__jdownloads_files SET ordering = '$ord' WHERE file_id = '$file_file_id'"); + $database->query(); + } + } + $new_files++; + $log_array[] = strftime($jlistConfig['global.datetime']).' - '.JText::_('JLIST_AUTO_FILE_CHECK_ADDED').' '.$only_dirs.'/'.utf8_decode($filename).'
'; + } else { + // cat dir not exist or invalid name + + } + } + } + } + $bar->increase(); // calls the bar with every processed element + unset($database->_log); + } + } + echo '
'.JText::_('JLIST_BACKEND_AUTOCHECK_SUM_FILES').' '.count($files).'
'; + unset($database->_log); + unset($files); + flush(); + + //prüfen ob download dateien alle physisch vorhanden - sonst unpublishen + $mis_files = 0; + $database->setQuery("SELECT * FROM #__jdownloads_files WHERE published=1"); + $files = $database->loadObjectList(); + + $count_files = count($files); + // first progressbar for cats + $bar = new ProgressBar(); + $title4 = JText::_('JLIST_RUN_MONITORING_INFO6'); + $bar->setMessage($title4); + $bar->setAutohide(false); + $bar->setSleepOnFinish(0); + $bar->setPrecision(100); + $bar->setForegroundColor('#990000'); + $bar->setBarLength(300); + $bar->initialize($count_files); // print the empty bar + + foreach($files as $file){ + // nur interne files testen + if ($file->url_download <> ''){ + $database->setQuery("SELECT cat_dir FROM #__jdownloads_cats WHERE cat_id = '$file->cat_id'"); + $cat_dir = $database->loadResult(); + $cat_dir_long = $startdir.$cat_dir.'/'.utf8_decode($file->url_download); + // wenn nicht da - unpublishen + if(!is_file($cat_dir_long)){ + $database->setQuery("UPDATE #__jdownloads_files SET published = 0 WHERE file_id = '$file->file_id'"); + $database->query(); + $mis_files++; + $log_array[] = strftime($jlistConfig['global.datetime']).' - '.JText::_('JLIST_AUTO_FILE_CHECK_DISABLED').' '.$cat_dir.'/'.utf8_decode($file->url_download).'
'; + } + } + $bar->increase(); // calls the bar with every processed element + } + echo '
'; + echo ''.JText::_('JLIST_RUN_MONITORING_INFO7').''; + flush(); + + // save log + foreach ($log_array as $log) { + $log_message .= $log; + } + if ($task != 'restore.run'){ + $database->setQuery("UPDATE #__jdownloads_config SET setting_value = '$log_message' WHERE setting_name = 'last.log.message'"); + $database->query(); + $jlistConfig['last.log.message'] = $log_message; + } + + if ($task == 'scan.files') { + echo ''; + } else { + echo ''.JText::_('JLIST_BACKEND_AUTOCHECK_NO_MISSING_FILES').'
'.JText::_('JLIST_BACKEND_AUTOCHECK_TITLE').'
'; + if ($new_cats_create > 0){ + echo ''.$new_cats_create.' '.JText::_('JLIST_BACKEND_AUTOCHECK_NEW_CATS').'
'; + } else { + echo ''.JText::_('JLIST_BACKEND_AUTOCHECK_NO_NEW_CATS').'
'; + } + + if ($new_files > 0){ + echo ''.$new_files.' '.JText::_('JLIST_BACKEND_AUTOCHECK_NEW_FILES').'
'; + } else { + echo ''.JText::_('JLIST_BACKEND_AUTOCHECK_NO_NEW_FILES').'
'; + } + + if ($mis_cats > 0){ + echo ''.$mis_cats.' '.JText::_('JLIST_BACKEND_AUTOCHECK_MISSING_CATS').'
'; + } else { + echo ''.JText::_('JLIST_BACKEND_AUTOCHECK_NO_MISSING_CATS').'
'; + } + + if ($mis_files > 0){ + echo ''.$mis_files.' '.JText::_('JLIST_BACKEND_AUTOCHECK_MISSING_FILES').'
'; + } + + if ($log_message) echo ''; + + } + } else { + // error upload dir not exists + echo ''.JText::_('JLIST_AUTOCHECK_DIR_NOT_EXIST').'
'.JText::_('JLIST_BACKEND_AUTOCHECK_LOG_TITLE').'
'.$log_message.'
'.JText::_('JLIST_AUTOCHECK_DIR_NOT_EXIST_2').''; + + } + } +} + + +// get all dirs und subdirs for upload +// $path : path to browse +// $maxdepth : how deep to browse (-1=unlimited) +// $mode : "FULL"|"DIRS"|"FILES" +// $d : must not be defined + +function searchdir ( $path , $maxdepth = -1 , $mode = "DIRS" , $d = 0 ) { + if ( substr ( $path , strlen ( $path ) - 1 ) != '/' ) { $path .= '/' ; } + $dirlist = array () ; + if ( $mode != "FILES" ) { + $dirlist[] = $path ; + } + if ( $handle = opendir ( $path ) ) { + while ( false !== ( $file = readdir ( $handle ) ) ) { + if ( $file != '.' && $file != '..' ) { + $file = $path . $file ; + if ( ! is_dir ( $file ) ) { + if ( $mode != "DIRS" ) { + $dirlist[] = $file ; + } + } + elseif ( $d >=0 && ($d < $maxdepth || $maxdepth < 0) ) { + $result = searchdir ( $file . '/' , $maxdepth , $mode , $d + 1 ) ; + $dirlist = array_merge ( $dirlist , $result ) ; + } + } + } + closedir ( $handle ) ; + } + if ( $d == 0 ) { + natcasesort ( $dirlist ) ; + } + return ( $dirlist ) ; +} + +function scan_dir($dir, $type=array(),$only=FALSE, $allFiles=FALSE, $recursive=TRUE, $onlyDir="", &$files){ + $handle = @opendir($dir); + if(!$handle) + return false; + while ($file = @readdir ($handle)) + { + if (eregi("^\.{1,2}$",$file)) + { + continue; + } + if(!$recursive && $dir != $dir.$file."/") + { + if(is_dir($dir.$file)) + continue; + } + if(is_dir($dir.$file)) + { + scan_dir($dir.$file."/", $type, $only, $allFiles, $recursive, $file, $files); + } + else + { + if($only) + $onlyDir = $dir; + + $files = buildArray($dir,$file,$onlyDir,$type,$allFiles,$files); + } + } + @closedir($handle); + return $files; +} + +/** + * Füllt das Array mit den Dateiinformationen + * (Pfad, Verzeichnisname, Dateiname, Dateigröße, letzte Aktualisierung + * + * @param string $dir Pfad zum Verzeichnis + * @param string $file enthält den Dateinamen + * @param string $onlyDir Enthält nur den Verzeichnisnamen + * @param array $type Suchmuster dateitypen + * @param bool $allFiles Listet alle Dateien in den Verzeichnissen auf ohne Rücksicht auf $type + * @param array $files Enthält den Inhalt der Verzeichnisstruktur + * @return array Das Array mit allen Dateinamen + */ +function buildArray($dir,$file,$onlyDir,$type,$allFiles,$files) { + + $typeFormat = FALSE; + foreach ($type as $item) + { + if (strtolower($item) == substr(strtolower($file), -strlen($item))) + $typeFormat = TRUE; + } + + if($allFiles || $typeFormat == TRUE) + { + if(empty($onlyDir)) + $onlyDir = substr($dir, -strlen($dir), -1); + $files[$dir.$file]['path'] = $dir; + $files[$dir.$file]['file'] = $file; + $files[$dir.$file]['size'] = fsize($dir.$file); + $files[$dir.$file]['date'] = filemtime($dir.$file); + } + return $files; +} + +function fsize($file) { + $a = array("B", "KB", "MB", "GB", "TB", "PB"); + + $pos = 0; + $size = filesize($file); + while ($size >= 1024) { + $size /= 1024; + $pos++; + } + + return round($size,2)." ".$a[$pos]; +} + +function buildjlistConfig(){ + $database = &JFactory::getDBO(); + $jlistConfig = array(); + $database->setQuery("SELECT setting_name, setting_value FROM #__jdownloads_config"); + $jlistConfigObj = $database->loadObjectList(); + if(!empty($jlistConfigObj)){ + foreach ($jlistConfigObj as $jlistConfigRow){ + $jlistConfig[$jlistConfigRow->setting_name] = $jlistConfigRow->setting_value; + } + } + return $jlistConfig; +} + +function set_rights_to_tree($p_catid, $p_right, $p_right_from, &$p_changed){ +// function coded by pelma +// Funktion welche die Rechte eines Kategoriebaum setzt. Achtung REKURSIV !!! +// $p_catid = ID der Kategorie deren Rechte gesetzt werden soll. +// $p_right = Die Rechte welche gesetzt werden. +// $p_right_from = Die ursprünglichen Rechte +// $p_changed = Anzahl der Korrekturen +// echo $p_catid.' p_right_from:'.$p_right_from.' p_right:'.$p_right.'
'; + $database = &JFactory::getDBO(); + // Lesen der Kategorie aus der Datenbank. + $l_sql = "SELECT cat_access FROM #__jdownloads_cats WHERE cat_id = ".$p_catid; + $database->setQuery($l_sql); + $r_catrow = $database->loadObjectList(); + + // Hier werden die eigentlichen Rechte der aktuellen Kategorie gesetzt. + // Falls die Rechte der aktuellen Kategorie KLEINER sind als die zu setzenden Rechte. + // Damit wird verhindert, dass Unterkategorien welche schon höhere Rechte haben nicht überschrieben werden. + // Oder + // Falls die Rechte der aktuellen Kategorie kleiner oder gleich sind als die ursprünglichen Rechte. + // Sonst können kleinere Werte (=höhere Rechte) nicht gesetzt werden. + if (($r_catrow[0]->cat_access < $p_right) || ($r_catrow[0]->cat_access <= $p_right_from)){ + $l_sql = "UPDATE #__jdownloads_cats SET cat_access = '".$p_right."' WHERE cat_id = ".$p_catid; + $database->setQuery($l_sql); + $database->query(); + if ($p_changed != -1){ + $p_changed++; + } + } + + // Alle Unterkategorien der aktuellen Kategorie aus der Datenbank lesen. + // d.h. Alle Kategorien deren parent_id der aktuellen KategorienID entsprechen. + $l_sql = "SELECT cat_id FROM #__jdownloads_cats WHERE parent_id = ".$p_catid; + $database->setQuery($l_sql); + $l_childrows = $database->loadObjectList(); + if (!isset($l_childrows[0])){ + // Keine Unterkategorien gefunden, d.h. das Ende des aktuellen Kategorienbaumes ist erreicht. Die Funktion verlassen. + // Falls die Funktion in der Rekursivität ist, wird in der unteren foreach-Schleife die nächste Unterkategorie aufgerufen. + return; + } + // Alle Unterkategorien abfahren. + foreach ($l_childrows as $l_childrow){ + // Zuerst: Automatische Korrektur von Fehlern. + // D.h. Eine Unterkategorie welche schon niedrigere Rechte hat (=höheren Wert in cat_access) müsste eigentlich nicht abgefahren werden. + // Es könnte aber sein, dass diese Fehlern aufweist (z.B. bei einem Update von 1.3 nach 1.4). + // Fehler heisst in diesem Fall, dass eine Unter-Unter-Kategorie grössere Rechte hat (=niedriger Wert in cat_access). + // Dies ist ja verboten und muss korrigiert werden. + // Dazu: + // Die aktuelle Unterkategorie aus der Datenbank lesen + $l_sql = "SELECT cat_access FROM #__jdownloads_cats WHERE cat_id = ".$l_childrow->cat_id; + $database->setQuery($l_sql); + $l_child = $database->loadObjectList(); + // Die Original verlangten Werte als Defaut setzen. + $l_right = $p_right; + $l_right_from = $p_right_from; + + // Falls die Rechte der abzufahrenden Unterkategorie kleiner sind (cat_access grösser) als die ursprünglichen Rechte + // Und: die Rechte der abzufahrenden Unterkategorie kleiner sind (cat_access grösser) als die zu setzenden Rechte + // Dann: die eigenen Rechte der Unterkategorie ihr selbst als neu zu setzende Rechte übergeben. + if (($l_child[0]->cat_access > $p_right_from) && ($l_child[0]->cat_access > $p_right)){ + $l_right = $l_child[0]->cat_access; + $l_right_from = $l_child[0]->cat_access; + } + // Für alle Unterkategorien die Funktion nochmals aufrufen. + set_rights_to_tree($l_childrow->cat_id, $l_right, $l_right_from, $p_changed); + } +} + +function get_lowest_rights($p_catid, $p_suggest_right){ +// function coded by pelma +// Funktion welche alle darüberliegenden Kategorien nach niedrigeren Rechten (=höhere Werte) durchsucht, +// und den höchsten Wert zurückgibt. Diese Funktion ist nicht rekursiv. +// $p_catid = KategorienID, von welcher aus nach oben durchsucht wird. +// $p_suggested_right = Die rechte welche gesetzt werden sollen, und hier überprüft werden. + $database = &JFactory::getDBO(); + // Kategorie laden aus Datenbank + $l_sql = "SELECT cat_id, parent_id, cat_access FROM #__jdownloads_cats WHERE cat_id = ".$p_catid; + $database->setQuery($l_sql); + $l_catrow = $database->loadObjectList(); + if (!isset($l_catrow[0])){ + // Die Kategorie existiert nicht. Nicht weiterfahren, aber die vorgeschlagenen Rechte zurückgeben. + // (Dies sollte eigentlich nie vorkommen) + return $p_suggest_right; + } + // Initialiseren der Rechte welche von der Funktion zurückgegeben werden. + $l_therights = $p_suggest_right; + // Den Kategorien-Baum solange hochfahren bis keine höhere Kategorie mehr existiert. (d.h. bis die Hauptkategorie erreicht ist) + while ($l_catrow[0]->parent_id > 0 ){ + // Nächsthöhere Parent-Kategorie aus Datenbank lesen. + $l_sql = "SELECT parent_id, cat_access FROM #__jdownloads_cats WHERE cat_id = ".$l_catrow[0]->parent_id; + $database->setQuery($l_sql); + $l_catrow = $database->loadObjectList(); + // Wenn die geladene Parent-Kategorie einen höheren Wert hat, diesen übernehmen. + if ($l_catrow[0]->cat_access > $l_therights){ + $l_therights = $l_catrow[0]->cat_access; + } + } + // Zurück mit höchstem gefundenem Wert (=niedrigstes Recht) + return $l_therights; +} + +function set_rights_of_cat($p_catid, $p_suggest_right, &$p_changed){ +// function coded by pelma +// Hauptprozedur. Diese wird aufgerufen um die Rechte einer Kategorie zu setzen, inklusive deren Unterkategorien. +// $p_catid = KategorienID, welche gesetzt werden soll. +// $p_suggested_right = Die rechte welche gesetzt werden sollen. +// $p_changed = Anzahl der Korrekturen oder (-1): Gewünschte Änderung war nicht zulässig! + $database = &JFactory::getDBO(); + // Kategorie laden aus Datenbank. + $l_sql = "SELECT parent_id, cat_access FROM #__jdownloads_cats WHERE cat_id = ".$p_catid; + $database->setQuery($l_sql); + $l_catrow = $database->loadObjectList(); + if (!isset($l_catrow[0]) && ($p_catid > 0)){ + // Die Kategorie existiert nicht. Nicht weiterfahren. + return ''; + } + // Ursprüngliche Rechte der Kategorie lesen. + $l_rights_from = $l_catrow[0]->cat_access; + if ($l_catrow[0]->parent_id == 0){ + // Es ist eine Hauptkategorie. Darüberliegende Kategorien müssen nicht nach niedrigen Rechten durchsucht werden. + $l_rights_to_set = $p_suggest_right; + } else { + // Es ist eine Unterkategorie. Darüberliegenden Kategoriebaum nach niedrigen Rechten (=höherer Wert) durchsuchen. + // Damit wird gewährleitet, dass eine Unterkategorie keine höheren Rechte erhalten kann. + $l_rights_to_set = get_lowest_rights($p_catid, $p_suggest_right); + if ($l_rights_to_set > $p_suggest_right) $p_changed = -1; + } + // Die Rechte der Kategorie und aller Unter- und Unter-Unter-Kategorien setzen. + set_rights_to_tree($p_catid, $l_rights_to_set, $l_rights_from, $p_changed); +} + +function checkFileName($name){ + global $jlistConfig; + if ($name) { + $name = utf8_encode($name); + // change to uppercase + if ($jlistConfig['fix.upload.filename.uppercase']){ + $name = strtolower($name); + } + // change blanks + if ($jlistConfig['fix.upload.filename.blanks']){ + $name = str_replace(' ', '_', $name); + } + if ($jlistConfig['fix.upload.filename.specials']){ + // change special chars + $name = strtr($name, array( "'" => "", 'ä' => 'ae', 'ü' => 'ue', 'ö' => 'oe', 'Ä' => 'ae', 'Ü' => 'ue', 'Ö' => 'oe', 'ß' => 'ss', 'Þ' => 'TH', 'þ' => 'th', 'Ð' => 'DH', 'ð' => 'dh', 'ß' => 'ss', 'Œ' => 'OE', 'œ' => 'oe', 'Æ' => 'AE', 'æ' => 'ae', 'µ' => 'u')); + // remove invalid chars + $name = preg_replace('#[^A-Za-z0-9 _.-]#', '', $name); + } + } + return $name; +} + +/* + * Simple function to replicate PHP 5 behaviour + */ +function microtime_float(){ + list($usec, $sec) = explode(" ", microtime()); + return ((float)$usec + (float)$sec); +} +?> \ No newline at end of file diff --git a/oss/joomla/trunk/administrator/components/com_jdownloads/toolbar.jdownloads.html.php b/oss/joomla/trunk/administrator/components/com_jdownloads/toolbar.jdownloads.html.php index aedcf45a..83718d46 100644 --- a/oss/joomla/trunk/administrator/components/com_jdownloads/toolbar.jdownloads.html.php +++ b/oss/joomla/trunk/administrator/components/com_jdownloads/toolbar.jdownloads.html.php @@ -1,33 +1,13 @@ - * - * GNU GENERAL PUBLIC LICENSE - * - * ---------------------------------------------------------------------------------- - */ +* @version 1.5 +* @package JDownloads +* @copyright (C) 2009 www.jdownloads.com +* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL +* +* +* +*/ defined( '_JEXEC' ) or die( 'Restricted access' ); @@ -66,6 +46,7 @@ class menujlist { function FILES_LIST(){ JToolBarHelper::title( JText::_('JLIST_BACKEND_CPANEL_FILES'), 'jdlogo' ); JToolBarHelper::addNew('files.edit'); + JToolBarHelper::custom( 'files.move', 'move.png', 'move_f2.png', 'Move', false ); JToolBarHelper::custom( 'files.copy', 'copy.png', 'copy_f2.png', 'Copy', false ); JToolBarHelper::publish('files.publish'); JToolBarHelper::unpublish('files.unpublish'); @@ -79,8 +60,14 @@ class menujlist { JToolBarHelper::cancel('files.cancel'); } + function FILES_MOVE(){ + JToolBarHelper::title( JText::_('JLIST_BACKEND_FILES_MOVE_TITLE'), 'jdlogo' ); + JToolBarHelper::save('files.move.save'); + JToolBarHelper::cancel('files.list'); + } + function FILES_COPY(){ - JToolBarHelper::title( JText::_(''), 'jdlogo' ); + JToolBarHelper::title( JText::_('JLIST_BACKEND_FILES_COPY_TITLE'), 'jdlogo' ); JToolBarHelper::save('files.copy.save'); JToolBarHelper::cancel('files.list'); } diff --git a/oss/joomla/trunk/administrator/components/com_jdownloads/toolbar.jdownloads.php b/oss/joomla/trunk/administrator/components/com_jdownloads/toolbar.jdownloads.php index 7dd2c05e..6ec3fbe4 100644 --- a/oss/joomla/trunk/administrator/components/com_jdownloads/toolbar.jdownloads.php +++ b/oss/joomla/trunk/administrator/components/com_jdownloads/toolbar.jdownloads.php @@ -1,34 +1,13 @@ - * - * GNU GENERAL PUBLIC LICENSE - * - * ---------------------------------------------------------------------------------- - */ - +* @version 1.5 +* @package JDownloads +* @copyright (C) 2009 www.jdownloads.com +* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL +* +* +* +*/ defined( '_JEXEC' ) or die( 'Restricted access' ); require_once( $mainframe->getPath( 'toolbar_html' ) ); @@ -60,6 +39,10 @@ switch ( $task ) { case "files.copy": menujlist::FILES_COPY(); break; + + case "files.move": + menujlist::FILES_MOVE(); + break; case "license.list": menujlist::LICENSE_LIST(); diff --git a/oss/joomla/trunk/administrator/components/com_jdownloads/uninstall.jdownloads.php b/oss/joomla/trunk/administrator/components/com_jdownloads/uninstall.jdownloads.php index 42793731..36532c62 100644 --- a/oss/joomla/trunk/administrator/components/com_jdownloads/uninstall.jdownloads.php +++ b/oss/joomla/trunk/administrator/components/com_jdownloads/uninstall.jdownloads.php @@ -1,48 +1,25 @@ - * - * GNU GENERAL PUBLIC LICENSE - * - * ---------------------------------------------------------------------------------- - */ +* @version 1.5 +* @package jDownloads +* @copyright (C) 2009 www.joomlaaddons.de +* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL +* +* +* +*/ defined( '_JEXEC' ) or die( 'Restricted access' ); -/** - * - * @return unknown_type - */ -function com_uninstall() { - $msg = ''; - $msg = '下载目录和子目录内容未被卸载!
' - .'文件夹 images/jdownloads/ 未被卸载!
' - .'' - .'
如有必要,请手工删除JDownloads相关的数据表。
' - .'否则,你仅可安装更新版本。
'; - echo $msg; +function com_uninstall() { + + $msg = ''; + $msg = 'The download folder and all subfolders still exists!
' + .'Folder images/jdownloads/ still exists!
' + .'All jDownloads database tables still exist!
' + .'Please delete it (them) manually, if you want.
' + .'Otherwise you can now also install a newer version, when it is available.
'; + echo $msg; } ?> \ No newline at end of file diff --git a/oss/joomla/trunk/administrator/language/en-GB/_notes/dwsync.xml b/oss/joomla/trunk/administrator/language/en-GB/_notes/dwsync.xml deleted file mode 100644 index 2c932028..00000000 --- a/oss/joomla/trunk/administrator/language/en-GB/_notes/dwsync.xml +++ /dev/null @@ -1,8 +0,0 @@ - -- \ No newline at end of file diff --git a/oss/joomla/trunk/administrator/language/en-GB/en-GB.com_jdownloads.ini b/oss/joomla/trunk/administrator/language/en-GB/en-GB.com_jdownloads.ini index c2d5cfce..08ab9165 100644 --- a/oss/joomla/trunk/administrator/language/en-GB/en-GB.com_jdownloads.ini +++ b/oss/joomla/trunk/administrator/language/en-GB/en-GB.com_jdownloads.ini @@ -18,7 +18,7 @@ JLIST_VERSION_FOOTER= # Installation data JLIST_INSTALL_0=Install information: JLIST_INSTALL_1=All config data exist in the database! -JLIST_INSTALL_2=Config files are added in the database! +JLIST_INSTALL_2=Config option are added in the database! JLIST_INSTALL_3=All default layouts exist in the database! JLIST_INSTALL_4=Default layouts saved in the database! JLIST_INSTALL_5=All default licenses exist in the database! @@ -216,12 +216,12 @@ JLIST_BACKEND_SETTINGS_TEMPLATES_CATS_INFO_TITLE=Category layout information: JLIST_BACKEND_SETTINGS_TEMPLATES_CATS_INFO_TEXT=- - - - - This is a graphical example of frontend category description display. The dark red border indicates the area you can change the display for here.
JLIST_BACKEND_SETTINGS_TEMPLATES_FILES=Layout: Files -JLIST_BACKEND_SETTINGS_TEMPLATES_FILES_DESC=This is how files are displayed in the frontend.
Available placeholders (variables):
{checkbox_list} {cat_id} {file_id} {file_title} {file_name} {release} {pic_is_new} {pic_is_hot} {pic_is_updated} {thumbnail} {description} {link_to_details} {file_pic} {price_title} {price_value} {license_title} {license_text} {language_title} {language_text} {filesize_title} {filesize_value} {system_title} {system_text} {author_title} {author_text} {author_url_title} {author_url_text} {created_date_title} {created_date_value} {hits_title} {hits_value} {created_by_title} {created_by_value} {modified_by_title} {modified_by_value} {modified_date_title} {modified_date_value} {mirror_1} {mirror_2} {mp3_player} {mp3_id3_tag} {google_adsense} {report_link} {sum_jcomments} {rating} +JLIST_BACKEND_SETTINGS_TEMPLATES_FILES_DESC=This is how files are displayed in the frontend.
Available placeholders (variables):
{checkbox_list} {cat_id} {file_id} {file_title} {file_name} {release} {pic_is_new} {pic_is_hot} {pic_is_updated} {thumbnail} {description} {link_to_details} {file_pic} {price_title} {price_value} {license_title} {license_text} {language_title} {language_text} {filesize_title} {filesize_value} {system_title} {system_text} {author_title} {author_text} {author_url_title} {author_url_text} {created_date_title} {created_date_value} {hits_title} {hits_value} {created_by_title} {created_by_value} {modified_by_title} {modified_by_value} {modified_date_title} {modified_date_value} {mirror_1} {mirror_2} {mp3_player} {mp3_id3_tag} {google_adsense} {report_link} {sum_jcomments} {rating} {file_date_title} {file_date} JLIST_BACKEND_SETTINGS_TEMPLATES_FILES_INFO_TITLE=Information about file layout: JLIST_BACKEND_SETTINGS_TEMPLATES_FILES_INFO_TEXT=Example for displaying the list in frontend. Inside the red box you can edit the displaying options.
JLIST_BACKEND_SETTINGS_TEMPLATES_FINAL=Layout: Summary / Start download -JLIST_BACKEND_SETTINGS_TEMPLATES_FINAL_DESC=This is the frontend summary display. A list of selected files is presented to the user before downloading.
Here is where you can modify the display of this page. CSS classes, HTML code and arbitrary text may be included.
The {download_liste} and {download_link} variable should NOT be removed from the code!
Available placeholders:
{summary_pic} {title_text} {download_liste} {license_note} {download_link} {external_download_info} {google_adsense} +JLIST_BACKEND_SETTINGS_TEMPLATES_FINAL_DESC=This is the frontend summary display. A list of selected files is presented to the user before downloading.
Here is where you can modify the display of this page. CSS classes, HTML code and arbitrary text may be included.
The {download_liste} and {download_link} variable should NOT be removed from the code!
Available placeholders:
{summary_pic} {title_text} {download_liste} {license_note} {download_link} {external_download_info} {google_adsense} {aup_points_info} JLIST_BACKEND_SETTINGS_TEMPLATES_FINAL_INFO_TITLE=Information about summary layout JLIST_BACKEND_SETTINGS_TEMPLATES_FINAL_INFO_TEXT=This is a graphical example of this page in the frontend. The dark red border indicates the area you can change the display from here.
@@ -278,7 +278,7 @@ JLIST_BACKEND_FILESLIST_SEARCH_LIMIT=Limit JLIST_BACKEND_FILESLIST_CATS=All Categories JLIST_BACKEND_FILESLIST_NOCATS=No Category JLIST_BACKEND_FILESLIST_FILE=Downloads -JLIST_BACKEND_FILESLIST_HITS=Number of Downloads +JLIST_BACKEND_FILESLIST_HITS=Downloaded JLIST_BACKEND_FILESLIST_CAT=Category JLIST_BACKEND_FILESLIST_RELEASE=Version @@ -337,7 +337,7 @@ JLIST_BACKEND_FILESEDIT_RELEASE=Version JLIST_BACKEND_FILESEDIT_SIZE=Size JLIST_BACKEND_FILESEDIT_SIZE_DESC=If no choice, the size will be set automatically if possible. -JLIST_BACKEND_FILESEDIT_DADDED=Date and time +JLIST_BACKEND_FILESEDIT_DADDED=Added to the download archive (Date and time) JLIST_BACKEND_FILESEDIT_DADDED_DESC=Define the date in the following format: YYYY-MM-DD H:mm:ss or use the calendar function. When omitted the current date-time is used automatically JLIST_BACKEND_FILESEDIT_FILE=Select file for upload JLIST_BACKEND_FILESEDIT_FILE_DESC=In this field you can assign a file name for the file transferred to the server. This file name will be used for downloading.
Note: Exists already a file, this are first deleted. @@ -599,7 +599,7 @@ JLIST_BACKEND_AUTOCHECK_REFRESH_MESSAGE=You must refresh the page to see the mod JLIST_BACKEND_RESTORE_LOG_TAB_TITLE=Results for last backup restoration JLIST_BACKEND_PANEL_STATUS_DESC_OFFLINE=The maintenance mode is activated! Therefore the Download area is not available at the moment for normal visitors! This download area is nevertheless available for members belonging to the "Author" group. -JLIST_BACKEND_PANEL_STATUS_DOWNLOADS_HEADER=Downloads Status +JLIST_BACKEND_PANEL_STATUS_DOWNLOADS_HEADER=Status Monitoring JLIST_BACKEND_PANEL_STATUS_DOWNLOADS_OFF_DESC=The automatic monitoring of the Download directories is deactivated! JLIST_BACKEND_PANEL_STATUS_VERSION_HEADER=jDdownloads current version information @@ -745,7 +745,7 @@ JLIST_BACKEND_TEMP_TYP5=Download-Details JLIST_BACKEND_CPANEL_TEMPLATES_DETAILS=Download-Details JLIST_BACKEND_TEMPLIST_DETAILSTITLE_HEAD=Download-Details Layouts JLIST_BACKEND_SETTINGS_TEMPLATES_DETAILS=Layout: Download-Details -JLIST_BACKEND_SETTINGS_TEMPLATES_DETAILS_DESC=This is the layout of the Downloads Details page in the Frontend.
Do not remove the placeholder variable {url_download}
Available variables (placeholders):
{file_title} {release} {file_name} {thumbnail} {pic_is_new} {pic_is_hot} {pic_is_updated} {url_download} {mirror_1} {mirror_2} {description_long} {details_block_title} {license_title} {license_text} {price_title} {price_value} {language_title} {language_text} {filesize_title} {filesize_value} {system_title} {system_text} {author_title} {author_text} {author_url_title} {author_url_text} {created_date_title} {created_date_value} {hits_title} {hits_value} {created_by_title} {created_by_value} {modified_by_title} {modified_by_value} {modified_date_title} {modified_date_value} {mp3_player} {mp3_id3_tag} {google_adsense} {report_link} {rating} +JLIST_BACKEND_SETTINGS_TEMPLATES_DETAILS_DESC=This is the layout of the Downloads Details page in the Frontend.
Do not remove the placeholder variable {url_download}
Available variables (placeholders):
{file_title} {release} {file_name} {thumbnail} {pic_is_new} {pic_is_hot} {pic_is_updated} {url_download} {mirror_1} {mirror_2} {description_long} {details_block_title} {license_title} {license_text} {price_title} {price_value} {language_title} {language_text} {filesize_title} {filesize_value} {system_title} {system_text} {author_title} {author_text} {author_url_title} {author_url_text} {created_date_title} {created_date_value} {hits_title} {hits_value} {created_by_title} {created_by_value} {modified_by_title} {modified_by_value} {modified_date_title} {modified_date_value} {mp3_player} {mp3_id3_tag} {google_adsense} {report_link} {rating} {file_date_title} {file_date} JLIST_BACKEND_SETTINGS_TEMPLATES_DETAILS_INFO_TITLE=Information about Download details layout: JLIST_BACKEND_SETTINGS_TEMPLATES_DETAILS_INFO_TEXT=Graphical example of this page in the frontend. The dark red border indicates the area you can change the display from here.
@@ -877,7 +877,7 @@ JLIST_BACKEND_SETTINGS_FAUTO_HEADER_TITLE=Monitoring of the download folders # NEW OPTION AUTOPUBLISH NEW FOUNDED FILES JLIST_BACKEND_SETTINGS_DOWNLOADS_AUTOPUBLISH_TITLE=Automatically publish downloads? -JLIST_BACKEND_SETTINGS_DOWNLOADS_AUTOPUBLISH_DESC=If Yes, newly found files are published immediately. It is assumed the above option is enabled.
Default: No. +JLIST_BACKEND_SETTINGS_DOWNLOADS_AUTOPUBLISH_DESC=If Yes, newly found files (and folders) are published immediately. It is assumed the above option is enabled.
Default: No. # NEW OPTION FOR AUTODETECT ALL FILES JLIST_BACKEND_SETTINGS_FAUTO_ALL_FILES_TITLE=Monitor all filetypes? @@ -1157,7 +1157,7 @@ JLIST_INSTALL_WARNING_DEFAULT_LAYOUTS_ARE_ACTIVE=Due to the introduction of a ne # NEW IN 1.5 # *************************************************************** -JLIST_INSTALL_ABORT=ERROR! You can only make a update from jDownloads v. 1.4. So you must first update to this version! +JLIST_INSTALL_ABORT=ERROR! You can only make a update from the last published version to the newest release. So you must first update step by step to this version! # Backend EDIT TEMPLATES TOOLBAR TITLES JLIST_BACKEND_TEMPEDIT_CATTITLE=Edit Category Layout @@ -1426,4 +1426,126 @@ JLIST_BACKEND_SETTINGS_RATING_ONLY_REGGED_TITLE=Only registered user can rate? JLIST_BACKEND_SETTINGS_RATING_ONLY_REGGED_DESC=When yes, only registered visitors can rate downloads. # NOTE FOR TRANSLATORS: # please add in your translated file in JLIST_BACKEND_SETTINGS_TEMPLATES_FILES_DESC at (ca.) line 219 at the end: {rating} -# please add in your translated file in JLIST_BACKEND_SETTINGS_TEMPLATES_DETAILS_DESC at (ca.) line 748 at the end: {rating} \ No newline at end of file +# please add in your translated file in JLIST_BACKEND_SETTINGS_TEMPLATES_DETAILS_DESC at (ca.) line 748 at the end: {rating} + +#***************************** +# ADDED IN v.1.7 stable +#***************************** +# NEW FOR MOVE DOWNLOADS TO OTHER CATEGORY +JLIST_BACKEND_FILES_MOVE_TITLE=Move downloads +JLIST_BACKEND_FILES_MOVE_DESC=Select the target Category: +JLIST_BACKEND_FILES_MOVE_TEXT_1=These downloads are marked to move: +JLIST_BACKEND_FILES_MOVE_TEXT_2=Hint: When you move a download to a other category, then will also the file moved to the target category folder! +JLIST_BACKEND_FILES_MOVE_SAVED=Downloads are moved! + +# NEW FOR LAYOUT PLACEHOLDER {file_date} +JLIST_FE_FILELIST_FILE_DATE_TITLE=File Date +JLIST_FE_DETAILS_FILE_DATE_TITLE=File Date + +# NEW FOR FILE DATA FIELD FILE_DATE +JLIST_EDIT_FILE_FILE_DATE_TITLE=File Date +JLIST_EDIT_FILE_FILE_DATE_DESC=The creation date from the file. It is not possible to set this date automaticly.
Define the date in the following format: YYYY-MM-DD H:mm:ss or use the calendar function. + +# NEW OPTION FOR USE JOM COMMENT (AZRUL) +JLIST_BACKEND_SETTINGS_JOM_COMMENT_TITLE=Support JomComment? +JLIST_BACKEND_SETTINGS_JOM_COMMENT_EXISTS_DESC=Yes, shows the JomComment function in the download details pages
JomComment is already installed! +JLIST_BACKEND_SETTINGS_JOM_COMMENT_DESC=Yes, activate the comments function from JomComment in the frontend.
JomComment is NOT included with jDownloads and must be installed and configured separately (see www.azrul.com) +JLIST_BACKEND_SETTINGS_JOM_COMMENT_NOTE=Note: You can only activate one from this both comment components! + +# NEW OPTION FOR SHORT AUTOMATICLY SHORT DESCRIPTION +JLIST_BACKEND_USE_CUT_DESCRIPTION_TITLE=Cut automaticly short description? +JLIST_BACKEND_USE_CUT_DESCRIPTION_TITLE_DESC=When yes, the files short description is automaticly shortened to the below specified amount of characters. This is used for the download list view in the frontend. +JLIST_BACKEND_USE_CUT_DESCRIPTION_LENGTH_TITLE=Amount of characters: +JLIST_BACKEND_USE_CUT_DESCRIPTION_LENGTH_TITLE_DESC= + +# NEW OPTION FOR VIEW DOWNLOAD PIC AND TEXT +JLIST_BACKEND_USE_PIC_AND_TEXT_FOR_DOWNLOAD_TITLE=View Download icon and text? +JLIST_BACKEND_USE_PIC_AND_TEXT_FOR_DOWNLOAD_TITLE_DESC=When yes, is viewed for the download link a icon and below a text (as sample: Download). When no, only the Icon is viewed. + +# NEW DATA FIELD FOR START AND END DATE PUBLISHING FILE +JLIST_EDIT_FILE_START_END_DATE_ACTIVATE_TITLE=Use publishing timeframe? +JLIST_EDIT_FILE_START_END_DATE_ACTIVATE_DESC=When yes, the fields below will use for the publishing timeframe. Otherwise is the publishing timeframe not limitted. +JLIST_EDIT_FILE_START_DATE_TITLE=Start date: +JLIST_EDIT_FILE_END_DATE_TITLE=End date: + +# NEW FOR MENU SELECTION +JD_MENU_CATEGORIES_LIST_LAYOUT=Categories List Layout +JD_MENU_CATEGORIES_LIST_LAYOUT_DESC=This Layout shows a list of all jDownloads Categories. +JD_MENU_CATEGORIES_LIST_TITLE=All Categories +JD_MENU_CATEGORY_LIST_LAYOUT=Category Layout +JD_MENU_CATEGORY_LIST_LAYOUT_DESC=This Layout shows a list of all Downloads within a particular Category. +JD_MENU_CATEGORY_LIST_TITLE=Single Category +JD_MENU_CATEGORY_LIST_LABEL1=Select an Category +JD_MENU_CATEGORY_LIST_LABEL1_DESC=Important: All listed Categories are published, but check that you not set a public menu link to a category with restricted access rights.
Data order: Title / ID. +JD_MENU_UPLOAD_LAYOUT=Frontend Upload Layout +JD_MENU_UPLOAD_LAYOUT_DESC=Allow Users to submit Downloads. +JD_MENU_UPLOAD_LIST_TITLE=Upload Form +JD_MENU_VIEWDOWNLOAD_LAYOUT=Single Download Layout +JD_MENU_VIEWDOWNLOAD_LAYOUT_DESC=This Layout views a single Download. +JD_MENU_VIEWDOWNLOAD_LIST_TITLE=Single Download +JD_MENU_VIEWDOWNLOAD_LABEL2_DESC=Data order: Title / File-ID / Category-ID.
Important: You must also above select the Category from the choosed Download. +JD_MENU_VIEWDOWNLOAD_LABEL2=Select an Download + +# NEW FOR LIGHTBOX OPTION FRONTEND +JLIST_BACKEND_SETTINGS_USE_LIGHTBOX_TITLE=Use jDownloads Lighbox function? +JLIST_BACKEND_SETTINGS_USE_LIGHTBOX_DESC=Sometimes you has always installed a lightbox plugin. Then you can here set off the included lightbox function from jDownloads. But test it previously. + +# ADDED FOR RUN NEW MONITORING FUNCTION +JLIST_RUN_MONITORING_INFO2=Downloads area check started... Please wait! +JLIST_RUN_MONITORING_INFO3=First step: Search new jDownloads folders... +JLIST_RUN_MONITORING_INFO4=Second step: Check all published jDownloads categories (folders)... +JLIST_RUN_MONITORING_INFO5=Third step: Search new jDownloads files... +JLIST_RUN_MONITORING_INFO6=Last step: Check all published downloads (files)... +JLIST_RUN_MONITORING_INFO7=Finished! You can now close this window. + +# ADDED FOR CP STATS +JLIST_BACKEND_CP_STATS_TEXT=The download archive contains currently #1 downloads in #2 categories. To date, these have been downloaded #3 times. Current are #4 categories and #5 downloads not published. + +# NEW FOR ALPHAUSERPOINTS RULES +JLIST_BACKEND_SET_AUP_HEADER=Settings for Alphauserpoints Support +JLIST_BACKEND_SET_AUP_HEADER_TEXT=You can this options only use, when you has installed the Alphauserpoints component from www.alphaplug.com and additional, the Alphauserpoints Plugins for jDownloads. See FAQ for more informations. +JLIST_BACKEND_SET_AUP_TITLE=Use Alphauserpoints rules? +JLIST_BACKEND_SET_AUP_DESC=When yes, registered users can received points for special actions in the frontend. +JLIST_BACKEND_SET_AUP_UPLOAD_TEXT=Upload (Title: %s) in our File area. +JLIST_BACKEND_SET_AUP_DOWNLOAD_TEXT=Download file (Title: %s). +JLIST_BACKEND_SET_AUP_DOWNLOAD_WHEN_ZERO_POINTS_TEXT=May user download when he has no points or too few? +JLIST_BACKEND_SET_AUP_DOWNLOAD_WHEN_ZERO_POINTS_DESC=When yes, a user can always download a file. When no, he see the message below, when he has not enough points for the download. +JLIST_BACKEND_SET_AUP_FE_MESSAGE_NO_DOWNLOAD_EDIT=This text is indicated the user +JLIST_BACKEND_SET_AUP_FE_MESSAGE_NO_DOWNLOAD=Sorry, but you has not enough points to download this file. Please recharge first your point account. +JLIST_BACKEND_SET_AUP_USE_FILE_PRICE_TITLE=Use files price field as points? +JLIST_BACKEND_SET_AUP_USE_FILE_PRICE_DESC=When yes, the value in the files price field is used when a user will download a file. So this value is deducted from his point account. +JLIST_BACKEND_SET_AUP_FE_MESSAGE_NO_DOWNLOAD_POINTS=Your points: +JLIST_BACKEND_SET_AUP_FE_MESSAGE_NO_DOWNLOAD_NEEDED=Needed points: + +# ADDED FOR SIMPLE DOWNLOADS LIMIT PER DAY (GLOBAL) +JLIST_FE_MESSAGE_AMOUNT_FILES_LIMIT=You has your limit at downloads for today reached!
When this calender day is over (Server time 00:00:01), you can download the next files.
Current server time: +JLIST_BACKEND_SET_AMOUNTS_FILE_LIMIT_TITLE=How many files can users download in a day? +JLIST_BACKEND_SET_AMOUNTS_FILE_LIMIT_DESC=Set here the amount of files, where users can download per day. Is the limit reached, the user see the message below. When you set it to 0 it is unlimited.
Attention: This option works not for mass downloads (Layouts with checkboxes)! + +# NOTE FOR TRANSLATORS: +# please add in your prior translated file in JLIST_BACKEND_SETTINGS_TEMPLATES_FILES_DESC at (ca.) line 219 at the end: {file_date_title} and {file_date} +# please add in your prior translated file in JLIST_BACKEND_SETTINGS_TEMPLATES_DETAILS_DESC at (ca.) line 748 at the end: {file_date_title} and {file_date} +# changed text for JLIST_BACKEND_FILESEDIT_DADDED in line 340 + +# ******************************** +# CHANGED / ADDED IN 1.7 BUILD 760 +# ******************************** + +# NEW FOR SEARCH +JLIST_FRONTEND_SEARCH_DESCRIPTION=Please break searched terms with blank and use not punctuation. It is searched by every search keyword. On the top from the results list is the the downloads with the most hits. + +# NEW FOR AUTO MONITORING +JLIST_BACKEND_AUTOCHECK_SUM_FOLDERS=Checked Directories: +JLIST_BACKEND_AUTOCHECK_SUM_FILES=Checked Files: + +# NEW FOR SUMMARY PAGE AUP POINTS VIEW +JLIST_FE_VIEW_AUP_SUM_POINTS=This download cost %d points. You has current %d points. + +# ADDED FOR HEADER DESCRIPTION IN CONFIG +JLIST_BACKEND_SETTINGS_FRONTEND_HEADER_DESC2=Note: This is only used as default title, when you has not set a page title in the menu parameters. + +# NOTE FOR TRANSLATORS: +# please add in your prior translated file in JLIST_BACKEND_SETTINGS_TEMPLATES_FINAL_DESC at (ca.) line 224 at the end: {aup_points_info} +# Changed text in line: 1160 for JLIST_INSTALL_ABORT +# Changed text in line: 880 for JLIST_BACKEND_SETTINGS_DOWNLOADS_AUTOPUBLISH_DESC added: (and folders) +# Changed text in line: 281 for JLIST_BACKEND_FILESLIST_HITS old: Number of Downloads new: Downloaded diff --git a/oss/joomla/trunk/administrator/language/zh-CN/_notes/dwsync.xml b/oss/joomla/trunk/administrator/language/zh-CN/_notes/dwsync.xml deleted file mode 100644 index 997d0426..00000000 --- a/oss/joomla/trunk/administrator/language/zh-CN/_notes/dwsync.xml +++ /dev/null @@ -1,54 +0,0 @@ - -- \ No newline at end of file diff --git a/oss/joomla/trunk/administrator/language/zh-CN/zh-CN.com_jdownloads.ini b/oss/joomla/trunk/administrator/language/zh-CN/zh-CN.com_jdownloads.ini index 761f02c0..fbfedf9e 100644 --- a/oss/joomla/trunk/administrator/language/zh-CN/zh-CN.com_jdownloads.ini +++ b/oss/joomla/trunk/administrator/language/zh-CN/zh-CN.com_jdownloads.ini @@ -1451,4 +1451,126 @@ JLIST_BACKEND_SETTINGS_RATING_ONLY_REGGED_TITLE=Only registered user can rate? JLIST_BACKEND_SETTINGS_RATING_ONLY_REGGED_DESC=When yes, only registered visitors can rate downloads. # NOTE FOR TRANSLATORS: # please add in your translated file in JLIST_BACKEND_SETTINGS_TEMPLATES_FILES_DESC at (ca.) line 219 at the end: {rating} -# please add in your translated file in JLIST_BACKEND_SETTINGS_TEMPLATES_DETAILS_DESC at (ca.) line 748 at the end: {rating} \ No newline at end of file +# please add in your translated file in JLIST_BACKEND_SETTINGS_TEMPLATES_DETAILS_DESC at (ca.) line 748 at the end: {rating} + +#***************************** +# ADDED IN v.1.7 stable +#***************************** +# NEW FOR MOVE DOWNLOADS TO OTHER CATEGORY +JLIST_BACKEND_FILES_MOVE_TITLE=Move downloads +JLIST_BACKEND_FILES_MOVE_DESC=Select the target Category: +JLIST_BACKEND_FILES_MOVE_TEXT_1=These downloads are marked to move: +JLIST_BACKEND_FILES_MOVE_TEXT_2=Hint: When you move a download to a other category, then will also the file moved to the target category folder! +JLIST_BACKEND_FILES_MOVE_SAVED=Downloads are moved! + +# NEW FOR LAYOUT PLACEHOLDER {file_date} +JLIST_FE_FILELIST_FILE_DATE_TITLE=File Date +JLIST_FE_DETAILS_FILE_DATE_TITLE=File Date + +# NEW FOR FILE DATA FIELD FILE_DATE +JLIST_EDIT_FILE_FILE_DATE_TITLE=File Date +JLIST_EDIT_FILE_FILE_DATE_DESC=The creation date from the file. It is not possible to set this date automaticly.- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Define the date in the following format: YYYY-MM-DD H:mm:ss or use the calendar function. + +# NEW OPTION FOR USE JOM COMMENT (AZRUL) +JLIST_BACKEND_SETTINGS_JOM_COMMENT_TITLE=Support JomComment? +JLIST_BACKEND_SETTINGS_JOM_COMMENT_EXISTS_DESC=Yes, shows the JomComment function in the download details pages
JomComment is already installed! +JLIST_BACKEND_SETTINGS_JOM_COMMENT_DESC=Yes, activate the comments function from JomComment in the frontend.
JomComment is NOT included with jDownloads and must be installed and configured separately (see www.azrul.com) +JLIST_BACKEND_SETTINGS_JOM_COMMENT_NOTE=Note: You can only activate one from this both comment components! + +# NEW OPTION FOR SHORT AUTOMATICLY SHORT DESCRIPTION +JLIST_BACKEND_USE_CUT_DESCRIPTION_TITLE=Cut automaticly short description? +JLIST_BACKEND_USE_CUT_DESCRIPTION_TITLE_DESC=When yes, the files short description is automaticly shortened to the below specified amount of characters. This is used for the download list view in the frontend. +JLIST_BACKEND_USE_CUT_DESCRIPTION_LENGTH_TITLE=Amount of characters: +JLIST_BACKEND_USE_CUT_DESCRIPTION_LENGTH_TITLE_DESC= + +# NEW OPTION FOR VIEW DOWNLOAD PIC AND TEXT +JLIST_BACKEND_USE_PIC_AND_TEXT_FOR_DOWNLOAD_TITLE=View Download icon and text? +JLIST_BACKEND_USE_PIC_AND_TEXT_FOR_DOWNLOAD_TITLE_DESC=When yes, is viewed for the download link a icon and below a text (as sample: Download). When no, only the Icon is viewed. + +# NEW DATA FIELD FOR START AND END DATE PUBLISHING FILE +JLIST_EDIT_FILE_START_END_DATE_ACTIVATE_TITLE=Use publishing timeframe? +JLIST_EDIT_FILE_START_END_DATE_ACTIVATE_DESC=When yes, the fields below will use for the publishing timeframe. Otherwise is the publishing timeframe not limitted. +JLIST_EDIT_FILE_START_DATE_TITLE=Start date: +JLIST_EDIT_FILE_END_DATE_TITLE=End date: + +# NEW FOR MENU SELECTION +JD_MENU_CATEGORIES_LIST_LAYOUT=Categories List Layout +JD_MENU_CATEGORIES_LIST_LAYOUT_DESC=This Layout shows a list of all jDownloads Categories. +JD_MENU_CATEGORIES_LIST_TITLE=All Categories +JD_MENU_CATEGORY_LIST_LAYOUT=Category Layout +JD_MENU_CATEGORY_LIST_LAYOUT_DESC=This Layout shows a list of all Downloads within a particular Category. +JD_MENU_CATEGORY_LIST_TITLE=Single Category +JD_MENU_CATEGORY_LIST_LABEL1=Select an Category +JD_MENU_CATEGORY_LIST_LABEL1_DESC=Important: All listed Categories are published, but check that you not set a public menu link to a category with restricted access rights.
Data order: Title / ID. +JD_MENU_UPLOAD_LAYOUT=Frontend Upload Layout +JD_MENU_UPLOAD_LAYOUT_DESC=Allow Users to submit Downloads. +JD_MENU_UPLOAD_LIST_TITLE=Upload Form +JD_MENU_VIEWDOWNLOAD_LAYOUT=Single Download Layout +JD_MENU_VIEWDOWNLOAD_LAYOUT_DESC=This Layout views a single Download. +JD_MENU_VIEWDOWNLOAD_LIST_TITLE=Single Download +JD_MENU_VIEWDOWNLOAD_LABEL2_DESC=Data order: Title / File-ID / Category-ID.
Important: You must also above select the Category from the choosed Download. +JD_MENU_VIEWDOWNLOAD_LABEL2=Select an Download + +# NEW FOR LIGHTBOX OPTION FRONTEND +JLIST_BACKEND_SETTINGS_USE_LIGHTBOX_TITLE=Use jDownloads Lighbox function? +JLIST_BACKEND_SETTINGS_USE_LIGHTBOX_DESC=Sometimes you has always installed a lightbox plugin. Then you can here set off the included lightbox function from jDownloads. But test it previously. + +# ADDED FOR RUN NEW MONITORING FUNCTION +JLIST_RUN_MONITORING_INFO2=Downloads area check started... Please wait! +JLIST_RUN_MONITORING_INFO3=First step: Search new jDownloads folders... +JLIST_RUN_MONITORING_INFO4=Second step: Check all published jDownloads categories (folders)... +JLIST_RUN_MONITORING_INFO5=Third step: Search new jDownloads files... +JLIST_RUN_MONITORING_INFO6=Last step: Check all published downloads (files)... +JLIST_RUN_MONITORING_INFO7=Finished! You can now close this window. + +# ADDED FOR CP STATS +JLIST_BACKEND_CP_STATS_TEXT=The download archive contains currently #1 downloads in #2 categories. To date, these have been downloaded #3 times. Current are #4 categories and #5 downloads not published. + +# NEW FOR ALPHAUSERPOINTS RULES +JLIST_BACKEND_SET_AUP_HEADER=Settings for Alphauserpoints Support +JLIST_BACKEND_SET_AUP_HEADER_TEXT=You can this options only use, when you has installed the Alphauserpoints component from www.alphaplug.com and additional, the Alphauserpoints Plugins for jDownloads. See FAQ for more informations. +JLIST_BACKEND_SET_AUP_TITLE=Use Alphauserpoints rules? +JLIST_BACKEND_SET_AUP_DESC=When yes, registered users can received points for special actions in the frontend. +JLIST_BACKEND_SET_AUP_UPLOAD_TEXT=Upload (Title: %s) in our File area. +JLIST_BACKEND_SET_AUP_DOWNLOAD_TEXT=Download file (Title: %s). +JLIST_BACKEND_SET_AUP_DOWNLOAD_WHEN_ZERO_POINTS_TEXT=May user download when he has no points or too few? +JLIST_BACKEND_SET_AUP_DOWNLOAD_WHEN_ZERO_POINTS_DESC=When yes, a user can always download a file. When no, he see the message below, when he has not enough points for the download. +JLIST_BACKEND_SET_AUP_FE_MESSAGE_NO_DOWNLOAD_EDIT=This text is indicated the user +JLIST_BACKEND_SET_AUP_FE_MESSAGE_NO_DOWNLOAD=Sorry, but you has not enough points to download this file. Please recharge first your point account. +JLIST_BACKEND_SET_AUP_USE_FILE_PRICE_TITLE=Use files price field as points? +JLIST_BACKEND_SET_AUP_USE_FILE_PRICE_DESC=When yes, the value in the files price field is used when a user will download a file. So this value is deducted from his point account. +JLIST_BACKEND_SET_AUP_FE_MESSAGE_NO_DOWNLOAD_POINTS=Your points: +JLIST_BACKEND_SET_AUP_FE_MESSAGE_NO_DOWNLOAD_NEEDED=Needed points: + +# ADDED FOR SIMPLE DOWNLOADS LIMIT PER DAY (GLOBAL) +JLIST_FE_MESSAGE_AMOUNT_FILES_LIMIT=You has your limit at downloads for today reached!
When this calender day is over (Server time 00:00:01), you can download the next files.
Current server time: +JLIST_BACKEND_SET_AMOUNTS_FILE_LIMIT_TITLE=How many files can users download in a day? +JLIST_BACKEND_SET_AMOUNTS_FILE_LIMIT_DESC=Set here the amount of files, where users can download per day. Is the limit reached, the user see the message below. When you set it to 0 it is unlimited.
Attention: This option works not for mass downloads (Layouts with checkboxes)! + +# NOTE FOR TRANSLATORS: +# please add in your prior translated file in JLIST_BACKEND_SETTINGS_TEMPLATES_FILES_DESC at (ca.) line 219 at the end: {file_date_title} and {file_date} +# please add in your prior translated file in JLIST_BACKEND_SETTINGS_TEMPLATES_DETAILS_DESC at (ca.) line 748 at the end: {file_date_title} and {file_date} +# changed text for JLIST_BACKEND_FILESEDIT_DADDED in line 340 + +# ******************************** +# CHANGED / ADDED IN 1.7 BUILD 760 +# ******************************** + +# NEW FOR SEARCH +JLIST_FRONTEND_SEARCH_DESCRIPTION=Please break searched terms with blank and use not punctuation. It is searched by every search keyword. On the top from the results list is the the downloads with the most hits. + +# NEW FOR AUTO MONITORING +JLIST_BACKEND_AUTOCHECK_SUM_FOLDERS=Checked Directories: +JLIST_BACKEND_AUTOCHECK_SUM_FILES=Checked Files: + +# NEW FOR SUMMARY PAGE AUP POINTS VIEW +JLIST_FE_VIEW_AUP_SUM_POINTS=This download cost %d points. You has current %d points. + +# ADDED FOR HEADER DESCRIPTION IN CONFIG +JLIST_BACKEND_SETTINGS_FRONTEND_HEADER_DESC2=Note: This is only used as default title, when you has not set a page title in the menu parameters. + +# NOTE FOR TRANSLATORS: +# please add in your prior translated file in JLIST_BACKEND_SETTINGS_TEMPLATES_FINAL_DESC at (ca.) line 224 at the end: {aup_points_info} +# Changed text in line: 1160 for JLIST_INSTALL_ABORT +# Changed text in line: 880 for JLIST_BACKEND_SETTINGS_DOWNLOADS_AUTOPUBLISH_DESC added: (and folders) +# Changed text in line: 281 for JLIST_BACKEND_FILESLIST_HITS old: Number of Downloads new: Downloaded diff --git a/oss/joomla/trunk/administrator/language/zh-CN/zh-CN.com_languages.ini b/oss/joomla/trunk/administrator/language/zh-CN/zh-CN.com_languages.ini index 39d174e4..88c4664d 100644 --- a/oss/joomla/trunk/administrator/language/zh-CN/zh-CN.com_languages.ini +++ b/oss/joomla/trunk/administrator/language/zh-CN/zh-CN.com_languages.ini @@ -1,12 +1,29 @@ -# version 1.5.0 2008-01-14 23:35:37 ~0 -# author Joomla! Chinese Translation Team -# copyright (C) 2008 Open Source Matters. All rights reserved. -# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL -# Note : All ini files need to be saved as UTF-8 +#/** +# * Copyright (C) 2006-2010 YUCHENG HU +# * +# * --------------------------------------------- +# * HA WEBSYSTEMS +# * http://www.hawebs.net +# * https://www.hawebs.org/forums/computer/ +# * +# * CONTACT +# * huyuchengus@gmail.com / yuchenghu@hawebs.net +# * +# * --------------------------------------------- +# * GNU GENERAL PUBLIC LICENSE GNU/LGPL +# * http://www.gnu.org/licenses/lgpl.html +# * +# * --------------------------------------------- +# * NOTE +# * 1. 所有的 ini 文件必须采用 UTF-8 编码 +# * 2. 请不要在语言配置文件中使用单引号或双引号 (' 或 ") +# * +# * --------------------------------------------- +# */ ADMINISTRATOR=管理后台 DESCFTP=为了将设置的语言作为默认选项,Joomla!最有可能需要你们的FTP帐号细节.请在下面的表单域中输入这些信息. -DESCFTPTITLE=FTP帐号详情 +DESCFTPTITLE=FTP 帐号详情 IS=是 JCLIENTHELPER::SETCREDENTIALSFROMREQUEST FAILED=无法用给定的安全证书连接到服务器。 LANGUAGE EDITOR=语言编辑器 @@ -18,5 +35,5 @@ OPERATION FAILED: THE FILE IS NOT WRITABLE.=操作失败:文件不可写。 SIZE=大小 WARNOPENFILE=操作失败:文件写入失败。 WRITABLE=可写 -YOU CAN NOT DELETE LANGUAGE IN USE.=您不能删除目前正在使用的语言。 +YOU CAN NOT DELETE LANGUAGE IN USE.=您不能删除当前正在使用的语言。 diff --git a/oss/joomla/trunk/administrator/language/zh-CN/zh-CN.com_login.ini b/oss/joomla/trunk/administrator/language/zh-CN/zh-CN.com_login.ini index 0f8f82f8..87408327 100644 --- a/oss/joomla/trunk/administrator/language/zh-CN/zh-CN.com_login.ini +++ b/oss/joomla/trunk/administrator/language/zh-CN/zh-CN.com_login.ini @@ -1,9 +1,24 @@ -# version 1.5.0 2008-01-14 23:35:49 ~0 -# author Joomla! Chinese Translation Team -# copyright (C) 2005 Open Source Matters. All rights reserved. -# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL +#/** +# * Copyright (C) 2006-2010 YUCHENG HU +# * +# * --------------------------------------------- +# * HA WEBSYSTEMS +# * http://www.hawebs.net +# * https://www.hawebs.org/forums/computer/ +# * +# * CONTACT +# * huyuchengus@gmail.com / yuchenghu@hawebs.net +# * +# * --------------------------------------------- +# * GNU GENERAL PUBLIC LICENSE GNU/LGPL +# * http://www.gnu.org/licenses/lgpl.html +# * +# * --------------------------------------------- +# * NOTE +# * 1. 所有的 ini 文件必须采用 UTF-8 编码 +# * 2. 请不要在语言配置文件中使用单引号或双引号 (' 或 ") +# * +# * --------------------------------------------- +# */ -# Note : All ini files need to be saved as UTF-8 - - -DESCUSEVALIDLOGIN=请使用有效的用户名和密码进入管理后台。 +DESCUSEVALIDLOGIN=请使用有效的用户名和密码登录后进入管理控制台。 diff --git a/oss/joomla/trunk/administrator/language/zh-CN/zh-CN.com_massmail.ini b/oss/joomla/trunk/administrator/language/zh-CN/zh-CN.com_massmail.ini index d1a29bb1..61142992 100644 --- a/oss/joomla/trunk/administrator/language/zh-CN/zh-CN.com_massmail.ini +++ b/oss/joomla/trunk/administrator/language/zh-CN/zh-CN.com_massmail.ini @@ -1,8 +1,25 @@ -# version 1.5.0 2008-01-14 17:00:17 ~0 -# author Joomla! Chinese Translation Team -# copyright (C) 2005 Open Source Matters. All rights reserved. -# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL -# Note : All ini files need to be saved as UTF-8 +#/** +# * Copyright (C) 2006-2010 YUCHENG HU +# * +# * --------------------------------------------- +# * HA WEBSYSTEMS +# * http://www.hawebs.net +# * https://www.hawebs.org/forums/computer/ +# * +# * CONTACT +# * huyuchengus@gmail.com / yuchenghu@hawebs.net +# * +# * --------------------------------------------- +# * GNU GENERAL PUBLIC LICENSE GNU/LGPL +# * http://www.gnu.org/licenses/lgpl.html +# * +# * --------------------------------------------- +# * NOTE +# * 1. 所有的 ini 文件必须采用 UTF-8 编码 +# * 2. 请不要在语言配置文件中使用单引号或双引号 (' 或 ") +# * +# * --------------------------------------------- +# */ ALL USER GROUPS=所有会员组 BODYSUFFIXTIP=它将被加至邮件内容之后 @@ -22,8 +39,4 @@ SEND IN HTML MODE=以HTML格式发送 SEND MAIL=发送邮件 SUBJECT PREFIX=标题前缀 SUBJECTPREFIXTIP=它将加至每份E-mail的标题之前 -USERS=会员 -#IMPORTANT: DON'T REMOVE ENTRIES FOLLOWING THIS LINE WHEN DOING SYNC !! -EDITOR=主编 -MANAGER=初级管理员 -SUPER ADMINISTRATOR=超级管理员 \ No newline at end of file +USERS=会员 \ No newline at end of file diff --git a/oss/joomla/trunk/administrator/language/zh-CN/zh-CN.com_media.ini b/oss/joomla/trunk/administrator/language/zh-CN/zh-CN.com_media.ini index f41583fb..bde61b0e 100644 --- a/oss/joomla/trunk/administrator/language/zh-CN/zh-CN.com_media.ini +++ b/oss/joomla/trunk/administrator/language/zh-CN/zh-CN.com_media.ini @@ -1,8 +1,25 @@ -# version 1.5.0 2008-01-14 20:48:26 ~0 -# author Joomla! Chinese Translation Team -# copyright (C) 2005 Open Source Matters. All rights reserved. -# license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL -# Note : All ini files need to be saved as UTF-8 +#/** +# * Copyright (C) 2006-2010 YUCHENG HU +# * +# * --------------------------------------------- +# * HA WEBSYSTEMS +# * http://www.hawebs.net +# * https://www.hawebs.org/forums/computer/ +# * +# * CONTACT +# * huyuchengus@gmail.com / yuchenghu@hawebs.net +# * +# * --------------------------------------------- +# * GNU GENERAL PUBLIC LICENSE GNU/LGPL +# * http://www.gnu.org/licenses/lgpl.html +# * +# * --------------------------------------------- +# * NOTE +# * 1. 所有的 ini 文件必须采用 UTF-8 编码 +# * 2. 请不要在语言配置文件中使用单引号或双引号 (' 或 ") +# * +# * --------------------------------------------- +# */ CLEAR COMPLETED=清除已上传图片 *CLICK FOR IMAGE CODE*=*点击产生图片代码* @@ -30,7 +47,8 @@ DIRECTORIES=目录 DIRECTORY=目录 DIRECTORY UP=返回上层目录 DOES NOT EXIST.=不存在! -ERROR. UNABLE TO UPLOAD FILE=错误。无法上传文件 +ERROR. FILE ALREADY EXISTS=【错误】-> 文件已存在 +ERROR. UNABLE TO UPLOAD FILE=【错误】-> 无法上传文件 FILESIZE=文件大小 FILES/FOLDERS IN=文件/文件夹位于 FIRST.=第一位。 @@ -65,10 +83,12 @@ MAXIMUM SIZE DESC=上传一个文件的最大尺寸限制(单位:byte)。 MEDIA MANAGER=媒体管理 NAME=图片名称 NO IMAGES FOUND=找不到图片 +NOT EMPTY!=目录不为空 NOT SET=尚未设置 NUMFILES=文件:%s NUMFOLDERS=文件夹:%s PLEASE DELETE ALL FILES/FOLDER IN=请删除位于该处的所有文件或文件 +PLEASE INPUT A FILE FOR UPLOAD=请输入一个文件后上传 PX=像素 REMOVE FROM QUEUE=从队列中删除 SELECT FILE=选择文件 diff --git a/oss/joomla/trunk/administrator/language/zh-CN/zh-CN.com_menus.ini b/oss/joomla/trunk/administrator/language/zh-CN/zh-CN.com_menus.ini index 9f217c6d..7d927702 100644 --- a/oss/joomla/trunk/administrator/language/zh-CN/zh-CN.com_menus.ini +++ b/oss/joomla/trunk/administrator/language/zh-CN/zh-CN.com_menus.ini @@ -1,8 +1,25 @@ -# $Id: zh-CN.com_menus.ini 126 2008-07-08 07:17:06Z protege $ -# author Joomla! Chinese Translation Team -# Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved. -# License http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php -# Note : All ini files need to be saved as UTF-8 - No BOM +#/** +# * Copyright (C) 2006-2010 YUCHENG HU +# * +# * --------------------------------------------- +# * HA WEBSYSTEMS +# * http://www.hawebs.net +# * https://www.hawebs.org/forums/computer/ +# * +# * CONTACT +# * huyuchengus@gmail.com / yuchenghu@hawebs.net +# * +# * --------------------------------------------- +# * GNU GENERAL PUBLIC LICENSE GNU/LGPL +# * http://www.gnu.org/licenses/lgpl.html +# * +# * --------------------------------------------- +# * NOTE +# * 1. 所有的 ini 文件必须采用 UTF-8 编码 +# * 2. 请不要在语言配置文件中使用单引号或双引号 (' 或 ") +# * +# * --------------------------------------------- +# */ A DESCRIPTION FOR THE MENU=菜单说明 A PROPER TITLE FOR THE MENU=菜单标题名称 @@ -25,6 +42,7 @@ AUTO HEIGHT=自动调整高度 ATOM=Atom BASIC PARAMETERS=基本设置 BLOG=博客式排版 +CANNOT SAVE: EMPTY MENU TYPE=【不能保存】 -> 菜单类型为空 CATEGORY DESCRIPTION=文章分类说明 CATEGORY LIST - SECTION=文章单元里的文章分类列表 CATEGORY NAME=文章分类名称 @@ -40,6 +58,7 @@ COMPLETE RESET LAYOUT=完成重设版面 COMPLETE RESET LAYOUT DESC=创建一个完整的密码重设版面视图 COMPONENT PARAMETERS=组件参数 COMPONENTS=组件 +CONFIRM DELETE MENU TYPE=请确认删除菜单类型 CONFIRM RESET LAYOUT=确认重设版面 CONFIRM RESET LAYOUT DESC=创建一个已确认的密码重设版面视图 CONTACT TO LINK=联系人链接 @@ -153,6 +172,14 @@ NUM ARTICLES COLUMN=文章栏 NUM CATEGORY ITEMS=文章分类中的文章数 NUM INTRO=引言 NUM LEADING=头条文章 +NUMBER 5=5 +NUMBER 10=10 +NUMBER 15=15 +NUMBER 20=20 +NUMBER 25=25 +NUMBER 30=30 +NUMBER 50=50 +NUMBER 100=100 NUMBER OF ITEMS TO DISPLAY AS LINKS.=在一个页面里显示的文章链接的数量 OLDEST FIRST=旧文章在前 ON CLICK, OPEN IN=鼠标点击时,打开 @@ -214,6 +241,7 @@ PLEASE ENTER A MODULE NAME FOR YOUR MENU=请填写菜单的模块名称 PLEASE ENTER A NAME FOR THE COPY OF THE MENU=请填写复制的菜单的名称 PLEASE ENTER A NAME FOR THE NEW MODULE=清输入新模块的名称 PLEASE SELECT A CATEGORY=请选择一个分类 +PLEASE SELECT A MENU FROM THE LIST=请为列表选择一个菜单 PLEASE SELECT AN ARTICLE=请选择一篇文章 POLL=投票调查 PRIMARY ORDER=默认排序 @@ -239,6 +267,7 @@ SHOW/HIDE EMPTY(NO ITEMS) CATEGORIES=显示或隐藏空的(没有文章)的 SHOW/HIDE EMPTY(NO ITEMS) CATEGORIES IN SECTION VIEW=在文章单元浏览页显示或隐藏空的(没有文章)的文章分类 SHOW/HIDE PAGINATION SUPPORT=显示或隐藏分页结果 SHOW/HIDE THE CATEGORY DESCRIPTION=显示或隐藏分类说明 +SHOW/HIDE THE CATEGORY IMAGE=显示 / 隐藏 分类图片 SHOW/HIDE THE DATE COLUMN=显示或隐藏日期栏 SHOW/HIDE THE DESCRIPTION BELOW=显示或隐藏以下说明 SHOW/HIDE THE DISPLAY SELECT DROPDOWN=显示或隐藏下拉选项 @@ -247,6 +276,7 @@ SHOW/HIDE THE FEED NAME COLUMN=显示或隐藏新闻联播源的名称栏 SHOW/HIDE THE FILTER ABILITY=显示或隐藏筛选功能 SHOW/HIDE THE IMAGE OF THE FEED=显示或隐藏新闻联播源的图片 SHOW/HIDE THE ITEMS TITLE=显示或隐藏条目标题 +SHOW/HIDE THE TABLE HEADINGS=显示 / 隐藏 表头 SSL ENABLED=允许SSL认证 STEP=步骤 SUBMIT=提交