Compare commits

...

126 commits
master ... 2.4

Author SHA1 Message Date
patdenice
24faf8ab69 merge r21779 from trunk to branch 2.4
Correct image size in smartpocket with GThumb+ activated

git-svn-id: http://piwigo.org/svn/branches/2.4@21781 68402e56-0260-453c-a942-63ccdbb3a9ee
2013-03-22 09:25:01 +00:00
plegall
1a7dd9aa63 next stable release is 2.4.8
git-svn-id: http://piwigo.org/svn/branches/2.4@20862 68402e56-0260-453c-a942-63ccdbb3a9ee
2013-02-19 21:58:25 +00:00
ddtddt
9c0863b08b [2.4] - language update for 2.4.7
git-svn-id: http://piwigo.org/svn/branches/2.4@20857 68402e56-0260-453c-a942-63ccdbb3a9ee
2013-02-19 19:44:40 +00:00
ddtddt
2e90ef9d6d [2.4] - language update for 2.4.7 / plugins languages
git-svn-id: http://piwigo.org/svn/branches/2.4@20856 68402e56-0260-453c-a942-63ccdbb3a9ee
2013-02-19 18:28:54 +00:00
plegall
5b07a9bfd2 bug 2844: improve security on LocalFiles Editor, add pwg_token to avoid CSRF
git-svn-id: http://piwigo.org/svn/branches/2.4@20713 68402e56-0260-453c-a942-63ccdbb3a9ee
2013-02-12 10:11:30 +00:00
plegall
ff5b60a215 bug 2844: increase security on LocalFiles Editor, filter on files to edit.
git-svn-id: http://piwigo.org/svn/branches/2.4@20712 68402e56-0260-453c-a942-63ccdbb3a9ee
2013-02-12 10:01:46 +00:00
plegall
ca9158ee81 filter $_GET['dl'], it must be a md5sum-like string and nothing else
git-svn-id: http://piwigo.org/svn/branches/2.4@20706 68402e56-0260-453c-a942-63ccdbb3a9ee
2013-02-11 21:49:28 +00:00
riopwg
19a57cc890 Update language IT Review
git-svn-id: http://piwigo.org/svn/branches/2.4@20649 68402e56-0260-453c-a942-63ccdbb3a9ee
2013-02-10 16:16:49 +00:00
patdenice
df6940d0af merge r20014 from trunk to branch 2.4
bug:2819
Link problem in menu with smartpocket

Add redirect.tpl in smartpocket.

git-svn-id: http://piwigo.org/svn/branches/2.4@20015 68402e56-0260-453c-a942-63ccdbb3a9ee
2013-01-09 00:26:54 +00:00
flop25
b3ab6cf8e8 bug:2797 merge r19696 in 2.4 branche
added !defined('IN_ADMIN') to prefilter_local_css to exlude the local css files from the administration part

git-svn-id: http://piwigo.org/svn/branches/2.4@19794 68402e56-0260-453c-a942-63ccdbb3a9ee
2013-01-04 12:11:35 +00:00
plegall
814e57d4d8 next version is 2.4.7
git-svn-id: http://piwigo.org/svn/branches/2.4@19479 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-12-17 22:55:18 +00:00
ddtddt
a4de18fd29 [2.4] - language update for 2.4.6
git-svn-id: http://piwigo.org/svn/branches/2.4@19466 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-12-17 16:07:10 +00:00
ddtddt
ff887728d4 [2.4] - language update for 2.4.6 add Lietuvių [LT] Thanks to Giedrelis
git-svn-id: http://piwigo.org/svn/branches/2.4@19435 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-12-15 17:25:46 +00:00
ddtddt
45b84c30d7 [2.4] - language update for 2.4.6
git-svn-id: http://piwigo.org/svn/branches/2.4@19434 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-12-15 17:23:43 +00:00
plegall
3a7c669418 bug 2806 fixed: only use the day to compare from and to, and not the time.
git-svn-id: http://piwigo.org/svn/branches/2.4@19419 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-12-13 10:58:33 +00:00
plegall
ea3e07c326 bug 2805: avoid XSS from EXIF/IPTC
git-svn-id: http://piwigo.org/svn/branches/2.4@19417 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-12-13 09:27:24 +00:00
mistic100
4fab3d9922 Merged revision(s) r19167 from trunk:
bug:2793 use "include_once" instead of "include" when including pclzip

git-svn-id: http://piwigo.org/svn/branches/2.4@19168 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-11-25 10:42:16 +00:00
riopwg
25d2ac809f Merged revision(s) 18969 from trunk:
Update language IT
Some files still encoded in ANSI

git-svn-id: http://piwigo.org/svn/branches/2.4@18970 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-11-07 13:09:28 +00:00
patdenice
5266cecfef merge r18967 from trunk to branch 2.4
bug:2687
bug:2778
Unable to switch from mobile theme to classic theme with incompatible plugins.
Detect blackberry and symbian for mobile theme.
Update mdetect class.

git-svn-id: http://piwigo.org/svn/branches/2.4@18968 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-11-07 09:44:24 +00:00
plegall
d7c75c190a bug 2782 fixed: make sure %d or %s are correctly translated
he_IL needs to be fixed, too complicated for me.


git-svn-id: http://piwigo.org/svn/branches/2.4@18820 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-10-31 09:36:46 +00:00
rvelices
fd6c0cc7ba merge -r18732 from trunk to branch 2.4 add page_url (canonical picture url) for web service methods images.search, tags.getImages, images.getInfo, categories.getImages
git-svn-id: http://piwigo.org/svn/branches/2.4@18733 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-10-24 20:26:21 +00:00
plegall
21c1660ab9 next version is 2.4.6
git-svn-id: http://piwigo.org/svn/branches/2.4@18702 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-10-19 21:06:56 +00:00
plegall
5a137f9fe4 bug 2774 fixed: better sanitize on username_or_email user input
git-svn-id: http://piwigo.org/svn/branches/2.4@18699 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-10-19 20:15:37 +00:00
ddtddt
453765fc67 [2.4] - language update for 2.4.5
git-svn-id: http://piwigo.org/svn/branches/2.4@18698 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-10-19 16:30:35 +00:00
plegall
88f962c19a next version is 2.4.5
git-svn-id: http://piwigo.org/svn/branches/2.4@18673 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-10-17 13:44:58 +00:00
rvelices
afb83c772d merge -r18667 from trunk - improved page title when viewing tags, fix canonical url on index page if the webmaster changes the default number of thumbnails per page
git-svn-id: http://piwigo.org/svn/branches/2.4@18668 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-10-16 19:59:08 +00:00
mistic100
7ed296715e Merged revision(s) r18607 from trunk:
feature 2770: Add bottom pagination on batch manager unit 

git-svn-id: http://piwigo.org/svn/branches/2.4@18608 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-10-11 15:41:13 +00:00
mistic100
4cf33a0025 Merged revision(s) r18459 from trunk:
bug:2756 feature:2737 on batch manager use "tag" url parameter instead of re-use "cat"

git-svn-id: http://piwigo.org/svn/branches/2.4@18460 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-10-04 14:15:41 +00:00
mistic100
d7df3f0a0c Merged revision(s) r18332 from trunk:
2756: Batch Manager is unusable in some cases, due to tags management

git-svn-id: http://piwigo.org/svn/branches/2.4@18333 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-09-28 12:09:34 +00:00
plegall
06873239d7 next version is 2.4.4
git-svn-id: http://piwigo.org/svn/branches/2.4@18273 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-09-26 14:06:12 +00:00
ddtddt
9f900ba251 [2.4] - language update for 2.4.4
git-svn-id: http://piwigo.org/svn/branches/2.4@18154 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-09-22 14:37:01 +00:00
plegall
49d958e03f bug 2752 fixed: make sure we don't use the mobile theme with the no_photo_yet feature
git-svn-id: http://piwigo.org/svn/branches/2.4@18116 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-09-21 09:14:16 +00:00
mistic100
36d14b9766 Merged revision(s) r18064 from trunk:
minor fix: comments where not correctly highlighted


git-svn-id: http://piwigo.org/svn/branches/2.4@18065 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-09-20 15:18:44 +00:00
plegall
8ec14404d1 bug 2750 fixed: HTML-sanitize $_POST['username_or_email'] before display (both
username and email don't allow HTML tags...)

Original report by Stefan Schurtz via Secunia SVCRP


git-svn-id: http://piwigo.org/svn/branches/2.4@17983 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-09-18 12:07:54 +00:00
plegall
b43df041d4 merge r17980 from trunk to branch 2.4
little code refactoring over r17424

bug fixed on Edit Photo page when associating with no album.



git-svn-id: http://piwigo.org/svn/branches/2.4@17982 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-09-18 11:46:56 +00:00
plegall
081566eb83 merge r17424 from trunk to branch 2.4
bug 2716: modifying a photo reset it's rank
modify associate_images_to_categories() and move_images_to_categories() to preserve ranks
please test before 2.4.4 ! :-D


git-svn-id: http://piwigo.org/svn/branches/2.4@17981 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-09-18 11:45:51 +00:00
plegall
dc70afc4ac bug 2748 fixed: make sure scripts.js is loaded when we need phpWGOpenWindow
git-svn-id: http://piwigo.org/svn/branches/2.4@17978 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-09-18 08:29:31 +00:00
mistic100
34e88240ef Merged revision(s) r17970 from trunk:
feature 2737: improve tag administration screen, rename "Edit" into "Batch Manager"
planned for 2.5:
"View" -> "View in gallery"
"Edit" -> "Manage photos"

git-svn-id: http://piwigo.org/svn/branches/2.4@17971 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-09-17 16:15:01 +00:00
mistic100
e2bac20059 Merged revision(s) r17948 from trunk:
feature 2737: improve tag administration screen, update triggers list

git-svn-id: http://piwigo.org/svn/branches/2.4@17949 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-09-16 16:31:15 +00:00
mistic100
8f2f94ed7e Merged revision(s) r17928 from trunk:
small css fixes: 
  make disabled options visible with clear, 
  remove border on .showInfo:hover, avoiding clipping on some pages with roma

git-svn-id: http://piwigo.org/svn/branches/2.4@17929 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-09-15 15:29:55 +00:00
flop25
7a0b5fc3b5 merge r17561
bug:2719
no need to array diff : the system check after to not reinsert existing lines 

git-svn-id: http://piwigo.org/svn/branches/2.4@17857 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-09-11 11:48:01 +00:00
rvelices
53a0522894 merge-r17765 from trunk to branch 2.4 feature 2737: improve tag administration screen
show for every tag
- the number of photos
- link to public index page
- link to batch manager edit

add an event for extended description multi language strings (used for autocompletion and shown in the tag admin screen) instead of hard coded in the core [lang=..

git-svn-id: http://piwigo.org/svn/branches/2.4@17766 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-09-05 20:49:12 +00:00
rvelices
5f23fa1473 merge -r17748 from trunk to branch 2.4 bug 2735: fix/improve non latin language tags
a. non latin tags (greek/cyrillic...) are not sorted case-insesitive and group by letter view in tag list is not case insesitive
b. quick searching tag names does not perform correctly accent folding (e.g. Köln and Koln do not match) and case insesitivity for non latin letters
c. missing from remove_accents characters in romanian language (Latin Extended-B)
  ? c8 98 = LATIN CAPITAL LETTER S WITH COMMA BELOW
  ? c8 99 = LATIN SMALL LETTER S WITH COMMA BELOW
  ? c8 9a = LATIN CAPITAL LETTER T WITH COMMA BELOW
  ? c8 9b = LATIN SMALL LETTER T WITH COMMA BELOW
d. str2url allow non latin letters in output only if the input does not contain any valid lating letter/digit. we should always allow non latin letters in output 


git-svn-id: http://piwigo.org/svn/branches/2.4@17749 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-09-04 20:04:34 +00:00
rvelices
d0be895700 merge -r17724 from trunk to branch 2.4
bug 2732: when new tags must be added, also look first for existing tags with different case 


git-svn-id: http://piwigo.org/svn/branches/2.4@17725 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-09-03 20:49:42 +00:00
rvelices
7d64be73ab merge -r17681 from trunk to branch 2.4 - bug 2686 : multi size with diacritical file names not generated
git-svn-id: http://piwigo.org/svn/branches/2.4@17682 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-08-31 19:38:38 +00:00
rvelices
a2f73718d9 bug 2725: Piwigo isn't compatible with suPHP + better handling of watermark upload errors merge from trunk to branch 2.4
git-svn-id: http://piwigo.org/svn/branches/2.4@17676 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-08-30 19:20:50 +00:00
plegall
2c24b0b38a bug 2733 fixed: when creating a sub-album in a private album with
pwg.categories.add, it is automatically private too.


git-svn-id: http://piwigo.org/svn/branches/2.4@17668 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-08-30 12:52:40 +00:00
rvelices
391ac76cbe merge -r17650 from trunk to branch 2.4 bug 2730: multi size not deleted when physical directory deleted
git-svn-id: http://piwigo.org/svn/branches/2.4@17651 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-08-27 18:43:05 +00:00
plegall
4bcacb8c69 bug 2724 fixed: tooltip on thumbnails is back on photos sort order manager
git-svn-id: http://piwigo.org/svn/branches/2.4@17573 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-08-15 11:45:46 +00:00
mistic100
e63f2b9766 Merged revision(s) r17496 from trunk:
feature 2721: slight improvement of "contact webmaster" link 

git-svn-id: http://piwigo.org/svn/branches/2.4@17497 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-08-09 14:49:44 +00:00
rvelices
fd64213045 merg from trunk to 2.4: small fix on element_url returned from web service calls (now coherent with picture.php)
git-svn-id: http://piwigo.org/svn/branches/2.4@17470 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-08-07 19:55:40 +00:00
mistic100
2f21acc89c Merged revision(s) r17381 from trunk:
bug 2717: Warning + no content on help page 

git-svn-id: http://piwigo.org/svn/branches/2.4@17382 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-08-04 09:24:15 +00:00
mistic100
2aa150998e Merged revision(s) r17347 from trunk:
bug 2714: missing icons on jgrowl notifications

git-svn-id: http://piwigo.org/svn/branches/2.4@17348 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-08-03 15:02:09 +00:00
mistic100
8bca490ac0 Merged revision(s) r17345 from trunk:
bug 2715: on picture page, tools buttons + Firefox prefetch increment the hit counter

git-svn-id: http://piwigo.org/svn/branches/2.4@17346 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-08-03 09:55:51 +00:00
rvelices
1af611b10f merge -r17315 from trunk to 2.4 multi size works now with special chars (tested with space ()[]!,=)
git-svn-id: http://piwigo.org/svn/branches/2.4@17316 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-08-02 16:47:58 +00:00
rvelices
5bc53c4d74 feature 2708: in admin, display allowed custom derivatives and ability to delete them
git-svn-id: http://piwigo.org/svn/branches/2.4@17295 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-08-01 19:00:54 +00:00
rvelices
4b181b746f merge -r17289 from trunk to 2.4: batch manager improvements/fixes:
- when refreshing photo set, start is set to 0 (otherwise if the new set is smaller that start, it looks like it is empty)
- correct positioning of thumbnails (width/height) is done in template instead of javascript (immediate instead on ready + no reflows)
- less space lost on batch manager page
- fix wrong page title in batch manager because of global variable $title overriden
- fix language keys in element_set_ranks (capital/lowercase issue)

git-svn-id: http://piwigo.org/svn/branches/2.4@17290 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-08-01 17:00:07 +00:00
rvelices
a7895bf67b merge -r17229-17230 from trunk to branch 2.4
bug 2712: Custom sized derivatives are never sharpened
bug 2711: Watermark is sometimes applied while it should not be


git-svn-id: http://piwigo.org/svn/branches/2.4@17231 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-07-30 20:03:14 +00:00
mistic100
c1e3f62855 remove debug code from r17001
git-svn-id: http://piwigo.org/svn/branches/2.4@17209 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-07-30 13:48:35 +00:00
plegall
7cb1c24ce8 newt version is 2.4.3
git-svn-id: http://piwigo.org/svn/branches/2.4@17170 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-07-27 07:56:34 +00:00
plegall
b448de6b5b bug 2707 fixed: display tabs in the language manager
git-svn-id: http://piwigo.org/svn/branches/2.4@17166 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-07-27 07:39:40 +00:00
mistic100
e509fecfe9 [language_switch] merge r17149 from trunk
error introduced in previous commit


git-svn-id: http://piwigo.org/svn/branches/2.4@17150 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-07-26 21:26:12 +00:00
ddtddt
736d117a61 [2.4] - language update for 2.4.2
git-svn-id: http://piwigo.org/svn/branches/2.4@17146 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-07-26 20:38:40 +00:00
ddtddt
b7abe14df6 [2.4] - plugins - language update for 2.4.2
git-svn-id: http://piwigo.org/svn/branches/2.4@17103 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-07-25 21:15:06 +00:00
ddtddt
bf8f4bb0ba [2.4] - language update number release langue
git-svn-id: http://piwigo.org/svn/branches/2.4@17101 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-07-25 21:11:37 +00:00
ddtddt
089d8ec4e8 [2.4] - language update for 2.4.2
git-svn-id: http://piwigo.org/svn/branches/2.4@17094 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-07-25 20:57:50 +00:00
mistic100
af345e2100 Merged revision(s) r17064 from trunk:
works with Additional Pages

git-svn-id: http://piwigo.org/svn/branches/2.4@17069 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-07-25 20:26:52 +00:00
rvelices
273f066daf merge from trunk to 2.4
- fix smartpocket : web service calls in admin not working on iphones
- removed unused func params in template

git-svn-id: http://piwigo.org/svn/branches/2.4@17022 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-07-25 17:26:26 +00:00
plegall
c87ad378c2 bug 2706 fixed: pwg.getMissingDerivatives correctly manages galleries with not a single photo.
git-svn-id: http://piwigo.org/svn/branches/2.4@17016 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-07-25 15:13:02 +00:00
plegall
d60339d4b5 feature 2693 added: automatically show link to caddie if caddie not empty
git-svn-id: http://piwigo.org/svn/branches/2.4@17008 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-07-25 11:43:35 +00:00
plegall
b9c3d840c5 bug 2655 fixed: maximum length for album name is 255 chars
git-svn-id: http://piwigo.org/svn/branches/2.4@17006 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-07-25 10:57:18 +00:00
plegall
ef5777dd71 next version is 2.4.2
git-svn-id: http://piwigo.org/svn/branches/2.4@17005 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-07-25 10:35:13 +00:00
plegall
be73b982e5 bug 2705 (related to): if rotate function is called with a 0 (zero) angle,
like plugin RotateImage may do, ExtIM fails with the same error
"convert: invalid argument for option `-rotate': -orient"


git-svn-id: http://piwigo.org/svn/branches/2.4@17003 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-07-25 10:31:56 +00:00
plegall
261a386291 bug 2627 fixed: photos added with the web form or pwg.images.addSimple now have
a correct image_category.rank.


git-svn-id: http://piwigo.org/svn/branches/2.4@17001 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-07-25 10:18:22 +00:00
rvelices
6b8f0a49f9 fix prev commit - again :( (bug 2682)
git-svn-id: http://piwigo.org/svn/branches/2.4@16995 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-07-24 22:09:19 +00:00
rvelices
1c948a7fd5 bug 2682: Watermark sizing calculation is made on the requested size not on the final one - fix (merge from trunk)
git-svn-id: http://piwigo.org/svn/branches/2.4@16992 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-07-24 20:54:52 +00:00
rvelices
663f6273a7 bug 2682: Watermark sizing calculation is made on the requested size not on the final one (merge from trunk)
git-svn-id: http://piwigo.org/svn/branches/2.4@16990 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-07-24 20:50:20 +00:00
rvelices
0bb3361cf1 Merged revision(s) 16986-16987 from trunk: refactor code when selected derivative on index page is changed by a plugin ...
fix ie7 display and unwanted text in print


git-svn-id: http://piwigo.org/svn/branches/2.4@16988 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-07-24 20:48:44 +00:00
rvelices
8197cd440f fix checkbox of selected derivative on index page when a plugin overrides the default value
git-svn-id: http://piwigo.org/svn/branches/2.4@16985 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-07-24 19:13:44 +00:00
flop25
37b4b3e0f3 merge r16800 & r16799 from trunk to 2.4 branch
bug:2688
changing padding margin...
+10 px for .thumbnailCategory .description using a prefilter
__
changing the padding
adding a prefilter to a height for .thumbnailCategory .description .text

git-svn-id: http://piwigo.org/svn/branches/2.4@16984 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-07-24 18:09:45 +00:00
ddtddt
881dfec74c [2.4] - /plugins/ - version
git-svn-id: http://piwigo.org/svn/branches/2.4@16979 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-07-24 16:53:52 +00:00
ddtddt
9d5015d79e git-svn-id: http://piwigo.org/svn/branches/2.4@16978 68402e56-0260-453c-a942-63ccdbb3a9ee 2012-07-24 16:52:08 +00:00
mistic100
3fa99f57d4 Merged revision(s) 16967 from trunk:
update triggers_list and fix display bug

git-svn-id: http://piwigo.org/svn/branches/2.4@16968 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-07-24 09:43:35 +00:00
plegall
83cdc8576d bug 2705 fixed: if the rotation is "0", no rotation is needed, we skip the
rotate function which behaves badly (in ExtIM) with a zero degree rotation.


git-svn-id: http://piwigo.org/svn/branches/2.4@16934 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-07-23 13:33:55 +00:00
flop25
2c41131194 revert bug:2684 on tpl files
git-svn-id: http://piwigo.org/svn/branches/2.4@16930 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-07-23 12:05:14 +00:00
mistic100
18bf888d16 Merged revision(s) 16928 from trunk:
feature 2703: make it easy for plugins to add tabs in admin screens
centralize all core tabs in one file


git-svn-id: http://piwigo.org/svn/branches/2.4@16929 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-07-23 11:52:18 +00:00
mistic100
798de81516 Merged revision(s) 16925 from trunk:
feature 2703: make it easy for plugins to add tabs in admin screens
add a trigger a give an id to each core tabsheets

git-svn-id: http://piwigo.org/svn/branches/2.4@16926 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-07-23 10:06:27 +00:00
flop25
3f51676bfe merge r16849 form trunk to 2.4
bug:2684
a better gif


git-svn-id: http://piwigo.org/svn/branches/2.4@16850 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-07-19 17:06:10 +00:00
flop25
b874181e8b merge r16829 from trunk to 2.4
bug:2698
at the bottom!


git-svn-id: http://piwigo.org/svn/branches/2.4@16830 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-07-18 16:37:15 +00:00
flop25
2b25eee744 merge r16827 from trunk to 2.4 branch
bug:2698
2 id identical
fieldset instead of a span
moving up the field for autoorder
hiding the link to set a autoorder if there is no album (clicking on it didn't do anything)merge r16825 


git-svn-id: http://piwigo.org/svn/branches/2.4@16828 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-07-18 16:23:51 +00:00
flop25
d73149b77e merge r16825 from trunk to 2.4 branch
bug:2698
moving the forms

git-svn-id: http://piwigo.org/svn/branches/2.4@16826 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-07-18 14:35:17 +00:00
flop25
aecd0d9a80 merge r16801 from trunk to 2.4 branch
wrong name for the loop : odd/even feature working now

git-svn-id: http://piwigo.org/svn/branches/2.4@16802 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-07-17 14:00:25 +00:00
mistic100
72eac3862d Merged revision(s) r16655 from trunk:
public colorbox template deprecated

git-svn-id: http://piwigo.org/svn/branches/2.4@16656 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-07-12 16:50:56 +00:00
ddtddt
a1a035a4eb [2.4] - language - LocalFilesEditor - add zh_TW - 中文 (繁體) - Chinese traditional Thanks to chouyh
git-svn-id: http://piwigo.org/svn/branches/2.4@16607 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-07-11 07:52:09 +00:00
flop25
14b5e43107 merge r16522 from branch 2.4 to trunk
only load the js for the ajax loading, if one picture needs to be generated
bug:2684



git-svn-id: http://piwigo.org/svn/branches/2.4@16523 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-07-09 08:03:44 +00:00
flop25
d3f5ed2c2d bug:2683
create get_size_css

git-svn-id: http://piwigo.org/svn/branches/2.4@16507 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-07-08 17:15:40 +00:00
flop25
fa373d27ca merge r16504 & r16505 from trunk to branch 2.4
bug:2684
adding the loader ajax-loader-small.gif for comment_list.tpl, and ajax-loader-big.gif for picture_content.tpl
bug:2684


git-svn-id: http://piwigo.org/svn/branches/2.4@16506 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-07-08 17:02:11 +00:00
flop25
b5025b2947 merge r16502 from trunk to branch 2.4
adding a conf img_dir and a loader : ajax-loader-big.gif 128x128
    bug:2684

git-svn-id: http://piwigo.org/svn/branches/2.4@16503 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-07-08 15:50:56 +00:00
rvelices
077c076069 qualify better css exceptions for ie 5-7
git-svn-id: http://piwigo.org/svn/branches/2.4@16411 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-07-06 18:43:33 +00:00
mistic100
b8507b5afe Merged revision(s) 16390 from trunk:
feature 2680: styles for jQuery UI slider 
still need to include "themes/default/js/ui/theme/jquery.ui.slider.css"

git-svn-id: http://piwigo.org/svn/branches/2.4@16391 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-07-06 08:50:53 +00:00
rvelices
d7a1ee188d user_cache was not invalidated on photo deletion (merge from trunk to branch 2.4)
git-svn-id: http://piwigo.org/svn/branches/2.4@16335 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-07-03 20:21:09 +00:00
ddtddt
812ec7aeee [2.4] - language - update language for 2.4.1
git-svn-id: http://piwigo.org/svn/branches/2.4@16316 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-07-03 04:55:51 +00:00
plegall
b85adcaa73 bug 2677 fixed: smarter check of the database version and manage partial upgrade.
git-svn-id: http://piwigo.org/svn/branches/2.4@16312 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-07-02 22:28:07 +00:00
ddtddt
968d32fde2 [2.4] - language - update language for 2.4.1
git-svn-id: http://piwigo.org/svn/branches/2.4@16303 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-07-02 21:11:45 +00:00
ddtddt
8d8d9332bf [2.4] - language - update language for 2.4.1
git-svn-id: http://piwigo.org/svn/branches/2.4@16302 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-07-02 21:09:07 +00:00
ddtddt
364f1a562e [2.4] - language - update language for 2.4.1
git-svn-id: http://piwigo.org/svn/branches/2.4@16299 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-07-02 20:12:56 +00:00
plegall
64bc6e3f17 bug 2661 fixed: there is no more high_filesize in Piwigo 2.4. We have to remove it from history search.
git-svn-id: http://piwigo.org/svn/branches/2.4@16281 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-07-02 13:30:33 +00:00
mistic100
787c716b66 Merged revision(s) 16278 from trunk:
bug 2674: cssmin 3.0.1 requires PHP 5.2.4 

git-svn-id: http://piwigo.org/svn/branches/2.4@16279 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-07-02 13:09:09 +00:00
plegall
a07dd0bea0 bug 2673 fixed: Batch Manager, single mode, a click on the thumbnail opens the L size and not the original.
git-svn-id: http://piwigo.org/svn/branches/2.4@16277 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-07-02 12:59:12 +00:00
mistic100
06a66c406e Merged revision(s) 16275 from trunk:
bug 2669: cancel migration task 121

git-svn-id: http://piwigo.org/svn/branches/2.4@16276 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-07-02 10:54:15 +00:00
plegall
5d9fc3066d next version is 2.4.1
git-svn-id: http://piwigo.org/svn/branches/2.4@16273 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-07-02 07:46:35 +00:00
rvelices
3aa529809e bug 2672: invalid option sampling-factor for old versions of ImageMagick (use it for new versions) merge from trunk to branch 2.4
git-svn-id: http://piwigo.org/svn/branches/2.4@16242 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-07-01 04:18:34 +00:00
plegall
9ee698734d bug 2672: deactivate sampling-factor (for now)
git-svn-id: http://piwigo.org/svn/branches/2.4@16210 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-06-29 22:23:49 +00:00
mistic100
e21e16e76e merge r16179 from trunk
bug 2671: use get_branch_from_version() to find the real branch, however the version looks like

git-svn-id: http://piwigo.org/svn/branches/2.4@16180 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-06-29 15:10:09 +00:00
mistic100
aa10f54558 merge r16177 from trunk
incompatible plugins check doesn't work since 2.4, because version number format has changed

git-svn-id: http://piwigo.org/svn/branches/2.4@16178 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-06-29 14:31:29 +00:00
rvelices
f3c84114ef bug 2668 - fix php warnings on glob function (merge from trunk to 2.4)
git-svn-id: http://piwigo.org/svn/branches/2.4@16168 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-06-29 04:26:22 +00:00
mistic100
de1166c7f2 merge r16146 from trunk
check if ilog() exists before using it, allowing the use the class outer i.php

git-svn-id: http://piwigo.org/svn/branches/2.4@16147 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-06-28 18:47:34 +00:00
plegall
457a627c29 tabulation is not the expected indentation
git-svn-id: http://piwigo.org/svn/branches/2.4@16083 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-06-27 07:01:01 +00:00
rvelices
e1794bbb66 correctly log errors when external imagick fails (merge from trunk)
git-svn-id: http://piwigo.org/svn/branches/2.4@16077 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-06-27 04:20:29 +00:00
rvelices
9f809077e0 bug 2666 Fix invalid xml on web service output with xml format (merge from trunk to branch 2.4)
git-svn-id: http://piwigo.org/svn/branches/2.4@16075 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-06-27 04:09:54 +00:00
rvelices
9937863533 bug 2655 avoid php warning in safe_mode merge from trunk to 2.4
git-svn-id: http://piwigo.org/svn/branches/2.4@16073 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-06-27 03:55:48 +00:00
riopwg
45e75a4a92 Merged revision 16027 from trunk: Update language IT
git-svn-id: http://piwigo.org/svn/branches/2.4@16028 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-06-25 06:35:27 +00:00
mistic100
86358b6c87 merge r15950 from trunk
bug 2659: Possible misconfiguration of ORDER BY + missing language string

git-svn-id: http://piwigo.org/svn/branches/2.4@15951 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-06-22 21:42:52 +00:00
plegall
015e2f5ac8 next release is 2.4.0
git-svn-id: http://piwigo.org/svn/branches/2.4@15936 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-06-22 08:57:49 +00:00
plegall
d5dc1ee06d change default configuration settings for a stable branch. Developers who need previous configuration settings can modify them in their local configuration
git-svn-id: http://piwigo.org/svn/branches/2.4@15935 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-06-22 08:56:58 +00:00
plegall
50fa94a710 Create branch 2.4 from trunk r15931
git-svn-id: http://piwigo.org/svn/branches/2.4@15934 68402e56-0260-453c-a942-63ccdbb3a9ee
2012-06-22 08:50:29 +00:00
349 changed files with 11029 additions and 4171 deletions

View file

@ -31,6 +31,7 @@ define('IN_ADMIN', true);
include_once(PHPWG_ROOT_PATH.'include/common.inc.php');
include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
include_once(PHPWG_ROOT_PATH.'admin/include/functions_plugins.inc.php');
include_once(PHPWG_ROOT_PATH.'admin/include/add_core_tabs.inc.php');
trigger_action('loc_begin_admin');
@ -218,6 +219,24 @@ if ($conf['activate_comments'])
$template->assign('U_PENDING_COMMENTS', $link_start.'comments');
}
// any photo in the caddie?
$query = '
SELECT COUNT(*)
FROM '.CADDIE_TABLE.'
WHERE user_id = '.$user['id'].'
;';
list($nb_photos_in_caddie) = pwg_db_fetch_row(pwg_query($query));
if ($nb_photos_in_caddie > 0)
{
$template->assign(
array(
'NB_PHOTOS_IN_CADDIE' => $nb_photos_in_caddie,
'U_CADDIE' => $link_start.'batch_manager&cat=caddie',
)
);
}
// +-----------------------------------------------------------------------+
// | Plugin menu |
// +-----------------------------------------------------------------------+

View file

@ -62,10 +62,7 @@ if (isset($_GET['tab']))
}
$tabsheet = new tabsheet();
$tabsheet->add('properties', l10n('Properties'), $admin_album_base_url.'-properties');
$tabsheet->add('sort_order', l10n('Manage photo ranks'), $admin_album_base_url.'-sort_order');
$tabsheet->add('permissions', l10n('Permissions'), $admin_album_base_url.'-permissions');
$tabsheet->add('notification', l10n('Notification'), $admin_album_base_url.'-notification');
$tabsheet->set_id('album');
$tabsheet->select($page['tab']);
$tabsheet->assign();

View file

@ -50,7 +50,7 @@ check_input_parameter('selection', $_POST, true, PATTERN_ID);
if (isset($_POST['submitFilter']))
{
// echo '<pre>'; print_r($_POST); echo '</pre>';
unset($_REQUEST['start']); // new photo set must reset the page
$_SESSION['bulk_manager_filter'] = array();
if (isset($_POST['filter_prefilter_use']))
@ -91,8 +91,7 @@ if (isset($_POST['submitFilter']))
}
}
}
if (isset($_GET['cat']))
else if (isset($_GET['cat']))
{
if ('caddie' == $_GET['cat'])
{
@ -100,21 +99,29 @@ if (isset($_GET['cat']))
'prefilter' => 'caddie'
);
}
if ('recent' == $_GET['cat'])
else if ('recent' == $_GET['cat'])
{
$_SESSION['bulk_manager_filter'] = array(
'prefilter' => 'last import'
);
}
if (is_numeric($_GET['cat']))
else if (is_numeric($_GET['cat']))
{
$_SESSION['bulk_manager_filter'] = array(
'category' => $_GET['cat']
);
}
}
else if (isset($_GET['tag']))
{
if (is_numeric($_GET['tag']))
{
$_SESSION['bulk_manager_filter'] = array(
'tags' => array($_GET['tag']),
'tag_mode' => 'AND',
);
}
}
if (!isset($_SESSION['bulk_manager_filter']))
{
@ -335,37 +342,22 @@ $page['cat_elements_id'] = $current_set;
// category. For exampe, $page['start'] = 12 means we must show elements #12
// and $page['nb_images'] next elements
if (!isset($_GET['start'])
or !is_numeric($_GET['start'])
or $_GET['start'] < 0
or (isset($_GET['display']) and 'all' == $_GET['display']))
if (!isset($_REQUEST['start'])
or !is_numeric($_REQUEST['start'])
or $_REQUEST['start'] < 0
or (isset($_REQUEST['display']) and 'all' == $_REQUEST['display']))
{
$page['start'] = 0;
}
else
{
$page['start'] = $_GET['start'];
$page['start'] = $_REQUEST['start'];
}
// +-----------------------------------------------------------------------+
// | Tabs |
// +-----------------------------------------------------------------------+
$tabs = array(
array(
'code' => 'global',
'label' => l10n('global mode'),
),
array(
'code' => 'unit',
'label' => l10n('unit mode'),
),
);
$tab_codes = array_map(
create_function('$a', 'return $a["code"];'),
$tabs
);
$manager_link = get_root_url().'admin.php?page=batch_manager&amp;mode=';
if (isset($_GET['mode']))
{
@ -373,22 +365,13 @@ if (isset($_GET['mode']))
}
else
{
$page['tab'] = $tabs[0]['code'];
$page['tab'] = 'global';
}
if (in_array($page['tab'], $tab_codes))
{
$tabsheet = new tabsheet();
foreach ($tabs as $tab)
{
$tabsheet->add(
$tab['code'],
$tab['label'],
get_root_url().'admin.php?page='.$_GET['page'].'&amp;mode='.$tab['code']
);
}
$tabsheet->select($page['tab']);
$tabsheet->assign();
$tabsheet = new tabsheet();
$tabsheet->set_id('batch_manager');
$tabsheet->select($page['tab']);
$tabsheet->assign();
// +-----------------------------------------------------------------------+
// | tags |
@ -404,6 +387,5 @@ $template->assign('tags', get_taglist($query, false));
// | open specific mode |
// +-----------------------------------------------------------------------+
include(PHPWG_ROOT_PATH.'admin/batch_manager_'.$page['tab'].'.php');
}
include(PHPWG_ROOT_PATH.'admin/batch_manager_'.$page['tab'].'.php');
?>

View file

@ -472,8 +472,9 @@ $template->assign(
'filter' => $_SESSION['bulk_manager_filter'],
'selection' => $collection,
'all_elements' => $page['cat_elements_id'],
'START' => $page['start'],
'U_DISPLAY'=>$base_url.get_query_string_diff(array('display')),
'F_ACTION'=>$base_url.get_query_string_diff(array('cat')),
'F_ACTION'=>$base_url.get_query_string_diff(array('cat','start','tag')),
)
);
@ -732,7 +733,6 @@ if (count($page['cat_elements_id']) > 0)
$conf['order_by'] = ' ORDER BY file, id';
}
$query = '
SELECT id,path,representative_ext,file,filesize,level,name,width,height,rotation
FROM '.IMAGES_TABLE;
@ -766,31 +766,30 @@ SELECT id,path,representative_ext,file,filesize,level,name,width,height,rotation
;';
$result = pwg_query($query);
$thumb_params = ImageStdParams::get_by_type(IMG_THUMB);
// template thumbnail initialization
while ($row = pwg_db_fetch_assoc($result))
{
$nb_thumbs_page++;
$src_image = new SrcImage($row);
$title = render_element_name($row);
if ($title != get_name_from_file($row['file']))
$ttitle = render_element_name($row);
if ($ttitle != get_name_from_file($row['file']))
{
$title.= ' ('.$row['file'].')';
$ttitle.= ' ('.$row['file'].')';
}
$template->append(
'thumbnails',
'thumbnails', array_merge($row,
array(
'ID' => $row['id'],
'TN_SRC' => DerivativeImage::url(IMG_THUMB, $src_image),
'FILE' => $row['file'],
'TITLE' => $title,
'LEVEL' => $row['level'],
'thumb' => new DerivativeImage($thumb_params, $src_image),
'TITLE' => $ttitle,
'FILE_SRC' => DerivativeImage::url(IMG_LARGE, $src_image),
'U_EDIT' => get_root_url().'admin.php?page=photo-'.$row['id'],
)
);
));
}
$template->assign('thumb_params', $thumb_params);
}
$template->assign(

View file

@ -181,9 +181,6 @@ if (count($page['cat_elements_id']) > 0)
);
$template->assign(array('navbar' => $nav_bar));
// tags
$all_tags = get_all_tags();
$element_ids = array();
$is_category = false;
@ -237,7 +234,7 @@ SELECT id,path,representative_ext,name,date_creation,comment,author,level,file
{
array_push($element_ids, $row['id']);
$src = DerivativeImage::thumb_url($row);
$src_image = new SrcImage($row);
// creation date
if (!empty($row['date_creation']))
@ -269,8 +266,8 @@ SELECT
'elements',
array(
'ID' => $row['id'],
'TN_SRC' => $src,
'FILE_SRC' => $row['path'],
'TN_SRC' => DerivativeImage::url(IMG_THUMB, $src_image),
'FILE_SRC' => DerivativeImage::url(IMG_LARGE, $src_image),
'LEGEND' => $legend,
'U_EDIT' => get_root_url().'admin.php?page=photo-'.$row['id'],
'NAME' => !empty($row['name'])?$row['name']:'',

View file

@ -138,21 +138,8 @@ $template->assign(
// TabSheet
$tabsheet = new tabsheet();
// TabSheet initialization
$opt_link = $link_start.'cat_options&amp;section=';
$tabsheet->add('status', l10n('Public / Private'), $opt_link.'status');
$tabsheet->add('visible', l10n('Lock'), $opt_link.'visible');
if ($conf['activate_comments'])
{
$tabsheet->add('comments', l10n('Comments'), $opt_link.'comments');
}
if ($conf['allow_random_representative'])
{
$tabsheet->add('representative', l10n('Representative'), $opt_link.'representative');
}
// TabSheet selection
$tabsheet->set_id('cat_options');
$tabsheet->select($page['section']);
// Assign tabsheet to template
$tabsheet->assign();
// +-----------------------------------------------------------------------+

View file

@ -90,7 +90,7 @@ DELETE
//
// add permissions to groups
//
$grant_groups = array_diff($_POST['groups'], $groups_granted);
$grant_groups = $_POST['groups'];
if (count($grant_groups) > 0)
{
$cat_ids = get_uppercat_ids(array($page['cat']));
@ -183,7 +183,7 @@ DELETE
//
// add permissions to users
//
$grant_users = array_diff($_POST['users'], $users_granted);
$grant_users = $_POST['users'];
if (count($grant_users) > 0)
{
add_permission_on_category($page['cat'], $grant_users);

View file

@ -98,7 +98,7 @@ $template->assign(
include_once(PHPWG_ROOT_PATH.'admin/include/tabsheet.class.php');
$tabsheet = new tabsheet();
$tabsheet->add('', l10n('User comments validation'), '');
$tabsheet->set_id('comments');
$tabsheet->select('');
$tabsheet->assign();

View file

@ -106,7 +106,7 @@ $display_info_checkboxes = array(
'rating_score',
'privacy_level',
);
// image order management
$sort_fields = array(
'' => '',
@ -126,7 +126,7 @@ $sort_fields = array(
'id DESC' => l10n('Numeric identifier, 9 &rarr; 1'),
'rank ASC' => l10n('Manual sort order'),
);
$comments_order = array(
'ASC' => l10n('Show oldest comments first'),
'DESC' => l10n('Show latest comments first'),
@ -141,32 +141,46 @@ if (isset($_POST['submit']))
switch ($page['section'])
{
case 'main' :
{
{
if ( !isset($conf['order_by_custom']) and !isset($conf['order_by_inside_category_custom']) )
{
if ( !empty($_POST['order_by']) )
{
// limit to the number of available parameters
$order_by = $order_by_inside_category = array_slice($_POST['order_by'], 0, ceil(count($sort_fields)/2));
// there is no rank outside categories
unset($order_by[ array_search('rank ASC', $order_by) ]);
// must define a default order_by if user want to order by rank only
if ( count($order_by) == 0 )
{
foreach ($_POST['order_by'] as $i => $val)
{
$order_by = array('id ASC');
if (empty($val)) unset($_POST['order_by'][$i]);
}
if ( !count($_POST['order_by']) )
{
array_push($page['errors'], l10n('No order field selected'));
}
else
{
// limit to the number of available parameters
$order_by = $order_by_inside_category = array_slice($_POST['order_by'], 0, ceil(count($sort_fields)/2));
// there is no rank outside categories
if ( ($i = array_search('rank ASC', $order_by)) !== false)
{
unset($order_by[$i]);
}
// must define a default order_by if user want to order by rank only
if ( count($order_by) == 0 )
{
$order_by = array('id ASC');
}
$_POST['order_by'] = 'ORDER BY '.implode(', ', $order_by);
$_POST['order_by_inside_category'] = 'ORDER BY '.implode(', ', $order_by_inside_category);
}
$_POST['order_by'] = 'ORDER BY '.implode(', ', $order_by);
$_POST['order_by_inside_category'] = 'ORDER BY '.implode(', ', $order_by_inside_category);
}
else
{
array_push($page['errors'], l10n('No field selected'));
array_push($page['errors'], l10n('No order field selected'));
}
}
foreach( $main_checkboxes as $checkbox)
{
$_POST[$checkbox] = empty($_POST[$checkbox])?'false':'true';
@ -175,12 +189,12 @@ if (isset($_POST['submit']))
}
case 'watermark' :
{
include(PHPWG_ROOT_PATH.'admin/include/configuration_watermark_process.inc.php');
include(PHPWG_ROOT_PATH.'admin/include/configuration_watermark_process.inc.php');
break;
}
case 'sizes' :
{
include(PHPWG_ROOT_PATH.'admin/include/configuration_sizes_process.inc.php');
include(PHPWG_ROOT_PATH.'admin/include/configuration_sizes_process.inc.php');
break;
}
case 'comments' :
@ -272,16 +286,8 @@ $template->set_filename('config', 'configuration.tpl');
// TabSheet
$tabsheet = new tabsheet();
// TabSheet initialization
$tabsheet->add('main', l10n('Main'), $conf_link.'main');
$tabsheet->add('sizes', l10n('Photo sizes'), $conf_link.'sizes');
$tabsheet->add('watermark', l10n('Watermark'), $conf_link.'watermark');
$tabsheet->add('display', l10n('Display'), $conf_link.'display');
$tabsheet->add('comments', l10n('Comments'), $conf_link.'comments');
$tabsheet->add('default', l10n('Guest Settings'), $conf_link.'default');
// TabSheet selection
$tabsheet->set_id('configuration');
$tabsheet->select($page['section']);
// Assign tabsheet to template
$tabsheet->assign();
$action = get_root_url().'admin.php?page=configuration';
@ -296,8 +302,8 @@ $template->assign(
switch ($page['section'])
{
case 'main' :
{
{
function order_by_is_local()
{
@include(PHPWG_ROOT_PATH. 'local/config/config.inc.php');
@ -305,15 +311,15 @@ switch ($page['section'])
{
@include(PHPWG_ROOT_PATH.PWG_LOCAL_DIR. 'config/config.inc.php');
}
return isset($conf['order_by']) or isset($conf['order_by_inside_category']);
}
if (order_by_is_local())
{
array_push($page['warnings'], l10n('You have specified <i>$conf[\'order_by\']</i> in your local configuration file, this parameter in deprecated, please remove it or rename it into <i>$conf[\'order_by_custom\']</i> !'));
}
if ( isset($conf['order_by_custom']) or isset($conf['order_by_inside_category_custom']) )
{
$order_by = array('');
@ -326,7 +332,7 @@ switch ($page['section'])
$order_by = str_replace('ORDER BY ', null, $order_by);
$order_by = explode(', ', $order_by);
}
$template->assign(
'main',
array(
@ -434,7 +440,7 @@ switch ($page['section'])
'original_resize_quality' => $conf['original_resize_quality'],
)
);
foreach ($sizes_checkboxes as $checkbox)
{
$template->append(
@ -445,7 +451,7 @@ switch ($page['section'])
true
);
}
// derivatives = multiple size
$enabled = ImageStdParams::get_defined_type_map();
$disabled = @unserialize(@$conf['disabled_derivatives']);
@ -458,10 +464,10 @@ switch ($page['section'])
foreach(ImageStdParams::get_all_types() as $type)
{
$tpl_var = array();
$tpl_var['must_square'] = ($type==IMG_SQUARE ? true : false);
$tpl_var['must_enable'] = ($type==IMG_SQUARE || $type==IMG_THUMB)? true : false;
if ($params = @$enabled[$type])
{
$tpl_var['enabled'] = true;
@ -471,7 +477,7 @@ switch ($page['section'])
$tpl_var['enabled']=false;
$params=@$disabled[$type];
}
if ($params)
{
list($tpl_var['w'],$tpl_var['h']) = $params->sizing->ideal_size;
@ -489,6 +495,14 @@ switch ($page['section'])
}
$template->assign('derivatives', $tpl_vars);
$template->assign('resize_quality', ImageStdParams::$quality);
$tpl_vars = array();
$now = time();
foreach(ImageStdParams::$custom as $custom=>$time)
{
$tpl_vars[$custom] = ($now-$time<=24*3600) ? l10n('today') : time_since($time, 'day');
}
$template->assign('custom_derivatives', $tpl_vars);
}
break;
@ -500,9 +514,12 @@ switch ($page['section'])
{
$watermark_files[] = substr($file, strlen(PHPWG_ROOT_PATH));
}
foreach (glob(PHPWG_ROOT_PATH.PWG_LOCAL_DIR.'watermarks/*.png') as $file)
if ( ($glob=glob(PHPWG_ROOT_PATH.PWG_LOCAL_DIR.'watermarks/*.png')) !== false)
{
$watermark_files[] = substr($file, strlen(PHPWG_ROOT_PATH));
foreach ($glob as $file)
{
$watermark_files[] = substr($file, strlen(PHPWG_ROOT_PATH));
}
}
$watermark_filemap = array( '' => '---' );
foreach( $watermark_files as $file)
@ -537,12 +554,12 @@ switch ($page['section'])
{
$position = 'bottomright';
}
if ($wm->xrepeat != 0)
{
$position = 'custom';
}
$template->assign(
'watermark',
array(
@ -557,7 +574,7 @@ switch ($page['section'])
)
);
}
break;
}
}

View file

@ -239,21 +239,21 @@ if (pwg_db_num_rows($result) > 0)
// image order management
$sort_fields = array(
'' => '',
'file' => l10n('file name, A &rarr; Z'),
'file DESC' => l10n('file name, Z &rarr; A'),
'name' => l10n('photo title, A &rarr; Z'),
'name DESC' => l10n('photo title, Z &rarr; A'),
'date_creation DESC' => l10n('date created, new &rarr; old'),
'date_creation' => l10n('date created, old &rarr; new'),
'date_available DESC' => l10n('date posted, new &rarr; old'),
'date_available' => l10n('date posted, old &rarr; new'),
'rating_score DESC' => l10n('rating score, high &rarr; low'),
'rating_score' => l10n('rating score, low &rarr; high'),
'hit DESC' => l10n('visits, high &rarr; low'),
'hit' => l10n('visits, low &rarr; high'),
'id' => l10n('numeric identifier, 1 &rarr; 9'),
'id DESC' => l10n('numeric identifier, 9 &rarr; 1'),
'rank' => l10n('manual sort order'),
'file' => l10n('File name, A &rarr; Z'),
'file DESC' => l10n('File name, Z &rarr; A'),
'name' => l10n('Photo title, A &rarr; Z'),
'name DESC' => l10n('Photo title, Z &rarr; A'),
'date_creation DESC' => l10n('Date created, new &rarr; old'),
'date_creation' => l10n('Date created, old &rarr; new'),
'date_available DESC' => l10n('Date posted, new &rarr; old'),
'date_available' => l10n('Date posted, old &rarr; new'),
'rating_score DESC' => l10n('Rating score, high &rarr; low'),
'rating_score' => l10n('Rating score, low &rarr; high'),
'hit DESC' => l10n('Visits, high &rarr; low'),
'hit' => l10n('Visits, low &rarr; high'),
'id' => l10n('Numeric identifier, 1 &rarr; 9'),
'id DESC' => l10n('Numeric identifier, 9 &rarr; 1'),
'rank' => l10n('Manual sort order'),
);
$template->assign('image_order_options', $sort_fields);

View file

@ -29,53 +29,21 @@ include_once(PHPWG_ROOT_PATH.'admin/include/tabsheet.class.php');
// +-----------------------------------------------------------------------+
check_status(ACCESS_ADMINISTRATOR);
$link = get_root_url().'admin.php?page=help&section=';
$help_link = get_root_url().'admin.php?page=help&section=';
$selected = null;
$help_section_title = null;
$tabs = array();
$tabs[] = array(
'code' => 'add_photos',
'label' => l10n('Add Photos'),
);
$tabs[] = array(
'code' => 'permissions',
'label' => l10n('Permissions'),
);
$tabs[] = array(
'code' => 'groups',
'label' => l10n('Groups'),
);
$tabs[] = array(
'code' => 'virtual_links',
'label' => l10n('Virtual Links'),
);
$tabs[] = array(
'code' => 'misc',
'label' => l10n('Miscellaneous'),
);
if (!isset($_GET['section']))
{
$section = $tabs[0]['code'];
$selected = 'add_photos';
}
else
{
$section = $_GET['section'];
$selected = $_GET['section'];
}
$tabsheet = new tabsheet();
foreach ($tabs as $tab)
{
if ($tab['code'] == $section)
{
$selected_tab = $tab['code'];
$help_section_title = $tab['label'];
}
$tabsheet->add($tab['code'], $tab['label'], $link.$tab['code']);
}
$tabsheet->select($selected_tab);
$tabsheet->set_id('help');
$tabsheet->select($selected);
$tabsheet->assign();
$template->set_filenames(array('help' => 'help.tpl'));
@ -83,11 +51,11 @@ $template->set_filenames(array('help' => 'help.tpl'));
$template->assign(
array(
'HELP_CONTENT' => load_language(
'help/help_'.$selected_tab.'.html',
'help/help_'.$tabsheet->selected.'.html',
'',
array('return'=>true)
),
'HELP_SECTION_TITLE' => $help_section_title,
'HELP_SECTION_TITLE' => $tabsheet->sheets[ $tabsheet->selected ]['caption'],
)
);

View file

@ -303,7 +303,6 @@ SELECT
id,
IF(name IS NULL, file, name) AS label,
filesize,
high_filesize,
file,
path,
representative_ext
@ -313,7 +312,6 @@ SELECT
// $label_of_image = simple_hash_from_query($query, 'id', 'label');
$label_of_image = array();
$filesize_of_image = array();
$high_filesize_of_image = array();
$file_of_image = array();
$path_of_image = array();
$representative_ext_of_image = array();
@ -328,17 +326,10 @@ SELECT
$filesize_of_image[ $row['id'] ] = $row['filesize'];
}
if (isset($row['high_filesize']))
{
$high_filesize_of_image[ $row['id'] ] = $row['high_filesize'];
}
$file_of_image[ $row['id'] ] = $row['file'];
$path_of_image[ $row['id'] ] = $row['path'];
$representative_ext_of_image[ $row['id'] ] = $row['representative_ext'];
}
// echo '<pre>'; print_r($high_filesize_of_image); echo '</pre>';
}
if ($has_tags > 0)
@ -360,29 +351,11 @@ SELECT
foreach ($history_lines as $line)
{
// FIXME when we watch the representative of a non image element, it is
// the not the representative filesize that is counted (as it is
// unknown) but the non image element filesize. Proposed solution: add
// #images.representative_filesize and add 'representative' in the
// choices of #history.image_type.
if (isset($line['image_type']))
if (isset($line['image_type']) and $line['image_type'] == 'high')
{
if ($line['image_type'] == 'high')
if (isset($filesize_of_image[$line['image_id']]))
{
if (isset($high_filesize_of_image[$line['image_id']]))
{
$summary['total_filesize']+=
$high_filesize_of_image[$line['image_id']];
}
}
else
{
if (isset($filesize_of_image[$line['image_id']]))
{
$summary['total_filesize']+=
$filesize_of_image[$line['image_id']];
}
$summary['total_filesize'] += $filesize_of_image[$line['image_id']];
}
}
@ -548,7 +521,7 @@ SELECT
'%d line filtered', '%d lines filtered',
$page['nb_lines']
),
'FILESIZE' => $summary['total_filesize'].' KB',
'FILESIZE' => $summary['total_filesize'] != 0 ? ceil($summary['total_filesize']/1024).' MB' : '',
'USERS' => l10n_dec(
'%d user', '%d users',
$summary['nb_members'] + $summary['nb_guests']

View file

@ -0,0 +1,147 @@
<?php
// +-----------------------------------------------------------------------+
// | Piwigo - a PHP based photo gallery |
// +-----------------------------------------------------------------------+
// | Copyright(C) 2008-2012 Piwigo Team http://piwigo.org |
// | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net |
// | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick |
// +-----------------------------------------------------------------------+
// | This program is free software; you can redistribute it and/or modify |
// | it under the terms of the GNU General Public License as published by |
// | the Free Software Foundation |
// | |
// | This program is distributed in the hope that it will be useful, but |
// | WITHOUT ANY WARRANTY; without even the implied warranty of |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
// | General Public License for more details. |
// | |
// | You should have received a copy of the GNU General Public License |
// | along with this program; if not, write to the Free Software |
// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
// | USA. |
// +-----------------------------------------------------------------------+
add_event_handler('tabsheet_before_select', 'add_core_tabs', 0, 2);
function add_core_tabs($sheets, $tab_id)
{
switch($tab_id)
{
case 'album':
global $admin_album_base_url;
$sheets['properties'] = array('caption' => l10n('Properties'), 'url' => $admin_album_base_url.'-properties');
$sheets['sort_order'] = array('caption' => l10n('Manage photo ranks'), 'url' => $admin_album_base_url.'-sort_order');
$sheets['permissions'] = array('caption' => l10n('Permissions'), 'url' => $admin_album_base_url.'-permissions');
$sheets['notification'] = array('caption' => l10n('Notification'), 'url' => $admin_album_base_url.'-notification');
break;
case 'albums':
global $my_base_url;
$sheets['list'] = array('caption' => l10n('List'), 'url' => $my_base_url.'cat_list');
$sheets['move'] = array('caption' => l10n('Move'), 'url' => $my_base_url.'cat_move');
$sheets['permalinks'] = array('caption' => l10n('Permalinks'), 'url' => $my_base_url.'permalinks');
break;
case 'batch_manager':
global $manager_link;
$sheets['global'] = array('caption' => l10n('global mode'), 'url' => $manager_link.'global');
$sheets['unit'] = array('caption' => l10n('unit mode'), 'url' => $manager_link.'unit');
break;
case 'cat_options':
global $link_start, $conf;
$sheets['status'] = array('caption' => l10n('Public / Private'), 'url' => $link_start.'cat_options&amp;section=status');
$sheets['visible'] = array('caption' => l10n('Lock'), 'url' => $link_start.'cat_options&amp;section=visible');
if ($conf['activate_comments'])
$sheets['comments'] = array('caption' => l10n('Comments'), 'url' => $link_start.'cat_options&amp;section=comments');
if ($conf['allow_random_representative'])
$sheets['representative'] = array('caption' => l10n('Representative'), 'url' => $link_start.'cat_options&amp;section=representative');
break;
case 'comments':
$sheets[''] = array('caption' => l10n('User comments validation'), 'url' => '');
break;
case 'configuration':
global $conf_link;
$sheets['main'] = array('caption' => l10n('Main'), 'url' => $conf_link.'main');
$sheets['sizes'] = array('caption' => l10n('Photo sizes'), 'url' => $conf_link.'sizes');
$sheets['watermark'] = array('caption' => l10n('Watermark'), 'url' => $conf_link.'watermark');
$sheets['display'] = array('caption' => l10n('Display'), 'url' => $conf_link.'display');
$sheets['comments'] = array('caption' => l10n('Comments'), 'url' => $conf_link.'comments');
$sheets['default'] = array('caption' => l10n('Guest Settings'), 'url' => $conf_link.'default');
break;
case 'help':
global $help_link;
$sheets['add_photos'] = array('caption' => l10n('Add Photos'), 'url' => $help_link.'add_photos');
$sheets['permissions'] = array('caption' => l10n('Permissions'), 'url' => $help_link.'permissions');
$sheets['groups'] = array('caption' => l10n('Groups'), 'url' => $help_link.'groups');
$sheets['virtual_links'] = array('caption' => l10n('Virtual Links'), 'url' => $help_link.'virtual_links');
$sheets['misc'] = array('caption' => l10n('Miscellaneous'), 'url' => $help_link.'misc');
break;
case 'history':
global $link_start;
$sheets['stats'] = array('caption' => l10n('Statistics'), 'url' => $link_start.'stats');
$sheets['history'] = array('caption' => l10n('Search'), 'url' => $link_start.'history');
break;
case 'languages':
global $my_base_url;
$sheets['installed'] = array('caption' => l10n('Installed Languages'), 'url' => $my_base_url.'&amp;tab=installed');
$sheets['update'] = array('caption' => l10n('Check for updates'), 'url' => $my_base_url.'&amp;tab=update');
$sheets['new'] = array('caption' => l10n('Add New Language'), 'url' => $my_base_url.'&amp;tab=new');
break;
case 'nbm':
global $base_url;
$sheets['param'] = array('caption' => l10n('Parameter'), 'url' => $base_url.'?page=notification_by_mail&amp;mode=param');
$sheets['subscribe'] = array('caption' => l10n('Subscribe'), 'url' => $base_url.'?page=notification_by_mail&amp;mode=subscribe');
$sheets['send'] = array('caption' => l10n('Send'), 'url' => $base_url.'?page=notification_by_mail&amp;mode=send');
break;
case 'photo':
global $admin_photo_base_url;
$sheets['properties'] = array('caption' => l10n('Properties'), 'url' => $admin_photo_base_url.'-properties');
$sheets['coi'] = array('caption' => l10n('Center of interest'), 'url' => $admin_photo_base_url.'-coi');
break;
case 'photos_add':
global $conf;
$sheets['direct'] = array('caption' => l10n('Web Form'), 'url' => PHOTOS_ADD_BASE_URL.'&amp;section=direct');
$sheets['applications'] = array('caption' => l10n('Applications'), 'url' => PHOTOS_ADD_BASE_URL.'&amp;section=applications');
if ($conf['enable_synchronization'])
$sheets['ftp'] = array('caption' => l10n('FTP + Synchronization'), 'url' => PHOTOS_ADD_BASE_URL.'&amp;section=ftp');
break;
case 'plugins':
global $my_base_url;
$sheets['installed'] = array('caption' => l10n('Plugin list'), 'url' => $my_base_url.'&amp;tab=installed');
$sheets['update'] = array('caption' => l10n('Check for updates'), 'url' => $my_base_url.'&amp;tab=update');
$sheets['new'] = array('caption' => l10n('Other plugins'), 'url' => $my_base_url.'&amp;tab=new');
break;
case 'rating':
$sheets['rating'] = array('caption' => l10n('Photos'), 'url' => get_root_url().'admin.php?page=rating');
$sheets['rating_user'] = array('caption' => l10n('Users'), 'url' => get_root_url().'admin.php?page=rating_user');
break;
case 'themes':
global $my_base_url;
$sheets['installed'] = array('caption' => l10n('Installed Themes'), 'url' => $my_base_url.'&amp;tab=installed');
$sheets['update'] = array('caption' => l10n('Check for updates'), 'url' => $my_base_url.'&amp;tab=update');
$sheets['new'] = array('caption' => l10n('Add New Theme'), 'url' => $my_base_url.'&amp;tab=new');
break;
case 'updates':
global $my_base_url;
$sheets['pwg'] = array('caption' => l10n('Piwigo Update'), 'url' => $my_base_url);
$sheets['ext'] = array('caption' => l10n('Extensions Update'), 'url' => $my_base_url.'&amp;tab=ext');
break;
}
return $sheets;
}
?>

View file

@ -26,9 +26,7 @@ include_once(PHPWG_ROOT_PATH.'admin/include/tabsheet.class.php');
$my_base_url = get_root_url().'admin.php?page=';
$tabsheet = new tabsheet();
$tabsheet->add('list', l10n('List'), $my_base_url.'cat_list');
$tabsheet->add('move', l10n('Move'), $my_base_url.'cat_move');
$tabsheet->add('permalinks', l10n('Permalinks'), $my_base_url.'permalinks');
$tabsheet->set_id('albums');
$tabsheet->select($page['tab']);
$tabsheet->assign();

View file

@ -228,6 +228,15 @@ if (count($errors) == 0)
}
}
foreach( array_keys(ImageStdParams::$custom) as $custom)
{
if (isset($_POST['delete_custom_derivative_'.$custom]))
{
$changed_types[] = $custom;
unset(ImageStdParams::$custom[$custom]);
}
}
ImageStdParams::set_and_save($enabled_by);
if (count($disabled) == 0)
{

View file

@ -43,16 +43,24 @@ if (isset($_FILES['watermarkImage']) and !empty($_FILES['watermarkImage']['tmp_n
else
{
$upload_dir = PHPWG_ROOT_PATH.PWG_LOCAL_DIR.'watermarks';
if (mkgetdir($upload_dir, MKGETDIR_DEFAULT&~MKGETDIR_DIE_ON_ERROR))
{
$new_name = get_filename_wo_extension($_FILES['watermarkImage']['name']).'.png';
$file_path = $upload_dir.'/'.$new_name;
include_once(PHPWG_ROOT_PATH.'admin/include/functions_upload.inc.php');
prepare_directory($upload_dir);
$new_name = get_filename_wo_extension($_FILES['watermarkImage']['name']).'.png';
$file_path = $upload_dir.'/'.$new_name;
move_uploaded_file($_FILES['watermarkImage']['tmp_name'], $file_path);
$pwatermark['file'] = substr($file_path, strlen(PHPWG_ROOT_PATH));
if (move_uploaded_file($_FILES['watermarkImage']['tmp_name'], $file_path))
{
$pwatermark['file'] = substr($file_path, strlen(PHPWG_ROOT_PATH));
}
else
{
$page['errors'][] = $errors['watermarkImage'] = "$file_path " .l10n('no write access');
}
}
else
{
$page['errors'][] = $errors['watermarkImage'] = sprintf( l10n('Add write access to the "%s" directory'), $upload_dir);
}
}
}
@ -134,14 +142,25 @@ if (count($errors) == 0)
// do we have to regenerate the derivatives (and which types)?
$changed_types = array();
foreach (ImageStdParams::get_defined_type_map() as $type => $params)
{
$old_use_watermark = $params->use_watermark;
ImageStdParams::apply_global($params);
if ($params->use_watermark != $old_use_watermark
or $params->use_watermark and $watermark_changed)
$changed = $params->use_watermark != $old_use_watermark;
if (!$changed and $params->use_watermark)
{
$changed = $watermark_changed;
}
if (!$changed and $params->use_watermark)
{
// if thresholds change and before/after the threshold is lower than the corresponding derivative side -> some derivatives might switch the watermark
$changed |= $watermark->min_size[0]!=$old_watermark->min_size[0] and ($watermark->min_size[0]<$params->max_width() or $old_watermark->min_size[0]<$params->max_width());
$changed |= $watermark->min_size[1]!=$old_watermark->min_size[1] and ($watermark->min_size[1]<$params->max_height() or $old_watermark->min_size[1]<$params->max_height());
}
if ($changed)
{
$params->last_mod_time = time();
$changed_types[] = $type;

View file

@ -219,7 +219,7 @@ SELECT
if ($ok)
{
delete_element_derivatives($row);
$new_ids[] += $row['id'];
$new_ids[] = $row['id'];
}
else
{
@ -1196,7 +1196,7 @@ DELETE FROM '.$table.'
* @param int parent category id
* @return array with ('info' and 'id') or ('error') key
*/
function create_virtual_category($category_name, $parent_id=null)
function create_virtual_category($category_name, $parent_id=null, $options=array())
{
global $conf, $user;
@ -1206,15 +1206,53 @@ function create_virtual_category($category_name, $parent_id=null)
return array('error' => l10n('The name of an album must not be empty'));
}
$parent_id = !empty($parent_id) ? $parent_id : 'NULL';
$insert = array(
'name' => $category_name,
'rank' => 0,
'commentable' => boolean_to_string($conf['newcat_default_commentable']),
'global_rank' => 0,
);
if ($parent_id != 'NULL')
// is the album commentable?
if (isset($options['commentable']) and is_bool($options['commentable']))
{
$insert['commentable'] = $options['commentable'];
}
else
{
$insert['commentable'] = $conf['newcat_default_commentable'];
}
$insert['commentable'] = boolean_to_string($insert['commentable']);
// is the album temporarily locked? (only visible by administrators,
// whatever permissions) (may be overwritten if parent album is not
// visible)
if (isset($options['visible']) and is_bool($options['visible']))
{
$insert['visible'] = $options['visible'];
}
else
{
$insert['visible'] = $conf['newcat_default_visible'];
}
$insert['visible'] = boolean_to_string($insert['visible']);
// is the album private? (may be overwritten if parent album is private)
if (isset($options['status']) and 'private' == $options['status'])
{
$insert['status'] = 'private';
}
else
{
$insert['status'] = $conf['newcat_default_status'];
}
// any description for this album?
if (isset($options['comment']))
{
$insert['comment'] = strip_tags($options['comment']);
}
if (!empty($parent_id) and is_numeric($parent_id))
{
$query = '
SELECT id, uppercats, global_rank, visible, status
@ -1233,10 +1271,6 @@ SELECT id, uppercats, global_rank, visible, status
{
$insert['visible'] = 'false';
}
else
{
$insert['visible'] = boolean_to_string($conf['newcat_default_visible']);
}
// at creation, must a category be public or private ? Warning : if the
// parent category is private, the category is automatically create
@ -1245,40 +1279,23 @@ SELECT id, uppercats, global_rank, visible, status
{
$insert['status'] = 'private';
}
else
{
$insert['status'] = $conf['newcat_default_status'];
}
$uppercats_prefix = $parent['uppercats'].',';
}
else
{
$insert['visible'] = boolean_to_string($conf['newcat_default_visible']);
$insert['status'] = $conf['newcat_default_status'];
$insert['global_rank'] = $insert['rank'];
$uppercats_prefix = '';
}
// we have then to add the virtual category
mass_inserts(
CATEGORIES_TABLE,
array(
'site_id', 'name', 'id_uppercat', 'rank', 'commentable',
'visible', 'status', 'global_rank',
),
array($insert)
);
single_insert(CATEGORIES_TABLE, $insert);
$inserted_id = pwg_db_insert_id(CATEGORIES_TABLE);
$query = '
UPDATE
'.CATEGORIES_TABLE.'
SET uppercats = \''.
(isset($parent) ? $parent{'uppercats'}.',' : '').
$inserted_id.
'\'
WHERE id = '.$inserted_id.'
;';
pwg_query($query);
single_update(
CATEGORIES_TABLE,
array('uppercats' => $uppercats_prefix.$inserted_id),
array('id' => $inserted_id)
);
update_global_rank();
@ -1303,32 +1320,7 @@ UPDATE
*/
function set_tags($tags, $image_id)
{
$query = '
DELETE
FROM '.IMAGE_TAG_TABLE.'
WHERE image_id = '.$image_id.'
;';
pwg_query($query);
if (count($tags) > 0)
{
$inserts = array();
foreach ($tags as $tag_id)
{
array_push(
$inserts,
array(
'tag_id' => $tag_id,
'image_id' => $image_id
)
);
}
mass_inserts(
IMAGE_TAG_TABLE,
array_keys($inserts[0]),
$inserts
);
}
set_tags_of( array($image_id=>$tags) );
}
/**
@ -1358,14 +1350,11 @@ DELETE
$inserts = array();
foreach ($images as $image_id)
{
foreach ($tags as $tag_id)
foreach ( array_unique($tags) as $tag_id)
{
array_push(
$inserts,
array(
$inserts[] = array(
'image_id' => $image_id,
'tag_id' => $tag_id,
)
);
}
}
@ -1416,34 +1405,48 @@ function tag_id_from_tag_name($tag_name)
return $page['tag_id_from_tag_name_cache'][$tag_name];
}
// does the tag already exists?
// search existing by exact name
$query = '
SELECT id
FROM '.TAGS_TABLE.'
WHERE name = \''.$tag_name.'\'
;';
$existing_tags = array_from_query($query, 'id');
if (count($existing_tags) == 0)
if (count($existing_tags = array_from_query($query, 'id')) == 0)
{
mass_inserts(
TAGS_TABLE,
array('name', 'url_name'),
array(
array(
'name' => $tag_name,
'url_name' => trigger_event('render_tag_url', $tag_name),
)
)
);
$page['tag_id_from_tag_name_cache'][$tag_name] = pwg_db_insert_id(TAGS_TABLE);
}
else
{
$page['tag_id_from_tag_name_cache'][$tag_name] = $existing_tags[0];
// search existing by case insensitive name
$query = '
SELECT id
FROM '.TAGS_TABLE.'
WHERE CONVERT(name, CHAR) = \''.$tag_name.'\'
;';
if (count($existing_tags = array_from_query($query, 'id')) == 0)
{
$url_name = trigger_event('render_tag_url', $tag_name);
// search existing by url name
$query = '
SELECT id
FROM '.TAGS_TABLE.'
WHERE url_name = \''.$url_name.'\'
;';
if (count($existing_tags = array_from_query($query, 'id')) == 0)
{
mass_inserts(
TAGS_TABLE,
array('name', 'url_name'),
array(
array(
'name' => $tag_name,
'url_name' => $url_name,
)
)
);
$page['tag_id_from_tag_name_cache'][$tag_name] = pwg_db_insert_id(TAGS_TABLE);
return $page['tag_id_from_tag_name_cache'][$tag_name];
}
}
}
$page['tag_id_from_tag_name_cache'][$tag_name] = $existing_tags[0];
return $page['tag_id_from_tag_name_cache'][$tag_name];
}
@ -1462,30 +1465,30 @@ DELETE
foreach ($tags_of as $image_id => $tag_ids)
{
foreach ($tag_ids as $tag_id)
foreach (array_unique($tag_ids) as $tag_id)
{
array_push(
$inserts,
array(
$inserts[] = array(
'image_id' => $image_id,
'tag_id' => $tag_id,
)
);
}
}
mass_inserts(
IMAGE_TAG_TABLE,
array_keys($inserts[0]),
$inserts
);
if (count($inserts))
{
mass_inserts(
IMAGE_TAG_TABLE,
array_keys($inserts[0]),
$inserts
);
}
}
}
/**
* Associate a list of images to a list of categories.
*
* The function will not duplicate links
* The function will not duplicate links and will preserve ranks
*
* @param array images
* @param array categories
@ -1498,43 +1501,90 @@ function associate_images_to_categories($images, $categories)
{
return false;
}
// get existing associations
$query = '
DELETE
SELECT
image_id,
category_id
FROM '.IMAGE_CATEGORY_TABLE.'
WHERE image_id IN ('.implode(',', $images).')
AND category_id IN ('.implode(',', $categories).')
;';
pwg_query($query);
$result = pwg_query($query);
$existing = array();
while ($row = pwg_db_fetch_assoc($result))
{
$existing[ $row['category_id'] ][] = $row['image_id'];
}
// get max rank of each categories
$query = '
SELECT
category_id,
MAX(rank) AS max_rank
FROM '.IMAGE_CATEGORY_TABLE.'
WHERE rank IS NOT NULL
AND category_id IN ('.implode(',', $categories).')
GROUP BY category_id
;';
$current_rank_of = simple_hash_from_query(
$query,
'category_id',
'max_rank'
);
// associate only not already associated images
$inserts = array();
foreach ($categories as $category_id)
{
if (!isset($current_rank_of[$category_id]))
{
$current_rank_of[$category_id] = 0;
}
if (!isset($existing[$category_id]))
{
$existing[$category_id] = array();
}
foreach ($images as $image_id)
{
array_push(
$inserts,
array(
'image_id' => $image_id,
'category_id' => $category_id,
)
);
if (!in_array($image_id, $existing[$category_id]))
{
$rank = ++$current_rank_of[$category_id];
array_push(
$inserts,
array(
'image_id' => $image_id,
'category_id' => $category_id,
'rank' => $rank,
)
);
}
}
}
mass_inserts(
IMAGE_CATEGORY_TABLE,
array_keys($inserts[0]),
$inserts
);
if (count($inserts))
{
mass_inserts(
IMAGE_CATEGORY_TABLE,
array_keys($inserts[0]),
$inserts
);
update_category($categories);
update_category($categories);
}
}
/**
* Disssociate images from all categories except their storage category and
* Dissociate images from all old categories except their storage category and
* associate to new categories.
*
* This function will preserve ranks
*
* @param array images
* @param array categories
* @return void
@ -1545,17 +1595,27 @@ function move_images_to_categories($images, $categories)
{
return false;
}
// let's first break links with all albums but their "storage album"
// let's first break links with all old albums but their "storage album"
$query = '
DELETE '.IMAGE_CATEGORY_TABLE.'.*
FROM '.IMAGE_CATEGORY_TABLE.'
JOIN '.IMAGES_TABLE.' ON image_id=id
WHERE id IN ('.implode(',', $images).')
';
if (is_array($categories) and count($categories) > 0)
{
$query.= '
AND category_id NOT IN ('.implode(',', $categories).')
';
}
$query.= '
AND (storage_category_id IS NULL OR storage_category_id != category_id)
;';
pwg_query($query);
if (is_array($categories) and count($categories) > 0)
{
associate_images_to_categories($images, $categories);
@ -2071,38 +2131,46 @@ function get_taglist($query, $only_user_language=true)
$result = pwg_query($query);
$taglist = array();
$altlist = array();
while ($row = pwg_db_fetch_assoc($result))
{
if (!$only_user_language and preg_match_all('#\[lang=(.*?)\](.*?)\[/lang\]#is', $row['name'], $matches))
$raw_name = $row['name'];
$name = trigger_event('render_tag_name', $raw_name);
$taglist[] = array(
'name' => $name,
'id' => '~~'.$row['id'].'~~',
);
if (!$only_user_language)
{
foreach ($matches[2] as $tag_name)
$alt_names = trigger_event('get_tag_alt_names', array(), $raw_name);
// TEMP 2.4
if (count($alt_names)==0 and preg_match_all('#\[lang=(.*?)\](.*?)\[/lang\]#is', $row['name'], $matches))
{
array_push(
$taglist,
array(
'name' => trigger_event('render_tag_name', $tag_name),
'id' => '~~'.$row['id'].'~~',
)
);
foreach ($matches[2] as $alt)
{
$alt_names[] = $alt;
}
}
$row['name'] = preg_replace('#\[lang=(.*?)\](.*?)\[/lang\]#is', null, $row['name']);
}
if (strlen($row['name']) > 0)
{
array_push(
$taglist,
array(
'name' => trigger_event('render_tag_name', $row['name']),
'id' => '~~'.$row['id'].'~~',
)
);
foreach( array_diff( array_unique($alt_names), array($name) ) as $alt)
{
$altlist[] = array(
'name' => $alt,
'id' => '~~'.$row['id'].'~~',
);
}
}
}
$cmp = create_function('$a,$b', 'return strcasecmp($a["name"], $b["name"]);');
usort($taglist, $cmp);
usort($taglist, 'tag_alpha_compare');
if (count($altlist))
{
usort($altlist, 'tag_alpha_compare');
$taglist = array_merge($taglist, $altlist);
}
return $taglist;
}
@ -2121,7 +2189,7 @@ function get_tag_ids($raw_tags, $allow_create=true)
{
if (preg_match('/^~~(\d+)~~$/', $raw_tag, $matches))
{
array_push($tag_ids, $matches[1]);
$tag_ids[] = $matches[1];
}
elseif ($allow_create)
{
@ -2252,8 +2320,7 @@ SELECT
/** delete all derivative files for one or several types */
function clear_derivative_cache($types='all')
{
$pattern='#.*-';
if ($types == 'all')
if ($types === 'all')
{
$types = ImageStdParams::get_all_types();
$types[] = IMG_CUSTOM;
@ -2263,21 +2330,35 @@ function clear_derivative_cache($types='all')
$types = array($types);
}
for ($i=0; $i<count($types); $i++)
{
$type = $types[$i];
if ($type == IMG_CUSTOM)
{
$type = derivative_to_url($type).'[a-zA-Z0-9]+';
}
elseif (in_array($type, ImageStdParams::get_all_types()))
{
$type = derivative_to_url($type);
}
else
{//assume a custom type
$type = derivative_to_url(IMG_CUSTOM).'_'.$type;
}
$types[$i] = $type;
}
$pattern='#.*-';
if (count($types)>1)
{
$type_urls = array();
foreach($types as $dtype)
{
$type_urls[] = derivative_to_url($dtype);
}
$pattern .= '(' . implode('|',$type_urls) . ')';
$pattern .= '(' . implode('|',$types) . ')';
}
else
{
$pattern .= derivative_to_url($types[0]);
$pattern .= $types[0];
}
$pattern.='\.[a-zA-Z0-9]{3,4}$#';
$pattern.='(_[a-zA-Z0-9]+)*\.[a-zA-Z0-9]{3,4}$#';
if ($contents = @opendir(PHPWG_ROOT_PATH.PWG_DERIVATIVE_DIR))
{
while (($node = readdir($contents)) !== false)
@ -2360,9 +2441,12 @@ function delete_element_derivatives($infos, $type='all')
$pattern = '-'.derivative_to_url($type).'*';
}
$path = substr_replace($path, $pattern, $dot, 0);
foreach( glob(PHPWG_ROOT_PATH.PWG_DERIVATIVE_DIR.$path) as $file)
if ( ($glob=glob(PHPWG_ROOT_PATH.PWG_DERIVATIVE_DIR.$path)) !== false)
{
@unlink($file);
foreach( $glob as $file)
{
@unlink($file);
}
}
}
?>

View file

@ -29,12 +29,8 @@ function history_tabsheet()
// TabSheet
$tabsheet = new tabsheet();
// TabSheet initialization
$tabsheet->add('stats', l10n('Statistics'), $link_start.'stats');
$tabsheet->add('history', l10n('Search'), $link_start.'history');
// TabSheet selection
$tabsheet->set_id('history');
$tabsheet->select($page['page']);
// Assign tabsheet to template
$tabsheet->assign();
}

View file

@ -246,6 +246,7 @@ SELECT
{
rename($source_filepath, $file_path);
}
@chmod($file_path, 0644);
if (pwg_image::get_library() != 'gd')
{

View file

@ -58,6 +58,7 @@ class pwg_image
var $image;
var $library = '';
var $source_filepath = '';
static $ext_imagick_version = '';
function __construct($source_filepath, $library=null)
{
@ -132,7 +133,7 @@ class pwg_image
$this->image->resize($resize_dimensions['width'], $resize_dimensions['height']);
if (isset($rotation))
if (!empty($rotation))
{
$this->image->rotate($rotation);
}
@ -339,6 +340,10 @@ class pwg_image
@exec($conf['ext_imagick_dir'].'convert -version', $returnarray);
if (is_array($returnarray) and !empty($returnarray[0]) and preg_match('/ImageMagick/i', $returnarray[0]))
{
if (preg_match('/Version: ImageMagick (\d+\.\d+\.\d+-?\d*)/', $returnarray[0], $match))
{
self::$ext_imagick_version = $match[1];
}
return true;
}
return false;
@ -446,7 +451,7 @@ class image_imagick implements imageInterface
function resize($width, $height)
{
$this->image->setInterlaceScheme(Imagick::INTERLACE_LINE);
// TODO need to explain this condition
if ($this->get_width()%2 == 0
&& $this->get_height()%2 == 0
@ -554,6 +559,11 @@ class image_ext_imagick implements imageInterface
function rotate($rotation)
{
if (empty($rotation))
{
return true;
}
if ($rotation==90 || $rotation==270)
{
$tmp = $this->width;
@ -607,7 +617,16 @@ class image_ext_imagick implements imageInterface
{
$this->add_command('interlace', 'line'); // progressive rendering
// use 4:2:2 chroma subsampling (reduce file size by 20-30% with "almost" no human perception)
$this->add_command('sampling-factor', '4:2:2' );
//
// option deactivated for Piwigo 2.4.1, it doesn't work fo old versions
// of ImageMagick, see bug:2672. To reactivate once we have a better way
// to detect IM version and when we know which version supports this
// option
//
if (version_compare(pwg_image::$ext_imagick_version, '6.6') > 0)
{
$this->add_command('sampling-factor', '4:2:2' );
}
$exec = $this->imagickdir.'convert';
$exec .= ' "'.realpath($this->source_filepath).'"';
@ -622,13 +641,15 @@ class image_ext_imagick implements imageInterface
}
$dest = pathinfo($destination_filepath);
$exec .= ' "'.realpath($dest['dirname']).'/'.$dest['basename'].'"';
$exec .= ' "'.realpath($dest['dirname']).'/'.$dest['basename'].'" 2>&1';
@exec($exec, $returnarray);
ilog($exec);
if (function_exists('ilog')) ilog($exec);
if (is_array($returnarray) && (count($returnarray)>0) )
{
ilog('ERROR', $returnarray);
if (function_exists('ilog')) ilog('ERROR', $returnarray);
foreach($returnarray as $line)
trigger_error($line, E_USER_WARNING);
}
return is_array($returnarray);
}

View file

@ -234,7 +234,7 @@ UPDATE '.USER_INFOS_TABLE.'
{
$version = $pem_versions[0]['name'];
}
$branch = substr($version, 0, strrpos($version, '.'));
$branch = get_branch_from_version($version);
foreach ($pem_versions as $pem_version)
{
if (strpos($pem_version['name'], $branch) === 0)
@ -319,7 +319,7 @@ UPDATE '.USER_INFOS_TABLE.'
if ($handle = @fopen($archive, 'wb') and fetchRemote($url, $handle, $get_data))
{
fclose($handle);
include(PHPWG_ROOT_PATH.'admin/include/pclzip.lib.php');
include_once(PHPWG_ROOT_PATH.'admin/include/pclzip.lib.php');
$zip = new PclZip($archive);
if ($list = $zip->listContent())
{

View file

@ -82,7 +82,7 @@ if (isset($_GET['processed']))
);
define('PCLZIP_TEMPORARY_DIR', $upload_dir.'/');
include(PHPWG_ROOT_PATH.'admin/include/pclzip.lib.php');
include_once(PHPWG_ROOT_PATH.'admin/include/pclzip.lib.php');
$zip = new PclZip($archive_path);
if ($list = $zip->listContent())
{

View file

@ -275,7 +275,7 @@ DELETE FROM ' . PLUGINS_TABLE . ' WHERE id=\'' . $plugin_id . '\'';
{
$version = $pem_versions[0]['name'];
}
$branch = substr($version, 0, strrpos($version, '.'));
$branch = get_branch_from_version($version);
foreach ($pem_versions as $pem_version)
{
if (strpos($pem_version['name'], $branch) === 0)
@ -460,7 +460,7 @@ DELETE FROM ' . PLUGINS_TABLE . ' WHERE id=\'' . $plugin_id . '\'';
if ($handle = @fopen($archive, 'wb') and fetchRemote($url, $handle, $get_data))
{
fclose($handle);
include(PHPWG_ROOT_PATH.'admin/include/pclzip.lib.php');
include_once(PHPWG_ROOT_PATH.'admin/include/pclzip.lib.php');
$zip = new PclZip($archive);
if ($list = $zip->listContent())
{

View file

@ -24,6 +24,7 @@
class tabsheet
{
var $sheets;
var $uniqid;
var $name;
var $titlename;
var $selected;
@ -35,10 +36,16 @@ class tabsheet
function tabsheet($name = 'TABSHEET', $titlename = 'TABSHEET_TITLE')
{
$this->sheets = array();
$this->uniqid = null;
$this->name = $name;
$this->titlename = $titlename;
$this->selected = "";
}
function set_id($id)
{
$this->uniqid = $id;
}
/*
add a tab
@ -81,6 +88,12 @@ class tabsheet
*/
function select($name)
{
$this->sheets = trigger_event('tabsheet_before_select', $this->sheets, $this->uniqid);
if (!array_key_exists($name, $this->sheets))
{
$keys = array_keys($this->sheets);
$name = $keys[0];
}
$this->selected = $name;
}

View file

@ -471,7 +471,7 @@ SELECT
{
$version = $pem_versions[0]['name'];
}
$branch = substr($version, 0, strrpos($version, '.'));
$branch = get_branch_from_version($version);
foreach ($pem_versions as $pem_version)
{
if (strpos($pem_version['name'], $branch) === 0)
@ -577,7 +577,7 @@ SELECT
if ($handle = @fopen($archive, 'wb') and fetchRemote($url, $handle, $get_data))
{
fclose($handle);
include(PHPWG_ROOT_PATH.'admin/include/pclzip.lib.php');
include_once(PHPWG_ROOT_PATH.'admin/include/pclzip.lib.php');
$zip = new PclZip($archive);
if ($list = $zip->listContent())
{

View file

@ -63,7 +63,7 @@ class updates
{
$version = $pem_versions[0]['name'];
}
$branch = substr($version, 0, strrpos($version, '.'));
$branch = get_branch_from_version($version);
foreach ($pem_versions as $pem_version)
{
if (strpos($pem_version['name'], $branch) === 0)

View file

@ -36,9 +36,7 @@ else
$page['tab'] = 'installed';
$tabsheet = new tabsheet();
$tabsheet->add('installed', l10n('Installed Languages'), $my_base_url.'&amp;tab=installed');
$tabsheet->add('update', l10n('Check for updates'), $my_base_url.'&amp;tab=update');
$tabsheet->add('new', l10n('Add New Language'), $my_base_url.'&amp;tab=new');
$tabsheet->set_id('languages');
$tabsheet->select($page['tab']);
$tabsheet->assign();

View file

@ -588,19 +588,8 @@ if (is_autorize_status(ACCESS_WEBMASTER))
{
// TabSheet
$tabsheet = new tabsheet();
// TabSheet initialization
$tabsheet->add('param', l10n('Parameter'),
add_url_params($base_url.get_query_string_diff(array('mode', 'select')),
array('mode' => 'param')));
$tabsheet->add('subscribe', l10n('Subscribe'),
add_url_params($base_url.get_query_string_diff(array('mode', 'select')),
array('mode' => 'subscribe')));
$tabsheet->add('send', l10n('Send'),
add_url_params($base_url.get_query_string_diff(array('mode', 'select')),
array('mode' => 'send')));
// TabSheet selection
$tabsheet->set_id('nbm');
$tabsheet->select($page['mode']);
// Assign tabsheet to template
$tabsheet->assign();
}

View file

@ -61,9 +61,7 @@ if (isset($_GET['tab']))
}
$tabsheet = new tabsheet();
$tabsheet->add('properties', l10n('Properties'), $admin_photo_base_url.'-properties');
$tabsheet->add('coi', l10n('Center of interest'), $admin_photo_base_url.'-coi');
$tabsheet->set_id('photo');
$tabsheet->select($page['tab']);
$tabsheet->assign();

View file

@ -49,52 +49,17 @@ $upload_form_config = get_upload_form_config();
// +-----------------------------------------------------------------------+
// | Tabs |
// +-----------------------------------------------------------------------+
$tabs = array(
array(
'code' => 'direct',
'label' => l10n('Web Form'),
),
array(
'code' => 'applications',
'label' => l10n('Applications'),
),
);
if ($conf['enable_synchronization'])
{
array_push(
$tabs,
array(
'code' => 'ftp',
'label' => l10n('FTP + Synchronization'),
)
);
}
$tab_codes = array_map(
create_function('$a', 'return $a["code"];'),
$tabs
);
if (isset($_GET['section']) and in_array($_GET['section'], $tab_codes))
if (isset($_GET['section']))
{
$page['tab'] = $_GET['section'];
}
else
{
$page['tab'] = $tabs[0]['code'];
$page['tab'] = 'direct';
}
$tabsheet = new tabsheet();
foreach ($tabs as $tab)
{
$tabsheet->add(
$tab['code'],
$tab['label'],
PHOTOS_ADD_BASE_URL.'&amp;section='.$tab['code']
);
}
$tabsheet->set_id('photos_add');
$tabsheet->select($page['tab']);
$tabsheet->assign();

View file

@ -53,6 +53,7 @@ if (isset($_GET['delete']))
check_pwg_token();
delete_elements(array($_GET['image_id']), true);
invalidate_user_cache();
// where to redirect the user now?
//
@ -170,6 +171,10 @@ if (isset($_POST['submit']) and count($page['errors']) == 0)
set_tags($tag_ids, $_GET['image_id']);
// association to albums
if (!isset($_POST['associate']))
{
$_POST['associate'] = array();
}
move_images_to_categories(array($_GET['image_id']), $_POST['associate']);
// thumbnail for albums

View file

@ -36,9 +36,7 @@ else
$page['tab'] = 'installed';
$tabsheet = new tabsheet();
$tabsheet->add('installed', l10n('Plugin list'), $my_base_url.'&amp;tab=installed');
$tabsheet->add('update', l10n('Check for updates'), $my_base_url.'&amp;tab=update');
$tabsheet->add('new', l10n('Other plugins'), $my_base_url.'&amp;tab=new');
$tabsheet->set_id('plugins');
$tabsheet->select($page['tab']);
$tabsheet->assign();

View file

@ -36,8 +36,7 @@ check_status(ACCESS_ADMINISTRATOR);
include_once(PHPWG_ROOT_PATH.'admin/include/tabsheet.class.php');
$tabsheet = new tabsheet();
$tabsheet->add('rating', l10n('Photos'), get_root_url().'admin.php?page=rating');
$tabsheet->add('rating_user', l10n('Users'), get_root_url().'admin.php?page=rating_user');
$tabsheet->set_id('rating');
$tabsheet->select('rating');
$tabsheet->assign();

View file

@ -25,8 +25,7 @@ defined('PHPWG_ROOT_PATH') or die ("Hacking attempt!");
include_once(PHPWG_ROOT_PATH.'admin/include/tabsheet.class.php');
$tabsheet = new tabsheet();
$tabsheet->add('rating', l10n('Photos'), get_root_url().'admin.php?page=rating');
$tabsheet->add('rating_user', l10n('Users'), get_root_url().'admin.php?page=rating_user');
$tabsheet->set_id('rating');
$tabsheet->select('rating_user');
$tabsheet->assign();

View file

@ -303,19 +303,31 @@ SELECT id_uppercat, MAX(rank)+1 AS next_rank
}
// to delete categories
$to_delete = array();
$to_delete = array(); $to_delete_derivative_dirs = array();
foreach (array_diff(array_keys($db_fulldirs), $fs_fulldirs) as $fulldir)
{
array_push($to_delete, $db_fulldirs[$fulldir]);
unset($db_fulldirs[$fulldir]);
array_push($infos, array('path' => $fulldir,
'info' => l10n('deleted')));
if (substr_compare($fulldir, '../', 0, 3)==0)
{
$fulldir = substr($fulldir, 3);
}
$to_delete_derivative_dirs[] = PHPWG_ROOT_PATH.PWG_DERIVATIVE_DIR.$fulldir;
}
if (count($to_delete) > 0)
{
if (!$simulate)
{
delete_categories($to_delete);
foreach($to_delete_derivative_dirs as $to_delete_dir)
{
if (is_dir($to_delete_dir))
{
clear_derivative_cache_rec($to_delete_dir, '#.+#');
}
}
}
$counts['del_categories'] = count($to_delete);
}

View file

@ -45,7 +45,7 @@ SELECT name
FROM '.TAGS_TABLE.'
;';
$existing_names = array_from_query($query, 'name');
$current_name_of = array();
$query = '
@ -58,7 +58,7 @@ SELECT id, name
{
$current_name_of[ $row['id'] ] = $row['name'];
}
$updates = array();
// we must not rename tag with an already existing name
foreach (explode(',', $_POST['edit_list']) as $tag_id)
@ -117,7 +117,7 @@ if (isset($_POST['confirm_merge']))
{
$destination_tag_id = $_POST['destination_tag'];
$tag_ids = explode(',', $_POST['merge_list']);
if (is_array($tag_ids) and count($tag_ids) > 1)
{
$name_of_tag = array();
@ -133,7 +133,7 @@ SELECT
{
$name_of_tag[ $row['id'] ] = trigger_event('render_tag_name', $row['name']);
}
$tag_ids_to_delete = array_diff(
$tag_ids,
array($destination_tag_id)
@ -188,7 +188,7 @@ SELECT
{
$tags_deleted[] = $name_of_tag[$tag_id];
}
array_push(
$page['infos'],
sprintf(
@ -216,11 +216,11 @@ SELECT name
$tag_names = array_from_query($query, 'name');
delete_tags($_POST['tags']);
array_push(
$page['infos'],
l10n_dec(
'The following tag was deleted',
'The following tag was deleted',
'The %d following tags were deleted',
count($tag_names)).' : '.
implode(', ', $tag_names)
@ -234,7 +234,7 @@ SELECT name
if (isset($_GET['action']) and 'delete_orphans' == $_GET['action'])
{
check_pwg_token();
delete_orphan_tags();
$_SESSION['page_infos'] = array(l10n('Orphan tags deleted'));
redirect(get_root_url().'admin.php?page=tags');
@ -268,7 +268,7 @@ SELECT id
)
)
);
array_push(
$page['infos'],
sprintf(
@ -331,12 +331,44 @@ if (count($orphan_tag_names) > 0)
// | form creation |
// +-----------------------------------------------------------------------+
// tag counters
$query = '
SELECT tag_id, COUNT(image_id) AS counter
FROM '.IMAGE_TAG_TABLE.'
GROUP BY tag_id';
$tag_counters = simple_hash_from_query($query, 'tag_id', 'counter');
// all tags
$query = '
SELECT *
FROM '.TAGS_TABLE.'
;';
$result = pwg_query($query);
$all_tags = array();
while ($tag = pwg_db_fetch_assoc($result))
{
$raw_name = $tag['name'];
$tag['name'] = trigger_event('render_tag_name', $raw_name);
$tag['counter'] = intval(@$tag_counters[ $tag['id'] ]);
$tag['U_VIEW'] = make_index_url(array('tags'=>array($tag)));
$tag['U_EDIT'] = 'admin.php?page=batch_manager&amp;tag='.$tag['id'];
$alt_names = trigger_event('get_tag_alt_names', array(), $raw_name);
$alt_names = array_diff( array_unique($alt_names), array($tag['name']) );
if (count($alt_names))
{
$tag['alt_names'] = implode(', ', $alt_names);
}
$all_tags[] = $tag;
}
usort($all_tags, 'tag_alpha_compare');
$template->assign(
array(
'TAG_SELECTION' => get_html_tag_selection(
get_all_tags(),
'tags'
),
'all_tags' => $all_tags,
)
);
@ -347,7 +379,7 @@ if ((isset($_POST['edit']) or isset($_POST['merge'])) and isset($_POST['tags']))
{
$list_name = 'MERGE_TAGS_LIST';
}
$template->assign(
array(
$list_name => implode(',', $_POST['tags']),

View file

@ -36,9 +36,7 @@ else
$page['tab'] = 'installed';
$tabsheet = new tabsheet();
$tabsheet->add('installed', l10n('Installed Themes'), $my_base_url.'&amp;tab=installed');
$tabsheet->add('update', l10n('Check for updates'), $my_base_url.'&amp;tab=update');
$tabsheet->add('new', l10n('Add New Theme'), $my_base_url.'&amp;tab=new');
$tabsheet->set_id('themes');
$tabsheet->select($page['tab']);
$tabsheet->assign();

View file

@ -22,6 +22,7 @@ body, h3, dt, h2, .throw, .content, label , LEGEND {
th { color: #888; }
INPUT, select, textarea { color:#666; background-color: #ccc; }
option[disabled] { background-color: #ccc; }
input[type="radio"], input[type="checkbox"] { background-color: transparent; }
INPUT[type="submit"], INPUT[type="button"], INPUT[type="reset"] {
@ -97,8 +98,6 @@ h3, .content, .throw, .row1 { background-color: #ddd; }
UL.thumbnails span.wrap2:hover { background-color:#7CBA0F; color:#999; }
UL.thumbnails span.wrap2 {
padding: 4px;
border-radius: 4px;
background-color:#ddd;
}
@ -111,7 +110,7 @@ TEXTAREA { cursor:text; font-size: 13px; }
.tagSelected LABEL {color:black;}
.content ul.categoryActions a img { margin-left: 10px; }
ul.thumbnails input { border:3px double #666; color:#666; font-size:10px; margin:0; background-color:#bbb; text-align: center;}
ul.thumbnails input { color:#666; font-size:10px; margin:0; background-color:#bbb; text-align: center;}
INPUT.bigbutton:hover { background-color: #ddd; color:#0cc; border: 0; }
.throw { font-size: 120%; line-height: 26px; padding-top: 10px; font-weight: bold; }
label { cursor:pointer }
@ -239,6 +238,10 @@ body .ui-resizable-autohide .ui-resizable-handle { display: none; } /* use 'body
#ui-datepicker-div .ui-datepicker-days-cell { background-color:#bbb; border:1px solid #ddd; border-top-color: #bbb; border-left-color: #bbb;}
img.ui-datepicker-trigger{margin:-2px 10px 1px -2px;}
.ui-slider { background:#ddd;border-radius:2px;border:1px solid #999; }
.ui-slider .ui-slider-handle { border:1px solid #005e89;background:#fff;border-radius:0.6em; }
.ui-slider .ui-slider-range { background:#999;border-radius:2px; }
INPUT[type="text"].large { width: 317px; }
.bigbutton {background:none;margin-right:-5px; padding: 10px;height:auto;position:static;width:auto;text-align:right;}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

View file

@ -41,6 +41,9 @@ Raphael("menubarUsers", 20, 16).path("").scale(0.6, 0.6, 0, 0).attr({fill: "#464
<li><a href="{$U_TAGS}">{'Tags'|@translate}</a></li>
<li><a href="{$U_RECENT_SET}">{'Recent photos'|@translate}</a></li>
<li><a href="{$U_BATCH}">{'Batch Manager'|@translate}</a></li>
{if $NB_PHOTOS_IN_CADDIE > 0}
<li><a href="{$U_CADDIE}">{'Caddie'|@translate}<span class="adminMenubarCounter">{$NB_PHOTOS_IN_CADDIE}</span></a></li>
{/if}
</ul>
</dd>
</dl>

View file

@ -50,6 +50,7 @@ jQuery(document).ready(function() {
$(this).click(function(event) {console.log(event.shiftKey);$(this).triggerHandler("shclick",event)});
});
}
$('ul.thumbnails').enableShiftClick();
});
{/literal}{/footer_script}
@ -481,17 +482,7 @@ $(document).ready(function() {
checkPermitAction()
});
jQuery(window).load(function() {
var max_w=0, max_h=0;
$(".thumbnails img").each(function () {
max_w = Math.max(max_w, $(this).width() );
max_h = Math.max(max_h, $(this).height() );
});
max_w += 10;
max_h += 35;
$("ul.thumbnails span, ul.thumbnails label").css('width', max_w+'px').css('height', max_h+'px');
$('ul.thumbnails').enableShiftClick();
});
{/literal}{/footer_script}
<div id="batchManagerGlobal">
@ -499,6 +490,7 @@ jQuery(window).load(function() {
<h2>{'Batch Manager'|@translate}</h2>
<form action="{$F_ACTION}" method="post">
<input type="hidden" name="start" value="{$START}">
<fieldset>
<legend>{'Filter'|@translate}</legend>
@ -510,7 +502,7 @@ jQuery(window).load(function() {
{'Predefined filter'|@translate}
<select name="filter_prefilter">
{foreach from=$prefilters item=prefilter}
<option value="{$prefilter.ID}" {if $filter.prefilter eq $prefilter.ID}selected="selected"{/if}>{$prefilter.NAME}</option>
<option value="{$prefilter.ID}" {if isset($filter.prefilter) && $filter.prefilter eq $prefilter.ID}selected="selected"{/if}>{$prefilter.NAME}</option>
{/foreach}
</select>
</li>
@ -528,9 +520,9 @@ jQuery(window).load(function() {
<input type="checkbox" name="filter_tags_use" class="useFilterCheckbox" {if isset($filter.tags)}checked="checked"{/if}>
{'Tags'|@translate}
<select id="tagsFilter" name="filter_tags">
{foreach from=$filter_tags item=tag}
{if isset($filter_tags)}{foreach from=$filter_tags item=tag}
<option value="{$tag.id}">{$tag.name}</option>
{/foreach}
{/foreach}{/if}
</select>
<label><span><input type="radio" name="tag_mode" value="AND" {if !isset($filter.tag_mode) or $filter.tag_mode eq 'AND'}checked="checked"{/if}> {'All tags'|@translate}</span></label>
<label><span><input type="radio" name="tag_mode" value="OR" {if isset($filter.tag_mode) and $filter.tag_mode eq 'OR'}checked="checked"{/if}> {'Any tag'|@translate}</span></label>
@ -546,7 +538,7 @@ jQuery(window).load(function() {
</li>
</ul>
<p class="actionButtons" style="">
<p class="actionButtons">
<select id="addFilter">
<option value="-1">{'Add a filter'|@translate}</option>
<option disabled="disabled">------------------</option>
@ -586,32 +578,34 @@ jQuery(window).load(function() {
<input type="checkbox" name="setSelected" style="display:none" {if count($selection) == $nb_thumbs_set}checked="checked"{/if}>
</p>
<ul class="thumbnails">
{foreach from=$thumbnails item=thumbnail}
{if in_array($thumbnail.ID, $selection)}
{assign var='isSelected' value=true}
{else}
{assign var='isSelected' value=false}
{/if}
<li>
<span class="wrap1">
<label>
<span class="wrap2{if $isSelected} thumbSelected{/if}">
<div class="actions"><a href="{$thumbnail.FILE_SRC}" class="preview-box">{'Zoom'|@translate}</a> &middot; <a href="{$thumbnail.U_EDIT}" target="_blank">{'Edit'|@translate}</a></div>
{if $thumbnail.LEVEL > 0}
<em class="levelIndicatorB">{$pwg->l10n($pwg->sprintf('Level %d',$thumbnail.LEVEL))}</em>
<em class="levelIndicatorF" title="{'Who can see these photos?'|@translate} : ">{$pwg->l10n($pwg->sprintf('Level %d',$thumbnail.LEVEL))}</em>
{/if}
<span>
<img src="{$thumbnail.TN_SRC}" alt="{$thumbnail.FILE}" title="{$thumbnail.TITLE|@escape:'html'}" class="thumbnail">
</span>
</span>
<input type="checkbox" name="selection[]" value="{$thumbnail.ID}" {if $isSelected}checked="checked"{/if}>
</label>
</span>
</li>
{/foreach}
</ul>
<ul class="thumbnails">
{html_style}
UL.thumbnails SPAN.wrap2{ldelim}
width: {$thumb_params->max_width()+2}px;
}
UL.thumbnails SPAN.wrap2 {ldelim}
height: {$thumb_params->max_height()+25}px;
}
{/html_style}
{foreach from=$thumbnails item=thumbnail}
{assign var='isSelected' value=$thumbnail.id|@in_array:$selection}
<li>
<span class="wrap1">
<label>
<input type="checkbox" name="selection[]" value="{$thumbnail.id}" {if $isSelected}checked="checked"{/if}>
<span class="wrap2{if $isSelected} thumbSelected{/if}">
<div class="actions"><a href="{$thumbnail.FILE_SRC}" class="preview-box">{'Zoom'|@translate}</a> &middot; <a href="{$thumbnail.U_EDIT}" target="_blank">{'Edit'|@translate}</a></div>
{if $thumbnail.level > 0}
<em class="levelIndicatorB">{$pwg->l10n($pwg->sprintf('Level %d',$thumbnail.level))}</em>
<em class="levelIndicatorF" title="{'Who can see these photos?'|@translate} : ">{$pwg->l10n($pwg->sprintf('Level %d',$thumbnail.level))}</em>
{/if}
<img src="{$thumbnail.thumb->get_url()}" alt="{$thumbnail.file}" title="{$thumbnail.TITLE|@escape:'html'}" {$thumbnail.thumb->get_size_htm()}>
</span>
</label>
</span>
</li>
{/foreach}
</ul>
{if !empty($navbar) }
<div style="clear:both;">
@ -713,7 +707,7 @@ jQuery(window).load(function() {
<!-- del_tags -->
<div id="action_del_tags" class="bulkAction">
{$DEL_TAG_SELECTION}
{if !empty($DEL_TAG_SELECTION)}{$DEL_TAG_SELECTION}{/if}
</div>
<!-- author -->

View file

@ -131,6 +131,8 @@ jQuery(document).ready(function() {ldelim}
</fieldset>
{/foreach}
{if !empty($navbar) }{include file='navigation_bar.tpl'|@get_extent:'navbar'}{/if}
<p>
<input class="submit" type="submit" value="{'Submit'|@translate}" name="submit">
<input class="submit" type="reset" value="{'Reset'|@translate}">

View file

@ -58,53 +58,55 @@ jQuery(document).ready(function(){
{/literal}{/footer_script}
<h2><span style="letter-spacing:0">{$CATEGORIES_NAV}</span> &#8250; {'Album list management'|@translate}</h2>
<form id="categoryOrdering" action="{$F_ACTION}" method="post">
<input type="hidden" name="pwg_token" value="{$PWG_TOKEN}">
<p class="showCreateAlbum">
<span id="notManualOrder">
<a href="#" id="addAlbumOpen">{'create a new album'|@translate}</a>
| <a href="#" id="autoOrderOpen">{'apply automatic sort order'|@translate}</a>
{if count($categories) }| <a href="#" id="autoOrderOpen">{'apply automatic sort order'|@translate}</a>{/if}
</span>
</p>
<form id="formCreateAlbum" action="{$F_ACTION}" method="post">
<p>
<fieldset id="createAlbum" style="display:none;">
<legend>{'create a new album'|@translate}</legend>
<input type="hidden" name="pwg_token" value="{$PWG_TOKEN}">
<p><strong>{'Album name'|@translate}</strong>
<br><input type="text" name="virtual_name" maxlength="255">
</p>
<span class="actionButtons">
<input class="submit" type="submit" value="{'Create'|@translate}" name="submitAdd">
<a href="#" id="addAlbumClose">{'Cancel'|@translate}</a>
</span>
</fieldset>
</p>
</form>
<form id="categoryOrdering" action="{$F_ACTION}" method="post">
<input type="hidden" name="pwg_token" value="{$PWG_TOKEN}">
{if count($categories) }
<fieldset id="autoOrder" style="display:none;">
<legend>{'Automatic sort order'|@translate}</legend>
<p><strong>{'Sort order'|@translate}</strong>
<br><label><input type="radio" value="asc" name="ascdesc" checked="checked">{'ascending'|@translate}</label>
<br><label><input type="radio" value="desc" name="ascdesc">{'descending'|@translate}</label>
</p>
<p>
<label><input type="checkbox" name="recursive"> <strong>{'Apply to sub-albums'|@translate}</strong></label>
</p>
<p class="actionButtons">
<input class="submit" name="submitAutoOrder" type="submit" value="{'Save order'|@translate}">
<a href="#" id="autoOrderClose">{'Cancel'|@translate}</a>
</p>
</fieldset>
{/if}
<p>
<span id="manualOrder" style="display:none;">
<input class="submit" name="submitManualOrder" type="submit" value="{'Save manual order'|@translate}">
{'... or '|@translate} <a href="#" id="cancelManualOrder">{'cancel manual order'|@translate}</a>
</span>
</p>
<fieldset id="createAlbum" style="display:none;">
<legend>{'create a new album'|@translate}</legend>
<input type="hidden" name="pwg_token" value="{$PWG_TOKEN}">
<p><strong>{'Album name'|@translate}</strong>
<br><input type="text" name="virtual_name">
</p>
<p class="actionButtons">
<input class="submit" type="submit" value="{'Create'|@translate}" name="submitAdd">
<a href="#" id="addAlbumClose">{'Cancel'|@translate}</a>
</p>
</fieldset>
{if count($categories) }
<fieldset id="autoOrder" style="display:none;">
<legend>{'Automatic sort order'|@translate}</legend>
<p><strong>{'Sort order'|@translate}</strong>
<br><label><input type="radio" value="asc" name="ascdesc" checked="checked">{'ascending'|@translate}</label>
<br><label><input type="radio" value="desc" name="ascdesc">{'descending'|@translate}</label>
</p>
<p>
<label><input type="checkbox" name="recursive"> <strong>{'Apply to sub-albums'|@translate}</strong></label>
</p>
<p class="actionButtons">
<input class="submit" name="submitAutoOrder" type="submit" value="{'Save order'|@translate}">
<a href="#" id="autoOrderClose">{'Cancel'|@translate}</a>
</p>
</fieldset>
<ul class="categoryUl">
{foreach from=$categories item=category}
@ -122,7 +124,7 @@ jQuery(document).ready(function(){
</label>
</p>
<p class="albumActions">
<p class="albumActions">
<a href="{$category.U_EDIT}">{'Edit'|@translate}</a>
{if isset($category.U_MANAGE_ELEMENTS) }
| <a href="{$category.U_MANAGE_ELEMENTS}">{'manage album photos'|@translate}</a>
@ -133,12 +135,12 @@ jQuery(document).ready(function(){
{/if}
{if isset($category.U_DELETE) }
| <a href="{$category.U_DELETE}" onclick="return confirm('{'Are you sure?'|@translate|@escape:javascript}');">{'delete album'|@translate}</a>
{/if}
{if cat_admin_access($category.ID)}
|
<a href="{$category.U_JUMPTO}">{'jump to album'|@translate} →</a>
{/if}
</p>
{/if}
{if cat_admin_access($category.ID)}
|
<a href="{$category.U_JUMPTO}">{'jump to album'|@translate} →</a>
{/if}
</p>
</li>
{/foreach}

View file

@ -60,7 +60,7 @@
<p>
<strong>{'Name'|@translate}</strong>
<br>
<input type="text" class="large" name="name" value="{$CAT_NAME}" maxlength="60">
<input type="text" class="large" name="name" value="{$CAT_NAME}" maxlength="255">
</p>
<p>

View file

@ -13,11 +13,11 @@ jQuery(document).ready(function(){
}
jQuery(".checkComment").click(function(event) {
var checkbox = jQuery(this).children("input[type=checkbox]");
if (event.target.type !== 'checkbox') {
var checkbox = jQuery(this).children("input[type=checkbox]");
jQuery(checkbox).attr('checked', !jQuery(checkbox).is(':checked'));
highlighComments();
}
highlighComments();
});
jQuery("#commentSelectAll").click(function () {

View file

@ -454,6 +454,15 @@ jQuery(document).ready(function(){
<p style="margin:10px 0 0 0;{if isset($ferrors)} display:block;{/if}" class="sizeDetails">
<a href="{$F_ACTION}&action=restore_settings" onclick="return confirm('{'Are you sure?'|@translate|@escape:javascript}');">{'Reset to default values'|@translate}</a>
</p>
{if !empty($custom_derivatives)}
<fieldset class="sizeDetails"><legend>{'custom'|@translate}</legend><table style="margin:0">
{foreach from=$custom_derivatives item=time key=custom}
<tr><td><label><input type="checkbox" name="delete_custom_derivative_{$custom}"> {'Delete'|@translate} {$custom} ({'Last hit'|@translate}: {$time})</label></td></tr>
{/foreach}
</table></fieldset>
{/if}
</fieldset>
{/if}
@ -509,7 +518,7 @@ jQuery(document).ready(function() {
<span id="addWatermark"{if isset($ferrors.watermarkImage)} style="display:inline"{/if}>
{'add a new watermark'|@translate} {'... or '|@translate}<a href="#" class="addWatermarkOpen">{'Select a file'|@translate}</a>
<br><input type="file" size="60" id="watermarkImage" name="watermarkImage"{if isset($ferrors.watermarkImage)} class="dError"{/if}> (png)
{if isset($ferrors.watermarkImage)}<span class="dErrorDesc" title="{$ferrors.watermarkImage}">!</span>{/if}
{if isset($ferrors.watermarkImage)}<span class="dErrorDesc" title="{$ferrors.watermarkImage|@htmlspecialchars}">!</span>{/if}
</span>{* #addWatermark *}
</li>

View file

@ -29,7 +29,7 @@ jQuery(document).ready(function() {
checkOrderOptions();
});
jQuery(document).ready(function() {
jQuery('.clipwrapper').tipTip({
jQuery('.thumbnail').tipTip({
'delay' : 0,
'fadeIn' : 200,
'fadeOut' : 200
@ -51,7 +51,7 @@ jQuery('.clipwrapper').tipTip({
<ul class="thumbnails">
{foreach from=$thumbnails item=thumbnail}
<li class="rank-of-image">
<img src="{$thumbnail.TN_SRC}" class="thumbnail" alt="{$thumbnail.NAME|@replace:'"':' '}" style="width:{$thumbnail.SIZE[0]}px; height:{$thumbnail.SIZE[1]}px; ">
<img src="{$thumbnail.TN_SRC}" class="thumbnail" alt="{$thumbnail.NAME|@replace:'"':' '}" title="{$thumbnail.NAME|@replace:'"':' '}" style="width:{$thumbnail.SIZE[0]}px; height:{$thumbnail.SIZE[1]}px; ">
<input type="text" name="rank_of_image[{$thumbnail.ID}]" value="{$thumbnail.RANK}" style="display:none">
</li>
{/foreach}

View file

@ -95,7 +95,7 @@ jQuery(document).ready(function(){
{html_options options=$category_parent_options selected=$category_parent_options_selected}
</select>
<br><br>{'Album name'|@translate}<br><input name="category_name" type="text"> <span id="categoryNameError"></span>
<br><br>{'Album name'|@translate}<br><input name="category_name" type="text" maxlength="255"> <span id="categoryNameError"></span>
<br><br><br><input type="submit" value="{'Create'|@translate}"> <span id="albumCreationLoading" style="display:none"><img src="themes/default/images/ajax-loader-small.gif"></span>
</form>
</div>

View file

@ -40,7 +40,7 @@ jQuery(document).ready(function(){
{foreach from=$tags item=tag}
<tr>
<td>{$tag.NAME}</td>
<td><input type="text" name="tag_name-{$tag.ID}" value="{$tag.NAME}" size="30"></td>
<td><input type="text" name="tag_name-{$tag.ID}" value="{$tag.NAME}" size="50"></td>
</tr>
{/foreach}
</table>
@ -71,7 +71,7 @@ jQuery(document).ready(function(){
<label>
{'New tag'|@translate}
<input type="text" name="add_tag" size="30">
<input type="text" name="add_tag" size="50">
</label>
<p><input class="submit" type="submit" name="add" value="{'Submit'|@translate}"></p>
@ -79,8 +79,29 @@ jQuery(document).ready(function(){
<fieldset>
<legend>{'Tag selection'|@translate}</legend>
{$TAG_SELECTION}
{html_style}
.showInfo{ldelim}position:static; display:inline-block; text-indent:6px}
{/html_style}
{footer_script}{literal}
jQuery('.showInfo').tipTip({
'delay' : 0,
'fadeIn' : 200,
'fadeOut' : 200,
'maxWidth':'300px',
'keepAlive':true,
'activation':'click'
});
{/literal}{/footer_script}
<ul class="tagSelection">
{foreach from=$all_tags item=tag}
<li>{capture name='showInfo'}<b>{$tag.name}</b><br>{$pwg->l10n_dec('%d photo', '%d photos', $tag.counter)} <a href="{$tag.U_VIEW}">{'View'|@translate}</a> <a href="{$tag.U_EDIT}">{'Batch Manager'|@translate}</a>{if !empty($tag.alt_names)}<br>{$tag.alt_names}{/if}{/capture}
<a class="showInfo" title="{$smarty.capture.showInfo|@htmlspecialchars}">i</a>
<label>
<input type="checkbox" name="tags[]" value="{$tag.id}"> {$tag.name}
</label>
</li>
{/foreach}
</ul>
<p>
<input type="hidden" name="pwg_token" value="{$PWG_TOKEN}">

View file

@ -42,12 +42,13 @@ UL.thumbnails li.rank-of-image {
float: left;
background-color: #333;
color: #666;
-moz-border-radius: 5px;
border-radius: 5px;
display: block;
width: 104px;
height: 104px;
width: 120px;
height: 120px;
cursor: move;
margin: 10px;
margin: 4px;
overflow: hidden;
}
.clipwrapper {
position:relative;
@ -58,8 +59,7 @@ UL.thumbnails li.rank-of-image {
.clip {
position:absolute;
}
UL.thumbnails li.rank-of-image input {
}
UL.thumbnails SPAN.wrap1 {
margin: 5px;
display: table-cell; display: inline-table;
@ -71,25 +71,28 @@ UL.thumbnails SPAN.wrap2 {
margin: 0; /* important reset the margins */
display: table-cell; /* block prevents vertical-align here */
vertical-align: middle; /* Ok with Opera and Geko not IE6 */
border-radius: 4px;
}
UL.thumbnails LABEL { display: block; border-bottom: none; }
UL.thumbnails LABEL {
position: relative;
display: block;
border-bottom: none;
}
UL.thumbnails IMG {
margin-bottom: -4px; /* why ??? something wrong with Geko and Opera ignored by IE6*/
vertical-align: middle;
margin-top: 12px;
}
UL.thumbnails LABEL { position: relative; }
UL.thumbnails INPUT {
position: relative; /* <= Opera can handle relative here */
top: -20px;
}
:root UL.thumbnails INPUT { /* hide from Opera */
position: absolute; /* <= Opera hide 1 checkbox over 2 !!! */
position: absolute;
left: 2px; top: 2px;
}
UL.thumbnails .levelIndicatorB {
display:block; position:absolute; z-index:100;padding:0px 0 0 14px; color:black; font-weight:bold; font-size:120%;
display:block; position:absolute; z-index:100; padding:7px 0 0 2px; color:black; font-weight:bold; font-size:120%;
}
UL.thumbnails .levelIndicatorF {
display:block; position:absolute; z-index:101;padding:1px 0 0 15px; color:white; font-weight:bold; font-size:120%;
display:block; position:absolute; z-index:101; padding:8px 0 0 3px; color:white; font-weight:bold; font-size:120%;
}
/* default-layout.css */
@ -297,7 +300,7 @@ text-align: left;
font-size: 150%;
font-weight: normal;
font-style:italic;
padding: 8px 0 0 10px;
padding: 2px 0 0 10px;
margin: 0;
float:left;
}
@ -306,7 +309,7 @@ float:left;
#pwgHead A {color:#ccc;}
#pwgHead A:hover {color:#fff;border-bottom:1px solid #fff}
#headActions {float:right; height:46px; line-height:46px; margin-right:10px;}
#headActions {float:right; height:36px; line-height:36px; margin-right:10px;}
A {
text-decoration:none;
@ -589,7 +592,7 @@ img.ui-datepicker-trigger {
#pwgHead {
background-color:#464646;
height:46px;
height: 36px;
}
html, body {height:100%; margin:0; padding:0;}
@ -603,11 +606,12 @@ html, body {height:100%; margin:0; padding:0;}
position:absolute;
bottom:0;
width:100%;
height:46px;
background: url(images/logo.png) no-repeat 7px 8px;
background-color:#464646;
height: 34px;
line-height: 34px;
background-repeat: no-repeat;
background-position: 7px 2px;
background-color:#464646;
color:#aaa;
line-height:46px;
}
#footer A {color:#ccc;}
@ -768,17 +772,6 @@ BODY {
#thePopuphelpPage #pwgHead {display:none}
#thePopuphelpPage #footer {display:none}
/* Set some sizes according to your maximum thumbnail width and height */
UL.thumbnails SPAN,
UL.thumbnails SPAN.wrap2 A,
UL.thumbnails LABEL {
width: 140px; /* max thumbnail width + 2px */
}
UL.thumbnails SPAN.wrap2 {
height: 140px; /* max thumbnail height + 2px */
}
.themeBox {display:inline-table; text-align:center; height:192px; background-color:#eee; margin:5px; -moz-border-radius:5px; overflow:hidden; }
.themeBox IMG {border:1px solid white; margin:0 15px;}
@ -874,7 +867,7 @@ h2:lang(en) { text-transform:capitalize; }
.pluginActions {display: table-row; font-size:0.95em; color:#777;}
.pluginActions DIV {display: table-cell; vertical-align: middle; line-height:18px; }
.showInfo {display:block;position:absolute;top:0;right:5px;width:15px;font-style:italic;font-family:"Georgia",serif;background-color:#464646;font-size:0.9em;border-radius:10px;-moz-border-radius:10px;}
.showInfo:hover {cursor:pointer}
.showInfo:hover {cursor:pointer;border:none;}
.warning:before {content:url(icon/warning.png);vertical-align:top;}
.deactivate_all {text-align:right;font-size:0.95em;}
@ -978,7 +971,7 @@ LEGEND {
#batchManagerGlobal ul.thumbnails div.actions a {color:#fff;}
#batchManagerGlobal ul.thumbnails div.actions a:hover {border-color:#fff;}
#batchManagerGlobal ul.thumbnails span.wrap1:hover div.actions {display:block;}
#batchManagerGlobal #selectedMessage {padding:5px; -moz-border-radius:5px;-webkit-border-radius:5px;}
#batchManagerGlobal #selectedMessage {padding:5px; border-radius:5px;}
#batchManagerGlobal #selectSet a {border-bottom:1px dotted;}
#batchManagerGlobal #applyOnDetails {font-style:italic;}
#batchManagerGlobal .actionButtons {text-align:left;}
@ -1113,4 +1106,15 @@ input[type="text"].dError {border-color:#ff7070; background-color:#FFe5e5;}
.dErrorDesc {background-color:red; color:white; padding:0 5px;border-radius:10px; font-weight:bold;cursor:help;}
#wImg {max-height:100px;border:2px solid #ccc;margin-top:5px;}
#addWatermark {display:none;}
#addWatermark {display:none;}
.adminMenubarCounter {
background-color:#666;
color:white;
padding:1px 5px;
border-radius:10px;
-moz-border-radius:10px;
-webkit-border-radius:10px;
-border-radius:10px;
margin-left:5px;
}

View file

@ -8,13 +8,16 @@ Co-developed by Travis Nickels
/** Uploadify Styling here Styling **/
div.jGrowl div.success {
background: url(images/Check.png) no-repeat 6px 6px;
background: url(images/jgrowl-check.png) no-repeat 6px 6px;
}
div.jGrowl div.error {
background: url(images/Error.png) no-repeat 6px 6px;
background: url(images/jgrowl-error.png) no-repeat 6px center;
}
div.jGrowl div.warning {
background: url(images/Alert.png) no-repeat 6px 6px;
background: url(images/jgrowl-alert.png) no-repeat 6px 6px;
}
div.jGrowl div.warning:before {
content:none;
}
div.jGrowl div.jGrowl-notification, div.jGrowl div.jGrowl-closer {
@ -66,11 +69,11 @@ div.jGrowl div.jGrowl-closer {
div.jGrowl div.jGrowl-notification div.header {
font-weight: bold;
font-size: 14px;
margin-left: 60px;
margin-left: 47px;
}
div.jGrowl div.jGrowl-notification div.message {
font-size: 12px;
margin-left: 60px;
margin-left: 47px;
}
div.jGrowl div.jGrowl-notification p {
font-size: 6px;

View file

@ -64,8 +64,6 @@ h3, .row2, .content { background-color: #222; }
UL.thumbnails span.wrap2:hover { background-color#7CBA0F; color:#666; }
UL.thumbnails span.wrap2 {
padding: 4px;
border-radius: 4px;
background-color:#333;
}
@ -80,7 +78,7 @@ TEXTAREA { cursor:text; font-size: 13px; }
.tagSelection LI.tagSelected {background-color:#aaa;}
.tagSelected LABEL {color:#000;}
.content ul.categoryActions a img { margin-left: 10px; }
ul.thumbnails input { border:3px double #999; color:#999; font-size:10px; margin:0; background-color:#444; text-align: center;}
ul.thumbnails input { color:#999; font-size:10px; margin:0; background-color:#444; text-align: center;}
INPUT[type="submit"]:hover , INPUT[type="reset"]:hover { cursor: pointer; }
INPUT.bigbutton:hover { background-color: #222; color:#f33; border: 0; }
.throw { font-size: 120%; line-height: 26px; padding-top: 10px; font-weight: bold; color: #ff3363; }
@ -186,6 +184,10 @@ body .ui-resizable-autohide .ui-resizable-handle { display: none; } /* use 'body
.ui-datepicker th {color:#ccc;}
.ui-state-disabled {color:#aaa;}
.ui-slider { background:#444;border-radius:2px;border:1px solid #666; }
.ui-slider .ui-slider-handle { border:1px solid #f36;background:#222;border-radius:0.6em; }
.ui-slider .ui-slider-range { background:#666;border-radius:2px; }
#ui-datepicker-div .ui-datepicker-control, #ui-datepicker-div a { background-color: #111; color: #f70 !important;}
#ui-datepicker-div .ui-datepicker-days-row { background-color: #444;}
#ui-datepicker-div .ui-datepicker-week-end-cell, #ui-datepicker-div .ui-datepicker-week-end-cell a { background-color: #222; color: #f33; border-color: #444; border-top-color: #222; border-left-color: #222;}

View file

@ -34,8 +34,7 @@ else
$page['tab'] = 'pwg';
$tabsheet = new tabsheet();
$tabsheet->add('pwg', l10n('Piwigo Update'), $my_base_url);
$tabsheet->add('ext', l10n('Extensions Update'), $my_base_url.'&amp;tab=ext');
$tabsheet->set_id('updates');
$tabsheet->select($page['tab']);
$tabsheet->assign();

56
i.php
View file

@ -104,6 +104,7 @@ function ierror($msg, $code)
header('Request-URI: '.$url);
header('Content-Location: '.$url);
header('Location: '.$url);
ilog('WARN', $code, $url, $_SERVER['REQUEST_URI']);
exit;
}
if ($code>=400)
@ -189,6 +190,7 @@ function parse_request()
{
$req = substr($req, 0, $pos);
}
$req = rawurldecode($req);
/*foreach (array_keys($_GET) as $keynum => $key)
{
$req = $key;
@ -203,7 +205,7 @@ function parse_request()
{
preg_match($conf['sync_chars_regex'], $token) or ierror('Invalid chars in request', 400);
}
$page['derivative_path'] = PHPWG_ROOT_PATH.PWG_DERIVATIVE_DIR.$req;
$pos = strrpos($req, '.');
@ -282,12 +284,34 @@ function parse_request()
function try_switch_source(DerivativeParams $params, $original_mtime)
{
global $page;
$original_size = null;
if (isset($page['original_size']))
{
$original_size = $page['original_size'];
if ($page['rotation_angle']==90 || $page['rotation_angle']==270)
{
$tmp = $original_size[0];
$original_size[0] = $original_size[1];
$original_size[1] = $tmp;
}
}
$use_watermark = $params->use_watermark;
if ($use_watermark)
{
if (!isset($original_size))
return false; // cannot really know if a watermark is required
$dsize = $params->compute_final_size($original_size);
$use_watermark = $params->will_watermark($dsize);
ilog($use_watermark, $dsize);
}
$candidates = array();
foreach(ImageStdParams::get_defined_type_map() as $candidate)
{
if ($candidate->type == $params->type)
continue;
if ($candidate->use_watermark != $params->use_watermark)
if ($candidate->use_watermark != $use_watermark)
continue;
if ($candidate->max_width() < $params->max_width() || $candidate->max_height() < $params->max_height())
continue;
@ -300,9 +324,9 @@ function try_switch_source(DerivativeParams $params, $original_mtime)
{
if ($candidate->sizing->max_crop!=0)
continue; // this could be optimized
if (!isset($page['original_size']))
if (!isset($original_size))
continue;
$candidate_size = $candidate->compute_final_size($page['original_size']);
$candidate_size = $candidate->compute_final_size($original_size);
if ($candidate_size[0] < $params->sizing->min_size[0] || $candidate_size[1] < $params->sizing->min_size[1] )
continue;
}
@ -323,7 +347,9 @@ function try_switch_source(DerivativeParams $params, $original_mtime)
$page['src_path'] = $candidate_path;
$page['src_url'] = $page['root_path'] . substr($candidate_path, strlen(PHPWG_ROOT_PATH));
$page['rotation_angle'] = 0;
return true;
}
return false;
}
function send_derivative($expires)
@ -390,6 +416,8 @@ catch (Exception $e)
{
ilog("db error", $e->getMessage());
}
pwg_db_check_charset();
list($conf['derivatives']) = pwg_db_fetch_row(pwg_query('SELECT value FROM '.$prefixeTable.'config WHERE param=\'derivatives\''));
ImageStdParams::load_from_db();
@ -452,7 +480,7 @@ SELECT *
FROM '.$prefixeTable.'images
WHERE path=\''.$page['src_location'].'\'
;';
if ( ($row=pwg_db_fetch_assoc(pwg_query($query))) )
{
if (isset($row['width']))
@ -464,7 +492,7 @@ SELECT *
if (!isset($row['rotation']))
{
$page['rotation_angle'] = pwg_image::get_rotation_angle($page['src_path']);
single_update(
$prefixeTable.'images',
array('rotation' => pwg_image::get_rotation_code_from_angle($page['rotation_angle'])),
@ -475,7 +503,6 @@ SELECT *
{
$page['rotation_angle'] = pwg_image::get_rotation_angle_from_code($row['rotation']);
}
}
if (!$row)
{
@ -493,7 +520,15 @@ else
}
mysql_close($pwg_db_link);
try_switch_source($params, $src_mtime);
if (!try_switch_source($params, $src_mtime) && $params->type==IMG_CUSTOM)
{
$sharpen = 0;
foreach (ImageStdParams::get_defined_type_map() as $std_params)
{
$sharpen += $std_params->sharpen;
}
$params->sharpen = round($sharpen / count(ImageStdParams::get_defined_type_map()) );
}
if (!mkgetdir(dirname($page['derivative_path'])))
{
@ -501,7 +536,7 @@ if (!mkgetdir(dirname($page['derivative_path'])))
}
ignore_user_abort(true);
set_time_limit(0);
@set_time_limit(0);
$image = new pwg_image($page['src_path']);
$timing['load'] = time_step($step);
@ -540,7 +575,7 @@ if ($params->sharpen)
$timing['sharpen'] = time_step($step);
}
if ($params->use_watermark)
if ($params->will_watermark($d_size))
{
$wm = ImageStdParams::get_watermark();
$wm_image = new pwg_image(PHPWG_ROOT_PATH.$wm->file);
@ -590,6 +625,7 @@ if ($d_size[0]*$d_size[1] < 256000)
$image->set_compression_quality( ImageStdParams::$quality );
$image->write( $page['derivative_path'] );
$image->destroy();
@chmod($page['derivative_path'], 0644);
$timing['save'] = time_step($step);
send_derivative($expires);

View file

@ -354,7 +354,7 @@ if (count($categories) > 0)
{
$info = '';
if ($from == $to)
if (date('Y-m-d', strtotime($from)) == date('Y-m-d', strtotime($to)))
{
$info = format_date($from);
}

View file

@ -151,10 +151,8 @@ foreach ($pictures as $row)
$tpl_thumbnails_var[] = $tpl_var;
}
$derivative_params = trigger_event('get_index_derivative_params', ImageStdParams::get_by_type( pwg_get_session_var('index_deriv', IMG_THUMB) ) );
$template->assign( array(
'derivative_params' =>$derivative_params,
'derivative_params' => trigger_event('get_index_derivative_params', ImageStdParams::get_by_type( pwg_get_session_var('index_deriv', IMG_THUMB) ) ),
'SHOW_THUMBNAIL_CAPTION' =>$conf['show_thumbnail_caption'],
) );
$tpl_thumbnails_var = trigger_event('loc_end_index_thumbnails', $tpl_thumbnails_var, $pictures);
@ -162,6 +160,6 @@ $template->assign('thumbnails', $tpl_thumbnails_var);
$template->assign_var_from_handle('THUMBNAILS', 'index_thumbnails');
unset($pictures, $selection, $tpl_thumbnails_var);
$template->clear_assign( array('thumbnails', 'derivative_params') );
$template->clear_assign( 'thumbnails' );
pwg_debug('end include/category_default.inc.php');
?>

View file

@ -114,7 +114,7 @@ $conf['paginate_pages_around'] = 2;
// show_version : shall the version of Piwigo be displayed at the
// bottom of each page ?
$conf['show_version'] = true;
$conf['show_version'] = false;
// meta_ref to reference multiple sets of incorporated pages or elements
// Set it false to avoid referencing in google, and other search engines.
@ -273,7 +273,7 @@ $conf['smtp_password'] = '';
//
// This configuration parameter is set to true in BSF branch and to false
// elsewhere.
$conf['check_upgrade_feed'] = true;
$conf['check_upgrade_feed'] = false;
// rate_items: available rates for a picture
$conf['rate_items'] = array(0,1,2,3,4,5);
@ -417,7 +417,7 @@ $conf['session_length'] = 3600;
$conf['show_queries'] = false;
// show_gt : display generation time at the bottom of each page
$conf['show_gt'] = true;
$conf['show_gt'] = false;
// debug_l10n : display a warning message each time an unset language key is
// accessed
@ -430,7 +430,7 @@ $conf['debug_template'] = false;
$conf['debug_mail'] = false;
// die_on_sql_error: if an SQL query fails, should everything stop?
$conf['die_on_sql_error'] = true;
$conf['die_on_sql_error'] = false;
// if true, some language strings are replaced during template compilation
// (insted of template output). this results in better performance. however

View file

@ -22,7 +22,7 @@
// +-----------------------------------------------------------------------+
// Default settings
define('PHPWG_VERSION', '2.4.0RC3');
define('PHPWG_VERSION', '2.4.8');
define('PHPWG_DEFAULT_LANGUAGE', 'en_UK');
define('PHPWG_DEFAULT_TEMPLATE', 'elegant');

View file

@ -197,7 +197,7 @@ final class DerivativeImage
{
if ( $src->has_size() && $params->is_identity( $src->get_size() ) )
{
if (!$params->use_watermark && !$src->rotation)
if (!$params->will_watermark($src->get_size()) && !$src->rotation)
{
$params = null;
$rel_path = $rel_url = $src->rel_path;
@ -314,6 +314,15 @@ final class DerivativeImage
return $this->params->compute_final_size($this->src_image->get_size());
}
function get_size_css()
{
$size = $this->get_size();
if ($size)
{
return 'width:'.$size[0].'px; height:'.$size[1].'px';
}
}
function get_size_htm()
{
$size = $this->get_size();

View file

@ -281,5 +281,16 @@ final class DerivativeParams
}
return true;
}
function will_watermark($out_size)
{
if ($this->use_watermark)
{
$min_size = ImageStdParams::get_watermark()->min_size;
return $min_size[0]<=$out_size[0]
|| $min_size[1]<=$out_size[1];
}
return false;
}
}
?>

View file

@ -203,21 +203,30 @@ function mkgetdir($dir, $flags=MKGETDIR_DEFAULT)
/* Returns true if the string appears to be encoded in UTF-8. (from wordpress)
* @param string Str
*/
function seems_utf8($Str) { # by bmorel at ssi dot fr
function seems_utf8($Str) {
// OBSOLETE !!!
return qualify_utf8($Str) >= 0;
}
/* returns 0 if $str is Ascii, 1 if utf-8, -1 otherwise */
function qualify_utf8($Str)
{
$ret = 0;
for ($i=0; $i<strlen($Str); $i++) {
if (ord($Str[$i]) < 0x80) continue; # 0bbbbbbb
elseif ((ord($Str[$i]) & 0xE0) == 0xC0) $n=1; # 110bbbbb
$ret = 1;
if ((ord($Str[$i]) & 0xE0) == 0xC0) $n=1; # 110bbbbb
elseif ((ord($Str[$i]) & 0xF0) == 0xE0) $n=2; # 1110bbbb
elseif ((ord($Str[$i]) & 0xF8) == 0xF0) $n=3; # 11110bbb
elseif ((ord($Str[$i]) & 0xFC) == 0xF8) $n=4; # 111110bb
elseif ((ord($Str[$i]) & 0xFE) == 0xFC) $n=5; # 1111110b
else return false; # Does not match any model
else return -1; # Does not match any model
for ($j=0; $j<$n; $j++) { # n bytes matching 10bbbbbb follow ?
if ((++$i == strlen($Str)) || ((ord($Str[$i]) & 0xC0) != 0x80))
return false;
return -1;
}
}
return true;
return $ret;
}
/* Remove accents from a UTF-8 or ISO-859-1 string (from wordpress)
@ -225,10 +234,11 @@ function seems_utf8($Str) { # by bmorel at ssi dot fr
*/
function remove_accents($string)
{
if ( !preg_match('/[\x80-\xff]/', $string) )
return $string;
$utf = qualify_utf8($string);
if ( $utf == 0 )
return $string; // ascii
if (seems_utf8($string)) {
if ( $utf > 0 ) {
$chars = array(
// Decompositions for Latin-1 Supplement
"\xc3\x80"=>'A', "\xc3\x81"=>'A',
@ -323,6 +333,9 @@ function remove_accents($string)
"\xc5\xba"=>'z', "\xc5\xbb"=>'Z',
"\xc5\xbc"=>'z', "\xc5\xbd"=>'Z',
"\xc5\xbe"=>'z', "\xc5\xbf"=>'s',
// Decompositions for Latin Extended-B
"\xc8\x98"=>'S', "\xc8\x99"=>'s',
"\xc8\x9a"=>'T', "\xc8\x9b"=>'t',
// Euro Sign
"\xe2\x82\xac"=>'E',
// GBP (Pound) Sign
@ -353,6 +366,23 @@ function remove_accents($string)
return $string;
}
if (function_exists('mb_strtolower') && defined('PWG_CHARSET'))
{
function transliterate($term)
{
return remove_accents( mb_strtolower($term, PWG_CHARSET) );
}
}
else
{
function transliterate($term)
{
return remove_accents( strtolower($term) );
}
}
/**
* simplify a string to insert it into an URL
*
@ -361,16 +391,14 @@ function remove_accents($string)
*/
function str2url($str)
{
$raw = $str;
$str = remove_accents($str);
$str = preg_replace('/[^a-z0-9_\s\'\:\/\[\],-]/','',strtolower($str));
$str = $safe = transliterate($str);
$str = preg_replace('/[^\x80-\xffa-z0-9_\s\'\:\/\[\],-]/','',$str);
$str = preg_replace('/[\s\'\:\/\[\],-]+/',' ',trim($str));
$res = str_replace(' ','_',$str);
if (empty($res))
{
$res = str_replace(' ','_', $raw);
$res = str_replace(' ','_', $safe);
}
return $res;
@ -1643,7 +1671,7 @@ function get_device()
{
include_once(PHPWG_ROOT_PATH.'include/mdetect.php');
$uagent_obj = new uagent_info();
if ($uagent_obj->DetectTierIphone())
if ($uagent_obj->DetectSmartphone())
{
$device = 'mobile';
}
@ -1677,7 +1705,6 @@ function mobile_theme()
{
$is_mobile_theme = get_boolean($_GET['mobile']);
pwg_set_session_var('mobile_theme', $is_mobile_theme);
unset($_GET['mobile']);
}
else
{

View file

@ -300,7 +300,7 @@ function tag_alpha_compare($a, $b)
{
if (!isset($cache[__FUNCTION__][ $tag['name'] ]))
{
$cache[__FUNCTION__][ $tag['name'] ] = strtolower(str2url($tag['name']));
$cache[__FUNCTION__][ $tag['name'] ] = transliterate($tag['name']);
}
}
@ -434,8 +434,9 @@ $btrace_msg
function get_tags_content_title()
{
global $page;
$title = count($page['tags']) > 1 ? l10n('Tag') : l10n('Tag');
$title.= ' ';
$title = '<a href="'.get_root_url().'tags.php" title="'.l10n('display available tags').'">'
. l10n( count($page['tags']) > 1 ? 'Tags' : 'Tag' )
. '</a> ';
for ($i=0; $i<count($page['tags']); $i++)
{
@ -454,12 +455,7 @@ function get_tags_content_title()
.trigger_event('render_tag_name', $page['tags'][$i]['name'])
.'</a>';
$remove_url = null;
if (count($page['tags']) == 1)
{
$remove_url = get_root_url().'tags.php';
}
else
if (count($page['tags']) > 2)
{
$other_tags = $page['tags'];
unset($other_tags[$i]);
@ -468,15 +464,15 @@ function get_tags_content_title()
'tags' => $other_tags
)
);
}
$title.=
'<a href="'.$remove_url.'" style="border:none;" title="'
.l10n('remove this tag from the list')
.'"><img src="'
.get_root_url().get_themeconf('icon_dir').'/remove_s.png'
.'" alt="x" style="vertical-align:bottom;">'
.'</a>';
$title.=
'<a href="'.$remove_url.'" style="border:none;" title="'
.l10n('remove this tag from the list')
.'"><img src="'
.get_root_url().get_themeconf('icon_dir').'/remove_s.png'
.'" alt="x" style="vertical-align:bottom;">'
.'</a>';
}
}
return $title;
}

View file

@ -60,7 +60,10 @@ function get_iptc_data($filename, $map)
foreach (array_keys($map, $iptc_key) as $pwg_key)
{
$result[$pwg_key] = $value;
// in case the origin of the photo is unsecure (user upload), we
// remove HTML tags to avoid XSS (malicious execution of
// javascript)
$result[$pwg_key] = strip_tags($value);
}
}
}
@ -90,10 +93,12 @@ function clean_iptc_value($value)
// apparently mac uses some MacRoman crap encoding. I don't know
// how to detect it so a plugin should do the trick.
$value = trigger_event('clean_iptc_value', $value);
$is_utf8 = seems_utf8($value);
$value = convert_charset( $value,
$is_utf8 ? 'utf-8' : 'iso-8859-1',
get_pwg_charset() );
if ( ($qual = qualify_utf8($value)) != 0)
{// has non ascii chars
$value = convert_charset( $value,
$qual>0 ? 'utf-8' : 'iso-8859-1',
get_pwg_charset() );
}
}
return $value;
}
@ -138,6 +143,13 @@ function get_exif_data($filename, $map)
}
}
foreach ($result as $key => $value)
{
// in case the origin of the photo is unsecure (user upload), we remove
// HTML tags to avoid XSS (malicious execution of javascript)
$result[$key] = strip_tags($value);
}
return $result;
}
?>

View file

@ -266,21 +266,6 @@ SELECT DISTINCT(id)
}
if (function_exists('mb_strtolower'))
{
function transliterate($term)
{
return remove_accents( mb_strtolower($term) );
}
}
else
{
function transliterate($term)
{
return remove_accents( strtolower($term) );
}
}
function is_word_char($ch)
{
return ($ch>='0' && $ch<='9') || ($ch>='a' && $ch<='z') || ($ch>='A' && $ch<='Z') || ord($ch)>127;

View file

@ -3,6 +3,22 @@
/* *******************************************
// Copyright 2010-2012, Anthony Hand
//
// File version date: April 23, 2012
// Update:
// - Updated DetectAmazonSilk(): Fixed an issue in the detection logic.
//
// File version date: April 22, 2012 - Second update
// Update: To address additional Kindle issues...
// - Updated DetectRichCSS(): Excluded e-Ink Kindle devices.
// - Created DetectAmazonSilk(): Created to detect Kindle Fire devices in Silk mode.
// - Updated DetectMobileQuick(): Updated to include e-Ink Kindle devices and the Kindle Fire in Silk mode.
//
// File version date: April 11, 2012
// Update:
// - Added a new variable for the new BlackBerry Curve Touch (9380): deviceBBCurveTouch.
// - Updated DetectBlackBerryTouch() to support the new BlackBerry Curve Touch (9380).
// - Updated DetectKindle(): Added the missing 'this' class identifier for the DetectAndroid() call.
//
// File version date: January 21, 2012
// Update:
// - Added the constructor method per new features in PHP 5.0: __construct().
@ -19,13 +35,6 @@
// Update:
// - Updated DetectAndroidTablet() to exclude Opera Mini, which was falsely reporting as running on a tablet device when on a phone.
//
// File version date: August 7, 2011
// Update:
// - The Opera for Android browser doesn't follow Google's recommended useragent string guidelines, so some fixes were needed.
// - Updated DetectAndroidPhone() and DetectAndroidTablet() to properly detect devices running Opera Mobile.
// - Created 2 new methods: DetectOperaAndroidPhone() and DetectOperaAndroidTablet().
// - Updated DetectTierIphone(). Removed the call to DetectMaemoTablet(), an obsolete mobile OS.
//
//
// LICENSE INFORMATION
// Licensed under the Apache License, Version 2.0 (the "License");
@ -113,6 +122,7 @@ class uagent_info
var $deviceBBBoldTouch = 'blackberry 99'; //Bold 99x0 (touchscreen)
var $deviceBBTour = 'blackberry96'; //Tour
var $deviceBBCurve = 'blackberry89'; //Curve2
var $deviceBBCurveTouch = 'blackberry 938'; //Curve Touch
var $deviceBBTorch = 'blackberry 98'; //Torch
var $deviceBBPlaybook = 'playbook'; //PlayBook tablet
@ -123,7 +133,8 @@ class uagent_info
var $engineBlazer = 'blazer'; //Old Palm browser
var $engineXiino = 'xiino'; //Another old Palm
var $deviceKindle = 'kindle'; //Amazon Kindle, eInk one.
var $deviceKindle = 'kindle'; //Amazon Kindle, eInk one
var $engineSilk = 'silk'; //Amazon's accelerated Silk browser for Kindle Fire
//Initialize variables for mobile-specific content.
var $vndwap = 'vnd.wap';
@ -494,13 +505,14 @@ class uagent_info
}
//**************************
// Detects if the current browser is a BlackBerry Touch phone
// device, such as the Storm, Torch, and Bold Touch. Excludes the Playbook.
// Detects if the current browser is a BlackBerry Touch phone device with
// a large screen, such as the Storm, Torch, and Bold Touch. Excludes the Playbook.
function DetectBlackBerryTouch()
{
{
if ((stripos($this->useragent, $this->deviceBBStorm) > -1) ||
(stripos($this->useragent, $this->deviceBBTorch) > -1) ||
(stripos($this->useragent, $this->deviceBBBoldTouch) > -1))
(stripos($this->useragent, $this->deviceBBBoldTouch) > -1) ||
(stripos($this->useragent, $this->deviceBBCurveTouch) > -1))
return $this->true;
else
return $this->false;
@ -709,7 +721,18 @@ class uagent_info
function DetectKindle()
{
if (stripos($this->useragent, $this->deviceKindle) > -1 &&
DetectAndroid() == $this->false)
$this->DetectAndroid() == $this->false)
return $this->true;
else
return $this->false;
}
//**************************
// Detects if the current Amazon device is using the Silk Browser.
// Note: Typically used by the the Kindle Fire.
function DetectAmazonSilk()
{
if (stripos($this->useragent, $this->engineSilk) > -1)
return $this->true;
else
return $this->false;
@ -725,7 +748,7 @@ class uagent_info
//Let's exclude tablets
if ($this->isTierTablet == $this->true)
return $this->false;
//Most mobile browsing is done on smartphones
if ($this->DetectSmartphone() == $this->true)
return $this->true;
@ -752,6 +775,11 @@ class uagent_info
if (stripos($this->useragent, $this->mobile) > -1)
return $this->true;
//We also look for Kindle devices
if ($this->DetectKindle() == $this->true ||
$this->DetectAmazonSilk() == $this->true)
return $this->true;
else
return $this->false;
}
@ -952,7 +980,9 @@ class uagent_info
{
if ($this->DetectMobileQuick() == $this->true)
{
if (($this->DetectTierIphone() == $this->true))
//Exclude iPhone Tier and e-Ink Kindle devices
if (($this->DetectTierIphone() == $this->true) ||
($this->DetectKindle() == $this->true))
return $this->false;
//The following devices are explicitly ok.
@ -969,8 +999,8 @@ class uagent_info
if ($this->DetectWindowsMobile() == $this->true)
return $this->true;
if (stripos($this->useragent, $this->engineTelecaQ) > -1)
return $this->true;
return $this->true;
//default
else
return $this->false;
@ -997,4 +1027,7 @@ class uagent_info
}
?>
//Was informed by a MobileESP user that it's a best practice
// to omit the closing ?&gt; marks here. They can sometimes
// cause errors with HTML headers.

View file

@ -41,6 +41,10 @@ SELECT
list($nb_photos) = pwg_db_fetch_row(pwg_query($query));
if (0 == $nb_photos)
{
// make sure we don't use the mobile theme, which is not compatible with
// the "no photo yet" feature
$template = new Template(PHPWG_ROOT_PATH.'themes', $user['theme']);
if (isset($_GET['no_photo_yet']))
{
if ('browse' == $_GET['no_photo_yet'])

View file

@ -78,28 +78,6 @@ class Template {
}
}
if (!isset($conf['combined_dir_checked']))
{
$dir = PHPWG_ROOT_PATH.PWG_COMBINED_DIR;
mkgetdir($dir, MKGETDIR_DEFAULT&~MKGETDIR_DIE_ON_ERROR);
if (!is_writable($dir))
{
load_language('admin.lang');
fatal_error(
sprintf(
l10n('Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'),
PWG_COMBINED_DIR
),
l10n('an error happened'),
false // show trace
);
}
if (function_exists('pwg_query')) {
conf_update_param('combined_dir_checked', 1);
}
}
$compile_dir = PHPWG_ROOT_PATH.$conf['data_location'].'templates_c';
mkgetdir( $compile_dir );
@ -127,7 +105,10 @@ class Template {
if ( !empty($theme) )
{
$this->set_theme($root, $theme, $path);
$this->set_prefilter( 'header', array('Template', 'prefilter_local_css') );
if (!defined('IN_ADMIN'))
{
$this->set_prefilter( 'header', array('Template', 'prefilter_local_css') );
}
}
else
$this->set_template_dir($root);
@ -529,7 +510,7 @@ class Template {
* handy in order to respect strict standards when <style> and <link>
* html elements must appear in the <head> element
*/
function block_html_head($params, $content, &$smarty, &$repeat)
function block_html_head($params, $content)
{
$content = trim($content);
if ( !empty($content) )
@ -538,7 +519,7 @@ class Template {
}
}
function block_html_style($params, $content, &$smarty, &$repeat)
function block_html_style($params, $content)
{
$content = trim($content);
if ( !empty($content) )
@ -547,13 +528,13 @@ class Template {
}
}
function func_define_derivative($params, &$smarty)
function func_define_derivative($params)
{
!empty($params['name']) or fatal_error('define_derivative missing name');
if (isset($params['type']))
{
$derivative = ImageStdParams::get_by_type($params['type']);
$smarty->assign( $params['name'], $derivative);
$this->smarty->assign( $params['name'], $derivative);
return;
}
!empty($params['width']) or fatal_error('define_derivative missing width');
@ -585,7 +566,7 @@ class Template {
}
}
$smarty->assign( $params['name'], ImageStdParams::get_custom($w, $h, $crop, $minw, $minh) );
$this->smarty->assign( $params['name'], ImageStdParams::get_custom($w, $h, $crop, $minw, $minh) );
}
/**
@ -600,11 +581,11 @@ class Template {
* param version - optional - plugins could use this and change it in order to force a
browser refresh
*/
function func_combine_script($params, &$smarty)
function func_combine_script($params)
{
if (!isset($params['id']))
{
$smarty->trigger_error("combine_script: missing 'id' parameter", E_USER_ERROR);
$this->smarty->trigger_error("combine_script: missing 'id' parameter", E_USER_ERROR);
}
$load = 0;
if (isset($params['load']))
@ -614,7 +595,7 @@ class Template {
case 'header': break;
case 'footer': $load=1; break;
case 'async': $load=2; break;
default: $smarty->trigger_error("combine_script: invalid 'load' parameter", E_USER_ERROR);
default: $this->smarty->trigger_error("combine_script: invalid 'load' parameter", E_USER_ERROR);
}
}
$this->scriptLoader->add( $params['id'], $load,
@ -624,11 +605,11 @@ class Template {
}
function func_get_combined_scripts($params, &$smarty)
function func_get_combined_scripts($params)
{
if (!isset($params['load']))
{
$smarty->trigger_error("get_combined_scripts: missing 'load' parameter", E_USER_ERROR);
$this->smarty->trigger_error("get_combined_scripts: missing 'load' parameter", E_USER_ERROR);
}
$load = $params['load']=='header' ? 0 : 1;
$content = array();
@ -694,7 +675,7 @@ var s,after = document.getElementsByTagName(\'script\')[document.getElementsByTa
return embellish_url($ret);
}
function block_footer_script($params, $content, &$smarty, &$repeat)
function block_footer_script($params, $content)
{
$content = trim($content);
if ( !empty($content) )
@ -714,7 +695,7 @@ var s,after = document.getElementsByTagName(\'script\')[document.getElementsByTa
* param version - optional - plugins could use this and change it in order to force a
browser refresh
*/
function func_combine_css($params, &$smarty)
function func_combine_css($params)
{
!empty($params['path']) || fatal_error('combine_css missing path');
$order = (int)@$params['order'];
@ -722,7 +703,7 @@ var s,after = document.getElementsByTagName(\'script\')[document.getElementsByTa
$this->css_by_priority[$order][] = array( $params['path'], $version);
}
function func_get_combined_css($params, &$smarty)
function func_get_combined_css($params)
{
return 'echo '.var_export(self::COMBINED_CSS_TAG,true);
}
@ -1343,7 +1324,9 @@ final class FileCombiner
$output .= "\n";
}
file_put_contents( PHPWG_ROOT_PATH . $file, $output );
mkgetdir( dirname(PHPWG_ROOT_PATH.$file) );
file_put_contents( PHPWG_ROOT_PATH.$file, $output );
@chmod(PHPWG_ROOT_PATH.$file, 0644);
$out_file = $file;
$out_version = false;
$this->clear();
@ -1364,8 +1347,11 @@ final class FileCombiner
private static function process_css($file)
{
$css = self::process_css_rec($file);
require_once(PHPWG_ROOT_PATH.'include/cssmin.class.php');
$css = CssMin::minify($css, array('Variables'=>false));
if (version_compare(PHP_VERSION, '5.2.4', '>='))
{
require_once(PHPWG_ROOT_PATH.'include/cssmin.class.php');
$css = CssMin::minify($css, array('Variables'=>false));
}
$css = trigger_event('combined_css_postfilter', $css);
return $css;
}

View file

@ -148,10 +148,23 @@ function ws_std_get_urls($image_row)
{
$ret = array();
$ret['page_url'] = make_picture_url( array(
'image_id' => $image_row['id'],
'image_file' => $image_row['file'],
)
);
$src_image = new SrcImage($image_row);
global $user;
if ($user['enabled_high'])
if ( $src_image->is_original() )
{// we have a photo
global $user;
if ($user['enabled_high'])
{
$ret['element_url'] = $src_image->get_url();
}
}
else
{
$ret['element_url'] = get_element_url($image_row);
}
@ -175,7 +188,7 @@ function ws_std_get_urls($image_row)
function ws_std_get_image_xml_attributes()
{
return array(
'id','element_url', 'file','width','height','hit','date_available','date_creation'
'id','element_url', 'page_url', 'file','width','height','hit','date_available','date_creation'
);
}
@ -205,6 +218,12 @@ function ws_getMissingDerivatives($params, &$service)
}
list($max_id, $image_count) = pwg_db_fetch_row( pwg_query('SELECT MAX(id)+1, COUNT(*) FROM '.IMAGES_TABLE) );
if (0 == $image_count)
{
return array();
}
$start_id = intval($params['prev_page']);
if ($start_id<=0)
{
@ -383,7 +402,6 @@ SELECT id
*/
function ws_categories_getImages($params, &$service)
{
@include_once(PHPWG_ROOT_PATH.'include/functions_picture.inc.php');
global $user, $conf;
$images = array();
@ -1020,7 +1038,6 @@ SELECT DISTINCT image_id
*/
function ws_images_getInfo($params, &$service)
{
@include_once(PHPWG_ROOT_PATH.'include/functions_picture.inc.php');
global $user, $conf;
$params['image_id'] = (int)$params['image_id'];
if ( $params['image_id']<=0 )
@ -1246,7 +1263,6 @@ function ws_images_search($params, &$service)
global $page;
$images = array();
include_once( PHPWG_ROOT_PATH .'include/functions_search.inc.php' );
include_once(PHPWG_ROOT_PATH.'include/functions_picture.inc.php');
$where_clauses = ws_std_image_sql_filter( $params, 'i.' );
$order_by = ws_std_image_sql_order($params, 'i.');
@ -1497,27 +1513,11 @@ function ws_images_add_chunk($params, &$service)
$upload_dir = $conf['upload_dir'].'/buffer';
// create the upload directory tree if not exists
if (!is_dir($upload_dir)) {
umask(0000);
if (!@mkdir($upload_dir, 0777, true))
{
return new PwgError(500, 'error during buffer directory creation');
}
}
if (!is_writable($upload_dir))
if (!mkgetdir($upload_dir, MKGETDIR_DEFAULT&~MKGETDIR_DIE_ON_ERROR))
{
// last chance to make the directory writable
@chmod($upload_dir, 0777);
if (!is_writable($upload_dir))
{
return new PwgError(500, 'buffer directory has no write access');
}
return new PwgError(500, 'error during buffer directory creation');
}
secure_directory($upload_dir);
$filename = sprintf(
'%s-%s-%05u.block',
$params['original_sum'],
@ -2165,7 +2165,6 @@ function ws_tags_getAdminList($params, &$service)
*/
function ws_tags_getImages($params, &$service)
{
@include_once(PHPWG_ROOT_PATH.'include/functions_picture.inc.php');
global $conf;
// first build all the tag_ids we are interested in
@ -2293,47 +2292,38 @@ function ws_categories_add($params, &$service)
include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
$options = array();
if (!empty($params['status']) and in_array($params['status'], array('private','public')))
{
$options['status'] = $params['status'];
}
if (!empty($params['visible']) and in_array($params['visible'], array('true','false')))
{
$options['visible'] = get_boolean($params['visible']);
}
if (!empty($params['commentable']) and in_array($params['commentable'], array('true','false')) )
{
$options['commentable'] = get_boolean($params['commentable']);
}
if (!empty($params['comment']))
{
$options['comment'] = $params['comment'];
}
$creation_output = create_virtual_category(
$params['name'],
$params['parent']
$params['parent'],
$options
);
if (isset($creation_output['error']))
{
return new PwgError(500, $creation_output['error']);
}
$updates = array();
if ( !empty($params['status']) and in_array($params['status'], array('private','public')) )
{
$updates['status'] = $params['status'];
}
if ( !empty($params['visible']) and in_array($params['visible'], array('true','false')) )
{
$updates['visible'] = $params['visible'];
}
if ( !empty($params['commentable']) and in_array($params['commentable'], array('true','false')) )
{
$updates['commentable'] = $params['commentable'];
}
if ( !empty($params['comment']) )
{
$updates['comment'] = strip_tags($params['comment']);
}
if (!empty($updates))
{
single_update(
CATEGORIES_TABLE,
$updates,
array('id'=>$creation_output['id'])
);
}
if ( isset($updates['status']) and 'private' == $updates['status'] )
{
add_permission_on_category($creation_output['id'], get_admins());
}
invalidate_user_cache();

View file

@ -59,6 +59,11 @@ class PwgXmlWriter
}
$this->_indentLevel++;
$this->_indent();
$diff = ord($name[0])-ord('0');
if ($diff>=0 && $diff<=9)
{
$name='_'.$name;
}
$this->_output( '<'.$name );
$this->_lastTagOpen = true;
array_push( $this->_elementStack, $name);

View file

@ -99,7 +99,12 @@ if (isset($page['is_homepage']) and $page['is_homepage'])
}
else
{
$canonical_url = duplicate_index_url();
$start = $page['nb_image_page'] * round($page['start'] / $page['nb_image_page']);
if ($start>0 && $start >= count($page['items']) )
{
$start -= $page['nb_image_page'];
}
$canonical_url = duplicate_index_url(array('start' => $start));
}
$template->assign('U_CANONICAL', $canonical_url);
@ -273,28 +278,6 @@ if ( $conf['index_sort_order_input']
}
}
if ( count($page['items']) > 0 )
{
$url = add_url_params(
duplicate_index_url(),
array('display' => '')
);
$selected_type = pwg_get_session_var('index_deriv', IMG_THUMB);
$type_map = ImageStdParams::get_defined_type_map();
unset($type_map[IMG_XXLARGE], $type_map[IMG_XLARGE]);
foreach($type_map as $params)
{
$template->append(
'image_derivatives',
array(
'DISPLAY' => l10n($params->type),
'URL' => $url.$params->type,
'SELECTED' => ($params->type == $selected_type ? true:false),
)
);
}
}
// category comment
if ($page['start']==0 and !isset($page['chronology_field']) and !empty($page['comment']) )
{
@ -322,6 +305,25 @@ if ( 0==$page['start']
if ( !empty($page['items']) )
{
include(PHPWG_ROOT_PATH.'include/category_default.inc.php');
$url = add_url_params(
duplicate_index_url(),
array('display' => '')
);
$selected_type = $template->get_template_vars('derivative_params')->type;
$template->clear_assign( 'derivative_params' );
$type_map = ImageStdParams::get_defined_type_map();
unset($type_map[IMG_XXLARGE], $type_map[IMG_XLARGE]);
foreach($type_map as $params)
{
$template->append(
'image_derivatives',
array(
'DISPLAY' => l10n($params->type),
'URL' => $url.$params->type,
'SELECTED' => ($params->type == $selected_type ? true:false),
)
);
}
}
//------------------------------------------------------- category informations

View file

@ -109,7 +109,11 @@ include(PHPWG_ROOT_PATH . 'include/config_default.inc.php');
@include(PHPWG_ROOT_PATH. 'local/config/config.inc.php');
defined('PWG_LOCAL_DIR') or define('PWG_LOCAL_DIR', 'local/');
include(PHPWG_ROOT_PATH . 'include/functions.inc.php');
// download database config file if exists
check_input_parameter('dl', $_GET, false, '/^[a-f0-9]{32}$/');
if (!empty($_GET['dl']) && file_exists(PHPWG_ROOT_PATH.$conf['data_location'].'pwg_'.$_GET['dl']))
{
$filename = PHPWG_ROOT_PATH.$conf['data_location'].'pwg_'.$_GET['dl'];
@ -156,7 +160,6 @@ if (@file_exists($config_file))
}
include(PHPWG_ROOT_PATH . 'include/constants.php');
include(PHPWG_ROOT_PATH . 'include/functions.inc.php');
include(PHPWG_ROOT_PATH . 'admin/include/functions.php');
include(PHPWG_ROOT_PATH . 'admin/include/languages.class.php');
@ -284,6 +287,9 @@ define(\'DB_COLLATE\', \'\');
// writing the configuration file
if ( !($fp = @fopen( $config_file, 'w' )))
{
// make sure nobody can list files of _data directory
secure_directory(PHPWG_ROOT_PATH.$conf['data_location']);
$tmp_filename = md5(uniqid(time()));
$fh = @fopen( PHPWG_ROOT_PATH.$conf['data_location'] . 'pwg_' . $tmp_filename, 'w' );
@fputs($fh, $file_content, strlen($file_content));

View file

@ -28,78 +28,7 @@ if (!defined('PHPWG_ROOT_PATH'))
// see http://piwigo.org/doc/doku.php?id=user_documentation:htaccess_and_hotlink_in_2.4
if (!isset($page['warnings'])) $page['warnings'] = array();
$upgrade_description = 'add/append htaccess for hotlinks';
$warning_message = 'Failed to modify <b>.htaccess</b> file, a manual intervention is needed, <a href="http://piwigo.org/doc/doku.php?id=user_documentation:htaccess_and_hotlink_in_2.4" target="_blank">click here for more information</a>';
$htaccess = PHPWG_ROOT_PATH.'/.htaccess';
$writable = true;
if (file_exists($htaccess))
{
if (!is_readable($htaccess) || !is_writable($htaccess))
{
$writable = false;
}
}
else
{
$writable = is_writable(PHPWG_ROOT_PATH);
}
if (!$writable)
{
array_push($page['warnings'], $warning_message);
$upgrade_description.= ': failed';
}
else
{
$content = file_exists($htaccess) ? file_get_contents($htaccess) : null;
if (strpos($content, 'RewriteEngine off') !== false)
{
array_push($page['warnings'], $warning_message);
$upgrade_description.= ': failed';
}
else
{
$content.= '
<IfModule mod_rewrite.c>';
if (strpos($content, 'RewriteEngine on') === false)
{
$content.='
RewriteEngine on';
}
if (!isset($conf['prefix_thumbnail']))
{
$conf['prefix_thumbnail'] = 'TN-';
}
if (!isset($conf['dir_thumbnail']))
{
$conf['dir_thumbnail'] = 'thumbnail';
}
$content.= '
## redirect <2.4 thumbnails hotlinks to i.php
RewriteRule ^upload/(.*)/'.preg_quote($conf['dir_thumbnail']).'/'.preg_quote($conf['prefix_thumbnail']).'(.*)\.([a-z0-9]{3,4})$ i.php?/upload/$1/$2-th.$3 [L]
RewriteRule ^galleries/(.*)/'.preg_quote($conf['dir_thumbnail']).'/'.preg_quote($conf['prefix_thumbnail']).'(.*)\.([a-z0-9]{3,4})$ i.php?/galleries/$1/$2-th.$3 [L]
## redirect <2.4 high-def hotlinks to original file
RewriteRule ^upload/(.*)/pwg_high/(.*)\.([a-z0-9]{3,4})$ upload/$1/$2.$3 [L]
RewriteRule ^galleries/(.*)/pwg_high/(.*)\.([a-z0-9]{3,4})$ galleries/$1/$2.$3 [L]
## redirect <2.4 low-def hotlinks to i.php
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?'.preg_quote($_SERVER['SERVER_NAME']).'/.*$ [NC]
RewriteRule ^upload/(.*)/(.*)\.([a-z0-9]{3,4})$ i.php?/upload/$1/$2-me.$3 [L]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?'.preg_quote($_SERVER['SERVER_NAME']).'/.*$ [NC]
RewriteRule ^galleries(.*)/(.*)\.([a-z0-9]{3,4})$ i.php?/galleries/$1/$2-me.$3 [L]
</IfModule>';
file_put_contents($htaccess, $content);
}
}
$upgrade_description = 'add/append htaccess for hotlinks (cancelled, see plugin "Hotlink Compatibility")';
echo

View file

@ -52,7 +52,7 @@ $to_apply = array_diff($existing, $applied);
$inserts = array();
foreach ($to_apply as $upgrade_id)
{
if ($upgrade_id >= 98)
if ($upgrade_id >= 112) // TODO change on each release
{
break;
}
@ -83,11 +83,18 @@ if (!empty($inserts))
ob_start();
echo '<pre>';
for ($upgrade_id = 112; $upgrade_id <= 127; $upgrade_id++)
for ($upgrade_id = 112; $upgrade_id <= 127; $upgrade_id++) // TODO change on each release
{
if (!file_exists(UPGRADES_PATH.'/'.$upgrade_id.'-database.php'))
{
break;
continue;
}
// maybe the upgrade task has already been applied in a previous and
// incomplete upgrade
if (in_array($upgrade_id, $applied))
{
continue;
}
unset($upgrade_description);

View file

@ -213,7 +213,7 @@ $lang['Allow user registration'] = 'Laat gebruiker registrasie toe';
$lang['Allow users to delete their own comments'] = 'Laat gebruikers to om eie opmerkings te verwyder';
$lang['Allow users to edit their own comments'] = 'Laat gebruikers to om eie opmerkings te verander';
$lang['Allowed file types: %s.'] = 'Toegelate lêertipes: %s';
$lang['An error has occured during extract. Please check files permissions of your piwigo installation.<br><a href="%s">Click here to show log error</a>.'] = '%s is suksesvol opgedateer.';
$lang['An error has occured during extract. Please check files permissions of your piwigo installation.<br><a href="%s">Click here to show log error</a>.'] = 'Daar was \'n fout tydens ontrekking. Gaan asseblief lêer toestemmings van jou Piwigo installasie na. <br><a href="%s">Kliek hier om die loglêer te wys</a>.';
$lang['An error has occured during upgrade.'] = 'Daar was \'n fout tydens opgradering.';
$lang['An information email was sent to group "%s"'] = 'Al %d fotos is geselekteer';
$lang['Anyway only webmasters can see this tab and never administrators.'] = 'Slegs webmeesters, nie administrateurs, kan hierdie lip sien.';
@ -601,7 +601,6 @@ $lang['By default, the center of interest is placed in the middle of the photo.'
$lang['Caddie management'] = 'Bewerk mandjie';
$lang['Correction applied with error'] = 'Fout tydens regstelling';
$lang['Correction applied with success'] = 'Regstelling suksesvol gemaak';
$lang['Create a new site : (give its URL to create_listing_file.php)'] = 'Skep nuwe webtuiste : (gee sy adres aan create_listing_file.php)';
$lang['Delete multiple size images'] = 'Verwyder multi-grootte beelde';
$lang['Deletions'] = 'Verwyderings';
$lang['Deny selected groups'] = 'Verbied geselekteerde groepe';
@ -658,7 +657,7 @@ $lang['Group'] = 'Groep';
$lang['High definition enabled'] = 'Hoë skerpheid is aktief';
$lang['Hoverbox display'] = 'Sweefskerm';
$lang['I decide to update anyway'] = 'Ek wil inelkgeval opdateer';
$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'As hoëresolusie nie beskikbaar is nie, en die huidige webgrootte-kopie groter is as die normale webgrootte, dan sal Piwigo die huidige kopie as hoëresolusie gebruik en \'n nuwe webgrootte-kopie maak.';
$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'As hoë resolusie nie beskikbaar is nie, en die huidige webgrootte-kopie groter is as die normale webgrootte, sal Piwigo die huidige kopie as hoë resolusie gebruik en \'n nuwe webgrootte-kopie maak.';
$lang['If you encounter problems or have any question, please send a message to'] = 'Indien jy enige probleme, klagtes of kommentaar het, stuur \'n e-pos aan';
$lang['Ignore selected anomalies'] = 'Ignoreer geselekteerde onreëlmatighede';
$lang['Images manual order was saved'] = 'Stoor handmatig-gekose volgorde';
@ -754,7 +753,7 @@ $lang['set to'] = 'stel na';
$lang['status'] = 'status';
$lang['Cannot delete the old permalink !'] = 'Die ou permaskakel kan nie verwyder word nie!';
$lang['Center of interest'] = 'Fokusmiddelpunt';
$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = 'Bly betrokke by die Piwigo-projek deur in ste skryf vir die Piwigo Afkondingings-nuusbrief. Jy sal \'n e-pos ontvang as \'n nuwe weergawe uitgegee word of as daar enige ander groot nuus rakende die projek is. Dit is gewoonlik net enkele e-posse per jaar.';
$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = 'Bly betrokke by die Piwigo-projek deur in te skryf vir die Piwigo Afkondingings-nuusbrief. Jy sal \'n e-pos ontvang as \'n nuwe weergawe uitgegee word of as daar enige ander groot nuus rakende die projek is. Dit is gewoonlik net enkele e-posse per jaar.';
$lang['Languages which need upgrade'] = 'Tale wat opgedateer moet word';
$lang['Last hit'] = 'Onlangste besoek';
$lang['Learn more'] = 'Ek wil meer weet';
@ -782,7 +781,7 @@ $lang['Purge history detail'] = 'Verwyder gedetailleerde geskiedenis';
$lang['Purge history summary'] = 'Verwyder opsommende geskiedenis';
$lang['Purge search history'] = 'Verwyder soek-geskiedenis';
$lang['Read Piwigo Documentation'] = 'Lees Piwigo dokumentasie';
$lang['Replacers (customized templates)'] = 'Vervang (eie sjablone)';
$lang['Replacers (customized templates)'] = 'Vervang (aangemete sjablone)';
$lang['Reset ignored updates'] = 'Hou op opdaterings ignoreer';
$lang['Resize'] = 'Verander grootte';
$lang['Restore default configuration. You will lose your plugin settings!'] = 'Herstel standaard-opstelling. Jy sal jou uitbreidings se instellings verloor.';
@ -810,7 +809,7 @@ $lang['You might go to plugin list to install and activate it.'] = 'Gaan na die
$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = 'Jy moet verkieslik jou stelsel opdateer om die program ten volle te kan gebruik, anders kan daar nie probleme voorkom nie.';
$lang['apply automatic sort order'] = 'Sorteer outomaties';
$lang['cancel manual order'] = 'Kanselleer handmatige volgorde';
$lang['custom'] = 'Eie keuse';
$lang['custom'] = 'Aangemeet';
$lang['overrides existing values with empty ones'] = 'vervang bestaande waardes met leë waardes';
$lang['pending validation'] = 'wag vir goedkeuring';
$lang['public'] = 'publiek';
@ -828,4 +827,100 @@ $lang['Give write access (chmod 777) to "%s" directory at the root of your Piwig
$lang['Information data registered in database'] = 'Inligting aangeteken in databasis';
$lang['Invert'] = 'Keer om';
$lang['Language has been successfully installed'] = 'Taal is suksesvol geïnstalleer';
$lang['<em>Piwigo for Android</em> application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = '<em>Piwigo vir Android</em> toepassing stel jou in staat om met jou Android foon of tablet aan jou Piwigo gallery te verbind, albums te skep en fotos op te laai.';
$lang['<em>Piwigo for iOS</em> application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = '<em>Piwigo vir iOS</em> toepassing stel jou in staat om met jou iPhone, iPad of iPad touch aan jou Piwigo gallery te verbind, albums te skep en fotos op te laai.';
$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom is fotografie sagteware wat ontwerp is om groot hoeveelhede digitale beelde te administreer en postproduksie werk te doen.';
$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture is \'n kragtige pakket om beelde te verwerk en groot biblioteke op Mac te hanteer.';
$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture is ontwerk vir professionele fotograwe met iPhoto eenvoudigheid.';
$lang['Bound Theme'] = 'Gebonde tema';
$lang['By rank'] = 'Volgens rangorde';
$lang['Follow Orientation'] = 'Volg oriëntasie';
$lang['Hit'] = 'Tref';
$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'In jou php.ini lêer is die upload_max_filesize (%sB) groter as die post_max_size (%sB). Jy moet hierdie verstelling verander';
$lang['Include display of recent photos grouped by dates'] = 'Sluit in die vertoon van onlangse fotos gegroepeer volgens datum';
$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Sluit geskiedkundige data in (Waarskuwing: bediener geheue limiet kan oorskrei word)';
$lang['Link all album photos to a new album'] = 'Koppel alle album fotos aan \'n nuwe album';
$lang['Link all album photos to some existing albums'] = 'Koppel alle album fotos aan sommige bestaande albums';
$lang['Linked albums'] = 'Gekoppelde albums';
$lang['Local'] = 'Plaaslik';
$lang['Mail address is obligatory for all users'] = 'Epos adres is verpligtend vir alle gebruikers';
$lang['Manage authorizations for selected albums'] = 'Beheer regte vir gekose albums';
$lang['Manage permissions for group "%s"'] = 'Bheer regte vir die groep "%s"';
$lang['Manage permissions for user "%s"'] = 'Bheer regte vir die gebruiker "%s"';
$lang['Manage photo ranks'] = 'Beheer foto rangordes';
$lang['Maximum file size: %sB.'] = 'Maksimum lêer groote: %sB';
$lang['Metadata synchronization results'] = 'Metadata sinchronisasie resultate';
$lang['Metadata synchronized from file'] = 'Metadata sinchronisasie vanaf lêer';
$lang['Miscellaneous'] = 'Allerlei';
$lang['Missing Plugins'] = 'Vermiste Invoegsels';
$lang['Missing a temporary folder'] = 'Vermis \'n tydelike gids';
$lang['No destination tag selected'] = 'Geen bestemming etiket gekies nie';
$lang['No user to send notifications by mail.'] = 'Geen gebruikers vir epos inkennisstelling';
$lang['Number of downloads'] = 'Aantal aflaaie';
$lang['Number of rates'] = 'Aantal graderings';
$lang['Number of thumbnails to create'] = 'Aantal duimnaels om te skep';
$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'Op jou Linux, installeer eenvoudig Shotwell met jou pakketbeheerder en aktiveer die Piwigo publikasie opsie.';
$lang['Operating system'] = 'Bedryfstelsel';
$lang['Operation in progress'] = 'Behandeling onderweg.';
$lang['Optimizations have been completed with some errors.'] = 'Optimalisasies is met \'n paar foute voltooi.';
$lang['Optional URL keyword'] = 'Opsionele URL sleutelwoord';
$lang['Options'] = 'Keuses';
$lang['Order of menubar items has been updated successfully.'] = 'Volgorde van kieslys items is suksesvol opgedateer.';
$lang['Original templates'] = 'Oorspronklike template';
$lang['Photos generation in progress...'] = 'Besig met fotoskepping...';
$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo kan nie opgraderingslêer van bediener verkry nie';
$lang['Piwigo export plugin for Aperture'] = 'Piwigo uitvoer invoeging vir Aperture';
$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = 'Gaan asseblief "plugins" subgids se toestemmings na (CHMOD).';
$lang['Predefined filter'] = 'Voorafopgestelde filter';
$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = 'Die tyd om die lys van gebruikers vir wie epos gestuur word voor te berei, is beperk. Ander gebruikers word nie gelys nie.';
$lang['Purge never used notification feeds'] = 'Maak ongebruikte kennisname strome skoon';
$lang['Purge sessions'] = 'Maak sessies skoon';
$lang['Quick Local Synchronization'] = 'Vinnige Plaaslike Sinchronisasie';
$lang['Rate date'] = 'Gradeer datum';
$lang['Rating by guests'] = 'Gradering deur gaste';
$lang['Rating'] = 'Gradering';
$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (RemoteGallery client for Android) is \'n oopbron (GPL v3) Piwigo kliënt vir die Android dek.';
$lang['Refresh photo set'] = 'Herlaai fotostel';
$lang['Reinitialize check integrity'] = 'Hervat integriteit nasiening';
$lang['Remote'] = 'Afstand';
$lang['Remove from caddie'] = 'Verwyder uit mandjie';
$lang['Replacement of original templates by customized templates from template-extension subfolder'] = 'Vervanging van oorspronklike sjablone deur aangemete sjablone uit die sjabloon-uitbreidings subgids';
$lang['Resize after upload'] = 'Verander grootte na oplaai';
$lang['Send an information email to group members'] = 'Stuur \'n inligtings-epos aan groep lede';
$lang['Send connection settings by email'] = 'Stuur verbindingsverstellings deur epos';
$lang['Set creation date'] = 'Stel skeppingsdatum';
$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell is \'n oopbron digitale fotobeheerder wat op Linux loop. Dit is die verstek fotobeheerder in Ubuntu en Fedora.';
$lang['Status of user "%s" updated'] = 'Gebruiker "%s" status opdateer';
$lang['Subscribe/unsubscribe users'] = 'Gebruikers Inteken/afteken ';
$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = 'Intekenaars kan slegs gelys word (beskikbaar) as daar nuwe elemente is om in kennis te stel.';
$lang['Sum of rates'] = 'Totaal van graderings';
$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'Die Piwigo uitvoer invoegsel laat jou toe om albums te skep en fotos uit te voer.';
$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'Die Piwigo publiseer invoegsel laat jou toe om fotos direk uit Lightroom na jou Piwigo gallery op te laai en te sinchroniseer.';
$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Die opgelaaide lêer is groter as die MAX_FILE_SIZE opdrag wat in die HTML vorm gespesifiseer is';
$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Die opgelaaide lêer is groter as die upload_max_filesize opdrag in php.ini: %sB';
$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Die opgelaaide lêers is groter as die upload_max_filesize opdrag in php.ini: %sB';
$lang['Time to send mail is limited. Others mails are skipped.'] = 'Die beskikbare tyd om epos te stuur is beperk. Ander eposse is oorgeslaan.';
$lang['Toggle \'default group\' property'] = 'Draai \'verstek groep\' eienskap om';
$lang['Warning: subscribing or unsubscribing will send mails to users'] = 'Waarskuwing: inteken of afteken sal epos na gebruikers stuur';
$lang['You are running on development sources, no check possible.'] = 'Jy gebruik ontwikkelaarskode, geen nasiening moontlik nie.';
$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Jy kan nie \'n verstek foto volgorde kies nie want jy het \'n aangemete verstelling in jou lokale konfigurasie.';
$lang['You have specified <i>$conf[\'order_by\']</i> in your local configuration file, this parameter in deprecated, please remove it or rename it into <i>$conf[\'order_by_custom\']</i> !'] = 'Jy het <i>$conf[\'order_by\']</i> in jou lokale konfigurasie gespesifiseer. Hierdie parameter is afgekeur. Verwyder dit of vernoem dit na <i>$conf[\'order_by_custom\']</i>!';
$lang['create a new site'] = 'skep \'n nuwe werf';
$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam is \'n gevorderde gratis foto hanteringsagteware pakket vir Linux, Windows en MacOSX.';
$lang['global mode'] = 'globale modus';
$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto is die verstek fotohanteringsagteware op MacOSX. Die Piwigo uitvoer invoegsel laat jou nuwe albums skep en direk fotos van iPhoto na jou Piwigo gallery oplaai.';
$lang['manage album photos'] = 'beheer album fotos';
$lang['no write access'] = 'geen skryf regte';
$lang['on the %d selected photos'] = 'op die %d gekose fotos';
$lang['only perform a simulation (no change in database will be made)'] = 'doen net \'n simulasie (niks sal in die databasis verander word nie)';
$lang['pLoader stands for <em>Piwigo Uploader</em>. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader is kort vir <em>Piwigo Uploader</em>. pLoader berei fotos voor op jou rekenaar en dra dit oor na jou Piwigo fotogallery.';
$lang['photos candidates for metadata synchronization'] = 'foto kandidate vir metadata sinchronisasie';
$lang['photos informations synchronized with files metadata'] = 'foto inligting gesinchroniseerd met lêer metadata';
$lang['reduce to single existing albums'] = 'verminder na enkel bestaande albums';
$lang['unset'] = 'onstel';
$lang['No order field selected'] = 'Geen veld om volgens te sorteer is gekies nie';
$lang['Duplicate selected tags'] = 'Dupliseer gekose etikette';
$lang['Name of the duplicate'] = 'Naam van die duplikaat';
$lang['Source tag'] = 'Bron etiket';
$lang['Tag "%s" is now a duplicate of "%s"'] = 'Etiket "%s" is nou \'n duplikaat van "%s"';
?>

View file

@ -22,7 +22,7 @@
// +-----------------------------------------------------------------------+
/*
Language Name: Afrikaans [ZA]
Version: 2.3.0
Version: 2.4.0
Language URI: http://piwigo.org/ext/extension_view.php?eid=572
Author: Marius Loots and Mignon Smit
Author URI: http://piwigo.org

View file

@ -305,7 +305,6 @@ $lang['selection'] = 'الاختيار';
$lang['set to'] = 'أعـد لـ ';
$lang['singly represented'] = 'نوصيف او تمثيل منفرد';
$lang['This site already exists'] = 'هذا الموقع موجود بالفعل';
$lang['Create a new site : (give its URL to create_listing_file.php)'] = 'إنشاء موقع جديد : (إعطاء عنوان لcreate_listing_file.php)';
$lang['created'] = 'تم الانشاء';
$lang['delete'] = 'حـذف';
$lang['delete this site and all its attached elements'] = 'احذف هذا الموقع بكل عناصره المرتبطه به';
@ -922,4 +921,10 @@ $lang['%d physicals'] = '%d مادي';
$lang['%d week'] = '%d أسبوع';
$lang['%d weeks'] = '%d أسابيع';
$lang['Edit photo'] = ' تحرير الصورة';
$lang['No order field selected'] = 'لم يتم اختيار أي خافة';
$lang['create a new site'] = 'انشأ موقع جديد';
$lang['Duplicate selected tags'] = 'كرر الكلمه الدائليه المحددة';
$lang['Name of the duplicate'] = 'تسميه المكرر';
$lang['Source tag'] = 'مصدر الكلمه الدلائليه';
$lang['Tag "%s" is now a duplicate of "%s"'] = 'الكلمه الدلائليه "%s" كررت لـ "%s"';
?>

View file

@ -22,7 +22,7 @@
// +-----------------------------------------------------------------------+
/*
Language Name: العربية [AR]
Version: 2.3.0
Version: 2.4.0
Language URI: http://piwigo.org/ext/extension_view.php?eid=412
Author: Piwigo team
Author URI: http://piwigo.org

View file

@ -2,7 +2,7 @@
// +-----------------------------------------------------------------------+
// | Piwigo - a PHP based photo gallery |
// +-----------------------------------------------------------------------+
// | Copyright(C) 2008-2012 Piwigo Team http://piwigo.org |
// | Copyright(C) 2008-2013 Piwigo Team http://piwigo.org |
// | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net |
// | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick |
// +-----------------------------------------------------------------------+
@ -390,4 +390,409 @@ $lang['existing album'] = 'съществуващ албум';
$lang['guest'] = 'гост';
$lang['hide details'] = 'скриване на детайли';
$lang['high'] = 'високо';
$lang['Unlocked'] = 'Отключен';
$lang['Uncheck all'] = 'Отказване на всички';
$lang['Uninstall'] = 'Деинсталация';
$lang['To send ?'] = 'За изпращане?';
$lang['Templates'] = 'Шаблони';
$lang['Support'] = 'Подръжка';
$lang['Status'] = 'Статус';
$lang['Statistics'] = 'Статистика';
$lang['Show info'] = 'Показване на инфо';
$lang['Settings'] = 'Настройки';
$lang['Send'] = 'Изпращане';
$lang['Selection'] = 'Селекция';
$lang['Select:'] = 'Избери:';
$lang['Searching...'] = 'Търсене...';
$lang['Section'] = 'Раздел';
$lang['Save Template Directory'] = 'Запази шаблона директория';
$lang['Save Settings'] = 'Запази настройките';
$lang['Restore'] = 'Възстанови';
$lang['Resize'] = 'Преоразмеряване';
$lang['Refresh'] = 'Опресняване';
$lang['Random photo'] = 'Пройзволна снимка';
$lang['Rating'] = 'Рейтинг';
$lang['Please wait...'] = 'Моля изчакайте...';
$lang['Plugins'] = 'Plugins';
$lang['Public / Private'] = 'Частен/Публичен';
$lang['Public'] = 'Публичен';
$lang['Properties'] = 'Свойства';
$lang['Private'] = 'Частен';
$lang['Position'] = 'Позиция';
$lang['Plugins which need upgrade'] = 'Plugins налични за обновяване';
$lang['Piwigo version'] = 'Piwigo версия';
$lang['Piwigo for Android'] = 'Piwigo за Android';
$lang['Piwigo configuration'] = 'Piwigo конфигурация';
$lang['Piwigo Administration'] = 'Piwigo Администриране';
$lang['Piwigo Update'] = 'Piwigo Update';
$lang['Piwigo Uploader'] = 'Piwigo Uploader';
$lang['Parameters'] = 'Параметри';
$lang['Photos'] = 'Снимки';
$lang['Photo Page'] = 'Фото страница';
$lang['Permissions'] = 'Разрешения';
$lang['Path'] = 'Път';
$lang['Parameter'] = 'Настройки';
$lang['Page end'] = 'Край на страница';
$lang['Original templates'] = 'Оргинални шаблони';
$lang['Options'] = 'Опции';
$lang['Operating system'] = 'Операционна система';
$lang['None'] = 'Нищо';
$lang['No results'] = 'Няма резултати';
$lang['New tag'] = 'Нов таг';
$lang['New name'] = 'Ново име';
$lang['New Version'] = 'Нова версия';
$lang['Month'] = 'Месец';
$lang['Move'] = 'Премести';
$lang['Menu Management'] = 'Менюта';
$lang['Members'] = 'Членове';
$lang['Lock'] = 'Заключи';
$lang['Lock albums'] = 'Заключи албум';
$lang['Lock gallery'] = 'Заключи галерия';
$lang['Locked'] = 'Заключен';
$lang['Local'] = 'Локален';
$lang['Languages'] = 'Езици';
$lang['Install'] = 'Инсталиране';
$lang['Image id'] = 'Номер снимка';
$lang['Image Quality'] = 'Качество на снимка';
$lang['Ignore selected anomalies'] = 'Игнориране на избраните аномалии';
$lang['Ignore this update'] = 'Игнориране на този ъпдейт';
$lang['Ignore All'] = 'Игнориране на всички';
$lang['IP'] = 'IP адрес';
$lang['Hour'] = 'Час';
$lang['History'] = 'История';
$lang['Guest cannot be deleted'] = '"Гост" не може да бъде изтрит';
$lang['Help Me'] = 'Помощ';
$lang['Guest Settings'] = 'Настройки на "Гост"';
$lang['Groups'] = 'Групи';
$lang['Group name'] = 'Име на група';
$lang['Group'] = 'Група';
$lang['Edit ranks'] = 'Редакция на ранговете';
$lang['Documentation'] = 'Документация';
$lang['Thumbnail'] = 'Миниатюри';
$lang['Themes'] = 'Теми';
$lang['Tools'] = 'Инструменти';
$lang['Title'] = 'заглавие';
$lang['Time'] = 'Време';
$lang['User list'] = 'Списък на потребителите';
$lang['User'] = 'Потребител';
$lang['Uploaded Photos'] = 'Качени снимки';
$lang['Upload'] = 'Качване';
$lang['Updates'] = 'Обновявания';
$lang['Update albums informations'] = 'Обновяване на информацията в албумите';
$lang['Update Complete'] = 'Обнавяването е завършено';
$lang['Update All'] = 'Обновяване на всички';
$lang['errors during synchronization'] = 'грешки по време на синхронизация';
$lang['default values'] = 'настройки по подразбиране';
$lang['create a new site'] = 'създаване на нов сайт';
$lang['cancel manual order'] = 'отказване на ръчна заявка';
$lang['Validate'] = 'Потвърдено';
$lang['Webmaster status is required.'] = 'Статуса на уебмастъра е необходим.';
$lang['Webmaster cannot be deleted'] = 'Уебмастъра не може да бъде изтрит';
$lang['Visit Piwigo project website'] = 'Посети Piwigo уебсайта проекти';
$lang['Visit language site'] = 'Виж езиковият сайт';
$lang['Visit plugin site'] = 'Виж сайта на добавката';
$lang['Visit theme site'] = 'Виж сайта на темата';
$lang['Waiting'] = 'В очакване';
$lang['Visit Gallery'] = 'Посети галерията';
$lang['Virtual Links'] = 'Виртуален линк';
$lang['Validation'] = 'Потвърждение';
$lang['User status'] = 'Статус на потребител';
$lang['Users'] = 'Потребител';
$lang['jump to album'] = 'директно към албума';
$lang['jump to photo'] = 'директно към снимката';
$lang['global mode'] = 'глобален начин';
$lang['for this file format'] = 'за този файлов формат';
$lang['for the file format'] = 'за файлов формат';
$lang['display'] = 'екран';
$lang['number of miniaturized photos'] = 'брой на създадените миниатюри';
$lang['manage album photos'] = 'редактиране на албума снимки';
$lang['photos deleted from the database'] = 'снимките са изтрити в базата данни';
$lang['photos added in the database'] = 'снимките са добавени в базата данни';
$lang['pending validation'] = 'в очакване на потвърждаване';
$lang['other'] = 'друг';
$lang['only directories'] = 'само за директории';
$lang['manage sub-albums'] = 'администриране на под-албумите';
$lang['manual order'] = 'ръчна заявка';
$lang['modified'] = 'променен';
$lang['new'] = 'нов';
$lang['none'] = 'никой';
$lang['nothing'] = 'нищо';
$lang['no write access'] = 'забранен запис';
$lang['reduce to single existing albums'] = 'намали до еденични съществуващите албуми';
$lang['photos informations synchronized with files metadata'] = 'информацията за снимките е синхронизирана с файловете метаданни';
$lang['photos per page'] = 'снимки на страница';
$lang['photos updated in the database'] = 'снимката е актуализирана в базата данни';
$lang['randomly represented'] = 'пройзволнен албум миниатюри';
$lang['public'] = 'обществен';
$lang['private'] = 'частен';
$lang['pixels'] = 'пиксели';
$lang['ranks'] = 'ранг';
$lang['registration date'] = 'регистрационна дата';
$lang['remove author'] = 'премахване на автора';
$lang['remove creation date'] = 'премахване датата на създаване';
$lang['remove tags'] = 'премахване на тагове';
$lang['remove this filter'] = 'премахване на този филтър';
$lang['remove title'] = 'премахване на заглавие';
$lang['selection'] = 'избор';
$lang['set to'] = 'задай';
$lang['show details'] = 'показване детайли';
$lang['singly represented'] = 'фиксиран албум миниатюри';
$lang['status'] = 'статус';
$lang['target'] = 'цел';
$lang['test this remote site'] = 'тест на този отдалечен сайт';
$lang['synchronize files metadata with database photos informations'] = 'синхронизиране на базата данни на снимките с файловете мета данни ';
$lang['synchronize files structure with database'] = 'синхронизиране на файловата структура с базата данни';
$lang['user_status_generic'] = 'Основен';
$lang['user_status_admin'] = 'Администратор';
$lang['user "%s" added'] = 'потребител "%s" добавен';
$lang['update the database from files'] = 'обновяване на базата данни с файлове';
$lang['unset'] = 'незададено';
$lang['unit mode'] = 'единичен режим';
$lang['unknown'] = 'непознат';
$lang['the wiki'] = 'уйкипедията';
$lang['total time'] = 'общо време';
$lang['the forum'] = 'форумът';
$lang['test'] = 'тест';
$lang['sub-albums'] = 'под-албум';
$lang['Graphics Library'] = 'Графична библиотека';
$lang['General statistics'] = 'Обща статистика';
$lang['Installed Languages'] = 'Инсталирани езици';
$lang['Install on your computer,'] = 'Инсталирай на твоя компютър,';
$lang['Main'] = 'Основен';
$lang['Invert'] = 'Обърни';
$lang['Maximum width'] = 'Максимална ширина';
$lang['Maximum height'] = 'Максимална височина';
$lang['Manual order'] = 'Ръчна заявка';
$lang['Manage Permissions'] = 'Промяна на достъпа';
$lang['Main Page'] = 'Основна страница';
$lang['New photos added'] = 'Нови снимки добавени';
$lang['Move albums'] = 'Преместване на албуми';
$lang['Page banner'] = 'Банер на страница';
$lang['Overall'] = 'Преглед';
$lang['Permission granted'] = 'Достъпът потвърден';
$lang['Permission denied'] = 'Достъпът отказан';
$lang['Read Piwigo Documentation'] = 'Прочети Piwigo Документация';
$lang['Plugin list'] = 'Лист Плъгини (Добавки)';
$lang['Remove all filters'] = 'Примахни всички филтри';
$lang['Set author'] = 'Задай автор';
$lang['Show menubar'] = 'Показване на лентата с менюто';
$lang['Set title'] = 'Задай заглавие';
$lang['Set creation date'] = 'Задай дата на създаване';
$lang['Send mail to users'] = 'Напишете имейл да потребител';
$lang['Send mail as'] = 'Напишете ни имейл';
$lang['Synchronize'] = 'Синхронизация';
$lang['Site manager'] = 'Сайт менаджер';
$lang['Simulation'] = 'Симулация';
$lang['The gallery URL is not valid.'] = 'Адреса на галерията е невалиден.';
$lang['The whole page'] = 'Цялата страница';
$lang['Update to Piwigo %s'] = 'Актуализирай до Piwigo %s';
$lang['Unable to check for upgrade.'] = 'Невъзможна е проверката за актуализации';
$lang['Two updates are available'] = 'Две актуализации са налични';
$lang['Uninstalled Plugins'] = 'Деинсталирани Плъгини';
$lang['Type here the title'] = 'Въведете заглавие';
$lang['Type here the author name'] = 'Въведете името на автора';
$lang['This site already exists'] = 'Сайта вече съществува';
$lang['leave'] = 'оставяне';
$lang['<em>Piwigo for Android</em> application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = '<em>Piwigo за Android</em> приложение ви позволява да свържете вашия Android телефон или таблица, с вашата галерия Piwigo,и да създавате няколко албума или да качване няколко снимки наведнъж.';
$lang['<em>Piwigo for iOS</em> application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = '<em> Piwigo за IOS </ EM> приложението, което дава възможност да се свържете към вашата галерия Piwigo от вашия iPhone, IPAD или IPod Touch,и да създаване няколко албума или да качване няколко снимки наведнъж.';
$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom е фотографски софтуер, предназначени за управление на големи количества цифрови изображения и публикуването им след редактирането.';
$lang['An error has occured during extract. Please check files permissions of your piwigo installation.<br><a href="%s">Click here to show log error</a>.'] = 'Възникнала е грешка по време на извличането.Моля,проверете файловите разрешения на вашата Piwigo инсталация.<br><a href="%s">Кликнете тук за да видите грешката</a>.';
$lang['An error has occured during upgrade.'] = 'Възникнала е грешка по време на ъпгрейд.';
$lang['An error occured during extraction (%s).'] = 'Възникнала е грешка по време на файловата(%s)екстракция.';
$lang['An information email was sent to group "%s"'] = 'Информационен имейл, изпратен към групата"%s"';
$lang['Anyway only webmasters can see this tab and never administrators.'] = 'Както и да е само уебмастъри могат да видят този раздел, не администраторите.';
$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture е мощен инструмент за обработка на изображения и управление на огромни библиотеки на Mac.';
$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture е предназначена за професионални фотографи с iPhoto.';
$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Приблизително максимална резолюция: %dM пиксела (това %dx%d пиксела).';
$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = 'Сигурен ли сте, че искате да инсталирате този ъпгрейд?Трябва да се провери дали тази версия не се нуждае от предварително деинсталиране.';
$lang['Are you sure you want to delete this plugin?'] = 'Сигурен ли сте, че искате да изтриете този плъгин?';
$lang['Are you sure you want to install this plugin?'] = 'Сигурен ли сте, че искате да инсталирате този плъгин?';
$lang['Authorize users to add comments on selected albums'] = 'Разрешаване на потребителите да добавят коментари в избрани албуми';
$lang['Automatic sort order'] = 'Автоматично подреждане';
$lang['Bound Theme'] = 'Bound Тема';
$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'По подразбиране, Piwigo ще създаде нов уебразмер от HD (висока разделителна способност) версия на снимката.';
$lang['By default, the center of interest is placed in the middle of the photo.'] = 'По подразбиране,центъра на интерес се поставя в средата на снимката.';
$lang['Caddie'] = 'Caddie';
$lang['between %.2f and %.2f'] = 'между%.2fи%.2f';
$lang['between %d and %d pixels'] = 'между%dи%dпиксела';
$lang['delete this site and all its attached elements'] = 'изтрийте този сайт с цялата информация свързана с него';
$lang['dissociate from group'] = 'разграничи от групата';
$lang['first photo added on %s'] = 'първа снимка добавена% S';
$lang['group "%s" added'] = 'група "% S", добави';
$lang['group "%s" deleted'] = 'групи "%s" изтрити';
$lang['group "%s" updated'] = 'група "% S" обновена';
$lang['Caddie management'] = 'Caddie управление';
$lang['Center of interest'] = 'Център на интереси';
$lang['Check integrity'] = 'проверка на цялостта';
$lang['Complementary mail content'] = 'Допълнително към съдържанието на писмото';
$lang['Continue processing treatment'] = 'Продължаване на провежданото лечение';
$lang['Correction applied with error'] = 'Корекция се прилага с грешка';
$lang['Correction applied with success'] = 'Корекцията е успешно приложена';
$lang['Correction the anomaly will cancel the fact that it\'s ignored'] = 'Коригираните аномалии вече няма да бъдат пренебрегнати';
$lang['Create the "%s" directory at the root of your Piwigo installation'] = 'Създайте директория "% S" в основата на вашата инсталация Piwigo';
$lang['Default comments order'] = 'Коментари по подразбиране';
$lang['Default photos order'] = 'Ред на снимки по подразбиране';
$lang['Delete Representant'] = 'Изтриване умалените албуми';
$lang['Delete selected tags'] = 'Изтриване на избраните тагове';
$lang['Delete this language'] = 'Изтриване на този език';
$lang['Delete this theme'] = 'Изтриване на тази тема';
$lang['Deleted on'] = 'Изтрити';
$lang['Deletions'] = 'Изтривания';
$lang['Detailed informations'] = 'Подробни информации';
$lang['Dissociate from album'] = 'Разграничаване от албум';
$lang['Dissociated'] = 'Разграничаване';
$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = 'Времето за изпълнение изтече,обработването трябва да продължи [Приблизително време: %d секунди].';
$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'Времето за изпълнение е просрочено,обработването трябва да продължи [Приблизително време: %d секунди].';
$lang['Features include gallery browsing, album creation and photo upload.'] = 'Сайтът предлага разглеждане на галерии,създаване на албуми и качване на снимки.';
$lang['File/directory read error'] = 'Файлът/директорията не може да бъде прочетен.';
$lang['Find a new representant by random'] = 'Изберете на случаен принцип нова икона за албума си.';
$lang['Follow Orientation'] = 'Следвай ориентацията';
$lang['Forbid this language to users'] = 'Забранете този език за потребителите';
$lang['Forbid this theme to users'] = 'Забранете тази тема за потребителите';
$lang['Get Support on Piwigo Forum'] = 'Получете помощ от форума Piwigo ';
$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'Дайте права (chmod 777)на инсталационната директория "%s" на Piwigo';
$lang['Go to %s or %s for more informations'] = 'Отидете %s или %s за повече информация';
$lang['Dump Database'] = 'Изхвърляне на базата данни';
$lang['Extensions Update'] = 'Extensions Актуализация';
$lang['Failed to write file to disk'] = 'Записът на файла е неуспешен!';
$lang['I decide to update anyway'] = 'Искам да ъпдейтна въпреки всичко';
$lang['Inactive Languages'] = 'Неактивни езици';
$lang['Inactive Plugins'] = 'Неактивни плъини';
$lang['Inactive Themes'] = 'Активни плъгини';
$lang['Installed Themes'] = 'Инсталирани теми';
$lang['Instructions to use Piwigo'] = 'Инструкций за ползване на Piwigo';
$lang['Landscape'] = 'Пейзажи';
$lang['Language has been successfully installed'] = 'Език е инсталиран успешно';
$lang['Languages which need upgrade'] = 'Езици, които се нуждаят от ъпгрейд';
$lang['Extend for templates'] = 'Разширяване на шаблони';
$lang['File upload stopped by extension'] = 'Качване на файлове спряни от разширение';
$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Плъгините може да не са съвместими с новата версия на Piwigo:';
$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Следните теми не може да бъде съвместими с новата версия на Piwigo:';
$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'За размери на снимки, като "Квадрат", Piwigo ще направи всичко възможно да се включи центъра на интереса.';
$lang['Grant selected groups'] = 'Избрани големи групи';
$lang['Do you want to activate anyway?'] = 'Искате ли да активирате така или иначе?';
$lang['Does not represent'] = 'Не е ли картинка за';
$lang['Drag to re-order'] = 'Щракнете и плъзнете, за да пренаредите';
$lang['Duplicate'] = 'Дубликат';
$lang['Duplicate selected tags'] = 'Дублиране на избраните тагове';
$lang['Duplicates'] = 'Дублиране';
$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'ГРЕШКА: Този плъгин липсва, но е инсталиран!Деинсталирайте сега.';
$lang['Element type'] = 'Тип елемент';
$lang['Email administrators when a comment is deleted'] = 'Имейл на администраторите, когато коментарът е изтрит';
$lang['Email administrators when a comment is modified'] = 'Имейл на администраторите, когато е променен коментар';
$lang['Email admins when a comment requires validation'] = 'Имейл на администраторите когато коментар изисква одобрение';
$lang['Email admins when a new user registers'] = 'Имейл на администраторите, когато нов потребител се регистрира';
$lang['Email admins when a valid comment is entered'] = 'Имейл администраторите, когато се вписва валиден коментар';
$lang['Environment'] = 'Околна среда';
$lang['Error on file "%s" : %s'] = 'Грешка на файла "%s" : %s';
$lang['Error when sending email to %s [%s].'] = 'Грешка при изпращане на електронна поща %s [%s].';
$lang['Errors caption'] = 'Грешки легенди';
$lang['This album contains %d photos, added between %s and %s.'] = 'Този албум съдържа%d снимки, добавен между%sand%s.';
$lang['There is no other language available.'] = 'Няма друг език.';
$lang['There is no other plugin available.'] = 'Няма друг плъгин.';
$lang['There is no other theme available.'] = 'TherНяма друга тема.';
$lang['The name of an album must not be empty'] = 'Имената на албумите не трябва да са празни';
$lang['Representative'] = 'Албум малки снимки';
$lang['Representation of albums'] = 'Албум малки снимки';
$lang['Representant'] = 'Албум Малки снимки';
$lang['Please select at least two groups'] = 'Моля,селектирайте последните две групи';
$lang['Portrait'] = 'Портрет';
$lang['Other private albums'] = 'Други частни албуми';
$lang['Panorama'] = 'Панорама';
$lang['Manage the members'] = 'Управление на регистрираните потребители';
$lang['Manage tags'] = 'Управление на тагавете';
$lang['Manage photos'] = 'Управление на снимките';
$lang['Manage photo ranks'] = 'Управление на рейтинга на снимките';
$lang['Manage permissions for user "%s"'] = 'Управление правата на потребителите "%s"';
$lang['Manage permissions for group "%s"'] = 'Управление на правата на групите "%s"';
$lang['Manage authorizations for selected albums'] = 'Управление на разрешения за избрани албуми';
$lang['Manage'] = 'Управление';
$lang['Make this theme available to users'] = 'Направи тази тема достъпна за потребителите';
$lang['Make this language available to users'] = 'Направи този език достъпен за потребителите';
$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Включване на данни от историята (Внимание:паметта на сървъра,може да бъде надвишена)';
$lang['Last send'] = 'Последно изпратено';
$lang['Mail sent to %s [%s].'] = 'Емейла е изпратен към %s [%s].';
$lang['Maintenance'] = 'Поддръжка';
$lang['Include display of recent photos grouped by dates'] = '
Включва показване на последните снимки, групирани по дати';
$lang['Information data registered in database'] = 'Информацията е записана в базата данни';
$lang['Last hit'] = 'Последни посещения';
$lang['Last import'] = 'Последно внесено';
$lang['Last revisions'] = 'Последно посещение';
$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'Тази тема не може да бъде изтрита, защото други теми зависят от нея:% S';
$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Невъзможно е да деактивирате тази тема, трябва има най-малко една тема.';
$lang['Impossible to deactivate this language, you need at least one language.'] = 'Невъзможно е да деактивирате този език, трябва има най-малко един език.';
$lang['Impossible to deactivate this language, first set another language as default.'] = 'Невъзможно е да деактивирате този език,преди това изберете език по подразбиране.';
$lang['Impossible automatic correction'] = 'Автоматичната корекция е невъзможна';
$lang['Hit'] = 'Показвания';
$lang['Group management'] = 'Управление на групите';
$lang['Grant selected users'] = 'Избрани потребители';
$lang['No members to manage'] = 'Няма членове за управление';
$lang['No order field selected'] = 'Не е за избраното поле';
$lang['No photo can be deleted'] = 'Не може да бъде изтрита снимка';
$lang['No photo in the current set.'] = 'Няма снимка в сегашния набор.';
$lang['Link all album photos to some existing albums'] = 'Връзка всички албуми снимки на някои съществуващи албуми';
$lang['Mail address is obligatory for all users'] = 'Мейл адрес е задължителна за всички потребители';
$lang['Minimum height'] = 'Минимална височина';
$lang['Minimum privacy level'] = 'Минимална поверителност ниво';
$lang['Minimum width'] = 'Минимална ширина';
$lang['Miscellaneous'] = 'Разни';
$lang['Missing Plugins'] = 'Липсващи Plugins';
$lang['Missing a temporary folder'] = 'Липсва временна папка';
$lang['Modify information'] = 'Промяна на информация';
$lang['Name of the duplicate'] = 'Име на дубликата';
$lang['Link all album photos to a new album'] = 'Връзка всички албум снимки на новия си албум';
$lang['Linked albums'] = 'Свързаните албуми';
$lang['Manage this set of %d photos'] = 'Управление на този набор от%d снимки';
$lang['Merge selected groups'] = 'Обединяване на избраните групи';
$lang['Merge selected tags'] = 'Обединяване на избрани тагове';
$lang['Merge tags'] = 'Обединяване тагове';
$lang['Metadata synchronization results'] = 'Резултатите от метаданни за синхронизация';
$lang['Metadata synchronized from file'] = 'Метаданните синхронизирани от файл';
$lang['Hoverbox display'] = 'hoverbox дисплей';
$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'Тази тема не може да бъде активиран, тъй като основната тема липсва:%s';
$lang['No user to send notifications by mail.'] = 'Не е посочен потребител,който да бъде уведомен с имейл';
$lang['No photo selected, no action possible.'] = 'Не е избрана снимка,не мове да бъде предприето действие';
$lang['No photo selected, %d photos in current set'] = 'Не е избрана снимка, %d снимки в настоящият сет.';
$lang['No group selected, no action possible.'] = 'Не е избрана група,не може да бъде предприето действие';
$lang['Images manual order was saved'] = 'Снимките са запазени в ръчно избран ред.';
$lang['New parent album'] = 'Нов главен албум';
$lang['No destination tag selected'] = 'Не е избрана дестинация';
$lang['No display'] = 'Няма дисплей';
$lang['No file was uploaded'] = 'Не е качен файл';
$lang['No mail to send.'] = 'Няма имейл за изпращане.';
$lang['No photo in this album'] = 'Няма снимка в този албум';
$lang['Main "webmaster" user status is incorrect'] = 'Статусът на основния потребител "уебмастер" е неточен.';
$lang['Main "webmaster" user does not exist'] = 'Основният потребител "уебмастер" не съществува';
$lang['Main "guest" user status is incorrect'] = 'Статусът на основния потребител "гост" е неточен.';
$lang['Main "guest" user does not exist'] = 'Основният потребител "гост" не съществува';
$lang['Mail content'] = 'Съдържание на имейла.';
$lang['Level 0'] = '';
$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = 'Дръжте връзка с проектът Piwigo, абонирайте се за рекламният Newsletter на Piwigo. Ще ви бъдат изпращани имейли за новости (понякога включващи насоки за "security bug fix",които е важно да знаете и да обновявате),както и когато се случват същестшени промени с проекта. Само няколко имейла годишно.';
$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'Във вашият php.ini файл, файлът "upload_max_filesize(%sB) е по-голям от "post_max_size (%sB)"", трябва да промените тази настройка.';
$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Ако няма налично HD и,ако настоящият уеб размер е по-голям от параметрите на новия мащаб, Piwigo ще го премести като HD формат и ще създаде по-малка по размер снимка,копие на оригинала.';
$lang['Number of albums per page'] = 'Брой албуми на страница';
$lang['Number of comments per page'] = 'Брой коментари на страница';
$lang['Number of downloads'] = 'Брой на свалянията';
$lang['Number of rates'] = 'Брой на ставките';
$lang['Only private albums are listed'] = 'Само частни албуми са изброени';
$lang['Optimizations have been completed with some errors.'] = 'Оптимизацията завършена с някои грешки.';
$lang['Pages seen'] = 'Посетени страници';
$lang['Pending Comments'] = 'Очакващи одобрение коментари';
$lang['User comments validation'] = 'Потвърждаване на потребителски коментари';
$lang['View in gallery'] = 'Преглед в галерия';
$lang['Used metadata'] = 'Метадата използвана';
$lang['Update photos information'] = 'Обновяване на информацията на снимки';
$lang['Unknown upload error'] = 'Нейзвестна грешка при качване';
$lang['Synchronize metadata'] = 'Синхронизиране на метаданни';
$lang['Summary'] = 'Общо';
$lang['Rename'] = 'Прейменуване';
$lang['Ratio'] = 'Съотношение';
$lang['Privacy level'] = 'Ниво на достъп';
$lang['Photo informations updated'] = 'Имформацияна за снимката ъпдейтвана';
$lang['Password is missing. Please enter the password.'] = 'Липсва парола. Моля въведете.';
$lang['Permalink'] = 'Персонализиран линков';
$lang['Permalink %s is already used by album %s'] = 'Пермалинкае %s се използва вече от друг албум %s';
$lang['Permalink history'] = 'История на пермалинковете';
$lang['Permalinks'] = 'Персонализирани линкове';
?>

View file

@ -22,7 +22,7 @@
// +-----------------------------------------------------------------------+
/*
Language Name: Български [BG]
Version: 2.3.0
Version: 2.4.0
Language URI: http://piwigo.org/ext/extension_view.php?eid=510
Author: Piwigo team
Author URI: http://piwigo.org

View file

@ -26,7 +26,7 @@ $lang['Database configuration'] = 'Конфигуриране на базата
$lang['Database name'] = 'Име на базата данни';
$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = 'имената на таблиците в базата данни, ще имат тази представка ( това Ви дава възможност да управлявате таблиците по-добре)';
$lang['Default gallery language'] = 'Език по подразбиране за галерията';
$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Не се колебайте да се консултира в нашите форуми за всяка помощ:% S';
$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Не се колебайте да се консултира в нашите форуми за всяка помощ:%s';
$lang['Download the config file'] = 'Изтегляне на конфигурационния файл';
$lang['enter a login for webmaster'] = 'въведете потребителско име за уебмастер';
$lang['Installation'] = 'Инсталиране';
@ -69,4 +69,4 @@ $lang['Creation of config file local/config/database.inc.php failed.'] = 'Съз
$lang['It appears your webhost is currently running PHP %s.'] = 'Изглежда вашият уеб хост се изпълнява в PHP %s';
$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo може да се опита да превключите вашата конфигурация на PHP 5 като създаде или промени .htaccess файла.';
$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'Обърнете се към вашия хостинг доставчик и вижте как можете да преминете към PHP 5 самостоятелно.';
?>
?>

View file

@ -23,7 +23,7 @@
$lang['%d association'] = '%d associació';
$lang['%d associations'] = '%d associacions';
$lang['%d album including'] = '%d àlbum inclòs';
$lang['%d album including'] = '%d àlbum incloent ';
$lang['%d albums including'] = '%d àlbums inclosos, ';
$lang['%d physical'] = '%d física';
$lang['%d physicals'] = '%d físics';
@ -163,7 +163,7 @@ $lang['Associate to album'] = 'Assòcia a l\'àlbum';
$lang['Authorized'] = 'Autoritzat';
$lang['Add a virtual album'] = 'Afegir àlbum virtual';
$lang['Authorize users to add comments on selected albums'] = 'Autoritzar als usuaris a afegir comentaris en els àlbums seleccionats';
$lang['The name of an album must not be empty'] = 'El nom de l\'àlbum no pot ser buit';
$lang['The name of an album must not be empty'] = 'El nom de l\'àlbum no pot estar buit';
$lang['Lock albums'] = 'Bloqueig d\'àlbums';
$lang['Private'] = 'Privat';
$lang['Public'] = 'Públic';
@ -192,7 +192,7 @@ $lang['first photo added on %s'] = 'primera imatge afegida el %s';
$lang['Forbidden'] = 'Prohibit';
$lang['global mode'] = 'Mode global';
$lang['group "%s" updated'] = 'grup "%s" actualitzat';
$lang['The name of a group must not contain " or \' or be empty.'] = 'El nom d\'un grup no pot contenir " o \' o ser buit.';
$lang['The name of a group must not contain " or \' or be empty.'] = 'El nom d\'un grup no pot contenir " o \' o estar buit.';
$lang['This name is already used by another group.'] = 'Aquest nom ja està en us per un altre grup.';
$lang['High definition'] = 'Alta qualitat';
$lang['jump to album'] = 'Tornar a l\'àlbum';
@ -526,7 +526,7 @@ $lang['Subscribe %s to Piwigo Announcements Newsletter'] = 'Inscriure %s al butl
$lang['Purge search history'] = 'Purgar el historico de búsquedad';
$lang['Hide'] = 'Ocultar';
$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'Sobrepasado el tiempo de ejecución, el procesamiento debe continuar [Tiempo estimado: %d secundas].';
$lang['Operation in progress'] = 'Operación en progreso.';
$lang['Operation in progress'] = 'Operació en progrés...';
$lang['Please wait...'] = 'Si us plau, esperi...';
$lang['Password is missing. Please enter the password.'] = 'Falta la clau d\'accès. Si us plau, introdueix-la.';
$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'La confirmación de la contraseña faltó. Por favor, confirme la contraseña elegida.';
@ -643,7 +643,7 @@ $lang['This theme was not designed to be directly activated'] = 'Este tema no es
$lang['Who can see this photo?'] = 'Compartir';
$lang['Pending Comments'] = 'Comentaris pendents de validar';
$lang['Menu Management'] = 'Gestionar menús';
$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'A l\'arxiu php.ini, la variable upload_max_filesize (% SB) es major que post_max_size (SB%). Hauries de canviar aquesta configuració.';
$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'A l\'arxiu php.ini, la variable upload_max_filesize (%s) es major que post_max_size (SB%). Hauries de canviar aquesta configuració.';
$lang['Exif extension not available, admin should disable exif use'] = 'L\'extensió Exif no està disponible. Un administrador hauria de desabilitar l\'ús de metadades Exif.';
$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'La mida de l\'arxiu pujat excedeix el valor upload_max_filesize de l\'arxiu php.ini: sB%';
$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'La mida total dels arxius que estàs pujant excedeix el valor post_max_size de l\'arxiu php.ini: sB%';
@ -736,7 +736,7 @@ $lang['Following plugins may not be compatible with the new version of Piwigo:']
$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Els següents temes poden no ser compatibles amb la nova versió de Piwigo:';
$lang['I decide to update anyway'] = 'Vull actualitzar de totes maneres';
$lang['Update to Piwigo %s'] = 'Actualitzar a Piwigo %s';
$lang['Two updates are available'] = 'Dues actualitzacions estàn disponibles';
$lang['Two updates are available'] = 'Hi ha dues actualitzacions disponibles';
$lang['This is a minor update, with only bug corrections.'] = 'Aquesta actualització és menor. Només conté correccions d\'errors.';
$lang['This is a major update, with <a href="%s">new exciting features</a>.'] = 'Esta es una actualización importante, con <a href="%s">nuevas características emocionantes</a>.';
$lang['Some themes and plugins may be not available yet.'] = 'Alguns dels temes i complements poden encara no estar disponibles.';
@ -744,8 +744,8 @@ $lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (rec
$lang['Save Template Directory'] = 'Desar directori de plantilles';
$lang['Dump Database'] = 'Abocar la base de dades';
$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Incloure la informació de l\'historial. (Advertència: el límit de memòria del servidor pot ser superat)';
$lang['Unable to dump database.'] = 'No és possible volcar la base de dades.';
$lang['Some upgrades are available for extensions.'] = 'Actualitzacions disponibles per a les extensiones.';
$lang['Unable to dump database.'] = 'No és possible abocar la base de dades.';
$lang['Some upgrades are available for extensions.'] = 'Hi ha actualitzacions disponibles per a algunes extensions';
$lang['Ignore All'] = 'Ignorar tot';
$lang['Crop'] = 'Redimensionar ';
$lang['Width'] = 'Amplada';
@ -932,4 +932,9 @@ $lang['%d week'] = '%d setmana';
$lang['%d weeks'] = '%d setmanes';
$lang['Edit photo'] = 'Editar imatge';
$lang['create a new site'] = 'Crear un lloc nou';
?>
$lang['No order field selected'] = 'Ordre no seleccionat';
$lang['Duplicate selected tags'] = 'Duplicar etiquetes seleccionades';
$lang['Name of the duplicate'] = 'Nom del duplicat';
$lang['Source tag'] = 'Font d\'etiqueta';
$lang['Tag "%s" is now a duplicate of "%s"'] = 'L\'etiqueta "%s" és ara un duplicat de "%s"';
?>

View file

@ -22,7 +22,7 @@
// +-----------------------------------------------------------------------+
/*
Language Name: Català [CA]
Version: 2.3.0
Version: 2.4.0
Language URI: http://piwigo.org/ext/extension_view.php?eid=413
Author: Piwigo team
Author URI: http://piwigo.org

View file

@ -1,123 +1,123 @@
<h2>Edita l'&agrave;lbum</h2>
<h3>Informaci&oacute;</h3>
<ul>
<li><strong>Nom</strong>: Canvia el nom de l'&agrave;lbum (virtualment per un &agrave;lbum f&iacute;sic).</li>
<li><strong>Descripci&oacute;</strong>: Un text curt donant una idea del contingut de l'&agrave;lbum.
Aquesta indicaci&oacute; es mostrar&agrave; al final de la p&agrave;gina de les miniatures.</li>
</ul>
<h3>Despla&ccedil;ar</h3>
<p>Els &agrave;lbums virtuals poden ser despla&ccedil;ats. Despla&ccedil;ar un &agrave;lbum significa canviar el seu &agrave;lbum pare.</p>
<h3>Opcions</h3>
<ul>
<li><strong>Tipus d'acc&egrave;s</strong>: Administraci&oacute; de permisos. Si afegiu un &agrave;lbum privat, tots els seus
&agrave;lbums fills esdevenir&agrave;n privats. Si afegiu un &agrave;lbum p&uacute;blic, tots els seus &agrave;lbums pare esdevenir&agrave;n p&uacute;blics.</li>
<li><strong>Bloquejar</strong>: L'&agrave;lbum i tots els seus sub-&agrave;lbums esdevenir&agrave;n temporalment inaccessibles per manteniment.</li>
<li><strong>Comentaris</strong>: Autoritza als usuaris a afegir comentaris dels elements de l'&agrave;lbum.</li>
</ul>
<p>Tamb&eacute; pot administrar aquestes opcions de gesti&oacute; de "Propietats" <span
class="pwgScreen">Comentaris</span>, <span class="pwgScreen">Bloquejats</span>,
<span class="pwgScreen">P&uacute;blic/Privats</span>, <span
class="pwgScreen">Representatiu</span> Disponibles a <span
class="pwgScreen">Tauler de control &raquo; &Agrave;lbums &raquo; Propietats</span>).</p>
<h3>Ordenar</h3>
<p>Utilitza l'ordre dels elements per defecte.</p>
<p>Indica si l'ordre s'aplica tamb&eacute; als sub-&agrave;lbums.</p>
<p>Selecciona els criteris a utilitzar per aquest &agrave;lbum.</p>
<ul>
<li><strong>Data de creaci&oacute;</strong>: Data de presa de la imatge</li>
<li><strong>Data de publicaci&oacute;</strong>: Data de sincronitzaci&oacute;</li>
<li><strong>Nota mitja (*)</strong>: S'actualitza segons la qualificaci&oacute; dels visitants</li>
<li><strong>Les m&eacute;s visitades (*)</strong>: La visita actual podria canviar l'ordre m&eacute;s visitat</li>
<li><strong>Nom de l'arxiu</strong>: Nom que es d&oacute;na en el camp de la informaci&oacute;</li>
<li><strong>Id</strong>: Id inern (les categories m&eacute;s recents tenen un identificador m&eacute;s alt que els anteriors.</li>
</ul>
<p><strong>(*)</strong>Atenci&oacute;: Assegureu-vos de provar els criteris d'ordenaci&oacute; perqu&egrave; de vegades poden generar resultats inesperats.</p>
<h3>Representatiu</h3>
<p>L'&agrave;lbum representatiu &eacute;s la imatge que apareix a la a la p&agrave;gina principal <span class="pwgScreen">category.php</span>) per representar
aquell &agrave;lbum que cont&eacute; sub-&agrave;lbums per&ograve; no imatges: (per exemple l'&agrave;lbum arrel del directori).
</p>
<p>Existeixen 4 maneres diferents d'escollir la representaci&oacute; de l'&agrave;lbum:</p>
<ul>
<li><span class="pwgScreen">Imatges de p&agrave;gina</span>: un dels botons d'acci&oacute; permet escollir la present imatge per a representar el seu propi &agrave;lbum.</li>
<li><span class="pwgScreen">Modifica la informaci&oacute; d'una imatge.</span> a Administraci&oacute;. Hi pots accedir des de <span
class="pwgScreen">picture.php</span> o <span class="pwgScreen">Gesti&oacute; de lots</span> a <em>mode unitari</em>. Consulta l'ajuda per a m&eacute;s detalls.</li>
<li><span class="pwgScreen">Tauler de control &raquo; &Agrave;lbums &raquo; Propietats,
Representatiu</span>. Consulta l'ajuda per a m&eacute;s detalls.</li>
<li><span class="pwgScreen">Editar &agrave;lbum</span> (aquesta pantalla).</li>
</ul>
<p>L'elecci&oacute; de la representaci&oacute; dep&eacute;n del par&agrave;metre de configuraci&oacute;
<code>allow_random_representative</code> (veure <span
class="filename">include/config_default.inc.php</span>).</p>
<p>Mode Per defecte (<code>allow_random_representative</code> establert a fals),
cada &agrave;lbum que cont&eacute; almenys un element que est&agrave; representat per un element fix.
Un cop establert (a la creaci&oacute; de l'&agrave;lbum), la representaci&oacute; nom&eacute;s canvia
quan un administrador jo sol&middot;licita. Si la representaci&oacute; no &eacute;s apropiada,
pots <strong>establir-se una nova representaci&oacute; de l'&agrave;lbum a l'atzar.<strong></p>
<p>Si el <code>allow_random_representative</code>par&agrave;metre de configuraci&oacute; &eacute;s cert,
una categoria que contingui elements pot no tindre una represetnaci&oacute; fixe. Simplement utilitza el bot&oacute;
<strong>Eliminar representant</strong>.</p>
<p>Si l'&agrave;lbum cont&eacute; sub-&agrave;lbums per&ograve; no elements (imatges), pot ser representat per qualsevol element gr&agrave;cies a la pantalla <span class="pwgScreen">Modicar
informaci&oacute; quant a la imatge</span>. L'&uacute;nica opci&oacute; en la pantalla actual
&eacute;s el bot&oacute;<strong>Eliminar representaci&oacute;</strong>.</p>
<h3>Enlla&ccedil;a tots els elements de l'&agrave;lbum a un nou &agrave;lbum</h3>
<ul>
<li><strong>Nom de l'&agrave;lbum virtual</strong>: Nom del nou &agrave;lbum que es crear&agrave;.
Tots els elements de la categoria actual es vincularan amb la nova.</li>
<li><strong>&Agrave;lbum pare</strong>: Crea sub-&agrave;lbums jer&agrave;rquicament.</li>
</ul>
<h3>Enlla&ccedil;a totes les fotos de l'&agrave;lbum als &agrave;lbums existents</h3>
<ul>
<li><strong>&Agrave;lbums</strong>: Selecciona l'&agrave;lbum de dest&iacute;.</li>
</ul>
<h3>Informa per correu electr&ograve;nic als tots els membres d'un grup.</h3>
<ul>
<li><strong>Grups</strong>: grup de destinataris</li>
<li><strong>Contingut del correu electr&ograve;nic</strong>: Amb la possibilitat de redactar textes lliurement.</li>
<h2>Edita l'&agrave;lbum</h2>
<h3>Informaci&oacute;</h3>
<ul>
<li><strong>Nom</strong>: Canvia el nom de l'&agrave;lbum (virtualment per un &agrave;lbum f&iacute;sic).</li>
<li><strong>Descripci&oacute;</strong>: Un text curt donant una idea del contingut de l'&agrave;lbum.
Aquesta indicaci&oacute; es mostrar&agrave; al final de la p&agrave;gina de les miniatures.</li>
</ul>
<h3>Despla&ccedil;ar</h3>
<p>Els &agrave;lbums virtuals poden ser despla&ccedil;ats. Despla&ccedil;ar un &agrave;lbum significa canviar el seu &agrave;lbum pare.</p>
<h3>Opcions</h3>
<ul>
<li><strong>Tipus d'acc&egrave;s</strong>: Administraci&oacute; de permisos. Si afegiu un &agrave;lbum privat, tots els seus
&agrave;lbums fills esdevenir&agrave;n privats. Si afegiu un &agrave;lbum p&uacute;blic, tots els seus &agrave;lbums pare esdevenir&agrave;n p&uacute;blics.</li>
<li><strong>Bloquejar</strong>: L'&agrave;lbum i tots els seus sub-&agrave;lbums esdevenir&agrave;n temporalment inaccessibles per manteniment.</li>
<li><strong>Comentaris</strong>: Autoritza als usuaris a afegir comentaris dels elements de l'&agrave;lbum.</li>
</ul>
<p>Tamb&eacute; pot administrar aquestes opcions de gesti&oacute; de "Propietats" <span
class="pwgScreen">Comentaris</span>, <span class="pwgScreen">Bloquejats</span>,
<span class="pwgScreen">P&uacute;blic/Privats</span>, <span
class="pwgScreen">Representatiu</span> Disponibles a <span
class="pwgScreen">Tauler de control &raquo; &Agrave;lbums &raquo; Propietats</span>).</p>
<h3>Ordenar</h3>
<p>Utilitza l'ordre dels elements per defecte.</p>
<p>Indica si l'ordre s'aplica tamb&eacute; als sub-&agrave;lbums.</p>
<p>Selecciona els criteris a utilitzar per aquest &agrave;lbum.</p>
<ul>
<li><strong>Data de creaci&oacute;</strong>: Data de presa de la imatge</li>
<li><strong>Data de publicaci&oacute;</strong>: Data de sincronitzaci&oacute;</li>
<li><strong>Nota mitja (*)</strong>: S'actualitza segons la qualificaci&oacute; dels visitants</li>
<li><strong>Les m&eacute;s visitades (*)</strong>: La visita actual podria canviar l'ordre m&eacute;s visitat</li>
<li><strong>Nom de l'arxiu</strong>: Nom que es d&oacute;na en el camp de la informaci&oacute;</li>
<li><strong>Id</strong>: Id inern (les categories m&eacute;s recents tenen un identificador m&eacute;s alt que els anteriors.</li>
</ul>
<p><strong>(*)</strong>Atenci&oacute;: Assegureu-vos de provar els criteris d'ordenaci&oacute; perqu&egrave; de vegades poden generar resultats inesperats.</p>
<h3>Representatiu</h3>
<p>L'&agrave;lbum representatiu &eacute;s la imatge que apareix a la a la p&agrave;gina principal <span class="pwgScreen">category.php</span>) per representar
aquell &agrave;lbum que cont&eacute; sub-&agrave;lbums per&ograve; no imatges: (per exemple l'&agrave;lbum arrel del directori).
</p>
<p>Existeixen 4 maneres diferents d'escollir la representaci&oacute; de l'&agrave;lbum:</p>
<ul>
<li><span class="pwgScreen">Imatges de p&agrave;gina</span>: un dels botons d'acci&oacute; permet escollir la present imatge per a representar el seu propi &agrave;lbum.</li>
<li><span class="pwgScreen">Modifica la informaci&oacute; d'una imatge.</span> a Administraci&oacute;. Hi pots accedir des de <span
class="pwgScreen">picture.php</span> o <span class="pwgScreen">Gesti&oacute; de lots</span> a <em>mode unitari</em>. Consulta l'ajuda per a m&eacute;s detalls.</li>
<li><span class="pwgScreen">Tauler de control &raquo; &Agrave;lbums &raquo; Propietats,
Representatiu</span>. Consulta l'ajuda per a m&eacute;s detalls.</li>
<li><span class="pwgScreen">Editar &agrave;lbum</span> (aquesta pantalla).</li>
</ul>
<p>L'elecci&oacute; de la representaci&oacute; dep&eacute;n del par&agrave;metre de configuraci&oacute;
<code>allow_random_representative</code> (veure <span
class="filename">include/config_default.inc.php</span>).</p>
<p>Mode Per defecte (<code>allow_random_representative</code> establert a fals),
cada &agrave;lbum que cont&eacute; almenys un element que est&agrave; representat per un element fix.
Un cop establert (a la creaci&oacute; de l'&agrave;lbum), la representaci&oacute; nom&eacute;s canvia
quan un administrador jo sol&middot;licita. Si la representaci&oacute; no &eacute;s apropiada,
pots <strong>establir-se una nova representaci&oacute; de l'&agrave;lbum a l'atzar.</strong></p>
<p>Si el <code>allow_random_representative</code>par&agrave;metre de configuraci&oacute; &eacute;s cert,
una categoria que contingui elements pot no tindre una represetnaci&oacute; fixe. Simplement utilitza el bot&oacute;
<strong>Eliminar representant</strong>.</p>
<p>Si l'&agrave;lbum cont&eacute; sub-&agrave;lbums per&ograve; no elements (imatges), pot ser representat per qualsevol element gr&agrave;cies a la pantalla <span class="pwgScreen">Modicar
informaci&oacute; quant a la imatge</span>. L'&uacute;nica opci&oacute; en la pantalla actual
&eacute;s el bot&oacute;<strong>Eliminar representaci&oacute;</strong>.</p>
<h3>Enlla&ccedil;a tots els elements de l'&agrave;lbum a un nou &agrave;lbum</h3>
<ul>
<li><strong>Nom de l'&agrave;lbum virtual</strong>: Nom del nou &agrave;lbum que es crear&agrave;.
Tots els elements de la categoria actual es vincularan amb la nova.</li>
<li><strong>&Agrave;lbum pare</strong>: Crea sub-&agrave;lbums jer&agrave;rquicament.</li>
</ul>
<h3>Enlla&ccedil;a totes les fotos de l'&agrave;lbum als &agrave;lbums existents</h3>
<ul>
<li><strong>&Agrave;lbums</strong>: Selecciona l'&agrave;lbum de dest&iacute;.</li>
</ul>
<h3>Informa per correu electr&ograve;nic als tots els membres d'un grup.</h3>
<ul>
<li><strong>Grups</strong>: grup de destinataris</li>
<li><strong>Contingut del correu electr&ograve;nic</strong>: Amb la possibilitat de redactar textes lliurement.</li>
</ul>

View file

@ -53,6 +53,6 @@ galleries
<li>No es representen amb una icona per defecte elements com ara arxius de v&iacute;deo, sons, textos d'arxius, i altres extensions. Opcionalment, es pot associar una miniatura i un arxiu de representanci&oacute; (veure el video-avio.avi en l'exemple anterior).</li>
<li>Una vegada que les fotos estan ben col &middot; locades en els directoris, aneu a: <span class="pwgScreen">Tauler de control &raquo; Eines &raquo; Sincronitzar</span></li>
<li>Una vegada que les fotos estan ben col &middot; locades en els directoris, aneu a: <span class="pwgScreen">Gestionar (al Tauler de control) &raquo; Eines &raquo; Sincronitzar</span></li>
</ul>
</fieldset>

View file

@ -927,4 +927,9 @@ $lang['%d week'] = '%d týden';
$lang['%d weeks'] = '%d týdny';
$lang['Edit photo'] = 'Upravit foto';
$lang['create a new site'] = 'vytvoř nové místo';
$lang['No order field selected'] = 'Není vybráno pole řazení';
$lang['Duplicate selected tags'] = 'Duplikuj vybrané tagy';
$lang['Name of the duplicate'] = 'Název duplikátu';
$lang['Source tag'] = 'Zdrojový tag';
$lang['Tag "%s" is now a duplicate of "%s"'] = 'Tag "%s" je nyní duplikátem "%s"';
?>

View file

@ -25,7 +25,7 @@
// +-----------------------------------------------------------------------+
/*
Language Name: Česky [CZ]
Version: 2.3.0
Version: 2.4.0
Language URI: http://piwigo.org/ext/extension_view.php?eid=414
Author: Piwigo team
Author URI: http://piwigo.org

View file

@ -7,6 +7,7 @@
<p>Udgivelsen af den danske piwigo er vedligeholdt af (alfabetisk orden):
<ul>
<li><a href="http://piwigo.org/forum/profile.php?id=16630">Egorip</a></li>
<li><a href="http://piwigo.org/forum/profile.php?id=17434">Kaare</a></li>
<li><a href="http://piwigo.org/forum/profile.php?id=4888">nile</a></li>
<li><a href="http://piwigo.org/forum/profile.php?id=14226">Rollike</a></li>
<li><a href="http://piwigo.org/forum/profile.php?id=11616">thomas1956</a></li>

File diff suppressed because it is too large Load diff

View file

@ -36,85 +36,85 @@ $lang_info['code'] = 'da';
$lang_info['zero_plural'] = true;
$lang['%d Kb'] = '%d Kb';
$lang['%d album updated'] = '%d kategori opdateret';
$lang['%d albums updated'] = '%d kategorier opdateret';
$lang['%d album updated'] = '%d album opdateret';
$lang['%d albums updated'] = '%d albummer opdateret';
$lang['%d comment to validate'] = '%d kommentar til godkendelse';
$lang['%d comments to validate'] = '%d kommentarer til godkendelse';
$lang['%d new comment'] = '%d ny kommentar';
$lang['%d new comments'] = '%d nye kommentarer';
$lang['%d comment'] = '%d kommentar';
$lang['%d comments'] = '%d kommentarer';
$lang['%d hit'] = '%d hit';
$lang['%d hits'] = '%d hits';
$lang['%d new photo'] = '%d nyt element';
$lang['%d new photos'] = '%d nye elementer';
$lang['%d hit'] = '%d visning';
$lang['%d hits'] = '%d visninger';
$lang['%d new photo'] = '%d nyt fotografi';
$lang['%d new photos'] = '%d nye fotografier';
$lang['%d new user'] = '%d ny bruger';
$lang['%d new users'] = '%d nye brugere';
$lang['About'] = 'Om';
$lang['All tags'] = 'Alle tags';
$lang['Any tag'] = 'Enhver tag';
$lang['Any tag'] = 'Ethvert tag';
$lang['At least one listed rule must be satisfied.'] = 'Mindst en af reglerne skal være opfyldt.';
$lang['Author'] = 'Fotograf';
$lang['Albums'] = 'Kategorier';
$lang['Album'] = 'Kategori';
$lang['Author'] = 'Forfatter';
$lang['Albums'] = 'Albummer';
$lang['Album'] = 'Album';
$lang['Close this window'] = 'Luk dette vindue';
$lang['Complete RSS feed (photos, comments)'] = 'Komplet RSS feed (fotos, kommentarer)';
$lang['Confirm Password'] = 'Bekræft Password';
$lang['Connection settings'] = 'Indstillinger for forbindelse';
$lang['Login'] = 'Login';
$lang['Complete RSS feed (photos, comments)'] = 'Komplet RSS-feed (fotografier, kommentarer)';
$lang['Confirm Password'] = 'Bekræft adgangskode';
$lang['Connection settings'] = 'Loginindstillinger';
$lang['Login'] = 'Log';
$lang['Contact webmaster'] = 'Kontakt webmaster';
$lang['Create a new account'] = 'Opret en ny konto';
$lang['Created on'] = 'Optaget den';
$lang['Created on'] = 'Oprettet den';
$lang['Creation date'] = 'Oprettelsesdato';
$lang['Current password is wrong'] = 'Password er forkert';
$lang['Current password is wrong'] = 'Adgangskode er forkert';
$lang['Dimensions'] = 'Dimensioner';
$lang['Display'] = 'Visning';
$lang['Each listed rule must be satisfied.'] = 'Hver nævnt regel skal være opfyldt.';
$lang['Email address is missing. Please specify an email address.'] = 'Email addresse mangler. Angiv venligst en email adresse';
$lang['Email address'] = 'Email addresse';
$lang['Enter your personnal informations'] = 'Udfyld dine personlige informationer';
$lang['Error sending email'] = 'Fejl ved afsendelse af email';
$lang['Each listed rule must be satisfied.'] = 'Hvert nævnt kriterium skal være opfyldt.';
$lang['Email address is missing. Please specify an email address.'] = 'E-mail-adresse mangler. Angiv venligst en e-mail-adresse.';
$lang['Email address'] = 'E-mail-adresse';
$lang['Enter your personnal informations'] = 'Udfyld dine personlige oplysninger';
$lang['Error sending email'] = 'Fejl ved afsendelse af e-mail';
$lang['File name'] = 'Filnavn';
$lang['File'] = 'Fil';
$lang['Filesize'] = 'Filstørrelse';
$lang['Filter and display'] = 'Filtrer og vis';
$lang['Filter'] = 'Filter';
$lang['Forgot your password?'] = 'Glemt dit password?';
$lang['Go through the gallery as a visitor'] = 'Kig i galleriet som gæst';
$lang['Forgot your password?'] = 'Har du glemt din adgangskode?';
$lang['Go through the gallery as a visitor'] = 'Brug galleriet som en besøgende';
$lang['Help'] = 'Hjælp';
$lang['Identification'] = 'Identifikation';
$lang['Photos only RSS feed'] = 'Kun foto RSS feed';
$lang['Photos only RSS feed'] = 'RSS-feed kun med fotografier';
$lang['Keyword'] = 'Nøgleord';
$lang['Links'] = 'Links';
$lang['N/A'] = 'N/A';
$lang['New on %s'] = 'Ny på %s';
$lang['Notification'] = 'RSS feed';
$lang['Number of items'] = 'Antal fotos';
$lang['Original dimensions'] = 'Originale dimensionser';
$lang['Password forgotten'] = 'Glemt password';
$lang['Password'] = 'Password';
$lang['Post date'] = 'Oprettelses dato';
$lang['Posted on'] = 'Oprettet den';
$lang['Notification'] = 'RSS-feed';
$lang['Number of items'] = 'Antal emner';
$lang['Original dimensions'] = 'Originals dimensioner';
$lang['Password forgotten'] = 'Glemt adgangskode';
$lang['Password'] = 'Adgangskode';
$lang['Post date'] = 'Tilføjelsesdato';
$lang['Posted on'] = 'Tilføjet den';
$lang['Profile'] = 'Profil';
$lang['Quick connect'] = 'Hurtig forbindelse';
$lang['RSS feed'] = 'RSS feed';
$lang['Quick connect'] = 'Log på hurtigt';
$lang['RSS feed'] = 'RSS-feed';
$lang['Register'] = 'Registrer';
$lang['Registration'] = 'Registrering';
$lang['Related tags'] = 'Relaterede tags';
$lang['Reset'] = 'Nulstil';
$lang['Retrieve password'] = 'Modtag password';
$lang['Search rules'] = 'Søge kriterier';
$lang['Search tags'] = 'Søg tags';
$lang['Retrieve password'] = 'Modtag adgangskode';
$lang['Search rules'] = 'Søgekriterier';
$lang['Search tags'] = 'Søgetags';
$lang['Search'] = 'Søg';
$lang['display available tags'] = 'vis tilgængelige tags';
$lang['Since'] = 'Siden';
$lang['Sort by'] = 'Sorter efter';
$lang['Sort order'] = 'Sorterings rækkefølge';
$lang['Sort order'] = 'Sorteringsrækkefølge';
$lang['Tag'] = 'Tag';
$lang['Tags'] = 'Tags';
$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = 'RSS feed giver besked om nyheder fra denne side: Nye fotos, opdaterede kategorier, nye kommentarer. Brug en RSS læser for at læse feeds.';
$lang['Unknown feed identifier'] = 'Ukendt feed identifikation';
$lang['User comments'] = 'Bruger kommentarer';
$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = 'RSS-feedet giver besked om nyheder fra denne side: Nye fotografier, opdaterede albummer, nye kommentarer. Kræver en RSS-feedlæser.';
$lang['Unknown feed identifier'] = 'Ukendt feedidentifikation';
$lang['User comments'] = 'Brugerkommentarer';
$lang['Username'] = 'Brugernavn';
$lang['Visits'] = 'Besøg';
$lang['Webmaster'] = 'Webmaster';
@ -125,27 +125,27 @@ $lang['add this photo to your favorites'] = 'tilføj dette foto til dine favorit
$lang['Administration'] = 'Administration';
$lang['all'] = 'alle';
$lang['ascending'] = 'stigende';
$lang['author(s) : %s'] = 'fotograf(er) : %s';
$lang['Expand all albums'] = 'Udvid alle kategorier';
$lang['posted after %s (%s)'] = 'posted efter %s (%s)';
$lang['posted before %s (%s)'] = 'posted før %s (%s)';
$lang['posted between %s (%s) and %s (%s)'] = 'posted mellem %s (%s) og %s (%s)';
$lang['posted on %s'] = 'oprettet den %s';
$lang['author(s) : %s'] = 'forfatter(e) : %s';
$lang['Expand all albums'] = 'Åbn alle albummer';
$lang['posted after %s (%s)'] = 'tilføjet efter %s (%s)';
$lang['posted before %s (%s)'] = 'tilføjet før %s (%s)';
$lang['posted between %s (%s) and %s (%s)'] = 'tilføjet mellem %s (%s) og %s (%s)';
$lang['posted on %s'] = 'tilføjet den %s';
$lang['Best rated'] = 'Bedst bedømte';
$lang['display best rated photos'] = 'vis bedste bedømte fotos';
$lang['display best rated photos'] = 'vis bedste bedømte fotografier';
$lang['Calendar'] = 'Kalender';
$lang['All'] = 'Alle';
$lang['display each day with photos, month per month'] = 'vis alle dage med fotos, månedsvis';
$lang['display each day with photos, month per month'] = 'vis alle dage med fotografier, måned for måned';
$lang['View'] = 'Vis';
$lang['chronology_monthly_calendar'] = 'Månedlig Kalender';
$lang['chronology_monthly_calendar'] = 'Månedlig kalender';
$lang['chronology_monthly_list'] = 'Månedlig liste';
$lang['chronology_weekly_list'] = 'Ugentlig liste';
$lang['Click here if your browser does not automatically forward you'] = 'Klik her hvis din browser ikke automatisk sender dig videre';
$lang['comment date'] = 'kommentar dato';
$lang['comment date'] = 'kommentardato';
$lang['Comment'] = 'Kommentar';
$lang['Your comment has been registered'] = 'Din kommentar er registreret';
$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = 'Anti-flood system : Vent et øjeblik før du prøver at oprette en kommentar mere';
$lang['Your comment has NOT been registered because it did not pass the validation rules'] = 'Din kommentar er ikke blevet registreret, fordi den ikke opfyldte valideringsreglerne';
$lang['Your comment has been registered'] = 'Din kommentar er gemt';
$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = 'Anti-oversvømmelsessystem: Vent et øjeblik før du prøver at oprette en kommentar mere';
$lang['Your comment has NOT been registered because it did not pass the validation rules'] = 'Din kommentar blev IKKE gemt, fordi den ikke opfyldte valideringsreglerne';
$lang['An administrator must authorize your comment before it is visible.'] = 'En administrator skal godkende din kommentar, før den er synlig.';
$lang['This login is already used by another user'] = 'Dette login anvendes allerede af en anden bruger';
$lang['Comments'] = 'Kommentarer';
@ -155,7 +155,7 @@ $lang['created before %s (%s)'] = 'oprettet før %s (%s)';
$lang['created between %s (%s) and %s (%s)'] = 'oprettet mellem %s (%s) og %s (%s)';
$lang['created on %s'] = 'oprettet den %s';
$lang['Customize'] = 'Tilpas';
$lang['Your Gallery Customization'] = 'Din Galleri tilpasning ';
$lang['Your Gallery Customization'] = 'Tilpasning af dit galleri';
$lang['day'][0] = 'Søndag';
$lang['day'][1] = 'Manday';
$lang['day'][2] = 'Tirsdag';
@ -164,7 +164,7 @@ $lang['day'][4] = 'Torsdag';
$lang['day'][5] = 'Fredag';
$lang['day'][6] = 'Lørdag';
$lang['Default'] = 'Standard';
$lang['delete this photo from your favorites'] = 'slet dette foto fra dine favoritter';
$lang['delete this photo from your favorites'] = 'fjern dette fotografi fra dine favoritter';
$lang['Delete'] = 'Slet';
$lang['descending'] = 'faldende';
$lang['Download'] = 'download';
@ -173,38 +173,34 @@ $lang['edit'] = 'rediger';
$lang['wrong date'] = 'forkert dato';
$lang['excluded'] = 'udelukket';
$lang['Your favorites'] = 'Dine favoritter';
$lang['display your favorites photos'] = 'vis mine favorit fotos';
$lang['display your favorites photos'] = 'vis mine favoritfotografier';
$lang['Favorites'] = 'Favoritter';
$lang['First'] = 'Første';
$lang['The gallery is locked for maintenance. Please, come back later.'] = 'Galleriet er lukket pga. vedligeholdelse. Kom tilbage senere.';
$lang['Page generated in'] = 'Siden er genereret på';
$lang['The gallery is locked for maintenance. Please, come back later.'] = 'Galleriet er lukket på grund af vedligeholdelse. Kig forbi senere.';
$lang['Page generated in'] = 'Siden blev dannet på';
$lang['guest'] = 'gæst';
$lang['Hello'] = 'Hej';
$lang['available for administrators only'] = 'kun tilgængelig for administratorer';
$lang['display this album'] = 'vis denne kategori';
$lang['display last user comments'] = 'se sidste brugers kommentarer';
$lang['display this album'] = 'vis dette album';
$lang['display last user comments'] = 'se seneste brugers kommentarer';
$lang['customize the appareance of the gallery'] = 'tilpas visningen af galleriet';
$lang['search'] = 'søg';
$lang['Home'] = 'Hjem';
$lang['Home'] = 'Forside';
$lang['Identification'] = 'Identifikation';
$lang['in this album'] = 'i denne kategori';
$lang['in %d sub-album'] = 'i %d sub-kategori';
$lang['in %d sub-albums'] = 'i %d sub-kategorier';
$lang['included'] = 'inkluderet';
$lang['Invalid password!'] = 'Forkert password!';
$lang['in this album'] = 'i dette album';
$lang['in %d sub-album'] = 'i %d underalbum';
$lang['in %d sub-albums'] = 'i %d underalbummer';
$lang['included'] = 'medtaget';
$lang['Invalid password!'] = 'Forkert adgangskode!';
$lang['Language']='Sprog';
$lang['last %d days'] = 'sidste %d dage';
$lang['Last'] = 'Sidste';
$lang['Logout'] = 'Logout';
$lang['last %d days'] = 'seneste %d dage';
$lang['Last'] = 'Seneste';
$lang['Logout'] = 'Log af';
$lang['obligatory'] = 'obligatorisk';
$lang['Maximum photo height'] = 'Maksimum højde på fotos';
$lang['Maximum height must be a number superior to 50'] = 'Maksimum højde skal være højere end 50';
$lang['Maximum photo width'] = 'Maksimum bredde på fotos';
$lang['Maximum width must be a number superior to 50'] = 'Maksimum bredde skal være højere end 50';
$lang['display a calendar by creation date'] = 'viser en kalender med datoer for optagelse';
$lang['display all photos in all sub-albums'] = 'vis alle elementer i alle sub-kategorier';
$lang['display a calendar by creation date'] = 'viser en kalender over oprettelsesdatoer';
$lang['display all photos in all sub-albums'] = 'vis alle fotografier i alle underalbummer';
$lang['return to normal view mode'] = 'tilbage til normal visning';
$lang['display a calendar by posted date'] = 'viser en kalender med datoer for upload';
$lang['display a calendar by posted date'] = 'viser en kalender over tilføjelsesdatoer';
$lang['month'][10] = 'Oktober';
$lang['month'][11] = 'November';
$lang['month'][12] = 'December';
@ -218,199 +214,199 @@ $lang['month'][7] = 'Juli';
$lang['month'][8] = 'August';
$lang['month'][9] = 'September';
$lang['Most visited'] = 'Mest sete';
$lang['display most visited photos'] = 'vis mest sete fotos';
$lang['The number of photos per page must be a not null scalar'] = 'Antallet af fotos pr. side må ikke være nul';
$lang['Number of photos per page'] = 'Antal af fotos pr. side';
$lang['display most visited photos'] = 'vis mest sete fotografier';
$lang['The number of photos per page must be a not null scalar'] = 'Antallet af fotografier pr. side må ikke være nul';
$lang['Number of photos per page'] = 'Antal fotografier pr. side';
$lang['Unknown identifier'] = 'Ukendt identifikation';
$lang['New password'] = 'Nyt password';
$lang['Rate this photo'] = 'Bedøm dette foto';
$lang['New password'] = 'Ny adgangskode';
$lang['Rate this photo'] = 'Bedøm dette fotografi';
$lang['Next'] = 'Næste';
$lang['no rate'] = 'ingen bedømmelse';
$lang['Photos posted within the last %d day.'] = 'Fotos oprettet indenfor de %d dage.';
$lang['Photos posted within the last %d days.'] = 'Fotos oprettet indenfor de %d dage.';
$lang['password updated'] = 'password opdateret';
$lang['Recent period must be a positive integer value'] = 'Seneste periode skal være et positivt heltal værdi';
/* DEPRECATED USED IN comments.php FOR image_id ? */ $lang['photo'] = 'foto';
$lang['Click on the photo to see it in high definition'] = 'Klik på foto for at se det i høj opløsning';
$lang['Show file metadata'] = 'Vis fotoets metadata';
$lang['Powered by'] = 'Powered by';
$lang['Preferences'] = 'Præferencer';
$lang['Photos posted within the last %d day.'] = 'Kun fotografier tilføjet inden for de seneste %d dag.';
$lang['Photos posted within the last %d days.'] = 'Kun fotografier tilføjet inden for de seneste %d dage';
$lang['password updated'] = 'adgangskode opdateret';
$lang['Recent period must be a positive integer value'] = 'Seneste periode skal være en positiv heltalsværdi';
$lang['photo'] = 'fotografi';
$lang['Click on the photo to see it in high definition'] = 'Klik på fotografiet for at se det i høj opløsning';
$lang['Show file metadata'] = 'Vis fotografiets metadata';
$lang['Powered by'] = 'Drives af';
$lang['Preferences'] = 'Indstillinger';
$lang['Previous'] = 'Tidligere';
$lang['Random photos'] = 'Tilfældige fotos';
$lang['display a set of random photos'] = 'Vis et sæt af tilfældigt valgte fotos';
$lang['Recent albums'] = 'Nyeste kategorier';
$lang['display recently updated albums'] = 'vis nyligt opdaterede kategorier';
$lang['Recent period'] = 'Sidste periode';
$lang['Recent photos'] = 'Nye fotos';
$lang['display most recent photos'] = 'vis de nyeste fotos';
$lang['Redirection...'] = 'Omdirigering...';
$lang['Please, enter a login'] = 'Indtast login';
$lang['login mustn\'t end with a space character'] = 'login må ikke starte med mellemrum';
$lang['login mustn\'t start with a space character'] = 'login må ikke starte med mellemrum';
$lang['Random photos'] = 'Tilfældige fotografier';
$lang['display a set of random photos'] = 'vis et sæt tilfældigt valgte fotografier';
$lang['Recent albums'] = 'Nyeste albummer';
$lang['display recently updated albums'] = 'vis nyligt opdaterede albummer';
$lang['Recent period'] = 'Seneste periode';
$lang['Recent photos'] = 'Nye fotografier';
$lang['display most recent photos'] = 'vis de nyeste fotografier';
$lang['Redirection...'] = 'Omdirigering ...';
$lang['Please, enter a login'] = 'Skriv loginoplysninger';
$lang['login mustn\'t end with a space character'] = 'login må ikke slutte med mellemrum';
$lang['login mustn\'t start with a space character'] = 'login må ikke begynde med mellemrum';
$lang['this login is already used'] = 'dette login er allerede i brug';
$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = 'mail addresse skal være xxx@yyy.eee (eksempel : jack@altern.org)';
$lang['please enter your password again'] = 'Indtast dit password igen';
$lang['Auto login'] = 'Auto login';
$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = 'mailadresse skal være på formen xxx@yyy.eee (eksempel: jack@altern.org)';
$lang['please enter your password again'] = 'Indtast din adgangskode igen';
$lang['Auto login'] = 'Autologin';
$lang['remove this tag from the list'] = 'fjern dette tag fra listen';
$lang['representative'] = 'thumbnail for kategori';
$lang['Search for Author'] = 'Søg efter fotograf';
$lang['Search in albums'] = 'Søg i kategorier';
$lang['representative'] = 'albums miniaturebillede';
$lang['Search for Author'] = 'Søg efter forfatter';
$lang['Search in albums'] = 'Søg i albummer';
$lang['Search by date'] = 'Søg efter dato';
$lang['Date'] = 'Dato';
$lang['End-Date'] = 'Slut dato';
$lang['End-Date'] = 'Slutdato';
$lang['Kind of date'] = 'Enhver dato';
$lang['Search for words'] = 'Søg efter ord';
$lang['Search for all terms'] = 'Søg efter alle nøgleord';
$lang['Search for any term'] = 'Søg efter alle nøgleord';
$lang['Search for all terms'] = 'Søg efter alle udtryk';
$lang['Search for any term'] = 'Søg efter enkelte udtryk';
$lang['Empty query. No criteria has been entered.'] = 'Tom forespørgsel. Ingen kriterier er indtastet.';
$lang['Search results'] = 'Søge resulter';
$lang['Search in sub-albums'] = 'Søg i under-kategorier';
$lang['searched words : %s'] = 'søgte ord : %s';
$lang['Search results'] = 'Søgeresultater';
$lang['Search in sub-albums'] = 'Søg i underalbummer';
$lang['searched words : %s'] = 'søgte ord: %s';
$lang['Contact'] = 'Kontakt';
$lang['set as album representative'] = 'set as thumbnail for kategori';
$lang['Show number of comments'] = 'Vis antallet af kommentarer';
$lang['Show number of hits'] = 'Vis antallet hits';
$lang['set as album representative'] = 'opsæt som albums miniaturebillede';
$lang['Show number of comments'] = 'Vis antal kommentarer';
$lang['Show number of hits'] = 'Vis antal af visninger';
$lang['slideshow'] = 'slideshow';
$lang['stop the slideshow'] = 'stop slideshow';
$lang['Specials'] = 'Specielle';
$lang['SQL queries in'] = 'SQL forespørgsler i';
$lang['display only recently posted photos'] = 'vis kun nyligt uploadede fotos';
$lang['return to the display of all photos'] = 'tilbage til alle fotos';
$lang['the beginning'] = 'starten';
$lang['Interface theme'] = 'Interface thema';
$lang['Thumbnails'] = 'Thumbnails';
$lang['Specials'] = 'Særligt';
$lang['SQL queries in'] = 'SQL-forespørgsler på';
$lang['display only recently posted photos'] = 'vis kun nyligt tilføjede fotografier';
$lang['return to the display of all photos'] = 'tilbage til alle fotoer';
$lang['the beginning'] = 'begyndelsen';
$lang['Interface theme'] = 'Grænsefladetema';
$lang['Thumbnails'] = 'Miniaturebilleder';
$lang['Menu'] = 'Menu';
$lang['A comment on your site'] = 'En kommentar på din side';
$lang['today'] = 'i dag';
$lang['Update your rating'] = 'Opdater din bedømmelse';
$lang['the username must be given'] = 'brugernavn skal angives';
$lang['useful when password forgotten'] = 'nyttigt ved glemt password';
$lang['Quick search'] = 'Hurtig søg';
$lang['Connected user: %s'] = 'Tilsluttet bruger: %s';
$lang['useful when password forgotten'] = 'nyttigt ved glemt adgangskode';
$lang['Quick search'] = 'Hurtig søgning';
$lang['Connected user: %s'] = 'Indlogget bruger: %s';
$lang['IP: %s'] = 'IP: %s';
$lang['Browser: %s'] = 'Browser: %s';
$lang['Author: %s'] = 'Fotograf: %s';
$lang['Author: %s'] = 'Forfatter: %s';
$lang['Comment: %s'] = 'Kommentar: %s';
$lang['Comment by %s'] = 'Kommentar af %s';
$lang['User: %s'] = 'Bruger: %s';
$lang['Email: %s'] = 'Email: %s';
$lang['Email: %s'] = 'E-mail: %s';
$lang['Admin: %s'] = 'Admin: %s';
$lang['Registration of %s'] = 'Registrering af %s';
$lang['Album: %s'] = 'Kategori: %s';
$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = 'Forket status for gæste bruger. Kontakt webmaster.';
$lang['this email address is already in use'] = 'email adressen anvendes af en anden bruger';
$lang['Album results for'] = 'Kategori resultater for';
$lang['Tag results for'] = 'Tag resultater for';
$lang['Album: %s'] = 'Album: %s';
$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = 'Forkert status på brugeren "guest", standardstatussen benyttes. Vær venlig at give webmaster besked.';
$lang['this email address is already in use'] = 'e-mail-adressen anvendes af en anden bruger';
$lang['Album results for'] = 'Albumresultater for';
$lang['Tag results for'] = 'Tagresultater for';
$lang['from %s to %s'] = 'fra %s til %s';
$lang['Play of slideshow'] = 'Afspil slideshow';
$lang['Pause of slideshow'] = 'Pause i slideshow';
$lang['Pause of slideshow'] = 'Sæt slideshow på pause';
$lang['Repeat the slideshow'] = 'Gentag slideshow';
$lang['Not repeat the slideshow'] = 'Gentag ikke slideshow';
$lang['Reduce diaporama speed'] = 'Nedsæt slideshow hastighed';
$lang['Accelerate diaporama speed'] = 'Forøg slideshow hastighed';
$lang['Reduce diaporama speed'] = 'Nedsæt slideshowhastighed';
$lang['Accelerate diaporama speed'] = 'Forøg slideshowhastighed';
$lang['Submit'] = 'Send';
$lang['Yes'] = 'Ja';
$lang['No'] = 'Nej';
$lang['%d photo']='%d foto';
$lang['%d photos']='%d fotos';
$lang['%d photo is also linked to current tags'] = '%d foto er også linked til disse tags';
$lang['%d photos are also linked to current tags'] = '%d fotos er også linked til disse tags';
$lang['display photos linked to this tag'] = 'Se fotos knyttet til dette tag';
$lang['photos posted during the last %d days'] = 'fotos oprettet de sidste %d dage';
$lang['Piwigo Help'] = 'Piwigo Hjælp';
$lang['%d photo'] = '%d fotografi';
$lang['%d photos'] = '%d fotografier';
$lang['%d photo is also linked to current tags'] = '%d fotografi er også linket til disse tags';
$lang['%d photos are also linked to current tags'] = '%d fotografier er også linket til disse tags';
$lang['display photos linked to this tag'] = 'Se fotografier knyttet til dette tag';
$lang['photos posted during the last %d days'] = 'fotografier tilføjet de seneste %d dage';
$lang['Piwigo Help'] = 'Hjælp til Piwigo';
$lang['Rank'] = 'Karakter';
$lang['group by letters'] = 'alfabetiske grupper';
$lang['letters'] = 'bogstaver';
$lang['show tag cloud'] = 'vis tag cloud';
$lang['show tag cloud'] = 'vis tag-sky';
$lang['cloud'] = 'sky';
$lang['Reset to default values'] = 'Nulstil til standard';
$lang['delete all photos from your favorites'] = 'slet alle filer fra dine favoritter';
$lang['Sent by'] = 'Sent af';
$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = 'Cookies er blokkeret eller ikke supporteret af din browser. Aktiver cookies for at logge på.';
$lang['Reset to default values'] = 'Nulstil til standardværdier';
$lang['delete all photos from your favorites'] = 'fjern alle fotografier fra dine favoritter';
$lang['Sent by'] = 'Sendt af';
$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = 'Cookies er blokeret eller ikke understøttet af din browser. Aktiver cookies for at logge på.';
$lang['Edit a comment'] = 'Rediger en kommentar';
$lang['Are you sure?'] = 'Er du sikker?';
$lang['(!) This comment requires validation'] = '(!) Denne kommentar kræver godkendelse';
$lang['Welcome'] = 'Velkommen';
$lang['Welcome to your Piwigo photo gallery!'] = 'Velkommen til dit Piwigo foto galleri!';
$lang['Welcome to your Piwigo photo gallery!'] = 'Velkommen til dit Piwigo-fotogalleri!';
$lang['... or browse your empty gallery'] = '... eller gennemse dit tomme galleri';
$lang['... or please deactivate this message, I will find my way by myself'] = '... eller deaktiver denne meddelelse, jeg klarer det selv';
$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'Hallo %s, dit Piwigo foto galleri er tomt!';
$lang['I want to add photos'] = 'Jeg vil tilføje fotos';
$lang['Manage this user comment: %s'] = 'Håndter denne bruger kommentar: %s';
$lang['This author modified following comment:'] = 'Denne fortograf har ændret følgende kommentar:';
$lang['This author removed the comment with id %d'] = 'Denne fotograf har fjernet kommentaren med id %d';
$lang['html tags are not allowed in login'] = 'html tags er ikke tilladt i login';
$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'Hej %s, dit Piwigo-fotogalleri er tomt!';
$lang['I want to add photos'] = 'Jeg vil tilføje fotografier';
$lang['Manage this user comment: %s'] = 'Håndter denne brugerkommentar: %s';
$lang['This author modified following comment:'] = 'Denne forfatter har ændret følgende kommentar:';
$lang['This author removed the comment with id %d'] = 'Denne forfatter har fjernet kommentaren med id\'en %d';
$lang['html tags are not allowed in login'] = 'html-tags er ikke tilladt i login';
$lang['%d rates'] = '%d bedømmelser';
$lang['Rating score'] = 'Bedømmelse';
$lang['Invalid username or email'] = 'Forkert brugernavn eller email';
$lang['Password reset is not allowed for this user'] = 'Password reset er ikke tilladt for denne bruger';
$lang['User "%s" has no email address, password reset is not possible'] = 'Bruger "%s" har ingen email adresse, nulstilling af password er ikke muligt';
$lang['Someone requested that the password be reset for the following user account:'] = 'Nogen har anmodet om at resette passwordet til den følgende brugerkonto:';
$lang['Username "%s" on gallery %s'] = 'Brugernavn "%s" i galleri %s';
$lang['To reset your password, visit the following address:'] = 'For at nulstille dit password, besøg følgende adresse:';
$lang['If this was a mistake, just ignore this email and nothing will happen.'] = 'Hvis dette var en fejl, ignorer denne email og der vil ikke ske noget.';
$lang['Password Reset'] = 'Password Reset';
$lang['Check your email for the confirmation link'] = 'Check din email for bekræftigelses link';
$lang['Invalid username or email'] = 'Forkert brugernavn eller e-mail';
$lang['Password reset is not allowed for this user'] = 'Nulstilling af adgangskode er ikke tilladt for denne bruger';
$lang['User "%s" has no email address, password reset is not possible'] = 'Brugeren "%s" har ingen e-mail-adresse, nulstilling af adgangskode er ikke mulig';
$lang['Someone requested that the password be reset for the following user account:'] = 'Nogen har anmodet om at nulstille adgangskoden til følgende brugerkonto:';
$lang['Username "%s" on gallery %s'] = 'Brugernavnet "%s" i galleriet %s';
$lang['To reset your password, visit the following address:'] = 'For at nulstille din adgangskode, skal du besøge følgende adresse:';
$lang['If this was a mistake, just ignore this email and nothing will happen.'] = 'Hvis dette var en fejl, så ignorer e-mailen og der vil ikke ske yderligere.';
$lang['Password Reset'] = 'Nulstil adgangskode';
$lang['Check your email for the confirmation link'] = 'Tjek din e-mail for bekræftelseslink';
$lang['Invalid key'] = 'Forkert nøgle';
$lang['The passwords do not match'] = 'Passwordet matcher ikke';
$lang['Your password has been reset'] = 'Dit password er nulstillet';
$lang['The passwords do not match'] = 'Adgangskoderne stemmer ikke overens';
$lang['Your password has been reset'] = 'Din adgangskode er nulstillet';
$lang['Return to home page'] = 'Retur til forsiden';
$lang['Please enter your username or email address.'] = 'Indtast dit brugernavn eller email adresse.';
$lang['You will receive a link to create a new password via email.'] = 'Du vil modtage et link i din email for at danne et nyt password.';
$lang['Username or email'] = 'Brugernavn eller email';
$lang['Change my password'] = 'Skift mit password';
$lang['Enter your new password below.'] = 'Indtast dit nye password herunder.';
$lang['EXIF Metadata'] = 'EXIF metadata';
$lang['IPTC Metadata'] = 'IPTC Metadata';
$lang['Edit'] = 'Edit';
$lang['Please enter your username or email address.'] = 'Indtast dit brugernavn eller e-mail-adresse.';
$lang['You will receive a link to create a new password via email.'] = 'Du vil via e-mail modtage et link til dannelse af en ny adgangskode.';
$lang['Username or email'] = 'Brugernavn eller e-mail';
$lang['Change my password'] = 'Skift min adgangskode';
$lang['Enter your new password below.'] = 'Indtast din nye adgangskode herunder.';
$lang['EXIF Metadata'] = 'EXIF-metadata';
$lang['IPTC Metadata'] = 'IPTC-metadata';
$lang['Edit'] = 'Rediger';
$lang['Hello %s,'] = 'Hej %s,';
$lang['Send my connection settings by email'] = 'Send mine indstillinger med email';
$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = 'Du er registreret, du vil snart modtage en mail med dine konto informationer. Velkommen!';
$lang['Send my connection settings by email'] = 'Send mine loginoplysninger pr. e-mail';
$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = 'Du er registreret, og du vil snart modtage en e-mail med dine loginoplysninger. Velkommen!';
$lang['Username modification'] = 'Ændring af brugernavn';
$lang['Your username has been successfully changed to : %s'] = 'Dit brugernavn er ændret til: %s';
$lang['square'] = 'Kvadrat';
$lang['thumb'] = 'Thumbnail';
$lang['small'] = 'S-small';
$lang['medium'] = 'M-medium';
$lang['large'] = 'L-large';
$lang['xlarge'] = 'XL-ekstra large';
$lang['xxlarge'] = 'XXL-ekstra ekstra large';
$lang['square'] = 'Kvadratisk';
$lang['thumb'] = 'Miniaturebillede';
$lang['small'] = 'S - lille';
$lang['medium'] = 'M - medium';
$lang['large'] = 'L - stor';
$lang['xlarge'] = 'XL - ekstra stor';
$lang['xxlarge'] = 'XXL - ekstrem stor';
$lang['Original'] = 'Original';
$lang['Thank you for registering at %s!'] = 'Tak for din registrering hos %s!';
$lang['Here are your connection settings'] = 'Her er dine login informationer';
$lang['Password: %s'] = 'Password: %s';
$lang['Here are your connection settings'] = 'Her er dine loginoplysninger';
$lang['Password: %s'] = 'Adgangskode: %s';
$lang['Username: %s'] = 'Brugernavn: %s';
$lang['If you think you\'ve received this email in error, please contact us at %s'] = 'Hvis du tror du har modtaget denne email ved en fejl kontakt os på %s';
$lang['If you think you\'ve received this email in error, please contact us at %s'] = 'Hvis du mener, du har modtaget denne e-mail ved en fejl, så kontakt os på %s';
$lang['Show oldest comments first'] = 'Vis ældste kommentarer først';
$lang['Show latest comments first'] = 'Vis sidste kommnetarer først';
$lang['Photo sizes'] = 'Foto størrelser';
$lang['Show latest comments first'] = 'Vis seneste kommnetarer først';
$lang['Photo sizes'] = 'Fotografistørrelser';
$lang['View in'] = 'Vis i';
$lang['Mobile'] = 'Mobil';
$lang['Desktop'] = 'Desktop';
$lang['2small'] = 'XXS-meget lille';
$lang['xsmall'] = 'XS-ekstra lille';
$lang['File name, A &rarr; Z'] = 'Fil navn, A &rarr; Z';
$lang['File name, Z &rarr; A'] = 'Fil navn, Z &rarr; A';
$lang['Photo title, A &rarr; Z'] = 'Foto titel, A &rarr; Z';
$lang['Photo title, Z &rarr; A'] = 'Foto titel, Z &rarr; A';
$lang['2small'] = 'XXS - meget lille';
$lang['xsmall'] = 'XS - ekstra lille';
$lang['File name, A &rarr; Z'] = 'Filnavn, A &rarr; Å';
$lang['File name, Z &rarr; A'] = 'Filnavn, Å &rarr; A';
$lang['Photo title, A &rarr; Z'] = 'Fototitel, A &rarr; Z';
$lang['Photo title, Z &rarr; A'] = 'Fototitel, Z &rarr; A';
$lang['Date created, new &rarr; old'] = 'Dato oprettet, ny &rarr; gammel';
$lang['Date created, old &rarr; new'] = 'Dato oprettet, gammel &rarr; ny';
$lang['Date posted, new &rarr; old'] = 'Dato posted, ny &rarr; gammel';
$lang['Date posted, old &rarr; new'] = 'Dato posted, gammel &rarr; ny';
$lang['Rating score, high &rarr; low'] = 'bedømmelse score, høj &rarr; lav';
$lang['Rating score, low &rarr; high'] = 'bedømmelse score, lav &rarr; høj';
$lang['Date posted, new &rarr; old'] = 'Dato tilføjet, ny &rarr; gammel';
$lang['Date posted, old &rarr; new'] = 'Dato tilføjet, gammel &rarr; ny';
$lang['Rating score, high &rarr; low'] = 'bedømmelsesscore, høj &rarr; lav';
$lang['Rating score, low &rarr; high'] = 'bedømmelsesscore, lav &rarr; høj';
$lang['Visits, high &rarr; low'] = 'Besøgende, høj &rarr; lav';
$lang['Visits, low &rarr; high'] = 'Besøgende, lav &rarr; høj';
$lang['Numeric identifier, 1 &rarr; 9'] = 'Numerisk identifikation, 1 &rarr; 9';
$lang['Numeric identifier, 9 &rarr; 1'] = 'Numerisk identifikation, 9 &rarr; 1';
$lang['Manual sort order'] = 'Manuel sorterings orden';
$lang['Manual sort order'] = 'Manuel sorteringsrækkefølge';
$lang['%d rate'] = '%d bedømmelse';
$lang['Bad request'] = 'Fejlagtig forespørgsel';
$lang['Forbidden'] = 'Ikke tilladt';
$lang['Page not found'] = 'Siden blev ikke fundet';
$lang['Permalink for album not found'] = 'Permalink for kategori blev ikke fundet';
$lang['Permalink for album not found'] = 'Albums permalink blev ikke fundet';
$lang['Piwigo encountered a non recoverable error'] = 'Piwigo stødte på en uoprettelig fejl';
$lang['Requested album does not exist'] = 'Den forespurgte kategori eksisterer ikke';
$lang['Requested tag does not exist'] = 'Den forespurgte tag eksisterer ikke';
$lang['Requested album does not exist'] = 'Det valgte album findes ikke';
$lang['Requested tag does not exist'] = 'Den valgte tag findes ikke';
$lang['day']['1'] = 'Mandag';
?>

View file

@ -1,106 +1,97 @@
<h2>Rediger kategori</h2>
<h3>Information</h3>
<ul>
<li><strong>navn</strong>: omd&oslash;be kategori (en virtuel omd&oslash;be i tilf&aelig;lde af af en fysisk kategori).</li>
<li><strong>beskrivelse </strong>: kort tekst giver en generel id&eacute; om indholdet, denne tekst vil blive vist nederst p&aring; miniaturerbillede siden.</li>
</Ul>
<h3>Flyt</h3>
<p>Hvis kategorien er virtuel, kan du flytte den. Flytning af en kategori betyder
&aelig;ndre dens overordnede kategori.</p>
<h3>Valg mulighedder</h3>
<ul>
<li><strong>Adgangstype</strong>: Tilladelses styring. Hvis du laver en kategori privat, vil alle dens underordnede kategorier blive private. Hvis du laver en kategori offentlig, vil alle dens overordenede kategorier bliver offentlige.</li>
<li><strong>L&aring;s</strong>: Kategorien og dens underkategorier vil v&aelig;re midlertidig deaktiveret for vedligeholdelse.</li>
<li><strong>kommentarer</strong>: Tillad brugere at kommentere billeder i denne kategori.</li>
</Ul>
<p>Du kan ogs&aring; administrere disse valg muligheder i "Egenskaber" p&aring; styringsoversigt sk&aelig;rmen
(sk&aelig;rme
<span class="pwgScreen">Kommentarer</span>,
<span class="pwgScreen">l&aring;s</span>,
<span class="pwgScreen">Offentlig /Privat</span>,
<span class="pwgScreen">repr&aelig;sentant</span> f&aring;s fra
<span class="pwgScreen">Administration &raquo; &raquo;Kategorier&raquo; &raquo; Egenskaber</span>). </p>
<h3>Sorteringsr&aelig;kkef&oslash;lge</h3>
<p>Brug standard billede sorteringsr&aelig;kkef&oslash;lgen.</p>
<p>Angiv, om denne sorteringsr&aelig;kkef&oslash;lge vil g&aelig;lde for underkategorier ogs&aring;.</p>
<p>V&aelig;lg specifik sorteringskriterie, der skal bruges med denne kategori.</p>
<ul>
<li><strong>Oprettelsesdato</strong>: Foto optagelsesdato</li>
<li><strong>Indl&aelig;g dato</strong>: Synkronisering dato</li>
<li><strong>Gennemsnitlig karakter (*)</strong>: Gennemsnitlig karakter kan &aelig;ndres ved bes&oslash;gendes bed&oslash;mmelser</li>
<li><strong>Mest bes&oslash;gte (*)</strong>: Det aktuelle bes&oslash;g kan &aelig;ndre r&aelig;kkef&oslash;lgen af den mest bes&oslash;gte</li>
<li><strong>Filnavn</strong>: Navn givet i informations feltet</li>
<li><strong>Id</strong>: Intern Id (seneste kategorier har en h&oslash;jere id end tidligere)</li>
</Ul>
<p>(*)</strong>Advarsel: S&oslash;rg for at teste sorteringsr&aelig;kkef&oslash;lgen selv, da de kan give uventede resultater</p>
<h3>repr&aelig;sentanten</h3>
<p>Kategori repr&aelig;sentant er miniaturebilledet der vises p&aring; hovedsiden (<span class="pwgScreen"> category.php </span>) til at repr&aelig;sentere
kategorien, n&aring;r det kun indeholder underkategorier og ingen direkte foto (ligesom roden album). </p>
foto af en kategori:</p>
<ul>
<li><span class="pwgScreen">Foto side</span> : en af de actions knapper kan du indstille til at s&aelig;tte det aktuelle billede som repr&aelig;sentant for viste kategori. Denne knap er kun tilg&aelig;ngelig for administratorer.</Li>
<li><span class="pwgScreen">&aelig;ndre informationer om et foto</span> i administration. Denne sk&aelig;rm kan n&aring;s fra <span class="pwgScreen">picture.php</span> eller <span class="pwgScreen">Batch ledelse</span> i <em>enheds tilstand</em> .Se hj&aelig;lp af denne sk&aelig;rm for detaljer.</li>
<li><span class="pwgScreen">Administration &raquo; Kategorier &raquo; Egenskaber, Repr&aelig;sentant</span>. Se hj&aelig;lp af denne sk&aelig;rm for yderligere oplysninger. </Li>
<li><span class="pwgScreen">Rediger kategori</span> (den nuv&aelig;rende sk&aelig;rmen).</li>
</Ul>
<p>Valget af en repr&aelig;sentativ afh&aelig;nger af <code>allow_random_representative</code>-konfigurations parameter (se <span class="filnavn">inkludere /config_default.inc.php</span>).</p>
<p>I standardtilstand (<code>allow_random_representative</code> sat til falsk),
hver kategori indeholder mindst &eacute;t element er repr&aelig;senteret ved et fast
element. N&aring;r de er indstillet (ved kategori oprettelse), &aelig;ndres repr&aelig;sentanten kun
n&aring;r en administrator beder om det. Hvis repr&aelig;sentanten ikke er hensigtsm&aelig;ssigt,
kan du bede om at <strong>Finde en ny tilf&aelig;ldig repr&aelig;sentant</strong>.</p>
<p>Hvis <code>allow_random_representative</code>-konfigurations parameteren er
sat til sand, kan en kategori, der indeholder billeder have ingen fast
repr&aelig;sentanten. Bare brug <strong>Slet repr&aelig;sentanten</strong> knappen.</P>
<p>Hvis kategorien kun indeholder underkategorier og ingen foto, kan det alligevel v&aelig;re repr&aelig;senteret af nogle elementer takket v&aelig;re <span class="pwgScreen">&AElig;ndre informationer om et foto</span> sk&aelig;rmen.
Den eneste mulighed p&aring; den aktuelle sk&aelig;rm er <strong>Slet repr&aelig;sentanten</strong> knappen.</p>
<h3> Link alle kategori billeder til en ny kategori </h3>
<ul>
<li><strong>Virtual kategori navn</strong>: Navnet p&aring; den nye kategori, der skal oprettes,
alle billeder fra denne kategori vil blive knyttet til den nye.</li>
<li><strong>Hoved kategori</strong>: Hvor den nye kategori vil v&aelig;re, lad st&aring; tomt for at skabe den ved roden.</li>
</Ul>
<h3>Link alle kategori billeder til eksisterende kategori</h3>
<ul>
<li><strong>Kategorier</strong>: V&aelig;lg destinationen kategori</li>.
</Ul>
<h3>Send en informations-mail til gruppens medlemmer</h3>
<ul>
<li><strong>Group</strong>: modtagere gruppe</li>
<li><strong>Mail indhold</strong>: Fritekst at sende til dem</li>
</Ul>
<h2>Rediger album</h2>
<h3>Oplysninger</h3>
<ul>
<li><strong>navn</strong>: omdøb album (en virtuel omdøbelse i tilfælde af et fysisk album).</li>
<li><strong>beskrivelse</strong>: kort tekst, der giver en generel idé om indholdet, teksten vil blive vist nederst på siden med miniaturerbilleder.</li>
</Ul>
<h3>Flyt</h3>
<p>Hvis albummet er virtuelt, kan du flytte det. Flytning af et album betyder udskiftning af dets overordnede album.</p>
<h3>Valgmuligheder</h3>
<ul>
<li><strong>Adgangstype</strong>: Rettighedsstyring. Hvis du gør et album privat, vil alle dets underalbummer også blive private. Hvis du gør et album offentligt, vil alle dets overordenede albummer bliver offentlige.</li>
<li><strong>Lås</strong>: Albummet og dets underalbummer bliver midlertidigt deaktiveret på grund af vedligeholdelse.</li>
<li><strong>Kommentarer</strong>: Autoriserer brugere til at kommentere billeder i albummet.</li>
</Ul>
<p>Du kan også håndtere valgmulighederne under administrationssiden "Egenskaber"
(siderne
<span class="pwgScreen">Kommentarer</span>,
<span class="pwgScreen">Lås</span>,
<span class="pwgScreen">Offentlig/privat</span>,
<span class="pwgScreen">Repræsentant</span> tilgængelige fra
<span class="pwgScreen">Administration &raquo; Albummer &raquo; Egenskaber</span>).</p>
<h3>Sorteringsrækkefølge</h3>
<p>Brug standardsorteringsrækkefølgen for billeder.</p>
<p>Angiv hvorvidt sorteringsrækkefølgen også vil gælde underalbummer.</p>
<p>Vælg specifikt sorteringskriterium, der skal anvendes på dette album.</p>
<ul>
<li><strong>Oprettelsesdato</strong>: Den dato fotoet blev taget</li>
<li><strong>Tilføjelsesdato</strong>: Synkroniseringsdato</li>
<li><strong>Gennemsnitlig bedømmelse (*)</strong>: Gennemsnitlig bedømmelse kan ændres ved besøgendes bedømmelser</li>
<li><strong>Mest besøgte (*)</strong>: Det aktuelle besøg kan ændre rækkefølgen af de mest besøgte</li>
<li><strong>Filnavn</strong>: Navnet angivet i oplysningsfeltet</li>
<li><strong>Id</strong>: Intern id (seneste kategorier har en højere id end de tidligere)</li>
</Ul>
<p>(*)</strong>Advarsel: Sørg selv for at teste sorteringsrækkefølgen, da de kan give uventede resultater.</p>
<h3>Repræsentanten</h3>
<p>Albumsrepræsentanten er miniaturebilledet, der vises på hovedsiden (<span class="pwgScreen">category.php</span>), som repræsentant for albummet, når det kun indeholder underalbummer og ingen fotografier (lige som rodalbummet).</p>
<p>Foto fra et album:</p>
<ul>
<li><span class="pwgScreen">Fotoside</span>: En af handlingsknapperne giver mulighed for at vælge det aktuelle billede som repræsentant for det viste album. Knappen er kun tilgængelig for administratorer.</Li>
<li><span class="pwgScreen">Ændring af fotooplysninger</span> i administration. Siden er tilgængelig fra <span class="pwgScreen">picture.php</span> eller <span class="pwgScreen">Batchadministration</span> i <em>enhedstilstand</em> .Se hjælpen til denne side for flere oplysninger.</li>
<li><span class="pwgScreen">Administration &raquo; Albummer &raquo; Egenskaber, Repræsentant</span>. Se hjælpen til denne side for flere oplysninger.</li>
<li><span class="pwgScreen">Rediger album</span> (den aktuelle side).</li>
</Ul>
<p>Valg af repræsentant afhænger af <code>allow_random_representative</code>-opsætningsparameteret (se <span class="filnavn">include/config_default.inc.php</span>).</p>
<p>I standardtilstand (<code>allow_random_representative</code> sat til false), er hvert album indeholdende mindst et element, repræsenteret af et fast element. Når det er opsat (ved oprettelsen af albummet), ændres repræsentanten kun når en administrator beder om det. Hvis repræsentanten ikke er hensigtsmæssig, kan du benytte <strong>Find en ny tilfældig repræsentant</strong>.</p>
<p>Hvis <code>allow_random_representative</code>-opsætningsparameteret er sat til true, vil et album, der indeholder billeder, ikke have en fast repræsentant. Benyt blot knappen <strong>Slet repræsentant</strong>.</p>
<p>Hvis albummet kun indeholder underalbummer og ingen fotografier, kan det ikke desto mindre være repræsenteret af ethvert element, takket være siden <span class="pwgScreen">Ændring af fotooplysninger</span>. Den eneste valgmulighed på den aktuelle side er knappen <strong>Slet repræsentant</strong>.</p>
<h3>Knyt alle billeder i et album til et nyt album</h3>
<ul>
<li><strong>Virtuelt albumnavn</strong>: Navnet på det nye album, der skal oprettes, alle billeder fra albummet vil blive knyttet til det nye.</li>
<li><strong>Overordnet album</strong>: Hvor det nye album vil være placeret. Lad det være tomt, for at oprette under roden.</li>
</ul>
<h3>Knyt alle billeder i et album til eksisterende album</h3>
<ul>
<li><strong>Albummer</strong>: Vælg målalbummet</li>.
</Ul>
<h3>Send en oplysningsmail til gruppens medlemmer</h3>
<ul>
<li><strong>Gruppe</strong>: Modtagergruppe</li>
<li><strong>Mailindhold</strong>: Fritekst der sendes til dem</li>
</Ul>

View file

@ -1,14 +1,14 @@
<h2>Flyt virtuelle kategorier</h2>
<p>Kun virtuelle kategorier kan have en ny for&aelig;ldre kategori.</p>
<h3>Virtuelle kategorier som &oslash;nskes flyttet</h3>
<p>V&aelig;lg en eller flere virtuelle kategorier du &oslash;nsker at flytte.
Hvis listen er tom, betyder det at du ikke har oprettet nogen endnu.</p>
<h3>Ny for&aelig;ldre kategori</h3>
<p>V&aelig;lg den nye for&aelig;ldre kategori (virtuelt eller fysisk).
Hvis du ikke vælger en forældrekategori, vil den valgte virtuelle kategori blive flyttet til roden.
En kategori kan ikke flyttes til sig selv eller til en af dens underkategorier.</p>
<h2>Flytning af virtuelle albummer</h2>
<p>Kun virtuelle albummer kan få et nyt overordnet album.</p>
<h3>Virtuelle albummer som skal flyttes</h3>
<p>Vælg et eller flere virtuelle albummer, som du ønsker at flytte.
Hvis listen er tom, betyder det at du endnu ikke har oprettet en.</p>
<h3>Nyt overordnet album</h3>
<p>Vælg det nye overordnede album (virtuelt eller fysisk).
Hvis du ikke vælger et overordnet album, bliver det valgte virtuelle album flyttet til roden.
Et album kan ikke blive flyttet ind i sig selv eller til et af dets underalbummer.</p>

View file

@ -1,21 +1,21 @@
<h2>album indstillinger</h2>
<p>Valg muligheder for flere kategorier p&aring; &eacute;n gang.</p>
<dl>
<dt>Kommentarer</dt>
<dd>Et foto kan modtage kommentarer fra dine bes&oslash;gende, hvis det h&oslash;rer til en kategori hvor kommentarer er aktiveret. </ dd>
<dt>L&aring;s</dt>
<dd>L&aring;ste kategorier er sl&aring;et fra for vedligeholdelse. Kun administratorer kan se dem i galleriet.</Dd>
<dt>Offentligt/privat</dt>
<dd>N&aring;r en kategori er blevet privat, at give adgangsrettigheder til brugere og grupper</dd>
<dt>repr&aelig;sentant</dt>
<dd>Denne indstilling er tilg&aelig;ngelig, n&aring;r du indstiller konfigurationsindstilling
<code>allow_random_representative</ code> (se <span class="filename">include/config_defaults.inc.php</span>) til
<em>sande</em>. Hver kategori kan v&aelig;re repr&aelig;senteret ved en tilf&aelig;ldig foto eller et billede valgt som en unik repr&aelig;sentant.</Dd>
</ dl>
<h2>Albumvalgmuligheder</h2>
<p>Håndtering af flere albums valgmuligheder på én gang.</p>
<dl>
<dt>Kommentarer</dt>
<dd>Et fotografi kan modtage kommentarer fra dine besøgende, hvis det hører til et album hvor kommentarer er aktiveret.</ dd>
<dt>Lås</dt>
<dd>Låste albummer er deaktiveret på grund af vedligeholdelse. Kun administratorer kan se dem i galleriet.</Dd>
<dt>Offentligt / privat</dt>
<dd>Når et album er blevet privat, gives adgangstilladelser til brugere og grupper</dd>
<dt>Repræsentant</dt>
<dd>Valgmuligheden er tilgængelig når indstillingen
<code>allow_random_representative</ code> er sat (se <span class="filename">include/config_defaults.inc.php</span>) til
<em>true</em>. Hvert album kan repræsenteres af et tilfældigt antal fotografier eller et fotografi udvalgt som en unik repræsentant.</dd>
</dl>

View file

@ -1,13 +1,11 @@
<h2>Rediger album tilladelser</h2>
<p>Dette sk&aelig;rmbillede er kun tilg&aelig;ngelig for private kategorier. Her kan du v&aelig;lge
brugere og grupper der er godkendt til en kategori.</p>
<h3>Grupper</h3>
<p>Du kan n&aelig;gte eller give grupper adgang til den aktuelle kategori. ved at &aelig;ndre
grupper tilladelser, vil brugerne, der tilh&oslash;rer disse grupper n&aelig;gtes eller gives adgang til kategorien.</p>
<h3>Brugere</h3>
<p>Du kan n&aelig;gte eller give adgang til individuelle brugere. Brugere, der har adgang via en gruppe kan n&aelig;gtes adgang ved undtagelse.</P>
<h2>Rediger albumtilladelser</h2>
<p>Siden er kun tilgængelig ved private albummer. Her kan man vælge brugere og grupper, som er autoriseret til at se albummet.</p>
<h3>Grupper</h3>
<p>Du kan fratage eller tildele gruppeadgang til det aktuelle album. Ved at ændre gruppeautorisationer, vil brugerne som hører til disse grupper få tildelt adgang til albummet.</p>
<h3>Brugere</h3>
<p>Du kan fratage eller tildele adgang til individuelle brugere. Bruger der har adgang via en gruppe, kan via undtagelser få frataget adgang.</p>

View file

@ -0,0 +1,95 @@
<h2>Opsætning</h2>
<p>Her foretager administratoren grundlæggende opsætning af sit galleri. Der vises faktisk kun simple opsætningsparametre, som skulle være tilstrækkeligt for langt størstedelen af administratorer. Ønsker du at se mange andre (og avancerede) opsætningsparametre, så kig i filen med standardopsætningen <span
class="filename">include/config_default.inc.php</span>.</p>
<p>Siden er opdelt i forskellige afsnit, hvor opsætningsparametrene er grupperet efter emne.</p>
<h3>Primært</h3>
<ul>
<li><strong>Gallerititel</strong>: anvendes i RSS-feed og notifikation pr. mail.</li>
<li><strong>Sidebanner</strong>: vises øverst på alle offentlige sider.</li>
<li><strong>Galleri-URL</strong>: anvendes i RSS-feed'en.</li>
<li><strong>Lås galleri</strong>: Lås hele galleriet på grund af vedligeholdelse. Kun administratorer kan tilgå galleriet.</li>
<li><strong>Bedømmelse</strong>: Funktionen til bedømmelse af fotografier er aktiveret.</li>
<li><strong>Gæsters bedømmelse</strong>: Selv ikke-registrerede brugere kan bedømme billeder.</li>
<li><strong>Tillad brugerregistrering</strong>: Alle kan registrere sig.</li>
<li><strong>Mailadresse er krævet for alle brugere</strong>: mailadressen vil blive kontrolleret ved registrering eller profilopdatering, bortset fra hvis handlingen foretages af en administrator.</li>
<li><strong>Send mail til admins når en ny bruger registrerer sig</strong>: administratorer notificeres pr. mail, hver gang nogen registrerer sig.</li>
<li><strong>Standard for fotorækkefølge</strong>: du kan definere en personliggjort rækkefølge ved hjælp af disse dropdownmenuer.</li>
</ul>
<h3>Historik</h3>
<p>Besøg på siderne <span
class="pwgScreen">category.php</span> og <span
class="pwgScreen">picture.php</span> vil blive gemt i tabellen <code>history</code>.</p>
<p>Besøg vil blive vist i <span class="pwgScreen">Administration &raquo; Værktøjer &raquo; Historik</span>.</p>
<ul>
<li><strong>Gem gæsters sidebesøg</strong>: gæsters sidebesøg gemmes.</li>
<li><strong>Gem brugeres sidebesøg</strong>: registrerede brugeres sidebesøg gemmes.</li>
<li><strong>Gem administratorers sidebesøg</strong>: administratorers sidebesøg gemmes.</li>
</ul>
<h3>Kommentarer</h3>
<ul>
<li><strong>Kommentarer til alle</strong>: Selv ikke-registrerede gæster kan skrive kommentarer.</li>
<li><strong>Antal kommentarer pr. side</strong>.</li>
<li><strong>Godkendelse</strong>: en administrator skal godkende brugerkommentarer, før de bliver synlige på webstedet. Godkendelse af brugerkommentarer foretages på siden <span class="pwgScreen">Administration &raquo; Værktøjer &raquo; Ventende kommentarer</span>.</li>
<li><strong>Send mail til admins når en gyldig kommentar gemmes</strong>: Sender en e-mail til administratorerne når en bruger gemmer en kommentar og denne godkendes.</li>
<li><strong>Send mail til admins når en kommentar kræver godkendelse</strong>: Sender en e-mail til administratorerne når en bruger gemmer en kommentar, som kræver admingodkendelse. Godkendelse af brugerkommentarer foretages på siden <span class="pwgScreen">Administration &raquo; Værktøjer &raquo; Ventende kommentarer</span>.</li>
</ul>
<h3>Standardvisning</h3>
<p>Her ændrer man valgmulighederne i forbindelse med visning for guest-brugeren, standardbrugeren som ikke har en konto. Når der er logget på, kan valgmulighederne overtrumfes af brugerens egne valgmuligheder (som ændres i <span class="pwgScreen">profil</span>).</p>
<p>Det er muligt at ændre visningsvalgmulighederne for alle eksisterende brugere på siden <span class="pwgScreen">Administration &raquo; Brugere &raquo; Håndter</span>, hvor man kan udvælge brugere.</p>
<ul>
<li><strong>Sprog</strong>: Gælder kun Piwigo-ettiketter. Albumnavne, fotografinavne og alle beskrivelsesfelter er ikke oversætbare.</li>
<li><strong>Antal fotografier pr. række</strong></li>
<li><strong>Antal rækker pr. side</strong></li>
<li><strong>Grænsefladetema</strong></li>
<li><strong>Seneste periode</strong>: Efter dage. Periode under hvilken et fotografi vises som nyt. Skal være større end 1 dag.</li>
<li><strong>Åbn alle albummer</strong>: Åbn alle albummer som standard i menuen. <em>Advarsel</em>: valgmuligheden er ressourceintensiv og kan medføre en enorm menu, hvis dit albumtræ indeholder mange albummer.</li>
<li><strong>Vis antal kommentarer</strong>: Vis antal kommentarer til hvert fotografi på miniturebilledsiden. Ressourceintensiv.</li>
<li><strong>Vis antal visninger</strong>: Vis et fotografis antal visninger, lige under dets miniturebilleds på miniturebilledsiden. Kun når det avancerede opsætningsparameter er:<br>
$conf['show_nb_hits'] = true; <br>
Bemærk: false som standard.</li>
<li><strong>Maksimal bredde på fotografierne</strong>: maksimal visningsbredde. Fotografier, som er større end denne indstilling vil blive skaleret ved visningen. Frem for at benytte denne indstilling, kan du overveje at ændre bredden på dine fotografier; det er en bedre praksis.</li>
<li><strong>Maksimal højde på fotografierne</strong>: tilsvarende opsætningen af maksimal bredde.</li>
</ul>

View file

@ -0,0 +1,55 @@
<h2>Opsætning af skabelonudvidelsen</h2>
<h3>Om</h3>
<p>Dit Piwigo-galleri kan tilpasses ved at udskifte eksisterende skabelonfiler med tilpassede udgaver. For eksempel
kan standardheaderskabelonen (header.tpl) erstattes med en tilpasset headerskabelon (my-header.tpl). Efter at have gemt ændringerne i databasen, vil galleriet vise den tilpassede header i stedet for den oprindelige header.<br>
Skabelonudvidelser er en god måde at oprette tilpassede temaer på for både nye og avancerede brugere. Anvendt sammen med LocalFiles Editor kan du oprette dine egne nedarvede temaer.</p>
<h3>Oprindelig skabelon</h3>
<p>Et tema indeholder et antal skabelonfiler, som udgår gallerisiderne. Det er de oprindelige skabeloner.</p>
<h3>Valgfrit URL-nøgleord</h3>
<p>Det er ord, som findes i galleri-URL'en efter et modulnavn. De kan også være aktive permalinks (Se permalink-dokumentationen for flere oplysninger). <a href="#warnings">ADVARSEL:</a> hvis den samme oprindelige skabelon og det samme nøgleord anvendes i mere end én tilpasset skabelon, er kun den seneste aktiv.</p>
<h3>Bundet tema</h3>
<p>Det bundne tema, er temaet hvis skabelonfiler udskiftes.</p>
<h3>Hvor er de oprindelige skabeloner?</h3>
<p>Oprindelige skabeloner er de skabelonfiler, som leveres med de enkelte teamer. De er gemt i <em>/themes/default/template</em> (eller <em>themes/<temanavn>/template</em>). Disse skabelonfiler bør ikke redigeres, hvor de befinder sig, da ændringer vil gå tabt når temaet opgraderes.<br>
Understøttede oprindelige skabeloner er blandt andre:</p>
<ul>
<li><span class="filename">index.tpl</span></li>
<li><span class="filename">mainpage_categories.tpl</span> og/eller <span class="filename">thumbnails.tpl</span></li>
<li><span class="filename">menubar.tpl</span></li>
<li><span class="filename">header.tpl</span> og/eller <span class="filename">footer.tpl</span></li>
<li><span class="filename">picture_content.tpl</span> og/eller <span class="filename">picture.tpl</span></li>
<!-- <li><span class="filename">slideshow.tpl</span></li> -->
<li><span class="filename">profile.tpl</span> og/eller <span class="filename">profile_content.tpl</span></li>
<li><span class="filename">tags.tpl</span></li>
<li><span class="filename">upload.tpl</span></li>
<li><span class="filename">about.tpl</span></li>
<li><span class="filename">popuphelp.tpl</span></li>
<li><span class="filename">search.tpl</span> og/eller <span class="filename">search_rules.tpl</span></li>
<li><span class="filename">nbm.tpl</span> og/eller <span class="filename">notification.tpl</span></li>
<li><span class="filename">identification.tpl</span> og/eller <span class="filename">register.tpl</span></li>
<li><span class="filename">redirect.tpl</span></li>
</ul>
<h3>Gemning af tilpassede skabeloner</h3>
<p>Tilpassede skabeloner bør gemmes i mappen template-extension eller undermapper. For eksempel <em>/template-extension/min-standard/header.tpl</em> (eller <em>/template-extension/<mit-temas-navn>/header.tpl</em>). Skabelonfiler kan have et vilkårligt nanv, som slutter med filudvidelsen .tpl. Skabelonfiler i undermapper viser sig på Skabelon-opsætningssiden som tilgængelige tilpassede skabeloner.</p>
<h3>Aktivering af tilpassede skabeloner</h3>
<p>Vælg den oprindelige skabelon, som skal erstattes. Det er valgfrit om man vælger et URL-nøgleord for at sikre at den tilpassede skabelon kun vises på sider, med det nøgleord. Vælg et bundet tema og ændringerne vil kun træde i kraft i det tema. Gem dine ændringer i databasen.</p>
<h3>Deaktivering af tilpassede skabeloner</h3>
<p>Fravælg den oprindelige skabelon og gem ændringerne i databasen.<br>
Slet filerne med den tilpassede skabelon fra mappen template-extension.</p>
<a name="warnings"></a>
<h3>Advarsler</h3>
<ul>
<li><strong>Den oprindelige skabelon</strong> skal være den oprindelige skablon, ellers kan du opleve uforudsigelige resultater.</li>
<li>Hvis den samme oprindelige skabelon og det samme URL-nøgleord anvendes i mere end en tilpasset skabelon, vil kun den sidste være aktiv.</li>
<li>Distribuerede eksempler på skabelonfiler er kun til testformål. Rediger dem ikke. Opret dine egne eller kopi eksisterende temaskabelonfiler til <em>/template-extension/<mit-tema>/</em></li>
<li>Når en tilpasset skabelon slettes, genaktiveres den oprindelige skabelonfil med det samme.</li>
</ul>

View file

@ -1,21 +1,22 @@
<h2>Grupper liste</h2>
<p>Dette er stedet hvor du h&aring;ndtere grupper.</p>
<h3>Tilf&oslash;jelse af en gruppe</h3>
<p>Administrator kan tilf&oslash;je grupper.</p>
<h3>Grupper liste</h3>
<p>For hver gruppe f&oslash;lgende tiltag kan anvendes:</p>
<ul>
<li>g&aring; til brugeradministration (Admin &raquo Brugere &raquo Administrer)</li>
<li>g&aring; til tilladelses administration sk&aelig;rmen for at give eller n&aelig;gte adgang til private album.</li>
<li>slette gruppen (kr&aelig;ver en bekr&aelig;ftelse)</li>
<li>Skift status "standard" (kr&aelig;ver en bekr&aelig;ftelse)</li>
</ul>
<h3> Standard grupper </h3>
<p>Standard grupper er grupper, der automatisk er forbundet med hver ny bruger ved registrering eller oprettelse af en administrator.</p>
<h2>Gruppeliste</h2>
<p>Her håndteres grupper.</p>
<h3>Tilføj en gruppe</h3>
<p>En administrator kan tilføje grupper.</p>
<h3>Gruppeliste</h3>
<p>Hver gruppe kan tildeles følgende handlinger:</p>
<ul>
<li>gå til brugeradministration (Admin &raquo; Brugere &raquo; Håndter)</li>
<li>gå til siden med tilladelsesadministration for at tildele eller fjerne adgang til private albummer.</li>
<li>slet gruppen (kræver en bekræftelse)</li>
<li>skift "default"-status (kræver en bekræftelse)</li>
</ul>
<h3>Standardgrupper</h3>
<p>Standardgrupper er grupper, som automatisk tildeles hver ny bruger ved registrering eller oprettelse ved administrators mellemkomst.</p>

View file

@ -1,27 +1,21 @@
<p> Flere m&aring;der at tilf&oslash;je dine billeder i dit galleri: </p>
<ul>
<li> <strong> Direkte upload </strong> i din web browser er den
enkleste og mest umiddelbare m&aring;de. Det afh&aelig;nger af dine Browserfunktioner
og din webserver. For en stor m&aelig;ngde fotos eller hvis du st&oslash;der p&aring; nogle problemer,
venter de andre metoder, bare p&aring; dig! </li>
</ul>
<p class="nextStepLink"> <a href="admin.php?page=photos_add&section=direct"> G&aring; til Direkte Upload </a> </p>
<ul>
<li> <strong> pLoader </strong> er en desktop applikation, der skal installeres p&aring; din computer. Tr&aelig;k og slip billeder i pLoader vindue, klik p&aring; <em> "Upload til Piwigo" </em> og lad pLoader g&oslash;re arbejdet. Du kan finde andre desktop applikationer s&aring;som <strong> WinToPiwigo </strong> eller <strong> Digikam </strong> Eksporter plugin til Piwigo. </Li>
</ul>
<p class="nextStepLink"> <a href="admin.php?page=photos_add&section=ploader"> G&aring; til pLoader </a> </p>
<div id="helpSynchro">
<ul>
<li> <strong> FTP overf&oslash;rsel </strong> er den mest anbefalede m&aring;de at tilf&oslash;je en
meget stor samling af billeder med et minimum antal klik. F&oslash;lg
guiden til at forberede dine billeder. FTP-metode kan du styre pr&aelig;cist
den fysiske organisering af dine billeder p&aring; din server. </li>
</ul>
<p class="nextStepLink"> <a href="admin.php?page=photos_add&section=ftp"> G&aring; til FTP </a> </p>
<p>Nogle måder at tilføje fotografier til dit galleri:</p>
<ul>
<li><strong>Direkte upload</strong> i din webbrowser er den mest simple og lettest tilgængelige måde. Det afhænger af din browsers muligheder og din webserver. Når der er tale om store mængder fotografier, eller i tilfælde af at du løber ind i problemer, er de andre metoder klar til brug!</li>
</ul>
<p class="nextStepLink"><a href="admin.php?page=photos_add&section=direct">Gå til direkte upload</a></p>
<ul>
<li><strong>pLoader</strong> er en desktopapplikation, som installeres på din computer. Træk og slip fotografier ind i pLoader-vinduet, klik på <em>"Upload to Piwigo"</em> og lad pLoader gøre arbejdet. Du kan finde andre desktopapplikationer, så som <strong>WinToPiwigo</strong> eller eksportplugin'en <strong>digiKam</strong> til Piwigo.</li>
</ul>
<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ploader">Gå til pLoader</a></p>
<div id="helpSynchro">
<ul>
<li><strong>Ftp-overførsel</strong> er den mest anbefalede metode, at tilføje en meget stor mængde fotografier med et minimalt antal klik. Følg vejledningen for at klargøre dine fotografier. Ftp-metoden giver mulighed for, nøjagtigt at kontrollere hvordan fotografierne organiseres fysisk på serveren.</li>
</ul>
<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ftp">Gå til ftp</a></p>
</div>

View file

@ -3,9 +3,9 @@
<p>Opret grupper i
<span class="pwgScreen">Administration &raquo; Brugere &raquo; Grupper</span>
og associerede brugere til denne gruppe i
<span class="pwgScreen">Administration &raquo; Brugere &raquo; Administrer</span>.</P>
<span class="pwgScreen">Administration &raquo; Brugere &raquo; Håndter</span>.</P>
<p>En bruger kan tilhøre flere grupper. Autorisation går forud for
forbud: Hvis brugeren "Jack" tilhører grupperne "familie" og "venner", og
at kun gruppen "familie" kan se album "Jul 2010" album så vil
forbud: Hvis brugeren "Jack" tilhører grupperne "Familie" og "Venner", og
kun gruppen "Familie" kan se albummet "Jul 2010", så vil
"Jack" være i stand til at se "Jul 2010".</p>

Some files were not shown because too many files have changed in this diff Show more