Changeset 590


Ignore:
Timestamp:
02/18/09 14:09:39 (18 months ago)
Author:
sidtheduck
Message:

Large commit based on work with Kim Parsell and myself
Should be ready for a release candidate after this commit.
Items worked on:

  • Large overhaul for code cleanup and syntax standardization
  • Security fixes for folder permissions on all server environments (now all directories should be set to 0755 and all files set to 0644)
  • Works compeletely with safe_mode restrictions using FTP commands
  • Beginnings of plugin usage (no architecture yet, but start of code standardization and addon code)
  • Fixing comments and adding security
  • More error messages
  • Minor fixes to upgrade and install process
  • Should fix tickets #188, #206, #194, #195, #197, #201, #203, #204, #89, #174, #200
  • Many other minor edits that I can't remember now (hopefully future commits will be much smaller and deal with individual issues, enhancements, or bugs)
Location:
trunk
Files:
22 added
6 deleted
84 edited
1 moved

Legend:

Unmodified
Added
Removed
  • trunk/LICENSE.txt

    r124 r590  
    1                     GNU GENERAL PUBLIC LICENSE 
    2                        Version 2, June 1991 
    3  
    4  Copyright (C) 1989, 1991 Free Software Foundation, Inc. 
    5                        51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA 
    6  Everyone is permitted to copy and distribute verbatim copies 
    7  of this license document, but changing it is not allowed. 
    8  
    9                             Preamble 
    10  
    11   The licenses for most software are designed to take away your 
    12 freedom to share and change it.  By contrast, the GNU General Public 
    13 License is intended to guarantee your freedom to share and change free 
    14 software--to make sure the software is free for all its users.  This 
    15 General Public License applies to most of the Free Software 
    16 Foundation's software and to any other program whose authors commit to 
    17 using it.  (Some other Free Software Foundation software is covered by 
    18 the GNU Library General Public License instead.)  You can apply it to 
    19 your programs, too. 
    20  
    21   When we speak of free software, we are referring to freedom, not 
    22 price.  Our General Public Licenses are designed to make sure that you 
    23 have the freedom to distribute copies of free software (and charge for 
    24 this service if you wish), that you receive source code or can get it 
    25 if you want it, that you can change the software or use pieces of it 
    26 in new free programs; and that you know you can do these things. 
    27  
    28   To protect your rights, we need to make restrictions that forbid 
    29 anyone to deny you these rights or to ask you to surrender the rights. 
    30 These restrictions translate to certain responsibilities for you if you 
     1                                GNU GENERAL PUBLIC LICENSE 
     2                                        Version 2, June 1991 
     3 
     4Copyright (C) 1989, 1991 
     5Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 
     6 
     7Everyone is permitted to copy and distribute verbatim copies of this license document, but 
     8changing it is not allowed. 
     9 
     10Preamble 
     11 
     12The licenses for most software are designed to take away your freedom to share and change it. 
     13By contrast, the GNU General Public License is intended to guarantee your freedom to share and 
     14change free software--to make sure the software is free for all its users. This General Public License 
     15applies to most of the Free Software Foundation's software and to any other program whose authors 
     16commit to using it. (Some other Free Software Foundation software is covered by the GNU Library 
     17General Public License instead.) You can apply it to your programs, too. 
     18 
     19When we speak of free software, we are referring to freedom, not price. Our General Public Licenses 
     20are designed to make sure that you have the freedom to distribute copies of free software (and charge 
     21for this service if you wish), that you receive source code or can get it if you want it, that you can 
     22change the software or use pieces of it in new free programs; and that you know you can do these 
     23things. 
     24 
     25To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to 
     26ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you 
    3127distribute copies of the software, or if you modify it. 
    3228 
    33   For example, if you distribute copies of such a program, whether 
    34 gratis or for a fee, you must give the recipients all the rights that 
    35 you have.  You must make sure that they, too, receive or can get the 
    36 source code.  And you must show them these terms so they know their 
    37 rights. 
    38  
    39   We protect your rights with two steps: (1) copyright the software, and 
    40 (2) offer you this license which gives you legal permission to copy, 
    41 distribute and/or modify the software. 
    42  
    43   Also, for each author's protection and ours, we want to make certain 
    44 that everyone understands that there is no warranty for this free 
    45 software.  If the software is modified by someone else and passed on, we 
    46 want its recipients to know that what they have is not the original, so 
    47 that any problems introduced by others will not reflect on the original 
    48 authors' reputations. 
    49  
    50   Finally, any free program is threatened constantly by software 
    51 patents.  We wish to avoid the danger that redistributors of a free 
    52 program will individually obtain patent licenses, in effect making the 
    53 program proprietary.  To prevent this, we have made it clear that any 
    54 patent must be licensed for everyone's free use or not licensed at all. 
    55  
    56   The precise terms and conditions for copying, distribution and 
    57 modification follow. 
     29For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the 
     30recipients all the rights that you have. You must make sure that they, too, receive or can get the 
     31source code. And you must show them these terms so they know their rights. 
     32 
     33We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which 
     34gives you legal permission to copy, distribute and/or modify the software. 
     35 
     36Also, for each author's protection and ours, we want to make certain that everyone understands that 
     37there is no warranty for this free software. If the software is modified by someone else and passed on, 
     38we want its recipients to know that what they have is not the original, so that any problems introduced 
     39by others will not reflect on the original authors' reputations. 
     40 
     41Finally, any free program is threatened constantly by software patents. We wish to avoid the danger 
     42that redistributors of a free program will individually obtain patent licenses, in effect making the program 
     43proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free 
     44use or not licensed at all. 
     45 
     46The precise terms and conditions for copying, distribution and modification follow. 
     47 
     48GNU GENERAL PUBLIC LICENSE 
     49 
     50TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 
     51 
     520. This License applies to any program or other work which contains a notice placed by the copyright 
     53holder saying it may be distributed under the terms of this General Public License. The "Program", below, 
     54refers to any such program or work, and a "work based on the Program" means either the Program or 
     55any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, 
     56either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is 
     57included without limitation in the term "modification".) Each licensee is addressed as "you". 
     58 
     59Activities other than copying, distribution and modification are not covered by this License; they are 
     60outside its scope. The act of running the Program is not restricted, and the output from the Program 
     61is covered only if its contents constitute a work based on the Program (independent of having been 
     62made by running the Program). Whether that is true depends on what the Program does. 
     63 
     641. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any 
     65medium, provided that you conspicuously and appropriately publish on each copy an appropriate copy- 
     66right notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the 
     67absence of any warranty; and give any other recipients of the Program a copy of this License along with 
     68the Program. 
    5869 
    59                     GNU GENERAL PUBLIC LICENSE 
    60    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 
    61  
    62   0. This License applies to any program or other work which contains 
    63 a notice placed by the copyright holder saying it may be distributed 
    64 under the terms of this General Public License.  The "Program", below, 
    65 refers to any such program or work, and a "work based on the Program" 
    66 means either the Program or any derivative work under copyright law: 
    67 that is to say, a work containing the Program or a portion of it, 
    68 either verbatim or with modifications and/or translated into another 
    69 language.  (Hereinafter, translation is included without limitation in 
    70 the term "modification".)  Each licensee is addressed as "you". 
    71  
    72 Activities other than copying, distribution and modification are not 
    73 covered by this License; they are outside its scope.  The act of 
    74 running the Program is not restricted, and the output from the Program 
    75 is covered only if its contents constitute a work based on the 
    76 Program (independent of having been made by running the Program). 
    77 Whether that is true depends on what the Program does. 
    78  
    79   1. You may copy and distribute verbatim copies of the Program's 
    80 source code as you receive it, in any medium, provided that you 
    81 conspicuously and appropriately publish on each copy an appropriate 
    82 copyright notice and disclaimer of warranty; keep intact all the 
    83 notices that refer to this License and to the absence of any warranty; 
    84 and give any other recipients of the Program a copy of this License 
    85 along with the Program. 
    86  
    87 You may charge a fee for the physical act of transferring a copy, and 
    88 you may at your option offer warranty protection in exchange for a fee. 
    89  
    90   2. You may modify your copy or copies of the Program or any portion 
    91 of it, thus forming a work based on the Program, and copy and 
    92 distribute such modifications or work under the terms of Section 1 
    93 above, provided that you also meet all of these conditions: 
    94  
    95     a) You must cause the modified files to carry prominent notices 
    96     stating that you changed the files and the date of any change. 
    97  
    98     b) You must cause any work that you distribute or publish, that in 
    99     whole or in part contains or is derived from the Program or any 
    100     part thereof, to be licensed as a whole at no charge to all third 
    101     parties under the terms of this License. 
    102  
    103     c) If the modified program normally reads commands interactively 
    104     when run, you must cause it, when started running for such 
    105     interactive use in the most ordinary way, to print or display an 
    106     announcement including an appropriate copyright notice and a 
    107     notice that there is no warranty (or else, saying that you provide 
    108     a warranty) and that users may redistribute the program under 
    109     these conditions, and telling the user how to view a copy of this 
    110     License.  (Exception: if the Program itself is interactive but 
    111     does not normally print such an announcement, your work based on 
    112     the Program is not required to print an announcement.) 
     70You may charge a fee for the physical act of transferring a copy, and you may at your option offer 
     71warranty protection in exchange for a fee. 
     72 
     732. You may modify your copy or copies of the Program or any portion of it, thus forming a work based 
     74on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, 
     75provided that you also meet all of these conditions: 
     76 
     77        a) You must cause the modified files to carry prominent notices stating that you changed the files 
     78        and the date of any change. 
     79 
     80        b) You must cause any work that you distribute or publish, that in whole or in part contains or is 
     81        derived from the Program or any part thereof, to be licensed as a whole at no charge to all third 
     82        parties under the terms of this License. 
     83 
     84        c) If the modified program normally reads commands interactively when run, you must cause it, 
     85        when running for such interactive use in the most ordinary way, to print or display an announcement 
     86        including an appropriate copyright notice and a notice that there is no warranty (or else, saying that 
     87        you provide a warranty) and that users may redistribute the program under these conditions, and telling 
     88        the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not 
     89        normally print such an announcement, your work based on the Program is not required to print an 
     90        announcement.) 
     91 
     92These requirements apply to the modified work as a whole. If identifiable sections of that work are not 
     93derived from the Program, and can be reasonably considered independent and separate works in themselves, 
     94then this License, and its terms, do not apply to those sections when you distribute them as separate works. 
     95But when you distribute the same sections as part of a whole which is a work based on the Program, the 
     96distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to 
     97the entire whole, and thus to each and every part regardless of who wrote it. 
     98 
     99Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; 
     100rather, the intent is to exercise the right to control the distribution of derivative or collective works based on 
     101the Program. 
     102 
     103In addition, mere aggregation of another work not based on the Program with the Program (or with a work 
     104based on the Program) on a volume of a storage or distribution medium does not bring the other work under 
     105the scope of this License. 
     106 
     1073. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or 
     108executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: 
     109 
     110        a) Accompany it with the complete corresponding machine-readable source code, which must be 
     111        distributed under the terms of Sections 1 and 2 above on a medium customarily used for software 
     112        interchange; or, 
     113 
     114        b) Accompany it with a written offer, valid for at least three years, to give any third party, for a 
     115        charge no more than your cost of physically performing source distribution, a complete machine-readable 
     116        copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on 
     117        a medium customarily used for software interchange; or, 
     118 
     119        c) Accompany it with the information you received as to the offer to distribute corresponding source code. 
     120        (This alternative is allowed only for noncommercial distribution and only if you received the program in 
     121        object code or executable form with such an offer, in accord with Subsection b above.) 
     122 
     123The source code for a work means the preferred form of the work for making modifications to it. For an execu- 
     124table work, complete source code means all the source code for all modules it contains, plus any associated 
     125interface definition files, plus the scripts used to control compilation and installation of the executable. However, 
     126as a special exception, the source code distributed need not include anything that is normally distributed (in 
     127either source or binary form) with the major components (compiler, kernel, and so on) of the operating system 
     128on which the executable runs, unless that component itself accompanies the executable. 
     129 
     130If distribution of executable or object code is made by offering access to copy from a designated place, then 
     131offering equivalent access to copy the source code from the same place counts as distribution of the source 
     132code, even though third parties are not compelled to copy the source along with the object code. 
     133 
     1344. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this 
     135License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will auto- 
     136matically terminate your rights under this License. However, parties who have received copies, or rights, from 
     137you under this License will not have their licenses terminated so long as such parties remain in full compliance. 
    113138 
    114 These requirements apply to the modified work as a whole.  If 
    115 identifiable sections of that work are not derived from the Program, 
    116 and can be reasonably considered independent and separate works in 
    117 themselves, then this License, and its terms, do not apply to those 
    118 sections when you distribute them as separate works.  But when you 
    119 distribute the same sections as part of a whole which is a work based 
    120 on the Program, the distribution of the whole must be on the terms of 
    121 this License, whose permissions for other licensees extend to the 
    122 entire whole, and thus to each and every part regardless of who wrote it. 
    123  
    124 Thus, it is not the intent of this section to claim rights or contest 
    125 your rights to work written entirely by you; rather, the intent is to 
    126 exercise the right to control the distribution of derivative or 
    127 collective works based on the Program. 
    128  
    129 In addition, mere aggregation of another work not based on the Program 
    130 with the Program (or with a work based on the Program) on a volume of 
    131 a storage or distribution medium does not bring the other work under 
    132 the scope of this License. 
    133  
    134   3. You may copy and distribute the Program (or a work based on it, 
    135 under Section 2) in object code or executable form under the terms of 
    136 Sections 1 and 2 above provided that you also do one of the following: 
    137  
    138     a) Accompany it with the complete corresponding machine-readable 
    139     source code, which must be distributed under the terms of Sections 
    140     1 and 2 above on a medium customarily used for software interchange; or, 
    141  
    142     b) Accompany it with a written offer, valid for at least three 
    143     years, to give any third party, for a charge no more than your 
    144     cost of physically performing source distribution, a complete 
    145     machine-readable copy of the corresponding source code, to be 
    146     distributed under the terms of Sections 1 and 2 above on a medium 
    147     customarily used for software interchange; or, 
    148  
    149     c) Accompany it with the information you received as to the offer 
    150     to distribute corresponding source code.  (This alternative is 
    151     allowed only for noncommercial distribution and only if you 
    152     received the program in object code or executable form with such 
    153     an offer, in accord with Subsection b above.) 
    154  
    155 The source code for a work means the preferred form of the work for 
    156 making modifications to it.  For an executable work, complete source 
    157 code means all the source code for all modules it contains, plus any 
    158 associated interface definition files, plus the scripts used to 
    159 control compilation and installation of the executable.  However, as a 
    160 special exception, the source code distributed need not include 
    161 anything that is normally distributed (in either source or binary 
    162 form) with the major components (compiler, kernel, and so on) of the 
    163 operating system on which the executable runs, unless that component 
    164 itself accompanies the executable. 
    165  
    166 If distribution of executable or object code is made by offering 
    167 access to copy from a designated place, then offering equivalent 
    168 access to copy the source code from the same place counts as 
    169 distribution of the source code, even though third parties are not 
    170 compelled to copy the source along with the object code. 
     1395. You are not required to accept this License, since you have not signed it. However, nothing else grants 
     140you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law 
     141if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on 
     142the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for 
     143copying, distributing or modifying the Program or works based on it. 
     144 
     1456. Each time you redistribute the Program (or any work based on the Program), the recipient automatically 
     146receives a license from the original licensor to copy, distribute or modify the Program subject to these terms 
     147and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted 
     148herein. You are not responsible for enforcing compliance by third parties to this License. 
     149 
     1507. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not 
     151limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that 
     152contradict the conditions of this License, they do not excuse you from the conditions of this License. If you 
     153cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent 
     154obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license 
     155would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly 
     156through you, then the only way you could satisfy both it and this License would be to refrain entirely from 
     157distribution of the Program. 
     158 
     159If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance 
     160of the section is intended to apply and the section as a whole is intended to apply in other circumstances. 
     161 
     162It is not the purpose of this section to induce you to infringe any patents or other property right claims or to 
     163contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free 
     164software distribution system, which is implemented by public license practices. Many people have made generous 
     165contributions to the wide range of software distributed through that system in reliance on consistent application 
     166of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any 
     167other system and a licensee cannot impose that choice. 
     168 
     169This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this 
     170License. 
     171 
     1728. If the distribution and/or use of the Program is restricted in certain countries either by patents or by 
     173copyrighted interfaces, the original copyright holder who places the Program under this License may add an 
     174explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or 
     175among countries not thus excluded. In such case, this License incorporates the limitation as if written in the 
     176body of this License. 
     177 
     1789. The Free Software Foundation may publish revised and/or new versions of the General Public License from 
     179time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address 
     180new problems or concerns. 
     181 
     182Each version is given a distinguishing version number. If the Program specifies a version number of this License 
     183which applies to it and "any later version", you have the option of following the terms and conditions either of 
     184that version or of any later version published by the Free Software Foundation. If the Program does not specify 
     185a version number of this License, you may choose any version ever published by the Free Software Foundation. 
     186 
     18710. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are 
     188different, write to the author to ask for permission. For software which is copyrighted by the Free Software 
     189Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will 
     190be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting 
     191the sharing and reuse of software generally. 
     192 
     193NO WARRANTY 
     194 
     19511. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO 
     196THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 
     197HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER 
     198EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY 
     199AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE 
     200PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY 
     201SERVICING, REPAIR OR CORRECTION. 
    171202 
    172   4. You may not copy, modify, sublicense, or distribute the Program 
    173 except as expressly provided under this License.  Any attempt 
    174 otherwise to copy, modify, sublicense or distribute the Program is 
    175 void, and will automatically terminate your rights under this License. 
    176 However, parties who have received copies, or rights, from you under 
    177 this License will not have their licenses terminated so long as such 
    178 parties remain in full compliance. 
    179  
    180   5. You are not required to accept this License, since you have not 
    181 signed it.  However, nothing else grants you permission to modify or 
    182 distribute the Program or its derivative works.  These actions are 
    183 prohibited by law if you do not accept this License.  Therefore, by 
    184 modifying or distributing the Program (or any work based on the 
    185 Program), you indicate your acceptance of this License to do so, and 
    186 all its terms and conditions for copying, distributing or modifying 
    187 the Program or works based on it. 
    188  
    189   6. Each time you redistribute the Program (or any work based on the 
    190 Program), the recipient automatically receives a license from the 
    191 original licensor to copy, distribute or modify the Program subject to 
    192 these terms and conditions.  You may not impose any further 
    193 restrictions on the recipients' exercise of the rights granted herein. 
    194 You are not responsible for enforcing compliance by third parties to 
    195 this License. 
    196  
    197   7. If, as a consequence of a court judgment or allegation of patent 
    198 infringement or for any other reason (not limited to patent issues), 
    199 conditions are imposed on you (whether by court order, agreement or 
    200 otherwise) that contradict the conditions of this License, they do not 
    201 excuse you from the conditions of this License.  If you cannot 
    202 distribute so as to satisfy simultaneously your obligations under this 
    203 License and any other pertinent obligations, then as a consequence you 
    204 may not distribute the Program at all.  For example, if a patent 
    205 license would not permit royalty-free redistribution of the Program by 
    206 all those who receive copies directly or indirectly through you, then 
    207 the only way you could satisfy both it and this License would be to 
    208 refrain entirely from distribution of the Program. 
    209  
    210 If any portion of this section is held invalid or unenforceable under 
    211 any particular circumstance, the balance of the section is intended to 
    212 apply and the section as a whole is intended to apply in other 
    213 circumstances. 
    214  
    215 It is not the purpose of this section to induce you to infringe any 
    216 patents or other property right claims or to contest validity of any 
    217 such claims; this section has the sole purpose of protecting the 
    218 integrity of the free software distribution system, which is 
    219 implemented by public license practices.  Many people have made 
    220 generous contributions to the wide range of software distributed 
    221 through that system in reliance on consistent application of that 
    222 system; it is up to the author/donor to decide if he or she is willing 
    223 to distribute software through any other system and a licensee cannot 
    224 impose that choice. 
    225  
    226 This section is intended to make thoroughly clear what is believed to 
    227 be a consequence of the rest of this License. 
    228  
    229   8. If the distribution and/or use of the Program is restricted in 
    230 certain countries either by patents or by copyrighted interfaces, the 
    231 original copyright holder who places the Program under this License 
    232 may add an explicit geographical distribution limitation excluding 
    233 those countries, so that distribution is permitted only in or among 
    234 countries not thus excluded.  In such case, this License incorporates 
    235 the limitation as if written in the body of this License. 
    236  
    237   9. The Free Software Foundation may publish revised and/or new versions 
    238 of the General Public License from time to time.  Such new versions will 
    239 be similar in spirit to the present version, but may differ in detail to 
    240 address new problems or concerns. 
    241  
    242 Each version is given a distinguishing version number.  If the Program 
    243 specifies a version number of this License which applies to it and "any 
    244 later version", you have the option of following the terms and conditions 
    245 either of that version or of any later version published by the Free 
    246 Software Foundation.  If the Program does not specify a version number of 
    247 this License, you may choose any version ever published by the Free Software 
    248 Foundation. 
    249  
    250   10. If you wish to incorporate parts of the Program into other free 
    251 programs whose distribution conditions are different, write to the author 
    252 to ask for permission.  For software which is copyrighted by the Free 
    253 Software Foundation, write to the Free Software Foundation; we sometimes 
    254 make exceptions for this.  Our decision will be guided by the two goals 
    255 of preserving the free status of all derivatives of our free software and 
    256 of promoting the sharing and reuse of software generally. 
    257  
    258                             NO WARRANTY 
    259  
    260   11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY 
    261 FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN 
    262 OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES 
    263 PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED 
    264 OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
    265 MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS 
    266 TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE 
    267 PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, 
    268 REPAIR OR CORRECTION. 
    269  
    270   12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 
    271 WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR 
    272 REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, 
    273 INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING 
    274 OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED 
    275 TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY 
    276 YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER 
    277 PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE 
    278 POSSIBILITY OF SUCH DAMAGES. 
    279  
    280                      END OF TERMS AND CONDITIONS 
    281  
    282             How to Apply These Terms to Your New Programs 
    283  
    284   If you develop a new program, and you want it to be of the greatest 
    285 possible use to the public, the best way to achieve this is to make it 
    286 free software which everyone can redistribute and change under these terms. 
    287  
    288   To do so, attach the following notices to the program.  It is safest 
    289 to attach them to the start of each source file to most effectively 
    290 convey the exclusion of warranty; and each file should have at least 
    291 the "copyright" line and a pointer to where the full notice is found. 
    292  
    293     <one line to give the program's name and a brief idea of what it does.> 
    294     Copyright (C) <year>  <name of author> 
    295  
    296     This program is free software; you can redistribute it and/or modify 
    297     it under the terms of the GNU General Public License as published by 
    298     the Free Software Foundation; either version 2 of the License, or 
    299     (at your option) any later version. 
    300  
    301     This program is distributed in the hope that it will be useful, 
    302     but WITHOUT ANY WARRANTY; without even the implied warranty of 
    303     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
    304     GNU General Public License for more details. 
    305  
    306     You should have received a copy of the GNU General Public License 
    307     along with this program; if not, write to the Free Software 
    308     Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA 
    309  
    310  
    311 Also add information on how to contact you by electronic and paper mail. 
    312  
    313 If the program is interactive, make it output a short notice like this 
    314 when it starts in an interactive mode: 
    315  
    316     Gnomovision version 69, Copyright (C) year name of author 
    317     Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 
    318     This is free software, and you are welcome to redistribute it 
    319     under certain conditions; type `show c' for details. 
    320  
    321 The hypothetical commands `show w' and `show c' should show the appropriate 
    322 parts of the General Public License.  Of course, the commands you use may 
    323 be called something other than `show w' and `show c'; they could even be 
    324 mouse-clicks or menu items--whatever suits your program. 
    325  
    326 You should also get your employer (if you work as a programmer) or your 
    327 school, if any, to sign a "copyright disclaimer" for the program, if 
    328 necessary.  Here is a sample; alter the names: 
    329  
    330   Yoyodyne, Inc., hereby disclaims all copyright interest in the program 
    331   `Gnomovision' (which makes passes at compilers) written by James Hacker. 
    332  
    333   <signature of Ty Coon>, 1 April 1989 
    334   Ty Coon, President of Vice 
    335  
    336 This General Public License does not permit incorporating your program into 
    337 proprietary programs.  If your program is a subroutine library, you may 
    338 consider it more useful to permit linking proprietary applications with the 
    339 library.  If this is what you want to do, use the GNU Library General 
    340 Public License instead of this License. 
     20312. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT 
     204HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, 
     205BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES 
     206ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA 
     207OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE 
     208PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN 
     209ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 
     210 
     211END OF TERMS AND CONDITIONS 
  • trunk/gallery.php

    r588 r590  
    11<?php 
    22/* This is a backwords compatible file to make old installations work correctly */ 
    3 include_once(dirname(__FILE__)."/plogger.php"); 
     3include_once(dirname(__FILE__).'/plogger.php'); 
    44 
    55function the_gallery_head() { 
  • trunk/index.php

    r573 r590  
    1919 */ 
    2020?> 
    21 <?php require("plogger.php"); ?> 
     21<?php require('plogger.php'); ?> 
    2222<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
    2323        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
  • trunk/plog-admin/_install.php

    r588 r590  
    11<?php 
     2if (is_file(dirname(dirname(__FILE__)).'/plog-config.php')) { 
     3        require_once(dirname(dirname(__FILE__)).'/plog-config.php'); 
     4} 
    25include_once(dirname(dirname(__FILE__)).'/plog-globals.php'); 
    3 @include_once(PLOGGER_DIR.'plog-config.php'); 
    46include_once(PLOGGER_DIR.'plog-includes/plog-functions.php'); 
    57include_once(PLOGGER_DIR.'plog-admin/includes/install-functions.php'); 
     
    1315        header('Content-type: application/octet-stream'); 
    1416        header('Content-Disposition: attachment; filename="plog-config.php"'); 
    15         print $_SESSION['plogger_config']; 
     17        echo $_SESSION['plogger_config']; 
    1618        exit(); 
    17 } 
    18  
    19 // Create the SQL tables and try to proceed to the admin interface. 
    20 // Only proceeds if the configuration is set. 
    21 if (!empty($_POST['proceed']) && defined('PLOGGER_DB_HOST')) { 
    22         $mysql = check_mysql(PLOGGER_DB_HOST, PLOGGER_DB_USER, PLOGGER_DB_PW, PLOGGER_DB_NAME); 
    23         if (empty($mysql)) { 
    24                 create_tables(); 
    25                 configure_plogger($_SESSION['install_values']); // undefined index install_values 
    26                 include_once(PLOGGER_DIR.'plog-load-config.php'); 
    27                 $col = add_collection(plog_tr("Plogger test collection"), plog_tr("Feel free to delete it")); 
    28                 // only attempt to create an album if the collection was created - sloppy fix for multiple installs 
    29                 if (!empty($col['id'])) { 
    30                         $alb = add_album(plog_tr("Plogger test album"), plog_tr("feel free to delete it"), $col['id']); 
    31                 } 
    32                 unset($_SESSION['plogger_config']); 
    33                 unset($_SESSION['install_values']); 
    34                 // send to login, redirecting to the Admin -> Options page first 
    35                 header("Location: index.php?r=plog-options.php"); 
    36                 exit; 
    37         } else { 
    38                 echo "There was an error with the MySQL connection!"; 
    39         } 
    4019} 
    4120?> 
     
    4423<html xmlns="http://www.w3.org/1999/xhtml"> 
    4524<head> 
    46         <title>Install Plogger</title> 
     25        <title>Plogger <?php echo plog_tr('Gallery | Install') ?></title> 
    4726        <meta http-equiv="Content-Type" content="txt/html; charset=utf-8" /> 
    4827        <link rel="stylesheet" type="text/css" href="css/admin.css" /> 
     
    6039// if not installed, do the installation 
    6140if (!$installed) { 
     41        // if not told to proceed, do the configuration setup 
    6242        if (empty($_POST['proceed'])) { 
    63                 do_install($_POST); 
    64         } else { 
    65                 require(PLOGGER_DIR.'plog-admin/includes/install-form-setup-complete.php'); 
     43                $configured = do_install($_POST); 
     44        } 
     45        // if setup configuration done, do the install 
     46        if (isset($_POST['proceed']) || $configured) { 
     47                // if not DB information not defined, prompt the user to download the plog-config.php file 
     48                if (!defined('PLOGGER_DB_HOST')) { 
     49                        echo "\n\n\t" . '<h1>'.plog_tr('Plogger Configuration Complete').'</h1>'; 
     50                        echo "\n\n\t" . '<form action="_install.php" method="post">'; 
     51                        echo "\n\n\t\t" . '<p>'.plog_tr('Configuration setup is now complete.').'</p>'; 
     52                        echo "\n\n\t\t" . '<p>'.plog_tr('Click <strong>Install</strong> to complete the installation.').'</p>'; 
     53                        if (!empty($_SESSION['plogger_config'])) { 
     54                                echo "\n\n\t\t" . '<p>'.sprintf(plog_tr('Before you can proceed, please %s to download configuration file for your gallery, then upload it to your webhost (into the same directory where you installed Plogger itself).'), '<input type="submit" class="submit-inline" name="dlconfig" value="'.plog_tr('click here').'" />').'</p>'; 
     55                        } 
     56                        echo "\n\n\t" . '<p><input type="submit" class="submit" name="proceed" id="proceed" value="'.plog_tr('Install').'" /></p>'; 
     57                // otherwise, do the install 
     58                } else { 
     59                        $errors = array(); 
     60                        $mysql = check_mysql(PLOGGER_DB_HOST, PLOGGER_DB_USER, PLOGGER_DB_PW, PLOGGER_DB_NAME); 
     61                        if (empty($mysql)) { 
     62                                create_tables(); 
     63                                configure_plogger($_SESSION['install_values']); // undefined index install_values 
     64                                include_once(PLOGGER_DIR.'plog-load-config.php'); 
     65                                // if open permissions, have plogger fix them 
     66                                if (isset($_SESSION['plogger_close_perms'])) { 
     67                                        fix_open_perms($_SESSION['plogger_close_perms'], 'delete'); 
     68                                } 
     69                                $col = add_collection(plog_tr('Plogger Test Collection'), plog_tr('Feel free to delete it')); 
     70                                // only attempt to create an album if the collection was created - sloppy fix for multiple installs 
     71                                if (!empty($col['id'])) { 
     72                                        $alb = add_album(plog_tr('Plogger Test Album'), plog_tr('Feel free to delete it'), $col['id']); 
     73                                } 
     74                        } else { 
     75                                echo plog_tr('There was an error with the MySQL connection').'!'; 
     76                        } 
     77                        // if no errors, tell the user their login and password and link them to the login 
     78                        if (empty($errors)) { 
     79                                echo "\n\n\t" . '<h1>'.plog_tr('Plogger Install Complete').'</h1>'; 
     80                                echo "\n\n\t" . '<p class="info">'.plog_tr('You have successfully installed Plogger!').'<br /><br />'; 
     81                                echo "\n\n\t" . sprintf(plog_tr('Your username is %s and your password is %s'), '<strong>'.$_SESSION['install_values']['admin_username'].'</strong>', '<strong>'.$_SESSION['install_values']['admin_password'].'</strong>'); 
     82                                echo "\n\n\t" . '</p>'; 
     83                                if (is_open_perms(PLOGGER_DIR.'plog-content/')) { 
     84                                        echo "\n\n\t" . '<p class="actions">'.sprintf(plog_tr('You can now CHMOD the %s directory back to 0755'), '<strong>plog-content/</strong>').'.</p>'; 
     85                                } 
     86                                echo "\n\n\t" . '<form action="index.php?r=plog-options.php" method="post">'; 
     87                                echo "\n\t\t" . '<p><input class="submit" type="submit" name="login" value="'.plog_tr('Log In').'" /></p>'; 
     88                                echo "\n\t" . '</form>'. "\n"; 
     89                                unset($_SESSION['plogger_config']); 
     90                                unset($_SESSION['install_values']); 
     91                        } else { 
     92                                // else display the errors 
     93                        } 
     94                } 
    6695        } 
    6796} else { 
    68         echo $installed; 
     97        // otherwise it's installed 
     98        echo '<p>'.plog_tr('Plogger is already installed').'</p>'; 
    6999} 
     100close_db(); 
     101close_ftp(); 
    70102?> 
    71103 
  • trunk/plog-admin/_upgrade.php

    r588 r590  
    11<?php 
     2if (is_file(dirname(dirname(__FILE__)).'/plog-config.php')) { 
     3        require_once(dirname(dirname(__FILE__)).'/plog-config.php'); 
     4} 
    25include(dirname(dirname(__FILE__)).'/plog-globals.php'); 
    3 @include(PLOGGER_DIR.'plog-config.php'); 
    4 include(PLOGGER_DIR.'plog-admin/plog-admin-functions.php'); 
    56include(PLOGGER_DIR.'plog-admin/includes/install-functions.php'); 
    67error_reporting(E_ALL); 
     
    2829// if we are upgrading from 1.0beta1, we do not yet have a valid plog-config.php file 
    2930if (!$beta1) { 
    30         // now we can include the functions 
     31        // now we can include the functions - conflict with run_query function in beta 1's plog-connect.php file 
    3132        include(PLOGGER_DIR.'plog-includes/plog-functions.php'); 
    3233        // make sure Plogger is installed first 
    3334        if (!is_plogger_installed()) { 
    3435                // if Plogger does not seem to be installed, redirect to _install.php 
    35                 header("Location: _install.php"); 
     36                header('Location: _install.php'); 
    3637        } else { 
    3738                // if installed, check for safe_mode and if enabled, check for FTP workaround 
    38                 if (ini_get('safe_mode') && function_exists('ftp_connect')) { 
     39                if (is_safe_mode()) { 
    3940                        //set up the FTP workaround information if prompted 
    4041                        if (isset($_POST['ftp_host'])) { 
     
    9091$errors = check_requirements(); 
    9192if (sizeof($errors) > 0) { 
    92         echo "\n\t".'<p class="errors">'.plog_tr('Plogger cannot be upgraded until the following problems are resolved').':</p>'; 
    93         echo "\n\n\t\t".'<ul class="info">'; 
     93        echo "\n\t" . '<p class="errors">'.plog_tr('Plogger cannot be upgraded until the following problems are resolved').':</p>'; 
     94        echo "\n\n\t\t" . '<ul class="info">'; 
    9495        foreach($errors as $error) { 
    95                 echo "\n\t\t\t".'<li>' . $error . '</li>'; 
     96                echo "\n\t\t\t" . '<li class="margin-5">'.$error.'</li>'; 
    9697        } 
    97         echo "\n\t\t".'</ul>'; 
    98         echo "\n\n\t\t".'<form method="get" action="'.$_SERVER['REQUEST_URI'].'"> 
     98        echo "\n\t\t" . '</ul>'; 
     99        echo "\n\n\t\t" . '<form method="get" action="'.$_SERVER['REQUEST_URI'].'"> 
    99100                        <p><input class="submit" type="submit" value="'.plog_tr('Try again').'" /></p> 
    100                 </form>'."\n"; 
     101                </form>' . "\n"; 
    101102} else { // end of requirement check 
    102103        $errors = ""; 
    103104 
    104         echo "\n".'<h1>'.plog_tr('Upgrading Plogger').'</h1>'; 
     105        echo "\n" . '<h1>'.plog_tr('Upgrading Plogger').'</h1>'; 
    105106 
    106107        switch ($step) { 
     
    109110                        if ($beta1) { 
    110111                                // include the old sql database info and create a new plog-config.php file with it 
    111                                 include(PLOGGER_DIR.'plog-connect.php'); 
     112                                include_once(PLOGGER_DIR.'plog-connect.php'); 
    112113                                $conf = create_config_file($DB_HOST, $DB_USER, $DB_PW, $DB_NAME); 
    113114                                // serve the config file and ask user to upload it to webhost 
    114115                                $_SESSION['plogger_config'] = $conf; 
    115                                 echo "\n\n\t".'<h2 class="upgrade">'.plog_tr('Updating Configuration').'</h2>'; 
    116                                 echo "\n\n\t\t".'<p>'.plog_tr('It appears you are updating from Plogger 1.0beta1. Your configuration file needs to be updated.').'</p>'; 
    117                                 echo "\n\n\t\t".'<form action="_upgrade.php" method="post">'; 
    118                                 echo "\n\n\t\t\t".'<p>'.sprintf( plog_tr('Before you can proceed, please %s to download the configuration file for your gallery, then upload it to your webhost (into the same directory where you installed Plogger itself).'), '<input class="submit-inline" type="submit" name="dlconfig" value="'.plog_tr('click here').'" />').'</p>'; 
    119                                 echo "\n\n\t\t\t".'<p><input class="submit" type="submit" name="continue" id="continue" value="'.plog_tr('Continue').'..." /></p>'; 
    120                                 echo "\n\n\t\t".'</form>'."\n"; 
     116                                echo "\n\n\t" . '<h2 class="upgrade">'.plog_tr('Updating Configuration').'</h2>'; 
     117                                echo "\n\n\t\t" . '<p>'.plog_tr('It appears you are updating from Plogger 1.0beta1. Your configuration file needs to be updated.').'</p>'; 
     118                                echo "\n\n\t\t" . '<form action="_upgrade.php" method="post">'; 
     119                                echo "\n\n\t\t\t" . '<p>'.sprintf(plog_tr('Before you can proceed, please %s to download the configuration file for your gallery, then upload it to your webhost (into the same directory where you installed Plogger itself).'), '<input class="submit-inline" type="submit" name="dlconfig" value=" '.plog_tr('click here').'" />') . '</p>'; 
     120                                echo "\n\n\t\t\t" . '<p><input class="submit" type="submit" name="continue" id="continue" value=" '.plog_tr('Continue').'..." /></p>'; 
     121                                echo "\n\n\t\t" . '</form>' . "\n"; 
    121122                                break; 
    122123                        } else if ($needs_ftp) { 
     
    124125                                // handle errors and include the information form 
    125126                                if (!empty($ftp_errors)) { 
    126                                         echo "\n\n\t\t".'<ul class="errors" style="background-image: none;">'; 
     127                                        echo "\n\n\t\t" . '<ul class="errors" style="background-image: none;">'; 
    127128                                        foreach ($ftp_errors as $value) { 
    128                                                 echo "\n\t\t\t".'<li>'.$value.'</li>'; 
    129                                         } 
    130                                         echo "\n\t\t".'</ul>'; 
     129                                                echo "\n\t\t\t" . '<li class="margin-5">'.$value.'</li>'; 
     130                                        } 
     131                                        echo "\n\t\t" . '</ul>'; 
    131132                                } 
    132133                                include(PLOGGER_DIR.'plog-admin/includes/install-form-setup.php'); 
     
    138139                        $return = upgrade_database(); 
    139140                        if (!empty($return)) { 
    140                                 echo "\n\n\t".'<h2 class="upgrade">'.plog_tr('Updating Database').'</h2>'; 
    141                                 echo "\n\n\t\t".'<ul class="info">'; 
     141                                echo "\n\n\t" . '<h2 class="upgrade">'.plog_tr('Updating Database').'</h2>'; 
     142                                echo "\n\n\t\t" . '<ul class="info">'; 
    142143                                foreach ($return as $value) { 
    143                                 echo "\n\t\t\t".'<li>'.$value.'</li>'; 
    144                                 } 
    145                                 echo "\n\t\t".'</ul>'; 
    146                                 echo "\n\n\t".'<h2 class="upgrade">'.plog_tr('Done with database upgrade!').'</h2>'; 
    147                                 echo "\n\n\t".'<form action="_upgrade.php?step=2" method="post">'; 
    148                                 echo "\n\t\t".'<p><input class="submit" type="submit" name="next" value="'.plog_tr('Next Step').' &raquo;" /></p>'; 
    149                                 echo "\n\t".'</form>'."\n"; 
    150                                 break; 
    151                         } 
    152  
    153                 // step 2 - move images and uploads to new locations 
     144                                echo "\n\t\t\t" . '<li class="margin-5">'.$value.'</li>'; 
     145                                } 
     146                                echo "\n\t\t" . '</ul>'; 
     147                                echo "\n\n\t" . '<h2 class="upgrade">'.plog_tr('Done with database upgrade!').'</h2>'; 
     148                                echo "\n\n\t" . '<form action="_upgrade.php?step=2" method="post">'; 
     149                                echo "\n\t\t" . '<p><input class="submit" type="submit" name="next" value="'.plog_tr('Next Step').' &raquo;" /></p>'; 
     150                                echo "\n\t" . '</form>' . "\n"; 
     151                                break; 
     152                        } 
     153 
     154                // step 2 - move images, albums, collections, and uploads to new locations 
    154155                case 2: 
    155156                        // load the config file 
    156157                        include_once(PLOGGER_DIR.'plog-load-config.php'); 
     158                        // check if we need to rename the directories due to permissions to force the re-creation of images/ and thumbs/ 
     159                        if (isset($_SESSION['plogger_close_perms'])) { 
     160                                fix_open_perms($_SESSION['plogger_close_perms']); 
     161                        } 
    157162                        $upgrade_images = upgrade_image_list(); 
    158163                        if ($upgrade_images['total'] > 0 || isset($_POST['upgrade-images'])) { 
    159164                                $selects = array('5' => 5, '10' => 10, '25' => 25, '50' => 50, '75' => 75, '100' => 100, '0' => plog_tr('All at once')); 
    160                                 echo "\n\n\t".'<h2 class="upgrade">'.plog_tr('Updating Images').'</h2>'; 
     165                                echo "\n\n\t" . '<h2 class="upgrade">'.plog_tr('Updating Images').'</h2>'; 
    161166                                if (!isset($_POST['upgrade-images'])) { 
    162                                         echo "\n\n\t".'<p class="actions">'.sprintf( plog_tr('Plogger needs to restructure %s images'), '<strong>'.$upgrade_images['total'].'</strong>').'</p>'; 
    163                                         echo "\n\n\t".'<form action="_upgrade.php?step=2" method="post">'; 
     167                                        echo "\n\n\t" . '<p class="actions">'.sprintf(plog_tr('Plogger needs to restructure %s items'), '<strong>'.$upgrade_images['total'].'</strong>') . '</p>'; 
     168                                        echo "\n\n\t" . '<form action="_upgrade.php?step=2" method="post">'; 
    164169                                        echo "\n\n\t<p>".plog_tr('Number of images to update per cycle').': '; 
    165                                         echo "\n\t\t".'<select name="num-images">'; 
     170                                        echo "\n\t\t" . '<select name="num-images">'; 
    166171                                        foreach ($selects as $key => $value) { 
    167172                                                $selected = ($key == 0) ? ' selected="selected"' : ''; 
    168                                                 echo "\n\t\t\t".'<option value="'.$key.'"'.$selected.'>'.$value.'</option>'; 
    169                                         } 
    170                                         echo "\n\t\t".'</select>'; 
    171                                         echo "\n\t".'</p>'; 
    172                                         echo "\n\n\t\t<p>* ".sprintf( plog_tr('change this if you have a lot of images or if you run into issues with bandwidth or server timeout issues. (i.e. %s which is currently set to %s)'), '<a target="_blank" href="http://www.php.net/manual/en/ref.info.php#ini.max-execution-time">max_execution_time</a>', '<strong>'.ini_get('max_execution_time').' s</strong>').'</p>'; 
    173                                         echo "\n\n\t\t".'<p><input type="hidden" id="upgrade-images" name="upgrade-images" value="1" />'; 
    174                                         echo "\n\t\t".'<input class="submit" type="submit" name="continue" value="'.plog_tr('Continue').'..." /></p>'; 
    175                                         echo "\n\n\t".'</form>'."\n"; 
     173                                                echo "\n\t\t\t" . '<option value="'.$key.'"'.$selected.'>'.$value.'</option>'; 
     174                                        } 
     175                                        echo "\n\t\t" . '</select>'; 
     176                                        echo "\n\t" . '</p>'; 
     177                                        echo "\n\n\t\t<p>* ".sprintf(plog_tr('change this if you have a lot of images, or if you run into issues with bandwidth or server timeout issues. (i.e. %s which is currently set to %s)'), '<a target="_blank" href="http://www.php.net/manual/en/ref.info.php#ini.max-execution-time">max_execution_time</a>', '<strong>'.ini_get('max_execution_time').' s</strong>').'</p>'; 
     178                                        echo "\n\n\t\t" . '<p><input type="hidden" id="upgrade-images" name="upgrade-images" value="1" />'; 
     179                                        echo "\n\t\t" . '<input class="submit" type="submit" name="continue" value="'.plog_tr('Continue').'..." /></p>'; 
     180                                        echo "\n\n\t" . '</form>' . "\n"; 
    176181                                } else { 
    177182                                        $num_images = (isset($_POST['num-images']) && $_POST['num-images'] > 0) ? $_POST['num-images'] : $upgrade_images['total']; 
    178183                                        $return = upgrade_images($num_images, $upgrade_images); 
    179184                                        if (!empty($return['errors'])) { 
    180                                                 echo "\n\n\t".'<p class="errors">'.plog_tr('Plogger was unable to move the following images. Please check your permissions.').'</p>'; 
    181                                                 echo "\n\n\t\t".'<ul class="info">'; 
     185                                                echo "\n\n\t" . '<p class="errors">'.plog_tr('Plogger was unable to move the following images. Please check your permissions.').'</p>'; 
     186                                                echo "\n\n\t\t" . '<ul class="info">'; 
    182187                                                foreach ($return['errors'] as $value) { 
    183                                                         echo "\n\t\t\t".'<li>'.$value.'</li>'; 
    184                                                 } 
    185                                                 echo "\n\t\t".'</ul>'; 
     188                                                        echo "\n\t\t\t" . '<li class="margin-5">'.$value.'</li>'; 
     189                                                } 
     190                                                echo "\n\t\t" . '</ul>'; 
    186191                                        } 
    187192                                        if (!empty($return['output'])) { 
    188                                                 echo "\n\n\t".'<p class="actions">'.plog_tr('Plogger was able to move the following images').':</p>'; 
    189                                                 echo "\n\n\t\t".'<ul class="info">'; 
     193                                                echo "\n\n\t" . '<p class="actions">'.plog_tr('Plogger was able to move the following images').':</p>'; 
     194                                                echo "\n\n\t\t" . '<ul class="info">'; 
    190195                                                foreach ($return['output'] as $value) { 
    191                                                         echo "\n\t\t\t".'<li>'.$value.'</li>'; 
    192                                                 } 
    193                                                 echo "\n\t\t".'</ul>'; 
     196                                                        echo "\n\t\t\t" . '<li class="margin-5">'.$value.'</li>'; 
     197                                                } 
     198                                                echo "\n\t\t" . '</ul>'; 
    194199                                        } 
    195200                                        if ($return['count'] == $upgrade_images['total']) { 
    196                                                 echo "\n\n\t".'<h2 class="upgrade">'.plog_tr('Done with image restructure!').'</h2>'; 
    197                                                 echo "\n\n\t".'<form action="_upgrade.php?step=3" method="post">'; 
    198                                                 echo "\n\t\t".'<p><input class="submit" type="submit" name="next" value="'.plog_tr('Next Step').' &raquo;" /></p>'; 
    199                                                 echo "\n\t".'</form>'."\n"; 
     201                                                echo "\n\n\t" . '<h2 class="upgrade">'.plog_tr('Done with image restructure').'!</h2>'; 
     202                                                echo "\n\n\t" . '<form action="_upgrade.php?step=3" method="post">'; 
     203                                                echo "\n\t\t" . '<p><input class="submit" type="submit" name="next" value="'.plog_tr('Next Step').' &raquo;" /></p>'; 
     204                                                echo "\n\t" . '</form>' . "\n"; 
     205                                                if (isset($_SESSION['plogger_close_perms'])) { 
     206                                                        unset($_SESSION['plogger_close_perms']); 
     207                                                } 
    200208                                        } else { 
    201                                                 echo "\n\n\t".'<p class="actions">'.sprintf( plog_tr('Plogger needs to restructure %s more images'), '<strong>'.( $upgrade_images['total'] - $return['count'] ).'</strong>').'</p>'; 
    202                                                 echo "\n\n\t".'<form action="_upgrade.php?step=2" method="post">'; 
     209                                                echo "\n\n\t" . '<p class="actions">'.sprintf(plog_tr('Plogger needs to restructure %s more images'), '<strong>'.( $upgrade_images['total'] - $return['count'] ).'</strong>').'</p>'; 
     210                                                echo "\n\n\t" . '<form action="_upgrade.php?step=2" method="post">'; 
    203211                                                echo "\n\n\t<p>".plog_tr('Number of images to update per cycle').':'; 
    204                                                 echo "\n\t\t".'<select name="num-images">'; 
     212                                                echo "\n\t\t" . '<select name="num-images">'; 
    205213                                                foreach ($selects as $key => $value) { 
    206214                                                        $selected = ($num_images == $key) ? ' selected="selected"' : ''; 
    207                                                         echo "\n\t\t\t".'<option value="'.$key.'"'.$selected.'>'.$value.'</option>'; 
    208                                                 } 
    209                                                 echo "\n\t\t".'</select>'; 
    210                                                 echo "\n\t".'</p>'; 
    211                                                 echo "\n\n\t".'<p><input type="hidden" id="upgrade-images" name="upgrade-images" value="1" />'; 
    212                                                 echo "\n\t".'<input class="submit" type="submit" name="continue" value="'.plog_tr('Continue').'..." /></p>'; 
    213                                                 echo "\n\n\t".'</form>'."\n"; 
     215                                                        echo "\n\t\t\t" . '<option value="'.$key.'"'.$selected.'>'.$value.'</option>'; 
     216                                                } 
     217                                                echo "\n\t\t" . '</select>'; 
     218                                                echo "\n\t" . '</p>'; 
     219                                                echo "\n\n\t" . '<p><input type="hidden" id="upgrade-images" name="upgrade-images" value="1" />'; 
     220                                                echo "\n\t" . '<input class="submit" type="submit" name="continue" value="'.plog_tr('Continue').'..." /></p>'; 
     221                                                echo "\n\n\t" . '</form>' . "\n"; 
    214222                                        } 
    215223                                } 
     
    222230                        if (!empty($check_list['themes']) || !empty($check_list['translations'])) { 
    223231                                if (!empty($check_list['themes'])) { 
    224                                         echo "\n\n\t".'<p class="actions">'.sprintf( plog_tr('Plogger has found old %s files'), plog_tr('theme') ).'. '.sprintf( plog_tr('If you have customized a theme listed below, please verify that you have a copy located in %s before moving on to the next step'), '<strong>plog-content/themes/</strong>' ).':</p>'; 
    225                                         echo "\n\n\t\t".'<ul class="info">'; 
     232                                        echo "\n\n\t" . '<p class="actions">'.sprintf(plog_tr('Plogger has found old %s files'), plog_tr('theme') ).'. '.sprintf( plog_tr('If you have customized a theme listed below, please verify that you have a copy located in %s before moving on to the next step'), '<strong>plog-content/themes/</strong>' ).':</p>'; 
     233                                        echo "\n\n\t\t" . '<ul class="info">'; 
    226234                                        foreach ($check_list['themes'] as $value) { 
    227                                                 echo "\n\t\t\t".'<li>'.$value.'</li>'; 
    228                                         } 
    229                                         echo "\n\t\t".'</ul>'; 
     235                                                echo "\n\t\t\t" . '<li class="margin-5">'.$value.'</li>'; 
     236                                        } 
     237                                        echo "\n\t\t" . '</ul>'; 
    230238                                } 
    231239                                if (!empty($check_list['translations'])) { 
    232                                         echo "\n\n\t".'<p class="actions">'.sprintf( plog_tr('Plogger has found old %s files'), plog_tr('translation') ).'. '.sprintf( plog_tr('Please verify that you have a copy located in %s before moving on to the next step'), '<strong>plog-content/translations/</strong>' ).':</p>'; 
    233                                         echo "\n\n\t\t".'<ul class="info">'; 
     240                                        echo "\n\n\t" . '<p class="actions">'.sprintf(plog_tr('Plogger has found old %s files'), plog_tr('translation') ).'. '.sprintf(plog_tr('Please verify that you have a copy located in %s before moving on to the next step'), '<strong>plog-content/translations/</strong>' ).':</p>'; 
     241                                        echo "\n\n\t\t" . '<ul class="info">'; 
    234242                                        foreach ($check_list['translations'] as $value) { 
    235                                                 echo "\n\t\t\t".'<li>'.$value.'</li>'; 
    236                                         } 
    237                                         echo "\n\t\t".'</ul>'; 
    238                                 } 
    239                                 echo "\n\n\t".'<form action="_upgrade.php?step=4" method="post">'; 
    240                                 echo "\n\t\t".'<p><input class="submit" type="submit" name="next" value="'.plog_tr('Next Step').' &raquo;" /></p>'; 
    241                                 echo "\n\t".'</form>'."\n"; 
     243                                                echo "\n\t\t\t" . '<li class="margin-5">'.$value.'</li>'; 
     244                                        } 
     245                                        echo "\n\t\t" . '</ul>'; 
     246                                } 
     247                                echo "\n\n\t" . '<form action="_upgrade.php?step=4" method="post">'; 
     248                                echo "\n\t\t" . '<p><input class="submit" type="submit" name="next" value="'.plog_tr('Next Step').' &raquo;" /></p>'; 
     249                                echo "\n\t" . '</form>' . "\n"; 
    242250                                break; 
    243251                        } 
     
    249257                        $cleanup_list = cleanup_list(); 
    250258                        if (!empty($cleanup_list['files']) || !empty($cleanup_list['folders']) || isset($_POST['do-cleanup'])) { 
    251                                 echo "\n\n\t".'<h2 class="upgrade">'.plog_tr('Cleaning Up Files').'</h2>'; 
     259                                echo "\n\n\t" . '<h2 class="upgrade">'.plog_tr('Cleaning Up Files').'</h2>'; 
    252260                                if (!isset($_POST['do-cleanup'])) { 
    253                                         echo "\n\n\t".'<form action="_upgrade.php?step=4" method="post">'; 
    254                                         echo "\n\n\t".'<p class="actions">'.plog_tr('Plogger has found the following files/folders that are no longer needed').':</p>'; 
    255                                         echo "\n\n\t\t".'<ul class="info">'; 
     261                                        echo "\n\n\t" . '<form action="_upgrade.php?step=4" method="post">'; 
     262                                        echo "\n\n\t" . '<p class="actions">'.plog_tr('Plogger has found the following files/folders that are no longer needed').':</p>'; 
     263                                        echo "\n\n\t\t" . '<ul class="info">'; 
    256264                                        foreach ($cleanup_list['files'] as $value) { 
    257                                                 echo "\n\t\t\t".'<li>'.$value.'</li>'; 
     265                                                echo "\n\t\t\t" . '<li class="margin-5">'.$value.'</li>'; 
    258266                                        } 
    259267                                        foreach ($cleanup_list['folders'] as $value) { 
    260                                                 echo "\n\t\t\t".'<li>'.$value.'</li>'; 
    261                                         } 
    262                                         echo "\n\t\t".'</ul>'; 
    263                                         echo "\n\n\t".'<p>'.sprintf( plog_tr('You can have Plogger attempt to %s for you, or you can delete them manually via FTP and go to the next step.'), '<input class="submit-inline" type="submit" name="delete" value="'.plog_tr('delete the files').'..." />').''; 
    264                                         echo "\n\t".'<input type="hidden" id="do-cleanup" name="do-cleanup" value="1" /></p>'; 
    265                                         echo "\n\n\t".'</form>'; 
     268                                                echo "\n\t\t\t" . '<li class="margin-5">'.$value.'</li>'; 
     269                                        } 
     270                                        echo "\n\t\t" . '</ul>'; 
     271                                        echo "\n\n\t" . '<p>'.sprintf(plog_tr('You can have Plogger attempt to %s for you, or you can delete them manually via FTP and go to the next step.'), '<input class="submit-inline" type="submit" name="delete" value="'.plog_tr('delete the files').'..." />').''; 
     272                                        echo "\n\t" . '<input type="hidden" id="do-cleanup" name="do-cleanup" value="1" /></p>'; 
     273                                        echo "\n\n\t" . '</form>'; 
    266274                                } else { 
    267275                                        $return = cleanup_files($cleanup_list['files'], $cleanup_list['folders']); 
    268276                                        if (!empty($return['errors'])) { 
    269                                                 echo "\n\n\t".'<p class="errors">'.plog_tr('Plogger could not delete the following files/folders. Please check your permissions or delete them manually.').'</p>'; 
    270                                                 echo "\n\n\t\t".'<ul class="info">'; 
     277                                                echo "\n\n\t" . '<p class="errors">'.plog_tr('Plogger could not delete the following files/folders. Please check your permissions or delete them manually.').'</p>'; 
     278                                                echo "\n\n\t\t" . '<ul class="info">'; 
    271279                                                foreach ($return['errors'] as $value) { 
    272                                                         echo "\n\t\t\t".'<li>'.$value.'</li>'; 
    273                                                 } 
    274                                                 echo "\n\t\t".'</ul>'; 
     280                                                        echo "\n\t\t\t" . '<li class="margin-5">'.$value.'</li>'; 
     281                                                } 
     282                                                echo "\n\t\t" . '</ul>'; 
    275283                                        } 
    276284                                        if (!empty($return['output'])) { 
    277                                                 echo "\n\n\t".'<p class="actions">'.plog_tr('Plogger was able to delete the following files/folders').':</p>'; 
    278                                                 echo "\n\n\t\t".'<ul class="info">'; 
     285                                                echo "\n\n\t" . '<p class="actions">'.plog_tr('Plogger was able to delete the following files/folders').':</p>'; 
     286                                                echo "\n\n\t\t" . '<ul class="info">'; 
    279287                                                foreach ($return['output'] as $value) { 
    280                                                         echo "\n\t\t\t".'<li>'.$value.'</li>'; 
    281                                                 } 
    282                                                 echo "\n\t\t".'</ul>'; 
     288                                                        echo "\n\t\t\t" . '<li class="margin-5">'.$value.'</li>'; 
     289                                                } 
     290                                                echo "\n\t\t" . '</ul>'; 
    283291                                        } 
    284292                                        if (!empty($return['errors'])) { 
    285                                                 echo "\n\t".'<form action="_upgrade.php?step=4" method="post">'; 
    286                                                 echo "\n\t\t".'<p style="float: left;"><input type="hidden" id="do-cleanup" name="do-cleanup" value="1" />'; 
    287                                                 echo "\n\t\t".'<input class="submit" type="submit" name="try again" value="'.plog_tr('Try Again').'" /></p>'; 
    288                                                 echo "\n\t".'</form>'. "\n"; 
     293                                                echo "\n\t" . '<form action="_upgrade.php?step=4" method="post">'; 
     294                                                echo "\n\t\t" . '<p style="float: left;"><input type="hidden" id="do-cleanup" name="do-cleanup" value="1" />'; 
     295                                                echo "\n\t\t" . '<input class="submit" type="submit" name="try again" value="'.plog_tr('Try Again').'" /></p>'; 
     296                                                echo "\n\t" . '</form>'. "\n"; 
    289297                                        } else { 
    290                                                 echo "\n\n\t".'<h2 class="upgrade">'.plog_tr('Done with cleanup!').'</h2>'; 
    291                                         } 
    292                                 } 
    293                                 echo "\n\n\t".'<form action="_upgrade.php?step=5" method="post">'; 
    294                                 echo "\n\t\t".'<p style="float: left;"><input class="submit" type="submit" name="next" value="'.plog_tr('Next Step').' &raquo;" /></p>'; 
    295                                 echo "\n\t".'</form>'. "\n"; 
    296                                 echo "\n\t".'<p>&nbsp;</p>'. "\n"; 
     298                                                echo "\n\n\t" . '<h2 class="upgrade">'.plog_tr('Done with cleanup!').'</h2>'; 
     299                                        } 
     300                                } 
     301                                echo "\n\n\t" . '<form action="_upgrade.php?step=5" method="post">'; 
     302                                echo "\n\t\t" . '<p style="float: left;"><input class="submit" type="submit" name="next" value="'.plog_tr('Next Step').' &raquo;" /></p>'; 
     303                                echo "\n\t" . '</form>'. "\n"; 
     304                                echo "\n\t" . '<p>&nbsp;</p>'. "\n"; 
    297305                                break; 
    298306                        } 
     
    300308                // Finished! 
    301309                case 5: 
    302                         echo "\n\n\t".'<h2 class="upgrade">'.plog_tr('Upgrade complete!').'</h2>'; 
    303                         echo "\n\n\t".'<p class="actions">'.plog_tr('You have successfully upgraded Plogger!').'</p>'; 
    304                         echo "\n\n\t".'<form action="index.php" method="post">'; 
    305                         echo "\n\t\t".'<p><input class="submit" type="submit" name="next" value="'.plog_tr('Log In').'" /></p>'; 
    306                         echo "\n\t".'</form>'. "\n"; 
     310                        echo "\n\n\t" . '<h2 class="upgrade">'.plog_tr('Upgrade complete!').'</h2>'; 
     311                        echo "\n\n\t" . '<p class="info">'.plog_tr('You have successfully upgraded Plogger!').'</p>'; 
     312                        if (is_open_perms(PLOGGER_DIR.'plog-content/')) { 
     313                                echo "\n\n\t" . '<p class="actions">'.sprintf(plog_tr('You can now CHMOD the %s directory back to 0755'), '<strong>plog-content/</strong>').'.</p>'; 
     314                        } 
     315                        echo "\n\n\t" . '<form action="index.php" method="post">'; 
     316                        echo "\n\t\t" . '<p><input class="submit" type="submit" name="next" value="'.plog_tr('Log In').'" /></p>'; 
     317                        echo "\n\t" . '</form>'. "\n"; 
    307318                        break; 
    308319        } 
    309320} 
     321if (!$beta1) { 
     322        close_db(); 
     323        close_ftp(); 
     324} 
    310325?> 
    311326 
  • trunk/plog-admin/css/admin.css

    r587 r590  
    1 /* Plogger admin stylesheet */ 
     1/* Plogger gallery admin UI stylesheet */ 
    22 
    33/* Body and general styles */ 
    44 
    55html { 
    6         padding: 15px; 
    7         border-bottom: 10px solid #369; 
    8         border-top: 10px solid #369; 
     6        margin: 0; 
     7        padding: 0 15px 15px 15px; 
     8        border-top: 10px solid #365d95; 
    99} 
    1010 
     
    1212        font-family: tahoma, verdana, arial, sans-serif; 
    1313        font-size: 14px; 
     14        color: #333; 
    1415} 
    1516 
    1617a:link, a:visited, a:active { 
    17         color: maroon; 
     18        color: #24496c; 
    1819        text-decoration: none; 
    1920} 
    2021 
    2122a:hover { 
    22         color: navy; 
     23        color: #800; 
    2324        text-decoration: underline; 
    2425} 
     
    2627a:focus { 
    2728        outline: none; 
    28         -moz-outline:none; 
     29        -moz-outline: none; 
     30} 
     31 
     32acronym, abbr { 
     33        cursor: help; 
    2934} 
    3035 
    3136h1 { 
    3237        font-family: verdana, arial, sans-serif; 
    33         font-size: 1.4em; 
    34         margin-top: 25px; 
     38        font-size: 1.3em; 
     39        margin-top: 20px; 
    3540        margin-bottom: 15px; 
    3641        font-weight: bold; 
     
    4045h2 { 
    4146        font-family: verdana, arial, sans-serif; 
    42         font-size: 1.2em; 
     47        font-size: 1.1em; 
    4348        margin-top: 20px; 
    4449        margin-bottom: 15px; 
     
    6469        font-size: 13px; 
    6570        letter-spacing: normal; 
    66 } 
    67  
    68 input.submit { 
    69         border: 3px double #999; 
    70         border-top-color: #ccc; 
    71         border-left-color: #ccc; 
    72         background-color: #fff; 
    73         background-image: url("../images/button-bg.gif"); 
     71        color: #333; 
     72} 
     73 
     74input.submit, input.submit-create, input.submit-delete, input.submit-cancel { 
     75        border: none; 
     76        -moz-border-radius: 8px; 
     77        -khtml-border-radius: 8px; 
     78        -webkit-border-radius: 8px; 
     79        border-radius: 8px; 
     80        -moz-box-sizing: content-box; 
     81        -webkit-box-sizing: content-box; 
     82        -khtml-box-sizing: content-box; 
     83        box-sizing: content-box; 
     84        color: #fff; 
     85        font-family: verdana, arial, sans-serif; 
     86        font-size: 13px !important; 
     87        font-weight: bold; 
     88        padding: 2px 5px; 
     89        cursor: pointer; 
     90        width: 140px; 
     91} 
     92 
     93input.submit, input.submit-delete, input.submit-cancel { 
     94        background-color: #369; 
     95        background-image: url("../images/blue-button-bg.gif"); 
    7496        background-repeat: repeat-x; 
    75         color: #333; 
    76         font-size: 90%; 
    77         font-weight: normal; 
    78         padding: 0.25em; 
    7997        margin-left: 0; 
     98} 
     99 
     100input.submit[type="submit"]:hover { 
     101        color: #a0cca0; 
     102} 
     103 
     104input.submit-delete[type="submit"]:hover, input.submit-cancel[type="submit"]:hover { 
     105        color: #f00; 
     106} 
     107 
     108input.submit-create { 
     109        background-color: #65bc85; 
     110        background-image: url("../images/green-button-bg.gif"); 
     111        background-repeat: repeat-x; 
     112        margin: 0; 
     113} 
     114 
     115input.submit-create[type="button"]:hover { 
     116        color: #24496c; 
    80117} 
    81118 
     
    88125        margin: 0; 
    89126        padding: 0; 
     127        border: 0 none; 
    90128        cursor: pointer; 
    91129} 
     
    104142} 
    105143 
     144ul { 
     145        margin-bottom: 5px; 
     146} 
     147 
    106148/* Header elements */ 
    107149 
     150#logo { 
     151        float: left; 
     152        margin-top: -3px; 
     153        padding: 0; 
     154} 
     155 
     156#logo img { 
     157        border: 0 none; 
     158} 
     159 
    108160#plogger-version { 
     161        float: right; 
     162        width: 375px; 
    109163        font-family: verdana, arial, sans-serif; 
    110         float: right; 
    111         color: #54a154; 
    112         font-weight: 500; 
    113         font-variant: small-caps; 
    114         letter-spacing: 1px; 
     164        font-size: 11px; 
     165        color: #777; 
     166        margin: 0; 
     167        padding: 0; 
     168} 
     169 
     170#server-info { 
     171        margin: 5px 0 0 0; 
     172        padding: 5px 5px 5px 10px; 
     173        background-color: #f9f9f9; 
     174        border: 1px solid #d9d9d9; 
     175        -moz-border-radius: 5px; 
     176        -khtml-border-radius: 5px; 
     177        -webkit-border-radius: 5px; 
     178        border-radius: 5px; 
     179        white-space: wrap; 
     180} 
     181 
     182/* Navigation elements (tabs) */ 
     183 
     184#tab-nav { 
     185        clear: both; 
     186        float: left; 
     187        width: 100%; 
     188        background: transparent url("../images/bg.gif") repeat-x bottom; 
     189        font-family: "Lucida Sans Unicode", verdana, arial, sans-serif; 
     190        font-size: 13px; 
     191        letter-spacing: normal; 
     192        line-height: normal; 
     193        margin-bottom: 15px; 
     194        border-bottom: 1px solid #369; 
     195} 
     196 
     197#tab-nav ul { 
     198        margin: 0; 
     199        padding: 10px 0 0 3px; 
     200        list-style: none; 
     201} 
     202 
     203#tab-nav li { 
     204        float: left; 
     205        background: url("../images/left.gif") no-repeat left top; 
     206        margin: 0; 
     207        padding: 0 0 0 9px; 
     208} 
     209 
     210#tab-nav a { 
     211        float: left; 
     212        display: block; 
     213        background: url("../images/right.gif") no-repeat right top; 
     214        padding: 5px 13px 4px 4px; 
     215        text-decoration: none; 
     216        font-weight: normal; 
     217        color: #765; 
     218} 
     219 
     220/* Commented Backslash Hack hides rule from IE5-Mac \*/ 
     221#tab-nav a { 
     222        float: none; 
     223} 
     224/* End IE5-Mac hack */ 
     225 
     226#tab-nav a:hover { 
     227        color: green; 
     228} 
     229 
     230#tab-nav a:focus { 
     231        outline: none; 
     232        -moz-outline: none; 
     233} 
     234 
     235#tab-nav #current { 
     236        background-image: url("../images/left_on.gif"); 
     237        border-bottom: 1px solid #369; 
     238} 
     239 
     240#tab-nav #current a { 
     241        background-image: url("../images/right_on.gif"); 
     242        color: #fff; 
     243        padding-bottom: 4px; 
     244        font-weight: bold; 
     245} 
     246 
     247#tab-nav #current a:focus { 
     248        outline: none; 
     249        -moz-outline: none; 
     250} 
     251 
     252#tab-nav a em { 
     253        text-decoration: underline; 
     254        font-style: normal; 
     255} 
     256 
     257#tab-subnav { 
     258        background: #369; 
     259        padding: 8px; 
     260        clear: both; 
    115261} 
    116262 
    117263/* Upload page elements */ 
     264 
     265#uploadForm form { 
     266        margin: 0; 
     267        padding: 0; 
     268} 
    118269 
    119270#uploadForm label { 
     
    128279        background-repeat: no-repeat; 
    129280        background-position: left 1px; 
    130         padding-left: 20px; 
     281        padding-left: 25px; 
    131282} 
    132283 
     
    140291} 
    141292 
     293.import { 
     294        margin-bottom: 15px; 
     295        padding: 8px; 
     296        margin: 5px; 
     297        margin-left: 0; 
     298        background-color: #f9f9f9; 
     299        border: 1px solid #d9d9d9; 
     300        -moz-border-radius: 8px; 
     301        -khtml-border-radius: 8px; 
     302        -webkit-border-radius: 8px; 
     303        border-radius: 8px; 
     304        width: 350px; 
     305        clear: both; 
     306} 
     307 
    142308/* Manage and Feedback page elements */ 
    143309 
     
    153319        font-size: 0.9em; 
    154320        margin-right: 5px; 
    155         padding: 3px; 
    156         font-weight: bold; 
     321        padding: 10px 3px 0 3px; 
     322        font-weight: normal; 
    157323        text-align: right; 
    158324} 
    159325 
    160 #contentList label, select, option { 
     326#contentList .pagination span.page-link, #contentList .pagination a.page-link { 
     327        border: 1px solid #bbb; 
     328        -moz-border-radius: 3px; 
     329        -khtml-border-radius: 3px; 
     330        -webkit-border-radius: 3px; 
     331        border-radius: 3px; 
     332        padding: 1px 5px; 
     333        margin: 0 3px; 
     334        color: #bbb; 
     335        text-decoration: none; 
     336} 
     337 
     338#contentList .pagination .page-link:hover, #contentList .pagination .page-link a:hover { 
     339        color: #777; 
     340        border: 1px solid #777; 
     341        background-color: #f9f9f9; 
     342} 
     343 
     344#contentList .pagination .page-link a:focus { 
     345        outline: none; 
     346        -moz-outline: none; 
     347} 
     348 
     349#contentList .pagination a.pagPrev, #contentList .pagination a.pagNext { 
     350        color: #bbb; 
     351        text-decoration: none; 
     352        margin: 0 2px; 
     353} 
     354 
     355#contentList .pagination a.pagPrev:hover, #contentList .pagination a.pagNext:hover { 
     356        color: #777; 
     357        text-decoration: none; 
     358} 
     359 
     360#contentList .pagination span.page-link-current { 
     361        border: 1px solid #369; 
     362        -moz-border-radius: 3px; 
     363        -khtml-border-radius: 3px; 
     364        -webkit-border-radius: 3px; 
     365        border-radius: 3px; 
     366        padding: 1px 5px; 
     367        margin: 0 3px; 
     368        background-color: #369; 
     369        color: #fff; 
     370} 
     371 
     372#contentList label, #contentList select, #contentList option { 
    161373        font-weight: normal; 
    162374} 
     
    166378} 
    167379 
    168 #contentList .entries-page label, select { 
     380#contentList .entries-page label, #contentList .entries-page select { 
    169381        display: block inline; 
    170382        margin-bottom: auto; 
    171383} 
    172384 
    173 #contentList .move-del-manage input, select { 
     385#contentList .entries-page select { 
     386        width: 60px; 
     387} 
     388 
     389#contentList .move-del-manage input, #contentList .move-del-manage select { 
    174390        display: block inline; 
    175391        margin-bottom: auto; 
     
    177393        font-size: 13px; 
    178394        letter-spacing: normal; 
     395        clear: both; 
    179396} 
    180397 
     
    200417        margin: 15px; 
    201418        margin-left: 0; 
    202         border: 2px solid #cc6; 
    203         background-color: #ffffe0; 
     419        background-color: #f9f9f9; 
     420        border: 1px solid #d9d9d9; 
     421        -moz-border-radius: 5px; 
     422        -khtml-border-radius: 5px; 
     423        -webkit-border-radius: 5px; 
     424        border-radius: 5px; 
    204425        width: auto; 
    205426        clear: both; 
     
    207428 
    208429.edit img { 
    209         border: 1px solid #000; 
     430        border: 1px solid #d9d9d9; 
     431        -moz-border-radius: 5px; 
     432        -khtml-border-radius: 5px; 
     433        -webkit-border-radius: 5px; 
     434        border-radius: 5px; 
    210435        padding: 3px; 
    211436        background-color: #fff; 
     
    218443        border: 1px solid #efefef; 
    219444        display: block; 
    220 } 
    221  
    222 .highlight { 
    223         padding: 8px; 
    224         background: #ffffe0; 
    225         border-top: 1px solid #ccc; 
    226         border-bottom: 1px solid #ccc; 
    227         width: 98%; 
    228 } 
    229  
    230 .highlight-row { 
    231         background: #ffffe0; 
     445        cursor: pointer; 
     446} 
     447 
     448.stats, .stats-info { 
     449        background: #f9f9f9; 
     450        background-image: url("../images/info.gif"); 
     451        background-repeat: no-repeat; 
     452        background-position: 5px 8px; 
     453        margin-right: 5px; 
     454        margin-bottom: 15px; 
     455        border: 1px solid #d9d9d9; 
     456        -moz-border-radius: 5px; 
     457        -khtml-border-radius: 5px; 
     458        -webkit-border-radius: 5px; 
     459        border-radius: 5px; 
     460        padding: 8px 5px 8px 28px; 
     461        clear: both; 
     462        width: auto; 
    232463} 
    233464 
    234465/* Options page elements */ 
    235466 
    236 #options_section label { 
     467#options-section label { 
    237468        font-weight: bold; 
    238469} 
     
    258489} 
    259490 
    260 tr.alt td { 
    261         background: #fafafa; 
    262         border-bottom: 1px solid #efefef; 
    263 } 
    264  
    265 /* Themes page elements */ 
    266  
    267 #theme-table td { 
     491tr.alt td.left { 
     492        background: #f7f7f7; 
     493        border-bottom: 1px solid #f3f3f3; 
     494        -moz-border-radius: 8px 0 0 8px; 
     495        -webkit-border-top-left-radius: 8px; 
     496        -webkit-border-bottom-left-radius: 8px; 
     497        -khtml-border-top-left-radius: 8px; 
     498        -khtml-border-bottom-left-radius: 8px; 
     499        border-top-left-radius: 8px; 
     500        border-bottom-left-radius: 8px; 
     501} 
     502 
     503tr.alt td.right { 
     504        background: #f7f7f7; 
     505        border-bottom: 1px solid #f3f3f3; 
     506        -moz-border-radius: 0 8px 8px 0; 
     507        -webkit-border-top-right-radius: 8px; 
     508        -khtml-border-top-right-radius: 8px; 
     509        -webkit-border-bottom-right-radius: 8px; 
     510        -khtml-border-bottom-right-radius: 8px; 
     511        border-top-right-radius: 8px; 
     512        border-bottom-right-radius: 8px; 
     513} 
     514 
     515/* Themes and Plugins page elements */ 
     516 
     517#theme-table td, #plugin-table td { 
    268518        padding: 8px; 
    269 } 
    270  
    271 #theme-table tr.header th { 
     519        vertical-align: top; 
     520} 
     521 
     522#theme-table tr.header th, #plugin-table tr.header th { 
    272523        padding: 8px; 
    273524} 
    274525 
    275 tr.activated td { 
    276         background: #bedebe; 
    277         border-bottom: 1px solid #519e51; 
     526tr.activated td, tr.enabled td { 
     527        background: #bed6d7; 
     528} 
     529 
     530td.active, td.on { 
     531        color: #000; 
     532        font-weight: bold; 
    278533} 
    279534 
    280535/* Upload and Manage page elements */ 
    281536 
    282 .cssbox, .cssbox_body, .cssbox_head, .cssbox_head h2 { /* set the image to use and establish the lower-right position */ 
    283         background: transparent url("../images/plogger-box-add.png") no-repeat bottom right; 
    284         margin: 0; 
    285         padding: 0;  
    286 } 
    287  
    288 .cssbox label, .cssbox-green label { 
     537/* Blue/green boxes on Upload page */ 
     538 
     539table.cssbox-upload { 
     540        width: 750px; 
     541        margin: 0; 
    289542        padding: 0; 
    290         margin: 0; 
    291         font-weight: bold; 
     543} 
     544 
     545td.cssbox-upload-blue, td.cssbox-upload-green { 
     546        width: 375px !important; 
     547        margin: 2px 0 0 0; 
     548        padding: 10px; 
     549        vertical-align: top; 
     550} 
     551 
     552th.cssbox-upload-head-blue h2, th.cssbox-upload-head-green h2 { 
     553        color: #fff; 
     554        font-weight: bold; 
     555        font-size: 14px; 
     556        text-align: center; 
     557        vertical-align: top; 
     558        text-decoration: none; 
     559        margin: 0; 
     560        border: 0; 
     561        padding: 4px 18px; 
     562        height: 17px; 
     563        width: auto; 
     564        -moz-border-radius: 12px 12px 0 0; 
     565        -webkit-border-top-right-radius: 12px; 
     566        -webkit-border-top-left-radius: 12px; 
     567        -khtml-border-top-right-radius: 12px; 
     568        -khtml-border-top-left-radius: 12px; 
     569        border-top-right-radius: 12px; 
     570        border-top-left-radius: 12px; 
     571} 
     572 
     573th.cssbox-upload-head-blue h2 { 
     574        background: transparent url("../images/blue-button-bg.gif") repeat-x top left; 
     575} 
     576 
     577th.cssbox-upload-head-green h2 { 
     578        background: transparent url("../images/green-button-bg.gif") repeat-x top left; 
     579} 
     580 
     581td.cssbox-upload-body { 
     582        margin: 0; 
     583        padding: 15px 10px 15px 15px; 
     584        vertical-align: top; 
     585        width: 350px; 
     586        background-color: #f9f9f9; 
     587        border-right: 1px solid #d9d9d9; 
     588        border-bottom: 1px solid #d9d9d9; 
     589        border-left: 1px solid #d9d9d9; 
     590        -moz-border-radius: 0 0 12px 12px; 
     591        -webkit-border-bottom-right-radius: 12px; 
     592        -webkit-border-bottom-left-radius: 12px; 
     593        -khtml-border-bottom-right-radius: 12px; 
     594        -khtml-border-bottom-left-radius: 12px; 
     595        border-bottom-right-radius: 12px; 
     596        border-bottom-left-radius: 12px; 
     597} 
     598 
     599.cssbox-upload-body label { 
     600        font-family: tahoma, verdana, arial, sans-serif; 
     601        font-size: 14px; 
    292602        display: inline; 
    293 } 
    294  
    295 .cssbox-green, .cssbox_body-green, .cssbox_head-green, .cssbox_head-green h2 { 
    296         background: transparent url("../images/plogger-box-add-green.png") no-repeat bottom right; 
    297         margin: 0; 
    298         padding: 0;  
    299 } 
     603        font-weight: bold; 
     604} 
     605 
     606/* Green box on Manage page */ 
    300607 
    301608.cssbox-green { 
    302         width: 370px !important; /* intended total box width - padding-right(next) */ 
    303         width: 350px; /* IE Win = width - padding */ 
    304         padding-right: 15px; /* the gap on the right edge of the image (not content padding) */ 
    305         margin: 2px 0 20px 0; /* use to position the box */ 
     609        width: 385px !important; 
     610        margin: 10px 0 2px 0; 
     611        padding: 0; 
    306612} 
    307613 
     
    311617} 
    312618 
    313 .cssbox { 
    314         width: 370px !important; /* intended total box width - padding-right(next) */ 
    315         width: 355px; /* IE Win = width - padding */ 
    316         padding-right: 15px; /* the gap on the right edge of the image (not content padding) */ 
    317         margin: 2px 0 20px 0; /* use to position the box */ 
    318 } 
    319  
    320 .cssbox_head, .cssbox_head-green { /* set the top-right image */ 
    321         background-position: top right; 
    322         margin-right: -15px; /* pull the right image over on top of border */ 
    323         padding-right: 40px; /* right-image-gap + right-inside padding */ 
    324 } 
    325  
    326 .cssbox_head h2, .cssbox_head-green h2 { /* set the top-left image */ 
    327         background-position: top left; 
    328         margin: 0; /* reset */ 
    329         border: 0; /* reset */ 
    330         padding: 7px 0 15px 20px; /* padding-left = image gap + interior padding ... no padding-right */ 
    331         height: auto !important;  
    332         height: 1%; /* IE Holly Hack */ 
    333 } 
    334  
    335 .cssbox_body, .cssbox_body-green { /* set the lower-left corner image */ 
    336         background-position: bottom left; 
    337         margin-right: 25px; /* interior-padding right */ 
    338         padding: 15px 0 15px 20px; /* mirror .cssbox_head right/left */ 
    339 } 
    340  
    341 .cssbox_head h2, .cssbox_head-green h2 { /* Misc Text formatting */ 
     619.cssbox-head-green h2 { 
    342620        color: #fff; 
    343621        font-weight: bold; 
    344         font-size: 15px; /* this is tricky if box width is in ems */ 
    345         text-align: center; 
    346         text-shadow: rgb(0,0,0) 0 2px 5px; /* Safari-only, but I'm doing it just 'cause I can */ 
     622        font-size: 13px; 
     623        text-align: left; 
    347624        text-decoration: none; 
    348 } 
    349  
    350 .cssbox_body p, .cssbox_body-green p { 
     625        width: auto; 
     626        background: transparent url("../images/green-button-bg.gif") repeat-x top left; 
     627        margin: 0; 
     628        border: 0; 
     629        padding: 3px 15px 3px 15px; 
     630        height: 17px; 
     631        -moz-border-radius: 8px 8px 0 0; 
     632        -webkit-border-top-right-radius: 8px; 
     633        -webkit-border-top-left-radius: 8px; 
     634        -khtml-border-top-right-radius: 8px; 
     635        -khtml-border-top-left-radius: 8px; 
     636        border-top-right-radius: 8px; 
     637        border-top-left-radius: 8px; 
     638} 
     639 
     640.cssbox-head-green h2:hover { 
     641        color: #24496c; 
     642} 
     643 
     644.cssbox-head-green h2.manage { 
     645        cursor: pointer; 
     646} 
     647 
     648.cssbox-body-green { 
     649        margin: 0; 
     650        padding: 15px 10px 15px 15px; 
     651        width: auto; 
     652        background-color: #f9f9f9; 
     653        border-right: 1px solid #d9d9d9; 
     654        border-bottom: 1px solid #d9d9d9; 
     655        border-left: 1px solid #d9d9d9; 
     656        -moz-border-radius: 0 0 8px 8px; 
     657        -webkit-border-bottom-right-radius: 8px; 
     658        -webkit-border-bottom-left-radius: 8px; 
     659        -khtml-border-bottom-right-radius: 8px; 
     660        -khtml-border-bottom-left-radius: 8px; 
     661        border-bottom-right-radius: 8px; 
     662        border-bottom-left-radius: 8px; 
     663} 
     664 
     665.cssbox-body-green label { 
     666        font-family: tahoma, verdana, arial, sans-serif; 
     667        font-size: 14px; 
     668        display: inline; 
     669        font-weight: bold; 
     670} 
     671 
     672.cssbox-body-green p { 
    351673        margin: 0 0 20px; 
    352674} 
    353675 
    354 .cssbox_body a, .css_body a:hover { 
    355         margin: 0 !important; 
    356         padding: 0 !important; 
    357         border: 0 !important; 
    358         text-decoration: underline; 
    359 } 
    360  
    361676/* Action/Error messages */ 
    362677 
    363 .actions { 
    364         background-image: url("../images/alert.gif"); 
     678.success, .actions, .errors, .info, .plugins { 
    365679        background-repeat: no-repeat; 
    366680        background-position: 5px 8px; 
    367681        margin-right: 5px; 
    368682        margin-bottom: 15px; 
    369         border-top:     2px solid #bb0; 
    370         border-bottom: 2px solid #bb0; 
     683        -moz-border-radius: 5px; 
     684        -khtml-border-radius: 5px; 
     685        -webkit-border-radius: 5px; 
     686        border-radius: 5px; 
    371687        padding: 8px 8px 8px 28px; 
     688        clear: both; 
     689} 
     690 
     691.success { 
     692        background-image: url("../images/success.gif"); 
     693        border: 1px solid #8fc25c; 
     694        background-color: #d4edc9; 
     695} 
     696 
     697.actions { 
     698        background-image: url("../images/alert.gif"); 
     699        border: 1px solid #bb0; 
    372700        background-color: #ffffe0; 
    373         clear: both; 
    374701} 
    375702 
    376703.errors { 
    377704        background-image: url("../images/x.gif"); 
    378         background-repeat: no-repeat; 
    379         background-position: 5px 8px; 
    380         margin-right: 5px; 
    381         margin-bottom: 15px; 
    382         border-top: 2px solid maroon; 
    383         border-bottom: 2px solid maroon; 
    384         padding: 8px 8px 8px 28px; 
     705        border: 1px solid maroon; 
    385706        background-color: #fcc; 
    386         clear: both; 
    387707} 
    388708 
    389709.info { 
    390         margin-right: 5px; 
    391         margin-bottom: 15px; 
    392         border-top: 2px solid #d9d9d9; 
    393         border-bottom: 2px solid #d9d9d9; 
    394         padding: 8px 8px 8px 28px; 
     710        border: 1px solid #d9d9d9; 
    395711        background-color: #f9f9f9; 
    396         clear: both; 
     712} 
     713 
     714.plugins { 
     715        border: 1px solid #d9d9d9; 
     716        background-color: #fff; 
    397717} 
    398718 
    399719/* Miscellaneous - used throughout admin panel */ 
     720 
     721.align-left { 
     722        text-align: left; 
     723} 
     724 
     725.align-center { 
     726        text-align: center; 
     727} 
     728 
     729.align-right { 
     730        text-align: right; 
     731} 
    400732 
    401733.breadcrumb-header { 
     
    406738} 
    407739 
    408 .box-heading { 
    409         font-family: "Georgia", "Lucida Sans", "Verdana", arial, sans-serif; 
    410         font-size: 15px; 
    411         font-weight: bold; 
    412         color: #333; 
    413         margin:0; 
    414         padding: 0; 
    415         vertical-align: middle; 
    416         position: relative; 
    417         top: 10px; 
    418 } 
    419  
    420 .box-1 { 
    421         margin: 15px; 
    422         margin-top: 5px; 
    423         margin-left: 0; 
    424         border: 1px solid #264b71; 
    425         padding: 10px; 
    426         padding-top: 0; 
    427         padding-left: 20px; 
    428         background-color: #c4dadb; 
    429         width: 470px; 
    430 } 
    431  
    432 .box-2 { 
    433         margin: 15px; 
    434         margin-top: 5px; 
    435         margin-left: 0; 
    436         border: 1px solid #cc6; 
    437         padding: 10px; 
    438         padding-top: 0; 
    439         padding-left: 20px; 
    440         background-color: #ffffe0; 
    441         width: 470px; 
    442 } 
    443  
    444 .box-3 { 
    445         margin: 15px; 
    446         margin-top: 5px; 
    447         margin-bottom: 10px; 
    448         margin-left: 0; 
    449         border: 1px solid #488f62; 
    450         padding: 10px; 
    451         padding-top: 0; 
    452         padding-left: 20px; 
    453         padding-bottom: 18px; 
    454         background-color: #bedebe; 
    455         width: 470px; 
    456 } 
    457  
    458740.img-shadow { 
    459         float:left; 
     741        float: left; 
    460742        background: url("../images/shadowAlpha.png") no-repeat bottom right !important; 
    461743        background: url("../images/shadow.gif") no-repeat bottom right; 
     
    473755} 
    474756 
    475 .invert-selection a, .invert-selection a:link, .invert-selection a:visited, .invert-selection a:active, .invert-selection a:hover { 
    476         font-size: 0.9em; 
     757.margin-5 { 
     758        margin: 5px; 
     759} 
     760 
     761.no-margin-top { 
     762        margin-top: 0; 
     763} 
     764 
     765.no-margin-bottom { 
     766        margin-bottom: 0; 
     767} 
     768 
     769.strong { 
     770        font-weight: bold; 
    477771} 
    478772 
     
    490784 
    491785tr.color-1 { 
    492         background-color: #ccc; 
     786        background-color: #eaeaea; 
     787        text-align: left; 
    493788} 
    494789 
    495790tr.color-2 { 
    496         background-color: #efefef; 
     791        background-color: #f9f9f9; 
     792        text-align: left; 
    497793} 
    498794 
     
    513809} 
    514810 
     811tr.footer, tr.footer td { 
     812        -moz-border-radius: 0 0 8px 8px; 
     813        -webkit-border-bottom-right-radius: 8px; 
     814        -webkit-border-bottom-left-radius: 8px; 
     815        -khtml-border-bottom-right-radius: 8px; 
     816        -khtml-border-bottom-left-radius: 8px; 
     817        border-bottom-right-radius: 8px; 
     818        border-bottom-left-radius: 8px; 
     819} 
     820 
    515821tr.footer { 
    516822        background-color: #264e75; 
     
    518824 
    519825tr.footer td { 
    520         padding: 6px; 
     826        padding: 5px; 
     827} 
     828 
     829tr.footer td.invert-selection a, tr.footer td.invert-selection a:link, tr.footer td.invert-selection a:visited, tr.footer td.invert-selection a:active { 
     830        font-size: 0.9em; 
     831        font-weight: normal; 
     832        color: #fff; 
     833        text-decoration: none; 
     834        margin-left: 10px; 
     835} 
     836 
     837tr.footer td.invert-selection a:hover { 
     838        color: #ddd; 
    521839} 
    522840 
    523841.thumbselect { 
    524         height: 80px; 
    525         padding-left: 90px; 
     842        height: 100px; 
     843        padding-left: 100px; 
    526844        background-repeat: no-repeat; 
    527845        background-position: center left; 
     
    529847 
    530848.thumboption { 
    531         padding-left: 90px; 
    532         height: 40px; 
     849        height: 50px; 
     850        padding-left: 100px; 
    533851        margin-bottom: 2px; 
    534         background-position: center left; 
     852        background-repeat: no-repeat; 
     853        background-position: top left; 
    535854} 
    536855 
     
    539858        text-decoration: none; 
    540859} 
     860 
     861.vertical-top { 
     862        vertical-align: top; 
     863} 
     864 
     865.width-15 { 
     866        width: 15px; 
     867} 
     868 
     869.width-50 { 
     870        width: 50px; 
     871} 
     872 
     873.width-75 { 
     874        width: 75px; 
     875} 
     876 
     877.width-100 { 
     878        width: 100px; 
     879} 
     880 
     881.width-125 { 
     882        width: 125px; 
     883} 
     884 
     885.width-150 { 
     886        width: 150px; 
     887} 
     888 
     889.width-175 { 
     890        width: 175px; 
     891} 
     892 
     893.width-200 { 
     894        width: 200px; 
     895} 
     896 
     897.width-275 { 
     898        width: 275px; 
     899} 
     900 
     901.width-400 { 
     902        width: 400px; 
     903} 
     904 
     905.width-450 { 
     906        width: 450px; 
     907} 
     908 
     909.width-500 { 
     910        width: 500px; 
     911} 
     912 
     913.width-600 { 
     914        width: 600px; 
     915} 
     916 
     917.width-700 { 
     918        width: 700px; 
     919} 
     920 
     921.width-750 { 
     922        width: 750px; 
     923} 
     924 
     925td.width-15, td.width-50, td.width-75, td.width-100, td.width-125, td.width-150, td.width-175, td.width-200, td.width-275, td.width-400, td.width-450 { 
     926        vertical-align: top; 
     927} 
  • trunk/plog-admin/css/lightbox.css

    r550 r590  
    11#lightbox { 
    2         background-color:#eee; 
     2        background-color: #eee; 
    33        padding: 10px; 
     4        border-right: 2px solid #666; 
    45        border-bottom: 2px solid #666; 
    5         border-right: 2px solid #666; 
    66} 
    77 
  • trunk/plog-admin/css/login.css

    r586 r590  
    3131 
    3232input.submit { 
    33         border: 3px double #999; 
    34         border-top-color: #ccc; 
    35         border-left-color: #ccc; 
    36         background-color: #fff; 
    37         background-image: url("../images/button-bg.gif"); 
     33        border: none; 
     34        background-color: #369; 
     35        background-image: url("../images/blue-button-bg.gif"); 
    3836        background-repeat: repeat-x; 
    39         color: #333; 
    40         font-family: "Lucida Sans Unicode", verdana, arial, sans-serif; 
    41         font-size: 13px; 
    42         font-weight: normal; 
    43         padding: 0.25em; 
     37        -moz-border-radius: 5px; 
     38        -khtml-border-radius: 5px; 
     39        -webkit-border-radius: 5px; 
     40        border-radius: 5px; 
     41        -moz-box-sizing: content-box; 
     42        -webkit-box-sizing: content-box; 
     43        -khtml-box-sizing: content-box; 
     44        box-sizing: content-box; 
     45        color: #fff; 
     46        font-family: verdana, arial, sans-serif; 
     47        font-size: 12px !important; 
     48        font-weight: bold; 
     49        padding: 3px 8px; 
     50        cursor: pointer; 
    4451        margin-left: 0; 
    4552        width: auto; 
     53} 
     54 
     55input.submit:hover { 
     56        color: #a0cca0; 
    4657} 
    4758 
     
    6475        background-color: #f9f9f9; 
    6576        border: 1px solid #d9d9d9; 
     77        -moz-border-radius: 5px; 
     78        -khtml-border-radius: 5px; 
     79        -webkit-border-radius: 5px; 
     80        border-radius: 5px; 
    6681        padding: 20px 15px 5px; 
    6782        margin: 10px auto; 
     
    7489        margin: 15px auto; 
    7590        border: 1px solid maroon; 
     91        -moz-border-radius: 5px; 
     92        -khtml-border-radius: 5px; 
     93        -webkit-border-radius: 5px; 
     94        border-radius: 5px; 
    7695        padding: 10px 15px; 
    7796        background-color: #fcc; 
     
    84103        margin: 15px auto; 
    85104        border: 1px solid #bb0; 
     105        -moz-border-radius: 5px; 
     106        -khtml-border-radius: 5px; 
     107        -webkit-border-radius: 5px; 
     108        border-radius: 5px; 
    86109        padding: 10px 15px; 
    87110        background-color: #ffffe0; 
  • trunk/plog-admin/includes/install-form-setup.php

    r587 r590  
    1717} 
    1818 
    19 $init_vars = array('db_user','db_pass','db_name','gallery_name','admin_email','ftp_user','ftp_pass','ftp_path'); 
     19$init_vars = array('db_user', 'db_pass', 'db_name', 'gallery_name', 'admin_username', 'admin_password', 'admin_email', 'ftp_user', 'ftp_pass', 'ftp_path'); 
    2020foreach($init_vars as $var) { 
    2121        if (empty($form[$var])) { 
    22                 $form[$var] = ""; 
     22                $form[$var] = ''; 
    2323        } 
    2424} 
     
    2626<h1><?php echo plog_tr('Plogger Configuration Setup') ?></h1> 
    2727 
    28         <p><?php echo plog_tr('To install, simply fill out the following form. If there are any problems, you will be notified and asked to fix them before the installation will continue. After the installation has finished, you will be redirected to the Plogger admin page.') ?></p> 
     28        <p><?php echo plog_tr('To install, simply fill out the following form. If there are any problems, you will be notified and asked to fix them before the installation will continue. After the installation is complete, you will be redirected to the Plogger Gallery Admin page.') ?></p> 
    2929 
    3030        <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> 
     
    5454} // end Database Setup 
    5555 
    56 if (!isset($config['gallery_name']) || !isset($config['admin_email'])) { 
     56if ( 
     57        !isset($config['gallery_name']) || 
     58        !isset($config['admin_email']) || 
     59        !isset($config['admin_username']) || 
     60        !isset($config['admin_password']) 
     61) { 
    5762?> 
    5863                <tr> 
     
    6671<?php 
    6772        } 
    68         if (!isset($config['admin_email'])) { ?> 
     73        if (!isset($config['admin_email'])) { 
     74?> 
    6975                <tr> 
    70                         <td class="form_label"><label for="admin_email"><?php echo plog_tr('Your e-mail') ?>:</label></td> 
     76                        <td class="form_label"><label for="admin_email"><?php echo plog_tr('Your Email') ?>:</label></td> 
    7177                        <td class="form_input"><input type="text" name="admin_email" id="admin_email" value="<?php echo $form['admin_email']; ?>" /></td> 
     78                </tr> 
     79<?php 
     80        } 
     81        if (!isset($config['admin_username'])) { 
     82?> 
     83                <tr> 
     84                        <td class="form_label"><label for="admin_username"><?php echo plog_tr('Username') ?>:</label></td> 
     85                        <td class="form_input"><input type="text" name="admin_username" id="admin_username" value="<?php echo $form['admin_username']; ?>" /></td> 
     86                </tr> 
     87<?php 
     88        } 
     89        if (!isset($config['admin_password'])) { 
     90?> 
     91                <tr> 
     92                        <td class="form_label"><label for="admin_password"><?php echo plog_tr('Password') ?>:</label></td> 
     93                        <td class="form_input"><input type="text" name="admin_password" id="admin_password" value="<?php echo $form['admin_password']; ?>" /></td> 
    7294                </tr> 
    7395<?php 
     
    108130                        <td colspan="2"> 
    109131                                <h2><?php echo plog_tr('Safe_mode Detected') ?></h2> 
    110                                 <p><?php echo plog_tr("Safe mode has been detected on your server and your server is missing PHP's FTP commands. Plogger cannot function correctly with safe_mode enabled and without FTP access.") ?></p> 
     132                                <p><?php echo plog_tr("Safe_mode has been detected on your server and your server is missing PHP's FTP commands. Plogger cannot function correctly with safe_mode enabled and without FTP access.") ?></p> 
    111133                        </td> 
    112134                </tr> 
    113135<?php 
    114136        } 
    115 } //end Safe_mode FTP Workaround ?> 
     137} //end Safe_mode FTP Workaround 
     138?> 
    116139                <tr> 
    117140                        <td class="submitButtonRow" colspan="2"><input type="submit" class="submit" name="submit" id="submit" value="<?php echo plog_tr('Proceed') ?>" /></td> 
  • trunk/plog-admin/includes/install-functions.php

    r588 r590  
    99/**** Common Functions ****/ 
    1010 
    11 function maybe_add_column($table,$column,$add_sql) { 
     11function maybe_add_column($table, $column, $add_sql) { 
    1212        $sql = "DESCRIBE $table"; 
    1313        $res = mysql_query($sql); 
    1414        $found = false; 
    15         while($row = mysql_fetch_array($res,MYSQL_NUM)) { 
     15        while($row = mysql_fetch_array($res, MYSQL_NUM)) { 
    1616                if ($row[0] == $column) $found = true; 
    1717        } 
    1818        if (!$found) { 
    19                 mysql_query("ALTER TABLE $table ADD `$column` ". $add_sql); 
     19                mysql_query("ALTER TABLE $table ADD `$column` ".$add_sql); 
    2020                return plog_tr('Added new field to database').': '.$column; 
    2121        } else { 
    2222                if (defined('PLOGGER_DEBUG')) { 
    23                         return 'Field `'.$column.'` already exists, ignoring.'; 
    24                 } 
    25         } 
    26 } 
    27  
    28 function maybe_drop_column($table,$column) { 
     23//                      return plog_tr('Field').' <strong>'.$column.'</strong> .'plog_tr('already exists, ignoring.').''; 
     24                        return 'Field <strong>'.$column.'</strong> already exists, ignoring.'; 
     25                } 
     26        } 
     27} 
     28 
     29function maybe_drop_column($table, $column) { 
    2930        $sql = "DESCRIBE $table"; 
    3031        $res = mysql_query($sql); 
    3132        $found = false; 
    32         while($row = mysql_fetch_array($res,MYSQL_NUM)) { 
     33        while($row = mysql_fetch_array($res, MYSQL_NUM)) { 
    3334                if ($row[0] == $column) $found = true; 
    3435        } 
     
    3940        } else { 
    4041                if (defined('PLOGGER_DEBUG')) { 
     42//                      return $column.' '.plog_tr('does not exist').''; 
    4143                        return $column.' does not exist'; 
    4244                } 
     
    4446} 
    4547 
    46 function maybe_add_table($table,$add_sql,$options = "") { 
     48function maybe_add_table($table, $add_sql, $options = '') { 
    4749        $sql = "DESCRIBE $table"; 
    4850        $res = mysql_query($sql); 
     
    5759        } else { 
    5860                if (defined('PLOGGER_DEBUG')) { 
    59                         return 'Table `'.$table.'` already exists, ignoring.'; 
     61//                      return plog_tr('Table').' <strong>'.$table.'</strong> .'plog_tr('already exists, ignoring.').''; 
     62                        return 'Table <strong>'.$table.'</strong> already exists, ignoring.'; 
    6063                } 
    6164        } 
     
    7174        $errors = array(); 
    7275 
    73         // check that session.save_path is set (not set by default on PHP5) 
    74         $save_path = ini_get('session.save_path'); 
    75         if (empty($save_path)) { 
    76                 $errors[] = sprintf( plog_tr('The PHP %s variable is not set in your php.ini file. Please contact your webhost on how to set this system variable.'), '<strong>session.save_path</strong>'); 
    77         } else if (!isset($_SESSION['plogger_session'])) { 
    78                 // check that the session variable can be read 
    79                 $errors[] = plog_tr('PHP session cookies are not being set. Please check that session cookies are enabled on your browser.'); 
     76        // check that the session variable can be read 
     77        if (!isset($_SESSION['plogger_session'])) { 
     78                $save_path = ini_get('session.save_path'); 
     79                // check that session.save_path is set (not set by default on PHP5) 
     80                if (empty($save_path)) { 
     81                        if (!defined('SESSION_SAVE_PATH')) { 
     82                                $sample_text = ' ('.sprintf(plog_tr('see %s if your %s does not contain this variable'), 'plog-config-sample.php', 'plog-config.php').')'; 
     83                        } else { 
     84                                $sample_text = ''; 
     85                        } 
     86                        $errors[] = sprintf( plog_tr('The PHP %s variable is not set in your php.ini file.'), '<strong>session.save_path</strong>').' '.sprintf(plog_tr('You can attempt to set this by adding a writable directory path to the %s variable in %s or contact your webhost on how to set this system variable.'), '<strong>SESSION_SAVE_PATH</strong>', 'plog-config.php'.$sample_text); 
     87                } else { 
     88                        $errors[] = sprintf(plog_tr('PHP session cookies are not being set. Please check that session cookies are enabled on your browser or verify that your %s variable is set up correctly.'), '<strong>session.save_path</strong>').' '.sprintf(plog_tr('You can attempt to set this by adding a writable directory path to the %s variable in %s or contact your webhost on how to set this system variable.'), '<strong>SESSION_SAVE_PATH</strong>', 'plog-config.php'.$sample_text); 
     89                } 
    8090        } 
    8191 
     
    90100        } 
    91101 
    92         // make sure we have permission to read these folders / files 
    93         $files_to_read = array("./","./plog-admin","./plog-admin/css","./plog-admin/images","./plog-content/images","./plog-content/thumbs","./plog-content/uploads","./plog-includes","./plog-includes/lib"); 
    94         foreach($files_to_read as $file){ 
    95                 if (!is_readable(PLOGGER_DIR . $file)){ 
    96                         $errors[] = sprintf( plog_tr("The path %s is not readable by the web server."), '<strong>'.realpath(PLOGGER_DIR . $file).'</strong>'); 
    97                 } 
    98         } 
    99  
    100         // make sure we have permission to write to these folders 
    101         $files_to_write = array("./plog-content/images","./plog-content/thumbs", "./plog-content/uploads"); 
    102         foreach($files_to_write as $file){ 
    103                 if (!is_writable(PLOGGER_DIR . $file)){ 
    104                         $errors[] = sprintf( plog_tr("The path %s is not writable by the web server."), '<strong>'.realpath(PLOGGER_DIR . $file).'</strong>'); 
     102        // make sure we have permission to read these folders/files 
     103        $files_to_read = array('./plog-admin', './plog-admin/css', './plog-admin/images', './plog-content/images', './plog-content/thumbs', './plog-content/uploads', './plog-includes', './plog-includes/lib'); 
     104        foreach($files_to_read as $file) { 
     105                if (!is_readable(PLOGGER_DIR.$file)) { 
     106                        $errors[] = sprintf(plog_tr('The path %s is not readable by the web server.'), '<strong>'.realpath(PLOGGER_DIR.$file).'</strong>'); 
     107                } 
     108        } 
     109 
     110        // workaround for upgrading from beta1 since there are conflicting function in plog-functions.php and beta1 plog-connect.php 
     111        if (function_exists('is_safe_mode')) { 
     112                // if safe mode enabled, we will use the FTP workarounds to deal with folder permissions 
     113                if (!is_safe_mode()) { 
     114                        // make sure we have permission to write to these folders 
     115                        $files_to_write = array('./plog-content/images', './plog-content/thumbs'); 
     116                        $i = 0; 
     117                        foreach($files_to_write as $file) { 
     118                                if (!is_writable(PLOGGER_DIR.$file)) { 
     119                                        $errors[] = sprintf(plog_tr('The path %s is not writable by the web server.'), '<strong>'.realpath(PLOGGER_DIR.$file).'</strong>'); 
     120                                } else if (is_open_perms(realpath(PLOGGER_DIR.$file))) { 
     121                                        $_SESSION['plogger_close_perms'][basename($file)] = realpath(PLOGGER_DIR.$file); 
     122                                } 
     123                        } 
     124                        if (isset($_SESSION['plogger_close_perms'])) { 
     125                                if (!is_writable(PLOGGER_D