Compare commits
356 commits
20240827.1
...
master
Author | SHA1 | Date | |
---|---|---|---|
![]() |
e1515c1b84 | ||
![]() |
e99a16c489 | ||
![]() |
5c81c0d144 | ||
![]() |
2b6abc25d4 | ||
![]() |
c86fa13cd3 | ||
![]() |
eb9d9a00a0 | ||
![]() |
26222f0efc | ||
![]() |
11744f257e | ||
![]() |
fbdc08d133 | ||
![]() |
5e2f007ed5 | ||
![]() |
fafdf876f8 | ||
![]() |
e2499bb981 | ||
![]() |
b5d9b7cc15 | ||
![]() |
bd0d5d3cda | ||
![]() |
96bac06cf6 | ||
![]() |
ccfcfc4232 | ||
![]() |
5159c8b8e0 | ||
![]() |
3010ed8c42 | ||
![]() |
59967e28e0 | ||
![]() |
b64c634090 | ||
![]() |
a333233418 | ||
![]() |
065435d1dd | ||
![]() |
82b57f2f40 | ||
![]() |
9f798aae51 | ||
![]() |
db08605c3e | ||
![]() |
0b51685ac2 | ||
![]() |
a8a313170b | ||
![]() |
9c04c5f971 | ||
![]() |
d6525285a2 | ||
![]() |
feec4b7160 | ||
![]() |
87eadebd85 | ||
![]() |
e8c48891ad | ||
![]() |
6541b2bf5b | ||
![]() |
b98c007113 | ||
![]() |
3442d08140 | ||
![]() |
5f35c9d8b5 | ||
![]() |
a30c0df76c | ||
![]() |
dbfc617615 | ||
![]() |
bcf3781022 | ||
![]() |
a2d0ee16a9 | ||
![]() |
a942b95763 | ||
![]() |
4b9692666e | ||
![]() |
7dd2b3af0a | ||
![]() |
783658994b | ||
![]() |
1b30324722 | ||
![]() |
5c1366668f | ||
![]() |
d6ca049f5e | ||
![]() |
1b295cf13b | ||
![]() |
1b47cb6af4 | ||
![]() |
b9de68d59c | ||
![]() |
8e1f1a13b6 | ||
![]() |
75560da8e6 | ||
![]() |
b671e25f0c | ||
![]() |
4f0d3c2fd0 | ||
![]() |
cb903ec37f | ||
![]() |
a3149deb8d | ||
![]() |
b4f623ae44 | ||
![]() |
cc72db8d29 | ||
![]() |
d786396836 | ||
![]() |
e2108444aa | ||
![]() |
ecc1e640e9 | ||
![]() |
4eee73dfc3 | ||
![]() |
5e3b26bcb1 | ||
![]() |
2e9f149c82 | ||
![]() |
247c414eb5 | ||
![]() |
9dc11cfa84 | ||
![]() |
805ca07d46 | ||
![]() |
22cf1f6c7c | ||
![]() |
e71f90ddd4 | ||
![]() |
574e09bc62 | ||
![]() |
94b492c968 | ||
![]() |
b40bac6ada | ||
![]() |
f957b60365 | ||
![]() |
15b89b3ece | ||
![]() |
e6df1416a4 | ||
![]() |
5230c55f9c | ||
![]() |
a62336c381 | ||
![]() |
26d0db86dc | ||
![]() |
a8e22e937c | ||
![]() |
e305782f72 | ||
![]() |
05bedc1c25 | ||
![]() |
d17f2542b9 | ||
![]() |
1b6f4f7892 | ||
![]() |
56a1be1287 | ||
![]() |
00a2a07198 | ||
![]() |
875577a7e3 | ||
![]() |
d158bf8fca | ||
![]() |
51ffcb6410 | ||
![]() |
625b2d0cf8 | ||
![]() |
f45d811f02 | ||
![]() |
a4d33000ce | ||
![]() |
97d81f95ce | ||
![]() |
4cd51a114c | ||
![]() |
e38de7753c | ||
![]() |
b2b508d08c | ||
![]() |
f35a60fed5 | ||
![]() |
5626becae7 | ||
![]() |
9916a2729c | ||
![]() |
24f8b677cf | ||
![]() |
9452c2fe0f | ||
![]() |
762f3acad3 | ||
![]() |
7221027151 | ||
![]() |
e85d0147d6 | ||
![]() |
8a23bea227 | ||
![]() |
a247742b84 | ||
![]() |
a7877adace | ||
![]() |
4c9cd99a95 | ||
![]() |
01e834eaed | ||
![]() |
f290498d47 | ||
![]() |
1253769da2 | ||
![]() |
77927ea6e9 | ||
![]() |
a2ce83f8f4 | ||
![]() |
f29d015dd1 | ||
![]() |
75a97d9499 | ||
![]() |
7e9371323c | ||
![]() |
a5704d99b9 | ||
![]() |
ec0ea66e2c | ||
![]() |
4e07a27020 | ||
![]() |
7f21bc79ff | ||
![]() |
47e146061c | ||
![]() |
8263af3bf2 | ||
![]() |
b8640b3615 | ||
![]() |
794a8470a3 | ||
![]() |
3151626297 | ||
![]() |
54cfd3ae3e | ||
![]() |
94eb3d8db8 | ||
![]() |
c238f822bb | ||
![]() |
0d988fb66c | ||
![]() |
570d6b7650 | ||
![]() |
3fb9541b87 | ||
![]() |
7b369f1708 | ||
![]() |
7ed5491bfb | ||
![]() |
5fd65373fc | ||
![]() |
3bcc4ab511 | ||
![]() |
06b9ab308e | ||
![]() |
af4f3d7848 | ||
![]() |
d2903cb71e | ||
![]() |
b218f96bce | ||
![]() |
3968216730 | ||
![]() |
d1f3f21089 | ||
![]() |
3affd55e55 | ||
![]() |
00fe9979dc | ||
![]() |
a0da7ed990 | ||
![]() |
4df17d0a30 | ||
![]() |
38d1f24ffb | ||
![]() |
49588649cf | ||
![]() |
785c95d98d | ||
![]() |
e2b33f6b1c | ||
![]() |
315b7f1a2a | ||
![]() |
b0e1f4acb7 | ||
![]() |
80f3317dbc | ||
![]() |
0686c7280d | ||
![]() |
2903f0309a | ||
![]() |
50f376f72d | ||
![]() |
45e1d8a427 | ||
![]() |
9bb8e12316 | ||
![]() |
ad9e67f5d7 | ||
![]() |
f48068a975 | ||
![]() |
cfd56463a6 | ||
![]() |
6dad642fa7 | ||
![]() |
cec62006a3 | ||
![]() |
24817297dc | ||
![]() |
80c4bb0d2e | ||
![]() |
73d2033acf | ||
![]() |
be43c2f1d5 | ||
![]() |
d211dde44b | ||
![]() |
6c09ebf7c8 | ||
![]() |
c705139cae | ||
![]() |
4b749ffd09 | ||
![]() |
bfc48ae4bb | ||
![]() |
f328c30466 | ||
![]() |
535d06b6f5 | ||
![]() |
32e7b2482b | ||
![]() |
c9ee28e9a7 | ||
![]() |
c205022b7b | ||
![]() |
e6468df376 | ||
![]() |
8a239c6795 | ||
![]() |
515e1d3c66 | ||
![]() |
fbc0ece19e | ||
![]() |
4d47314177 | ||
![]() |
e3ef91d4f2 | ||
![]() |
59ae06121f | ||
![]() |
b3993b723f | ||
![]() |
090214af03 | ||
![]() |
2a97654a34 | ||
![]() |
86cb084a76 | ||
![]() |
13759ed784 | ||
![]() |
1bc42f6c9d | ||
![]() |
7dd0876009 | ||
![]() |
c426105c52 | ||
![]() |
4bacdf1dc3 | ||
![]() |
74489dda22 | ||
![]() |
f59caf585a | ||
![]() |
97a75fb03e | ||
![]() |
3afcf7e368 | ||
![]() |
7f4543f0dc | ||
![]() |
5c1b529076 | ||
![]() |
4391964824 | ||
![]() |
3146ca0452 | ||
![]() |
ed4373f95a | ||
![]() |
6ffd766094 | ||
![]() |
5b93a3ca3c | ||
![]() |
2c460eb5b0 | ||
![]() |
c1fc1b4a71 | ||
![]() |
3aa680981c | ||
![]() |
eefcbed5eb | ||
![]() |
85f5a58d3c | ||
![]() |
0210f1cec0 | ||
![]() |
9e4c2d9e00 | ||
![]() |
4f0bae3be4 | ||
![]() |
3cabe244b9 | ||
![]() |
3053a8f8c6 | ||
![]() |
2699f7b9e8 | ||
![]() |
b5f47f1cf1 | ||
![]() |
aa322fcb12 | ||
![]() |
9d4a57f6dd | ||
![]() |
c01ed5a4f7 | ||
![]() |
5d8a9ac52f | ||
![]() |
b8f03a249d | ||
![]() |
cb89119ef4 | ||
![]() |
7a0c228d4f | ||
![]() |
168e50ad69 | ||
![]() |
5f8e739bc8 | ||
![]() |
c4aa95a138 | ||
![]() |
1848a10237 | ||
![]() |
bf013f7f18 | ||
![]() |
1dd05148d1 | ||
![]() |
c6dab07b51 | ||
![]() |
8c1ae75f23 | ||
![]() |
8b4dfa83db | ||
![]() |
455f08a257 | ||
![]() |
6c71b95e0f | ||
![]() |
834bc48589 | ||
![]() |
7883477ab6 | ||
![]() |
a30281839a | ||
![]() |
3c5992e26d | ||
![]() |
7c578c3c7a | ||
![]() |
cfde25b39e | ||
![]() |
3b54474b2a | ||
![]() |
1fd5a0aec4 | ||
![]() |
ef576dba70 | ||
![]() |
a812ecca3e | ||
![]() |
f0063b73ea | ||
![]() |
49401587cc | ||
![]() |
736f0ad4a0 | ||
![]() |
5bc23c35bf | ||
![]() |
f14371ac36 | ||
![]() |
cfc8076b23 | ||
![]() |
eb73b75194 | ||
![]() |
0015525048 | ||
![]() |
18298d3131 | ||
![]() |
fa89d768f2 | ||
![]() |
6d9ab8d3f5 | ||
![]() |
9eb86358ae | ||
![]() |
eafa51b6e3 | ||
![]() |
5160e13e8f | ||
![]() |
003f3150a3 | ||
![]() |
43b2e87f1c | ||
![]() |
c9bef69929 | ||
![]() |
e6116134c7 | ||
![]() |
70c857c379 | ||
![]() |
e73b8b0d46 | ||
![]() |
d1457f2105 | ||
![]() |
06a7c1dec5 | ||
![]() |
187e1f6f24 | ||
![]() |
f7c370a653 | ||
![]() |
22f17d797c | ||
![]() |
a1c375a7f7 | ||
![]() |
c19e421ac7 | ||
![]() |
d5811d5b76 | ||
![]() |
5adcb0002b | ||
![]() |
56b8ccb8d1 | ||
![]() |
45a6512fc7 | ||
![]() |
e3eebaf41e | ||
![]() |
ca60c3c740 | ||
![]() |
dabc7f84e4 | ||
![]() |
927859a476 | ||
![]() |
2d5f33812d | ||
![]() |
37c5d14438 | ||
![]() |
2927fc931d | ||
![]() |
9a74cb8a35 | ||
![]() |
cfcfe75fcf | ||
![]() |
d4787abb71 | ||
![]() |
b82979798d | ||
![]() |
dca2018056 | ||
![]() |
42774f9183 | ||
![]() |
ced3fec8e5 | ||
![]() |
aa2003c748 | ||
![]() |
868a3a16b6 | ||
![]() |
4898b22769 | ||
![]() |
40bf39a2dd | ||
![]() |
60158bdb26 | ||
![]() |
81ed9ddc73 | ||
![]() |
2033f905ba | ||
![]() |
dbc01b85fa | ||
![]() |
4261dd0e42 | ||
![]() |
3c93022020 | ||
![]() |
3c61d31bc5 | ||
![]() |
7000bf6329 | ||
![]() |
d075a0a518 | ||
![]() |
5cf8e52fa3 | ||
![]() |
1f7ef6353d | ||
![]() |
ea1542dc6f | ||
![]() |
f093edcdb2 | ||
![]() |
f5b42822fa | ||
![]() |
3069b8baeb | ||
![]() |
02c46a2f23 | ||
![]() |
13a9d645a7 | ||
![]() |
155846563c | ||
![]() |
a7e8562fd1 | ||
![]() |
e47eb5d406 | ||
![]() |
88fa688743 | ||
![]() |
322609d1ae | ||
![]() |
e3948b34c6 | ||
![]() |
1ac8f1eef6 | ||
![]() |
4fd0696bb6 | ||
![]() |
8b419931cb | ||
![]() |
f64d8d7c93 | ||
![]() |
2fcbe466a1 | ||
![]() |
7d0a88e6f0 | ||
![]() |
e488fb4a57 | ||
![]() |
2305068128 | ||
![]() |
72daabbd12 | ||
![]() |
dc858a2788 | ||
![]() |
e61a92d3d8 | ||
![]() |
2211d7d8eb | ||
![]() |
5e763375c2 | ||
![]() |
73f4f53996 | ||
![]() |
c70532d177 | ||
![]() |
6b16cc2bc2 | ||
![]() |
e57b0cf05f | ||
![]() |
dc6de3a392 | ||
![]() |
c679782a73 | ||
![]() |
779919c595 | ||
![]() |
5e21e13251 | ||
![]() |
da86e8e9ab | ||
![]() |
87a3172f9e | ||
![]() |
a5e22b346f | ||
![]() |
3079ea9084 | ||
![]() |
55f70de068 | ||
![]() |
5785a0ba1f | ||
![]() |
469af94fe6 | ||
![]() |
fd0328a92f | ||
![]() |
049c131264 | ||
![]() |
a1af9b5215 | ||
![]() |
da6be2bb72 | ||
![]() |
704b2f3937 | ||
![]() |
33408247f2 | ||
![]() |
2ea363ce1c | ||
![]() |
696de3ed9d | ||
![]() |
93edd1d979 | ||
![]() |
94eca06a09 | ||
![]() |
8ea8d28afd | ||
![]() |
5613f33a9d | ||
![]() |
273eb53e7a | ||
![]() |
449569e77b |
72 changed files with 5563 additions and 2001 deletions
35
CHANGELOG
35
CHANGELOG
|
@ -1,6 +1,41 @@
|
|||
my little forum changelog
|
||||
-------------------------
|
||||
|
||||
20250323.1 (2025-03-23)
|
||||
-----------------------
|
||||
|
||||
- feature: add database entries for uploaded images that was uploaded before the upload management was introduced, add new icons for it as SVG
|
||||
- change: change the appearance of the sidebar toggle in its heading, add new icons for it as SVG
|
||||
- change: replace a few occurences of JS-based focus setting to form fields with the corresponding HTML attributes
|
||||
- change: all index columns and columns, that stores indexes as foreign keys are unsigned now, this doubles their value range
|
||||
- change: new appearance of the templates for login, registration and sending forgotten passwords
|
||||
- fix: added INTL time format strings to all language files according the languages own rules when known
|
||||
- fix: remove the emtying of a search field when setting the focus to the field
|
||||
- fix: display MySQL errors in the upgrade script, was broken before
|
||||
- fix: a user list, restricted to logged-in users, was still displayed after users logout
|
||||
- fix: several errors in the HTML structure in the posting form template
|
||||
|
||||
20241215.1 (2024-12-15)
|
||||
-----------------------
|
||||
|
||||
- change: use modern form elements and field types, where it is appropriate
|
||||
- change: set autofocus into the first input element of a form after loading the page, where it is appropriate
|
||||
- change: add attribute required for form fields, that must be completed, this might prevent unnecessarily sending form contents
|
||||
- change: rearrange the text input field and the formatting buttons in the posting form
|
||||
- change: make the posting form behaviour better on mobile devices and for screen-reader programs
|
||||
- change: rework of the popups for uploading images for use in postings and also the form for uploading avatar images
|
||||
- change: reformatting of the thread tree items with breaking points to behave better in narrow viewports
|
||||
- change: move the no-text icon from the end of the subject to the icon list after the metadata (author and date)
|
||||
- change: set the posting date into a time element, enhances the machine readability
|
||||
- fix: broken SQL query for selecting the postings of a specified category on a thread overview page
|
||||
- fix: make images of type WebP appear in the uploaded images gallery in the upload images popup
|
||||
- fix: restrict the sidebar in narrow viewports to its width
|
||||
- fix: prevent the use of unhidden passwords for the AI training of browser vendors
|
||||
- fix: added forgotten writing direction aware formatting for form elements
|
||||
- fix: take the time of a posting and the time of registration of a user into account, when checking for a username collision
|
||||
- fix: do not check for a username collision when an administrator or moderatior edits a posting of an unregistered forum user
|
||||
- fix: remove tabindex attributes from form elements which caused a weird tab order on the posting form page
|
||||
|
||||
20240827.1 (2024-08-27)
|
||||
-----------------------
|
||||
|
||||
|
|
|
@ -1 +1 @@
|
|||
20240827.1
|
||||
20250323.1
|
|
@ -948,19 +948,123 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
die();
|
||||
}
|
||||
|
||||
if (isset($_POST['delete_selected_uploads']) && isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token']) {
|
||||
if (isset($_POST['manage_uploads'])) {
|
||||
$selected = $_POST['manage_uploads'];
|
||||
$selected_uploads_count = count($selected);
|
||||
for ($x=0; $x<$selected_uploads_count; $x++) {
|
||||
$selected_uploads[$x]['name'] = htmlspecialchars($selected[$x]);
|
||||
}
|
||||
$action = 'delete_uploads';
|
||||
}
|
||||
else $action = 'list_uploads';
|
||||
}
|
||||
|
||||
if (isset($_POST['delete_uploads_confirmed']) && isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token']) {
|
||||
if (isset($_POST['selected_confirmed'])) {
|
||||
foreach ($_POST['selected_confirmed'] as $upload_rm) {
|
||||
$qDelUploadEntry = "DELETE FROM ". $db_settings['uploads_table'] ."
|
||||
WHERE pathname = '". mysqli_real_escape_string($connid, $upload_rm) ."'";
|
||||
$rDelUploadEntry = mysqli_query($connid, $qDelUploadEntry);
|
||||
if ($rDelUploadEntry !== false) {
|
||||
$path_rm = 'images/uploaded/'. $upload_rm;
|
||||
if (file_exists($path_rm)) {
|
||||
@chmod($path_rm, 0777);
|
||||
@unlink($path_rm);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
header("location: index.php?mode=admin&action=list_uploads");
|
||||
die();
|
||||
}
|
||||
|
||||
if (isset($_POST['record_selected_uploads']) && isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token']) {
|
||||
if (isset($_POST['manage_uploads'])) {
|
||||
$selected = $_POST['manage_uploads'];
|
||||
$selected_uploads_count = count($selected);
|
||||
$rec_row = [];
|
||||
for ($x = 0; $x < $selected_uploads_count; $x++) {
|
||||
// search for the first occurence of the image in a posting,
|
||||
// determine the ID of the posting author,
|
||||
// assume that it's the uploader
|
||||
$qUploadName = "SELECT
|
||||
user_id
|
||||
FROM ". $db_settings['forum_table'] ."
|
||||
WHERE text LIKE '%". mysqli_real_escape_string($connid, $selected[$x]) ."%'
|
||||
ORDER BY time ASC
|
||||
LIMIT 1";
|
||||
$rUploadName = mysqli_query($connid, $qUploadName);
|
||||
if ($rUploadName !== false && mysqli_num_rows($rUploadName) == 1) {
|
||||
$row = mysqli_fetch_assoc($rUploadName);
|
||||
$uploadAuthor = intval($row['user_id']);
|
||||
if ($uploadAuthor <= 0)
|
||||
$uploadAuthor = "Null";
|
||||
} else {
|
||||
$uploadAuthor = "Null";
|
||||
}
|
||||
// generate a row insert block for use in a statement to inserting multiple rows at once
|
||||
$tstamp_temp = substr($selected[$x], 0, 14);
|
||||
$tstamp = substr($tstamp_temp, 0, 4) ."-". substr($tstamp_temp, 4, 2) ."-". substr($tstamp_temp, 6, 2) ." ". substr($tstamp_temp, 8, 2) .":". substr($tstamp_temp, 10, 2) .":" .substr($tstamp_temp, 12, 2);
|
||||
$rec_row[] = "(". $uploadAuthor .", '". mysqli_real_escape_string($connid, $selected[$x]) ."', '". mysqli_real_escape_string($connid, $tstamp) ."')";
|
||||
}
|
||||
$qInsertUploadData = "INSERT INTO `". $db_settings['uploads_table'] ."` (`uploader`, `pathname`, `tstamp`)
|
||||
VALUES ". join(",\n", $rec_row) ."
|
||||
ON DUPLICATE KEY UPDATE `pathname` = `pathname`";
|
||||
$rInsertUploadData = mysqli_query($connid, $qInsertUploadData);
|
||||
}
|
||||
$filterString = (isset($_POST['filter']) && in_array($_POST['filter'], ['not-managed-images', 'managed-images'])) ? '&filter='. urlencode($_POST['filter']) : '';
|
||||
header("location: index.php?mode=admin&action=list_uploads". $filterString);
|
||||
die();
|
||||
}
|
||||
|
||||
if (isset($_GET['action']) and $_GET['action'] == 'list_uploads') {
|
||||
$images = [];
|
||||
$listed = [];
|
||||
$rUploadList = mysqli_query($connid, "SELECT pathname FROM ". $db_settings['uploads_table']);
|
||||
if ($rUploadList !== false && mysqli_num_rows($rUploadList) > 0) {
|
||||
while ($row = mysqli_fetch_assoc($rUploadList)) {
|
||||
$listed[] = $row['pathname'];
|
||||
}
|
||||
}
|
||||
|
||||
$uploaded_images_path = 'images/uploaded/';
|
||||
$images = array();
|
||||
$browse_images = (isset($_GET['browse_images']) && $_GET['browse_images'] > 0) ? intval($_GET['browse_images']) : 1;
|
||||
$i = 0;
|
||||
$handle = opendir($uploaded_images_path);
|
||||
while ($file = readdir($handle)) {
|
||||
if (preg_match('/\.(gif|png|jpg|svg|webp)$/i', $file)) {
|
||||
$images[] = $file;
|
||||
if (preg_match('/\.(gif|png|jpe?g|svg|webp)$/i', $file)) {
|
||||
$images[$i]['number'] = $i;
|
||||
$images[$i]['pathname'] = $file;
|
||||
if (empty($listed) || (!empty($listed) && !in_array($file, $listed))) {
|
||||
$images[$i]['status'] = 0;
|
||||
} else {
|
||||
$images[$i]['status'] = 1;
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
closedir($handle);
|
||||
unset($i, $listed);
|
||||
|
||||
if ($images) {
|
||||
rsort($images);
|
||||
if (isset($_GET['filter']) && in_array($_GET['filter'], ['not-managed-images', 'managed-images'])) {
|
||||
if ($_GET['filter'] == 'not-managed-images') {
|
||||
$liveFilter['criterium'] = 'status';
|
||||
$liveFilter['value'] = 0;
|
||||
} else {
|
||||
$liveFilter['criterium'] = 'status';
|
||||
$liveFilter['value'] = 1;
|
||||
}
|
||||
$filter = $_GET['filter'];
|
||||
$images = filter2DArrayWithKeyNValue($images, $liveFilter['criterium'], $liveFilter['value']);
|
||||
}
|
||||
$sort_array = [];
|
||||
foreach ($images as $image) {
|
||||
$sort_array[] = $image['pathname'];
|
||||
}
|
||||
array_multisort($sort_array, SORT_DESC, $images);
|
||||
unset($sort_array);
|
||||
$page_browse['total_items'] = count($images);
|
||||
$page_browse['items_per_page'] = $settings['uploads_per_page'];
|
||||
$total_pages = ceil($page_browse['total_items'] / $page_browse['items_per_page']);
|
||||
|
@ -980,32 +1084,6 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
$action = 'list_uploads';
|
||||
}
|
||||
|
||||
if (isset($_POST['delete_selected_uploads']) && isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token']) {
|
||||
if (isset($_POST['uploads_remove'])) {
|
||||
$selected = $_POST['uploads_remove'];
|
||||
$selected_uploads_count = count($selected);
|
||||
for ($x=0; $x<$selected_uploads_count; $x++) {
|
||||
$selected_uploads[$x]['name'] = htmlspecialchars($selected[$x]);
|
||||
}
|
||||
$action = 'delete_uploads';
|
||||
}
|
||||
else $action = 'list_uploads';
|
||||
}
|
||||
|
||||
if (isset($_POST['delete_uploads_confirmed']) && isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token']) {
|
||||
if (isset($_POST['selected_confirmed'])) {
|
||||
foreach ($_POST['selected_confirmed'] as $upload_rm) {
|
||||
$path_rm = 'images/uploaded/'. $upload_rm;
|
||||
if (file_exists($path_rm)) {
|
||||
@chmod($path_rm, 0777);
|
||||
@unlink($path_rm);
|
||||
}
|
||||
}
|
||||
}
|
||||
header("location: index.php?mode=admin&action=list_uploads");
|
||||
die();
|
||||
}
|
||||
|
||||
if (empty($action)) $action='main';
|
||||
$smarty->assign('action', $action);
|
||||
|
||||
|
@ -1724,6 +1802,7 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
$smarty->assign('images_per_page', $page_browse['items_per_page']);
|
||||
$smarty->assign('images', $images);
|
||||
if (isset($start)) $smarty->assign('start', $start);
|
||||
if (isset($filter)) $smarty->assign('filter', $filter);
|
||||
}
|
||||
break;
|
||||
case 'delete_uploads':
|
||||
|
|
|
@ -12,7 +12,7 @@ if ($settings['avatars'] > 0 && isset($_SESSION[$settings['session_prefix'].'use
|
|||
$filename = $avatarInfo === false ? false : $avatarInfo[1];
|
||||
|
||||
// remove existing avatar
|
||||
if (isset($_GET['delete'])) {
|
||||
if (isset($_POST['delete'])) {
|
||||
if ($filename !== false && file_exists($uploaded_images_path.$filename)) {
|
||||
@chmod($uploaded_images_path.$filename, 0777);
|
||||
@unlink($uploaded_images_path.$filename);
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
|
||||
if (isset($id) && $id > 0) {
|
||||
$result = @mysqli_query($connid, "SELECT ft.id, ft.pid, ft.tid, ft.user_id, UNIX_TIMESTAMP(ft.time + INTERVAL " . $time_difference . " MINUTE) AS disp_time,
|
||||
UNIX_TIMESTAMP(ft.time) AS time, UNIX_TIMESTAMP(edited + INTERVAL " . $time_difference . " MINUTE) AS edit_time,
|
||||
UNIX_TIMESTAMP(ft.time) AS time, UNIX_TIMESTAMP(edited) as etime, UNIX_TIMESTAMP(edited + INTERVAL " . $time_difference . " MINUTE) AS edit_time,
|
||||
UNIX_TIMESTAMP(edited - INTERVAL " . $settings['edit_delay'] . " MINUTE) AS edited_diff, edited_by, name, email,
|
||||
subject, hp, location, ip, text, cache_text, show_signature, category, locked, views, edit_key,
|
||||
user_name, user_type, user_email, email_contact, user_hp, user_location, signature, cache_signature, rst.user_id AS req_user,
|
||||
|
@ -51,6 +51,8 @@
|
|||
$entrydata = mysqli_fetch_array($result);
|
||||
mysqli_free_result($result);
|
||||
|
||||
$entrydata['ISO_time'] = format_time('YYYY-MM-dd HH:mm:ss', $entrydata['time']);
|
||||
$entrydata['edit_ISO_time'] = format_time('YYYY-MM-dd HH:mm:ss', $entrydata['etime']);
|
||||
$entrydata['formated_time'] = format_time($lang['time_format_full'], $entrydata['disp_time']);
|
||||
$entrydata['tags'] = getEntryTags($id);
|
||||
|
||||
|
@ -156,8 +158,10 @@
|
|||
$data['name'] = htmlspecialchars($data['user_name']);
|
||||
} else
|
||||
$data['name'] = htmlspecialchars($data['name']);
|
||||
|
||||
$data['subject'] = htmlspecialchars($data['subject']);
|
||||
$data['formated_time'] = format_time($lang['time_format'], $data['disp_time']);
|
||||
$data['ISO_time'] = format_time('YYYY-MM-dd HH:mm:ss', $data['time']);
|
||||
|
||||
// set read or new status of messages
|
||||
$data = getMessageStatus($data, $last_visit);
|
||||
|
@ -246,6 +250,7 @@
|
|||
|
||||
$smarty->assign('user_type', htmlspecialchars($entrydata['user_type']));
|
||||
$smarty->assign('disp_time', htmlspecialchars($entrydata['disp_time']));
|
||||
$smarty->assign('ISO_time', htmlspecialchars($entrydata['ISO_time']));
|
||||
$smarty->assign('formated_time', htmlspecialchars($entrydata['formated_time']));
|
||||
$smarty->assign('locked', htmlspecialchars($entrydata['locked']));
|
||||
|
||||
|
@ -300,6 +305,7 @@
|
|||
if ($entrydata["edited_diff"] > 0 && $entrydata["edited_diff"] > $entrydata["time"] && $settings['show_if_edited'] == 1) {
|
||||
$smarty->assign('edited', true);
|
||||
$smarty->assign('edit_time', htmlspecialchars($entrydata['edit_time']));
|
||||
$smarty->assign('edit_ISO_time', htmlspecialchars($entrydata['edit_ISO_time']));
|
||||
$entrydata['formated_edit_time'] = format_time($lang['time_format_full'], $entrydata['edit_time']);
|
||||
$smarty->assign('formated_edit_time', htmlspecialchars($entrydata['formated_edit_time']));
|
||||
|
||||
|
|
|
@ -1108,14 +1108,23 @@ function smilies($string) {
|
|||
*/
|
||||
function user_online($user_online_period = 10) {
|
||||
global $connid, $db_settings, $settings;
|
||||
if (isset($_SESSION[$settings['session_prefix'].'user_id'])) $user_id = $_SESSION[$settings['session_prefix'].'user_id']; else $user_id = 0;
|
||||
if (isset($_SESSION[$settings['session_prefix'].'user_id']) && is_numeric($_SESSION[$settings['session_prefix'].'user_id'])) {
|
||||
$user_id = $_SESSION[$settings['session_prefix'].'user_id'];
|
||||
$ip = "uid_" . $user_id;
|
||||
}
|
||||
else {
|
||||
$user_id = 0;
|
||||
$ip = $_SERVER['REMOTE_ADDR'];
|
||||
}
|
||||
|
||||
$diff = TIMESTAMP-($user_online_period * 60);
|
||||
if (isset($_SESSION[$settings['session_prefix'].'user_id'])) $ip = "uid_".$_SESSION[$settings['session_prefix'].'user_id'];
|
||||
else $ip = $_SERVER['REMOTE_ADDR'];
|
||||
|
||||
@mysqli_query($connid, "DELETE FROM ".$db_settings['useronline_table']." WHERE time < ".$diff);
|
||||
list($is_online) = @mysqli_fetch_row(@mysqli_query($connid, "SELECT COUNT(*) FROM ".$db_settings['useronline_table']." WHERE ip= '".$ip."'"));
|
||||
if ($is_online > 0) @mysqli_query($connid, "UPDATE ".$db_settings['useronline_table']." SET time='".TIMESTAMP."', user_id='".$user_id."' WHERE ip='".$ip."'");
|
||||
else @mysqli_query($connid, "INSERT INTO ".$db_settings['useronline_table']." SET time='".TIMESTAMP."', ip='".$ip."', user_id='".$user_id."'");
|
||||
list($is_online) = @mysqli_fetch_row(@mysqli_query($connid, "SELECT COUNT(*) FROM ".$db_settings['useronline_table']." WHERE ip= '".mysqli_real_escape_string($connid, $ip)."'"));
|
||||
if ($is_online > 0)
|
||||
@mysqli_query($connid, "UPDATE ".$db_settings['useronline_table']." SET time='".TIMESTAMP."', user_id='".intval($user_id)."' WHERE ip='".mysqli_real_escape_string($connid, $ip)."'");
|
||||
else
|
||||
@mysqli_query($connid, "INSERT INTO ".$db_settings['useronline_table']." SET time='".TIMESTAMP."', ip='".mysqli_real_escape_string($connid, $ip)."', user_id='".intval($user_id)."'");
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1756,6 +1765,29 @@ function my_strpos($haystack, $needle, $offset = 0, $encoding = 'utf-8') {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* remove array elements of a twodimensional array with a specific value of a specified key
|
||||
*
|
||||
* based on the code from @link https://stackoverflow.com/questions/4466159/delete-element-from-multidimensional-array-based-on-value
|
||||
*
|
||||
* @param array $array
|
||||
* @param string $key
|
||||
* @param mixed $value
|
||||
* @return array $temp
|
||||
*/
|
||||
function filter2DArrayWithKeyNValue($array, $key, $value) {
|
||||
// create array $temp
|
||||
$temp = [];
|
||||
foreach ($array as $item) {
|
||||
if ($item[$key] == $value) {
|
||||
// push the element to the array $temp
|
||||
// if the value of $key is not equal to $value
|
||||
array_push($temp, $item);
|
||||
}
|
||||
}
|
||||
return $temp;
|
||||
}
|
||||
|
||||
/**
|
||||
* encodes sender or recipient name
|
||||
*
|
||||
|
|
|
@ -45,43 +45,46 @@ $_SESSION[$settings['session_prefix'].'usersettings']['current_page'] = $page;
|
|||
$descasc = "DESC";
|
||||
$ul = ($page - 1) * $settings['threads_per_page'];
|
||||
|
||||
// database request
|
||||
// database request
|
||||
if ($categories == false) {
|
||||
// no categories defined
|
||||
$page_threads_and = "";
|
||||
} elseif (is_array($categories) && $category <= 0) {
|
||||
// there are categories and all categories or category selection should be shown
|
||||
|
||||
$pid_result_sql =
|
||||
"SELECT COUNT(*) FROM " . $db_settings['forum_table'] . " AS ft
|
||||
LEFT JOIN (SELECT eid FROM " . $db_settings['akismet_rating_table'] . " WHERE " . $db_settings['akismet_rating_table'] . ".spam = 1 UNION SELECT eid FROM " . $db_settings['b8_rating_table'] . " WHERE " . $db_settings['b8_rating_table'] . ".spam = 1) AS spam_list ON spam_list.eid = ft.id
|
||||
WHERE pid = 0";
|
||||
|
||||
if (isset($category_selection_query) && $category == -1) {
|
||||
// category selection
|
||||
$category_ids_query = $category_selection_query;
|
||||
$page_threads_and = " AND (sticky = 2 OR category IN (". $category_ids_query .")) ";
|
||||
$display_pid_result = $pid_result_sql . $spam_sql_and . $page_threads_and;
|
||||
$pid_result = mysqli_query($connid, $display_pid_result);
|
||||
list($total_threads) = mysqli_fetch_row($pid_result);
|
||||
mysqli_free_result($pid_result);
|
||||
}
|
||||
} elseif (is_array($categories) && $category > 0) {
|
||||
// there are categories and only one category should be shown
|
||||
if (in_array($category, $category_ids)) {
|
||||
// how many entries?
|
||||
$page_threads_and = " AND (sticky = 2 OR category = '". mysqli_real_escape_string($connid, $category) ."') ";
|
||||
$display_pid_result = $pid_result_sql . $spam_sql_and . $page_threads_and;
|
||||
|
||||
$pid_result = mysqli_query($connid, $display_pid_result);
|
||||
list($total_threads) = mysqli_fetch_row($pid_result);
|
||||
mysqli_free_result($pid_result);
|
||||
}
|
||||
elseif (is_array($categories)) {
|
||||
$page_threads_and = "";
|
||||
|
||||
} else {
|
||||
if ($category > 0 && !in_array($category, $category_ids)) { // $category_ids defined in main.inc.php
|
||||
// invalid category
|
||||
header('Location: index.php');
|
||||
exit;
|
||||
}
|
||||
// there are categories and only one category should be shown
|
||||
elseif ($category > 0 && in_array($category, $category_ids)) {
|
||||
// how many entries?
|
||||
$page_threads_and = " AND (sticky = 2 OR category = '". mysqli_real_escape_string($connid, $category) ."') ";
|
||||
}
|
||||
// there are categories and all categories or category selection should be shown
|
||||
elseif ($category == -1 && isset($category_selection_query)) { // $category_selection_query defined in main.inc.php
|
||||
// category selection
|
||||
$category_ids_query = $category_selection_query; // overwrite $category_ids_query, originally defined in main.inc.php
|
||||
$page_threads_and = " AND (sticky = 2 OR category IN (". mysqli_real_escape_string($connid, $category_ids_query) .")) ";
|
||||
}
|
||||
elseif ($category == 0 && isset($category_ids_query)) { // $category_ids_query defined in main.inc.php
|
||||
// show all categories (restricted to user type)
|
||||
$page_threads_and = " AND (sticky = 2 OR category IN (". mysqli_real_escape_string($connid, $category_ids_query) .")) ";
|
||||
}
|
||||
|
||||
if (!empty($page_threads_and)) {
|
||||
$pid_result_sql =
|
||||
"SELECT COUNT(*) FROM " . $db_settings['forum_table'] . " AS ft
|
||||
LEFT JOIN (SELECT eid AS id FROM " . $db_settings['akismet_rating_table'] . " WHERE " . $db_settings['akismet_rating_table'] . ".spam = 1 UNION SELECT eid AS id FROM " . $db_settings['b8_rating_table'] . " WHERE " . $db_settings['b8_rating_table'] . ".spam = 1) AS spam_list ON spam_list.id = ft.id
|
||||
WHERE pid = 0";
|
||||
$display_pid_result = $pid_result_sql . $spam_sql_and . $page_threads_and; // $spam_sql_and defined in main.inc.php
|
||||
|
||||
$pid_result = mysqli_query($connid, $display_pid_result);
|
||||
list($total_threads) = mysqli_fetch_row($pid_result);
|
||||
mysqli_free_result($pid_result);
|
||||
}
|
||||
}
|
||||
|
||||
$display_page_threads =
|
||||
|
@ -140,6 +143,7 @@ if ($result_count > 0) {
|
|||
$data = getMessageStatus($data, $last_visit, $fold_threads);
|
||||
// convert formated time to a utf-8:
|
||||
$data['formated_time'] = format_time($lang['time_format'], $data['timestamp']);
|
||||
$data['ISO_time'] = format_time('YYYY-MM-dd HH:mm:ss', $data['time']);
|
||||
// set key 'not_classified_spam_ham' to decide, if an mod or admin should get notified about need of classification with an icon
|
||||
if ((isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$settings['session_prefix'].'user_type']) && $_SESSION[$settings['session_prefix'].'user_type'] >= 1) && (($settings['akismet_entry_check'] == 1 && $data['akismet_checked'] == 0) || ($settings['b8_entry_check'] == 1 && $data['b8_checked'] == 0))) {
|
||||
$data['not_classified_spam_ham'] = 1;
|
||||
|
@ -170,7 +174,7 @@ if ($settings['latest_postings'] > 0) {
|
|||
if ($category > 0) {
|
||||
$latest_postings_category_sql = " AND category = " . intval($category);
|
||||
} else {
|
||||
$latest_postings_category_sql = " AND category IN (". $category_ids_query .")";
|
||||
$latest_postings_category_sql = " AND category IN (". mysqli_real_escape_string($connid, $category_ids_query) .")";
|
||||
}
|
||||
}
|
||||
$latest_postings_sql = $latest_postings_body_sql . $latest_postings_category_sql . $latest_postings_order_by_sql;
|
||||
|
|
|
@ -780,18 +780,27 @@ switch ($action) {
|
|||
if ($id == 0 && $categories != false && empty($categories[$p_category]))
|
||||
$errors[] = 'error_invalid_category';
|
||||
|
||||
// name reserved?
|
||||
$result = mysqli_query($connid, "SELECT user_id, user_name FROM " . $db_settings['userdata_table'] . " WHERE lower(user_name) = '" . mysqli_real_escape_string($connid, my_strtolower($name, $lang['charset'])) . "'") or raise_error('database_error', mysqli_error($connid));
|
||||
if (mysqli_num_rows($result) > 0) {
|
||||
if (empty($_SESSION[$settings['session_prefix'] . 'user_id'])) {
|
||||
$errors[] = 'error_name_reserved';
|
||||
} elseif (isset($_SESSION[$settings['session_prefix'] . 'user_id'])) {
|
||||
$data = mysqli_fetch_array($result);
|
||||
if (isset($posting_user_id) && $data['user_id'] != $posting_user_id)
|
||||
$errors[] = 'error_name_reserved';
|
||||
}
|
||||
if ($posting_mode == 1 && !empty($field['time'])) {
|
||||
$posting_time = intval($field['time']);
|
||||
} else {
|
||||
$posting_time = time();
|
||||
}
|
||||
if (!$isModOrAdmin) {
|
||||
// name reserved?
|
||||
$result = mysqli_query($connid, "SELECT user_id, user_name FROM " . $db_settings['userdata_table'] . "
|
||||
WHERE lower(user_name) = '" . mysqli_real_escape_string($connid, my_strtolower($name, $lang['charset'])) . "'
|
||||
AND registered < FROM_UNIXTIME(". $posting_time .")") or raise_error('database_error', mysqli_error($connid));
|
||||
if (mysqli_num_rows($result) > 0) {
|
||||
if (empty($_SESSION[$settings['session_prefix'] . 'user_id'])) {
|
||||
$errors[] = 'error_name_reserved';
|
||||
} elseif (isset($_SESSION[$settings['session_prefix'] . 'user_id'])) {
|
||||
$data = mysqli_fetch_array($result);
|
||||
if (isset($posting_user_id) && $data['user_id'] != $posting_user_id)
|
||||
$errors[] = 'error_name_reserved';
|
||||
}
|
||||
}
|
||||
mysqli_free_result($result);
|
||||
}
|
||||
mysqli_free_result($result);
|
||||
|
||||
// check for not accepted words:
|
||||
$joined_message = my_strtolower($name . ' ' . $email . ' ' . $hp . ' ' . $location . ' ' . $subject . ' ' . $text, $lang['charset']);
|
||||
|
@ -1201,7 +1210,9 @@ switch ($action) {
|
|||
// current time:
|
||||
list($preview_time) = mysqli_fetch_row(mysqli_query($connid, "SELECT UNIX_TIMESTAMP(NOW() + INTERVAL " . $time_difference . " MINUTE)"));
|
||||
$smarty->assign('preview_timestamp', $preview_time);
|
||||
$preview_formated_time = format_time($lang['time_format_full'], $preview_time);
|
||||
$preview_ISO_time = format_time('YYYY-MM-dd HH:mm:ss', $posting_time);
|
||||
$smarty->assign('preview_ISO_time', $preview_ISO_time);
|
||||
$preview_formated_time = format_time($lang['time_format_full'], $posting_time);
|
||||
$smarty->assign('preview_formated_time', $preview_formated_time);
|
||||
$smarty->assign('uniqid', htmlspecialchars($uniqid));
|
||||
$smarty->assign('posting_mode', intval($posting_mode));
|
||||
|
@ -1616,7 +1627,7 @@ switch ($action) {
|
|||
break;
|
||||
case 'report_spam':
|
||||
$id = intval($_GET['report_spam']);
|
||||
$result = mysqli_query($connid, "SELECT tid, pid, UNIX_TIMESTAMP(time + INTERVAL " . $time_difference . " MINUTE) AS disp_time,
|
||||
$result = mysqli_query($connid, "SELECT tid, pid, UNIX_TIMESTAMP(time) AS time, UNIX_TIMESTAMP(time + INTERVAL " . $time_difference . " MINUTE) AS disp_time,
|
||||
user_id, name, subject, category,
|
||||
" . $db_settings['akismet_rating_table'] . ".spam AS akismet_spam, spam_check_status,
|
||||
" . $db_settings['b8_rating_table'] . ".spam AS b8_spam, training_type
|
||||
|
@ -1640,7 +1651,7 @@ switch ($action) {
|
|||
$smarty->assign('pid', intval($field['pid']));
|
||||
$smarty->assign('name', htmlspecialchars($field['name']));
|
||||
$smarty->assign('subject', htmlspecialchars($field['subject']));
|
||||
$smarty->assign('disp_time', htmlspecialchars($field['disp_time']));
|
||||
$smarty->assign('ISO_time', htmlspecialchars(format_time('YYYY-MM-dd HH:mm:ss', $field['time'])));
|
||||
$smarty->assign('formated_time', htmlspecialchars(format_time($lang['time_format_full'], $field['disp_time'])));
|
||||
$smarty->assign('akismet_spam', intval($field['akismet_spam']));
|
||||
$smarty->assign('akismet_spam_check_status', intval($field['spam_check_status']));
|
||||
|
@ -1744,7 +1755,7 @@ switch ($action) {
|
|||
break;
|
||||
case 'flag_ham':
|
||||
$id = intval($_GET['flag_ham']);
|
||||
$result = mysqli_query($connid, "SELECT tid, pid, UNIX_TIMESTAMP(time + INTERVAL " . $time_difference . " MINUTE) AS disp_time,
|
||||
$result = mysqli_query($connid, "SELECT tid, pid, UNIX_TIMESTAMP(time) AS time, UNIX_TIMESTAMP(time + INTERVAL " . $time_difference . " MINUTE) AS disp_time,
|
||||
user_id, name, subject, category,
|
||||
" . $db_settings['akismet_rating_table'] . ".spam AS akismet_spam, spam_check_status,
|
||||
" . $db_settings['b8_rating_table'] . ".spam AS b8_spam, training_type
|
||||
|
@ -1769,7 +1780,7 @@ switch ($action) {
|
|||
$smarty->assign('pid', intval($field['pid']));
|
||||
$smarty->assign('name', htmlspecialchars($field['name']));
|
||||
$smarty->assign('subject', htmlspecialchars($field['subject']));
|
||||
$smarty->assign('disp_time', htmlspecialchars($field['disp_time']));
|
||||
$smarty->assign('ISO_time', htmlspecialchars(format_time('YYYY-MM-dd HH:mm:ss', $field['time'])));
|
||||
$smarty->assign('formated_time', htmlspecialchars(format_time($lang['time_format_full'], $field['disp_time'])));
|
||||
$smarty->assign('akismet_spam', intval($field['akismet_spam']));
|
||||
$smarty->assign('akismet_spam_check_status', intval($field['spam_check_status']));
|
||||
|
|
|
@ -78,7 +78,7 @@ if (is_array($category_ids) && !in_array($data['category'], $category_ids)) {
|
|||
$thread_sql =
|
||||
"SELECT ft.id, ft.pid, ft.tid, ft.user_id, UNIX_TIMESTAMP(ft.time + INTERVAL " . intval($time_difference) . " MINUTE) AS disp_time,
|
||||
UNIX_TIMESTAMP(last_reply + INTERVAL " . intval($time_difference) . " MINUTE) AS last_reply,
|
||||
UNIX_TIMESTAMP(ft.time) AS time, UNIX_TIMESTAMP(edited + INTERVAL " . intval($time_difference) . " MINUTE) AS e_time,
|
||||
UNIX_TIMESTAMP(ft.time) AS time, UNIX_TIMESTAMP(edited) AS edited_time, UNIX_TIMESTAMP(edited + INTERVAL " . intval($time_difference) . " MINUTE) AS e_time,
|
||||
UNIX_TIMESTAMP(edited - INTERVAL " . $settings['edit_delay'] . " MINUTE) AS edited_diff, edited_by, name, email,
|
||||
subject, hp, location, ip, text, cache_text, show_signature, views, category, locked, ip,
|
||||
user_name, user_type, user_email, email_contact, user_hp, user_location, signature, cache_signature, edit_key, rst.user_id AS req_user,
|
||||
|
@ -117,6 +117,8 @@ if (is_array($category_ids) && !in_array($data['category'], $category_ids)) {
|
|||
$data['tags'] = $tags_array;
|
||||
}
|
||||
$data['formated_time'] = format_time($lang['time_format_full'], $data['disp_time']);
|
||||
$data['ISO_time'] = format_time('YYYY-MM-dd HH:mm:ss', $data['time']);
|
||||
|
||||
$ago['days'] = floor((TIMESTAMP - $data['time']) / 86400);
|
||||
$ago['hours'] = floor(((TIMESTAMP - $data['time']) / 3600) - ($ago['days'] * 24));
|
||||
$ago['minutes'] = floor(((TIMESTAMP - $data['time']) / 60) - ($ago['hours'] * 60 + $ago['days'] * 1440));
|
||||
|
@ -166,6 +168,7 @@ if (is_array($category_ids) && !in_array($data['category'], $category_ids)) {
|
|||
if ($data['edited_diff'] > 0 && $data["edited_diff"] > $data["time"] && $settings['show_if_edited'] == 1) {
|
||||
$data['edited'] = true;
|
||||
$data['formated_edit_time'] = format_time($lang['time_format_full'], $data['e_time']);
|
||||
$data['ISO_edit_time'] = format_time('YYYY-MM-dd HH:mm:ss', $data['edited_time']);
|
||||
if ($data['user_id'] == $data['edited_by'])
|
||||
$data['edited_by'] = $data['name'];
|
||||
else {
|
||||
|
|
|
@ -93,7 +93,7 @@ if (($settings['upload_images'] == 1 && isset($_SESSION[$settings['session_prefi
|
|||
@chmod($uploaded_images_path.$filename, 0644);
|
||||
// $user_id can be NULL (see around line #15), because of that do not handle it with intval()
|
||||
// see therefore variable definition of $user_id around line 15 of this script
|
||||
$qSetUpload = "INSERT INTO " . $db_settings['uploads_table'] . " (uploader, filename, tstamp) VALUES (". $user_id .", '" . mysqli_real_escape_string($connid, $filename) . "', NOW())";
|
||||
$qSetUpload = "INSERT INTO " . $db_settings['uploads_table'] . " (uploader, pathname, tstamp) VALUES (". $user_id .", '" . mysqli_real_escape_string($connid, $filename) . "', NOW())";
|
||||
mysqli_query($connid, $qSetUpload);
|
||||
$smarty->assign('uploaded_file', $filename);
|
||||
} else {
|
||||
|
@ -127,7 +127,7 @@ if (($settings['upload_images'] == 1 && isset($_SESSION[$settings['session_prefi
|
|||
if ($browse_images < 1) $browse_images = 1;
|
||||
$handle = opendir($uploaded_images_path);
|
||||
while ($file = readdir($handle)) {
|
||||
if (preg_match('/\.jpg$/i', $file) || preg_match('/\.png$/i', $file) || preg_match('/\.gif$/i', $file)) {
|
||||
if (preg_match('/\.(gif|png|jpe?g|svg|webp)$/i', $file)) {
|
||||
$images[] = $file;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -31,101 +31,107 @@ $isUser = isset($_SESSION[$settings['session_prefix'].'user_type']) && isset($_S
|
|||
$isModOrAdmin = $isUser && ($_SESSION[$settings['session_prefix'].'user_type'] == 1 || $_SESSION[$settings['session_prefix'].'user_type'] == 2);
|
||||
|
||||
// on action event main *AND* only team members ($settings['user_area_access'] = 0) or registered users ($settings['user_area_access'] = 1) have access to this section or the user area is public ($settings['user_area_access'] = 2):
|
||||
$hasUserAreaAccess = $action == 'main' && ($settings['user_area_access'] == 2 || ($settings['user_area_access'] == 1 && $isUser) || ($settings['user_area_access'] == 2 && $isModOrAdmin));
|
||||
$hasUserAreaAccess = $action == 'main' && ($settings['user_area_access'] == 2 || ($settings['user_area_access'] == 1 && $isUser) || $isModOrAdmin);
|
||||
|
||||
if (isset($_SESSION[$settings['session_prefix'].'user_id']) || $hasUserAreaAccess) {
|
||||
if ($isUser || $hasUserAreaAccess) {
|
||||
switch($action) {
|
||||
case 'main':
|
||||
if (isset($_GET['search_user']) && trim($_GET['search_user']) != '') $search_user = trim($_GET['search_user']);
|
||||
|
||||
// count users and pages:
|
||||
if (isset($search_user)) {
|
||||
$user_count_result = mysqli_query($connid, "SELECT COUNT(*) FROM ".$db_settings['userdata_table']." WHERE activate_code = '' AND lower(user_name) LIKE '%". mysqli_real_escape_string($connid, my_strtolower($search_user, $lang['charset'])) ."%'");
|
||||
} else {
|
||||
$user_count_result = mysqli_query($connid, "SELECT COUNT(*) FROM ".$db_settings['userdata_table']." WHERE activate_code = ''");
|
||||
}
|
||||
list($total_users) = mysqli_fetch_row($user_count_result);
|
||||
mysqli_free_result($user_count_result);
|
||||
$total_pages = ceil($total_users / $settings['users_per_page']);
|
||||
|
||||
// who is online:
|
||||
if ($settings['count_users_online'] > 0) {
|
||||
$useronline_result = mysqli_query($connid, "SELECT ".$db_settings['userdata_table'].".user_name COLLATE utf8mb4_general_ci AS user_name, ".$db_settings['useronline_table'].".user_id
|
||||
FROM ".$db_settings['useronline_table']."
|
||||
LEFT JOIN ".$db_settings['userdata_table']." ON ".$db_settings['userdata_table'].".user_id = ".$db_settings['useronline_table'].".user_id
|
||||
WHERE ".$db_settings['useronline_table'].".user_id > 0
|
||||
ORDER BY user_name ASC") or raise_error('database_error', mysqli_error($connid));
|
||||
if ($hasUserAreaAccess) {
|
||||
if (isset($_GET['search_user']) && trim($_GET['search_user']) != '') $search_user = trim($_GET['search_user']);
|
||||
|
||||
// count users and pages:
|
||||
if (isset($search_user)) {
|
||||
$user_count_result = mysqli_query($connid, "SELECT COUNT(*) FROM ".$db_settings['userdata_table']." WHERE activate_code = '' AND lower(user_name) LIKE '%". mysqli_real_escape_string($connid, my_strtolower($search_user, $lang['charset'])) ."%'");
|
||||
} else {
|
||||
$user_count_result = mysqli_query($connid, "SELECT COUNT(*) FROM ".$db_settings['userdata_table']." WHERE activate_code = ''");
|
||||
}
|
||||
list($total_users) = mysqli_fetch_row($user_count_result);
|
||||
mysqli_free_result($user_count_result);
|
||||
$total_pages = ceil($total_users / $settings['users_per_page']);
|
||||
|
||||
// who is online:
|
||||
if ($settings['count_users_online'] > 0) {
|
||||
$useronline_result = mysqli_query($connid, "SELECT ".$db_settings['userdata_table'].".user_name COLLATE utf8mb4_general_ci AS user_name, ".$db_settings['useronline_table'].".user_id
|
||||
FROM ".$db_settings['useronline_table']."
|
||||
LEFT JOIN ".$db_settings['userdata_table']." ON ".$db_settings['userdata_table'].".user_id = ".$db_settings['useronline_table'].".user_id
|
||||
WHERE ".$db_settings['useronline_table'].".user_id > 0
|
||||
ORDER BY user_name ASC") or raise_error('database_error', mysqli_error($connid));
|
||||
$i = 0;
|
||||
while($uid_field = mysqli_fetch_array($useronline_result)) {
|
||||
$useronline_array[] = intval($uid_field['user_id']);
|
||||
$users_online[$i]['id'] = intval($uid_field['user_id']);
|
||||
$users_online[$i]['name'] = htmlspecialchars($uid_field['user_name']);
|
||||
++$i;
|
||||
}
|
||||
mysqli_free_result($useronline_result);
|
||||
}
|
||||
|
||||
if (isset($users_online)) $smarty->assign('users_online', $users_online);
|
||||
|
||||
if (isset($_GET['page'])) $page = intval($_GET['page']); else $page = 1;
|
||||
if ($page > $total_pages) $page = $total_pages;
|
||||
if ($page < 1) $page = 1;
|
||||
|
||||
if (isset($_GET['order'])) $order = $_GET['order']; else $order='user_name';
|
||||
if ($order != 'user_id' && $order != 'user_name' && $order != 'user_email' && $order != 'user_type' && $order != 'registered' && $order != 'logins' && $order != 'last_login' && $order != 'user_lock' && $order != 'user_hp' && $order != 'email_contact' && $order != 'online') $order = 'user_name';
|
||||
if ($order == 'user_lock' && (empty($_SESSION[$settings['session_prefix'].'user_type']) || isset($_SESSION[$settings['session_prefix'].'user_type']) && $_SESSION[$settings['session_prefix'].'user_type'] < 1)) $order = 'user_name';
|
||||
if (isset($_GET['descasc'])) $descasc = $_GET['descasc']; else $descasc = "ASC";
|
||||
if ($descasc != 'DESC' && $descasc != 'ASC') $descasc = 'ASC';
|
||||
|
||||
$ul = ($page - 1) * $settings['users_per_page'];
|
||||
|
||||
// get userdata:
|
||||
$category_query_add = '';
|
||||
|
||||
if (isset($search_user)) {
|
||||
$result = @mysqli_query($connid, "SELECT ".$db_settings['userdata_table'].".user_id, user_name COLLATE utf8mb4_general_ci AS user_name, user_type, user_email, email_contact, user_hp, user_lock
|
||||
FROM ".$db_settings['userdata_table']."
|
||||
WHERE activate_code = ''". $category_query_add ." AND lower(user_name) LIKE '%". mysqli_real_escape_string($connid, my_strtolower($search_user, $lang['charset'])) ."%'
|
||||
ORDER BY ". $order ." ". $descasc ." LIMIT ". intval($ul) .", ". intval($settings['users_per_page'])) or raise_error('database_error', mysqli_error($connid));
|
||||
} else {
|
||||
$result = @mysqli_query($connid, "SELECT ".$db_settings['userdata_table'].".user_id, user_name COLLATE utf8mb4_general_ci AS user_name, user_type, user_email, email_contact, user_hp, user_lock
|
||||
FROM ".$db_settings['userdata_table']."
|
||||
WHERE activate_code = ''". $category_query_add ."
|
||||
ORDER BY ". $order ." ". $descasc ." LIMIT ". intval($ul) .", ". intval($settings['users_per_page'])) or raise_error('database_error', mysqli_error($connid));
|
||||
}
|
||||
|
||||
$i = 0;
|
||||
while($uid_field = mysqli_fetch_array($useronline_result)) {
|
||||
$useronline_array[] = intval($uid_field['user_id']);
|
||||
$users_online[$i]['id'] = intval($uid_field['user_id']);
|
||||
$users_online[$i]['name'] = htmlspecialchars($uid_field['user_name']);
|
||||
++$i;
|
||||
while ($row = mysqli_fetch_array($result)) {
|
||||
$userdata[$i]['user_id'] = intval($row['user_id']);
|
||||
$userdata[$i]['user_name'] = htmlspecialchars($row['user_name']);
|
||||
if ($isModOrAdmin || $isUser && $row['email_contact'] > 0 || $row['email_contact'] == 2)
|
||||
$userdata[$i]['user_email'] = TRUE;
|
||||
$userdata[$i]['user_hp'] = htmlspecialchars($row['user_hp']);
|
||||
if (!empty($userdata[$i]['user_hp']) && trim($userdata[$i]['user_hp']) != '') {
|
||||
$userdata[$i]['user_hp'] = add_http_if_no_protocol($userdata[$i]['user_hp']);
|
||||
}
|
||||
$userdata[$i]['user_type'] = intval($row['user_type']);
|
||||
$userdata[$i]['user_lock'] = $row['user_lock'];
|
||||
$i++;
|
||||
}
|
||||
mysqli_free_result($useronline_result);
|
||||
}
|
||||
|
||||
if (isset($users_online)) $smarty->assign('users_online', $users_online);
|
||||
|
||||
if (isset($_GET['page'])) $page = intval($_GET['page']); else $page = 1;
|
||||
if ($page > $total_pages) $page = $total_pages;
|
||||
if ($page < 1) $page = 1;
|
||||
|
||||
if (isset($_GET['order'])) $order = $_GET['order']; else $order='user_name';
|
||||
if ($order != 'user_id' && $order != 'user_name' && $order != 'user_email' && $order != 'user_type' && $order != 'registered' && $order != 'logins' && $order != 'last_login' && $order != 'user_lock' && $order != 'user_hp' && $order != 'email_contact' && $order != 'online') $order = 'user_name';
|
||||
if ($order == 'user_lock' && (empty($_SESSION[$settings['session_prefix'].'user_type']) || isset($_SESSION[$settings['session_prefix'].'user_type']) && $_SESSION[$settings['session_prefix'].'user_type'] < 1)) $order = 'user_name';
|
||||
if (isset($_GET['descasc'])) $descasc = $_GET['descasc']; else $descasc = "ASC";
|
||||
if ($descasc != 'DESC' && $descasc != 'ASC') $descasc = 'ASC';
|
||||
|
||||
$ul = ($page - 1) * $settings['users_per_page'];
|
||||
|
||||
// get userdata:
|
||||
$category_query_add = '';
|
||||
|
||||
if (isset($search_user)) {
|
||||
$result = @mysqli_query($connid, "SELECT ".$db_settings['userdata_table'].".user_id, user_name COLLATE utf8mb4_general_ci AS user_name, user_type, user_email, email_contact, user_hp, user_lock
|
||||
FROM ".$db_settings['userdata_table']."
|
||||
WHERE activate_code = ''". $category_query_add ." AND lower(user_name) LIKE '%". mysqli_real_escape_string($connid, my_strtolower($search_user, $lang['charset'])) ."%'
|
||||
ORDER BY ". $order ." ". $descasc ." LIMIT ". intval($ul) .", ". intval($settings['users_per_page'])) or raise_error('database_error', mysqli_error($connid));
|
||||
} else {
|
||||
$result = @mysqli_query($connid, "SELECT ".$db_settings['userdata_table'].".user_id, user_name COLLATE utf8mb4_general_ci AS user_name, user_type, user_email, email_contact, user_hp, user_lock
|
||||
FROM ".$db_settings['userdata_table']."
|
||||
WHERE activate_code = ''". $category_query_add ."
|
||||
ORDER BY ". $order ." ". $descasc ." LIMIT ". intval($ul) .", ". intval($settings['users_per_page'])) or raise_error('database_error', mysqli_error($connid));
|
||||
}
|
||||
|
||||
$i = 0;
|
||||
while ($row = mysqli_fetch_array($result)) {
|
||||
$userdata[$i]['user_id'] = intval($row['user_id']);
|
||||
$userdata[$i]['user_name'] = htmlspecialchars($row['user_name']);
|
||||
if ($isModOrAdmin || $isUser && $row['email_contact'] > 0 || $row['email_contact'] == 2)
|
||||
$userdata[$i]['user_email'] = TRUE;
|
||||
$userdata[$i]['user_hp'] = htmlspecialchars($row['user_hp']);
|
||||
if (!empty($userdata[$i]['user_hp']) && trim($userdata[$i]['user_hp']) != '') {
|
||||
$userdata[$i]['user_hp'] = add_http_if_no_protocol($userdata[$i]['user_hp']);
|
||||
mysqli_free_result($result);
|
||||
|
||||
$smarty->assign('pagination', pagination($total_pages, $page, 3));
|
||||
|
||||
if (isset($userdata)) $smarty->assign('userdata', $userdata);
|
||||
$smarty->assign('total_users',$total_users);
|
||||
|
||||
if (isset($search_user)) {
|
||||
$smarty->assign('search_user', htmlspecialchars($search_user));
|
||||
$smarty->assign('search_user_encoded', urlencode($search_user));
|
||||
}
|
||||
$userdata[$i]['user_type'] = intval($row['user_type']);
|
||||
$userdata[$i]['user_lock'] = $row['user_lock'];
|
||||
$i++;
|
||||
$smarty->assign('order', $order);
|
||||
$smarty->assign('descasc', $descasc);
|
||||
$smarty->assign('ul', $ul);
|
||||
$smarty->assign('page', $page);
|
||||
$smarty->assign('subnav_location', 'subnav_userarea');
|
||||
$smarty->assign('subtemplate', 'user.inc.tpl');
|
||||
$template = 'main.tpl';
|
||||
}
|
||||
mysqli_free_result($result);
|
||||
|
||||
$smarty->assign('pagination', pagination($total_pages, $page, 3));
|
||||
|
||||
if (isset($userdata)) $smarty->assign('userdata', $userdata);
|
||||
$smarty->assign('total_users',$total_users);
|
||||
|
||||
if (isset($search_user)) {
|
||||
$smarty->assign('search_user', htmlspecialchars($search_user));
|
||||
$smarty->assign('search_user_encoded', urlencode($search_user));
|
||||
else {
|
||||
header("Location: index.php");
|
||||
exit;
|
||||
}
|
||||
$smarty->assign('order', $order);
|
||||
$smarty->assign('descasc', $descasc);
|
||||
$smarty->assign('ul', $ul);
|
||||
$smarty->assign('page', $page);
|
||||
$smarty->assign('subnav_location', 'subnav_userarea');
|
||||
$smarty->assign('subtemplate', 'user.inc.tpl');
|
||||
$template = 'main.tpl';
|
||||
break;
|
||||
case 'user_lock':
|
||||
if (isset($_GET['page'])) {
|
||||
|
@ -320,7 +326,7 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) || $hasUserAreaAcces
|
|||
$template = 'main.tpl';
|
||||
break;
|
||||
case 'edit_profile':
|
||||
if (isset($_SESSION[$settings['session_prefix'].'user_id'])) {
|
||||
if ($isUser) {
|
||||
$id = $_SESSION[$settings['session_prefix'].'user_id'];
|
||||
$result = mysqli_query($connid, "SELECT user_id, user_name, user_real_name, gender, birthday, user_email, email_contact, user_hp, user_location, signature, profile, new_posting_notification, new_user_notification, browser_window_target, auto_login_code, language, time_zone, time_difference, theme FROM ".$db_settings['userdata_table']." WHERE user_id = ". intval($id) ." LIMIT 1") or raise_error('database_error', mysqli_error($connid));
|
||||
$row = mysqli_fetch_array($result);
|
||||
|
@ -431,7 +437,7 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) || $hasUserAreaAcces
|
|||
}
|
||||
break;
|
||||
case 'edit_userdata':
|
||||
if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token']){
|
||||
if ($isUser && isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token']){
|
||||
$id = $_SESSION[$settings['session_prefix'].'user_id'];
|
||||
if (isset($_POST['email_contact']))
|
||||
$email_contact = intval($_POST['email_contact']);
|
||||
|
@ -681,7 +687,7 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) || $hasUserAreaAcces
|
|||
}
|
||||
break;
|
||||
case 'remove_account':
|
||||
if (isset($_SESSION[$settings['session_prefix'].'user_id'])) {
|
||||
if ($isUser) {
|
||||
$user_id = $_SESSION[$settings['session_prefix'].'user_id'];
|
||||
$result = mysqli_query($connid, "SELECT `user_name` FROM `".$db_settings['userdata_table']."` WHERE `user_id` = ". intval($user_id) ." LIMIT 1") or raise_error('database_error', mysqli_error($connid));
|
||||
if (mysqli_num_rows($result) == 1) {
|
||||
|
@ -700,7 +706,7 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) || $hasUserAreaAcces
|
|||
}
|
||||
break;
|
||||
case 'remove_account_submitted':
|
||||
if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token']) {
|
||||
if ($isUser && isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token']) {
|
||||
$user_id = $_SESSION[$settings['session_prefix'].'user_id'];
|
||||
$result = @mysqli_query($connid, "SELECT `user_name`, `user_pw` FROM `".$db_settings['userdata_table']."` WHERE `user_id` = ". intval($user_id) ." LIMIT 1") or raise_error('database_error', mysqli_error($connid));
|
||||
if (mysqli_num_rows($result) == 1) {
|
||||
|
@ -738,7 +744,7 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) || $hasUserAreaAcces
|
|||
}
|
||||
break;
|
||||
case 'edit_pw':
|
||||
if (isset($_SESSION[$settings['session_prefix'].'user_id'])) {
|
||||
if ($isUser) {
|
||||
$breadcrumbs[0]['link'] = 'index.php?mode=user';
|
||||
$breadcrumbs[0]['linkname'] = 'subnav_userarea';
|
||||
$breadcrumbs[1]['link'] = 'index.php?mode=user&action=edit_profile';
|
||||
|
@ -750,7 +756,7 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) || $hasUserAreaAcces
|
|||
}
|
||||
break;
|
||||
case 'edit_pw_submitted':
|
||||
if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token']) {
|
||||
if ($isUser && isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token']) {
|
||||
$user_id = $_SESSION[$settings['session_prefix'].'user_id'];
|
||||
$pw_result = mysqli_query($connid, "SELECT user_pw FROM ".$db_settings['userdata_table']." WHERE user_id = ". intval($user_id) ." LIMIT 1") or raise_error('database_error', mysqli_error($connid));
|
||||
$field = mysqli_fetch_array($pw_result);
|
||||
|
@ -806,7 +812,7 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) || $hasUserAreaAcces
|
|||
}
|
||||
break;
|
||||
case 'edit_email':
|
||||
if (isset($_SESSION[$settings['session_prefix'].'user_id'])) {
|
||||
if ($isUser) {
|
||||
$breadcrumbs[0]['link'] = 'index.php?mode=user';
|
||||
$breadcrumbs[0]['linkname'] = 'subnav_userarea';
|
||||
$breadcrumbs[1]['link'] = 'index.php?mode=user&action=edit_profile';
|
||||
|
@ -818,7 +824,7 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) || $hasUserAreaAcces
|
|||
}
|
||||
break;
|
||||
case 'edit_email_submit':
|
||||
if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token']) {
|
||||
if ($isUser && isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token']) {
|
||||
$new_email = (!empty($_POST['new_email'])) ? trim($_POST['new_email']) : '';
|
||||
$new_email_confirm = (!empty($_POST['new_email_confirm'])) ? trim($_POST['new_email_confirm']) : '';
|
||||
$pw_new_email = $_POST['pw_new_email'];
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
* @author Mark Alexander Hoschek < alex at mylittleforum dot net >
|
||||
* @author Michael Lösler (https://github.com/loesler)
|
||||
* @author Heiko August (https://github.com/auge8472)
|
||||
* @copyright 2006-2024 Mark Alexander Hoschek
|
||||
* @version 20240827.1 (2024-08-27)
|
||||
* @copyright 2006-2025 Mark Alexander Hoschek
|
||||
* @version 20250323.1 (2025-03-23)
|
||||
* @link https://mylittleforum.net/
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
|
|
|
@ -282,6 +282,7 @@ if (isset($_POST['install_submit'])) {
|
|||
$cleared_lines = array();
|
||||
foreach ($lines as $line) {
|
||||
$line = str_replace(' mlf2_', ' '.$_POST['table_prefix'], $line);
|
||||
$line = str_replace('`smbl_mlf2_', '`smbl_'.$_POST['table_prefix'], $line);
|
||||
$line = trim($line);
|
||||
if (my_substr($line, -1, my_strlen($line, $lang['default']['charset']), $lang['default']['charset']) == ';')
|
||||
$line = my_substr($line,0,-1,$lang['default']['charset']);
|
||||
|
|
|
@ -1,27 +1,27 @@
|
|||
# note: the installation script expects one query per line!
|
||||
|
||||
CREATE TABLE mlf2_banlists (name varchar(255) NOT NULL, list text NOT NULL, PRIMARY KEY (name)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_categories (id int(11) NOT NULL AUTO_INCREMENT, order_id int(11) NOT NULL default '0', category varchar(255) NOT NULL default '', description varchar(255) NOT NULL default '',accession tinyint(4) NOT NULL default '0', PRIMARY KEY (id)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_entries (id int(11) NOT NULL AUTO_INCREMENT, pid int(11) NOT NULL default '0', tid int(11) NOT NULL default '0', uniqid varchar(255) NOT NULL default '', time timestamp NOT NULL default CURRENT_TIMESTAMP, last_reply timestamp NULL DEFAULT NULL, edited timestamp NULL DEFAULT NULL, edited_by int(11) default NULL, user_id int(11) default '0', name varchar(255) NOT NULL default '', subject varchar(255) NOT NULL default '',category int(11) NOT NULL default '0', email varchar(255) NOT NULL default '', hp varchar(255) NOT NULL default '', location varchar(255) NOT NULL default '', ip varchar(128) NOT NULL default '', text text NOT NULL, show_signature tinyint(4) default '0', marked tinyint(4) default '0', locked tinyint(4) default '0', sticky tinyint(4) default '0', views int(11) default '0', edit_key varchar(255) NOT NULL default '', PRIMARY KEY (id), UNIQUE KEY id (id), KEY tid (tid),KEY category (category), KEY pid (pid), KEY sticky (sticky), KEY user_id (user_id), KEY time (time), KEY last_reply (last_reply)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_categories (id int(11) UNSIGNED NOT NULL AUTO_INCREMENT, order_id int(11) NOT NULL default '0', category varchar(255) NOT NULL default '', description varchar(255) NOT NULL default '', accession tinyint(4) NOT NULL default '0', PRIMARY KEY (id)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_entries (id int(11) UNSIGNED NOT NULL AUTO_INCREMENT, pid int(11) UNSIGNED NOT NULL default '0', tid int(11) UNSIGNED NOT NULL default '0', uniqid varchar(255) NOT NULL default '', time timestamp NOT NULL default CURRENT_TIMESTAMP, last_reply timestamp NULL DEFAULT NULL, edited timestamp NULL DEFAULT NULL, edited_by int(11) UNSIGNED default NULL, user_id int(11) UNSIGNED default '0', name varchar(255) NOT NULL default '', subject varchar(255) NOT NULL default '',category int(11) UNSIGNED NOT NULL default '0', email varchar(255) NOT NULL default '', hp varchar(255) NOT NULL default '', location varchar(255) NOT NULL default '', ip varchar(128) NOT NULL default '', text text NOT NULL, show_signature tinyint(4) default '0', marked tinyint(4) default '0', locked tinyint(4) default '0', sticky tinyint(4) default '0', views int(11) UNSIGNED default '0', edit_key varchar(255) NOT NULL default '', PRIMARY KEY (id), UNIQUE KEY id (id), KEY tid (tid),KEY category (category), KEY pid (pid), KEY sticky (sticky), KEY user_id (user_id), KEY time (time), KEY last_reply (last_reply)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_settings (name varchar(255) NOT NULL, value varchar(255) NOT NULL default '', PRIMARY KEY (name)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
|
||||
CREATE TABLE mlf2_smilies (id int(11) NOT NULL AUTO_INCREMENT, order_id int(11) NOT NULL default '0', file varchar(100) NOT NULL default '', code_1 varchar(50) NOT NULL default '', code_2 varchar(50) NOT NULL default '', code_3 varchar(50) NOT NULL default '', code_4 varchar(50) NOT NULL default '', code_5 varchar(50) NOT NULL default '', title varchar(255) NOT NULL default '', PRIMARY KEY (id)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_userdata (user_id int(11) NOT NULL AUTO_INCREMENT, user_type tinyint(4) NOT NULL default '0', user_name varchar(128) NOT NULL COLLATE utf8mb4_bin, user_real_name varchar(255) NOT NULL default '', gender tinyint(4) NOT NULL default '0', birthday date NULL default NULL, user_pw varchar(255) NOT NULL default '', user_email varchar(255) NOT NULL, email_contact tinyint(4) default '0', user_hp varchar(255) NOT NULL default '', user_location varchar(255) NOT NULL default '', signature varchar(255) NOT NULL default '', profile text NOT NULL, logins int(11) NOT NULL default '0', last_login timestamp NULL default CURRENT_TIMESTAMP, last_logout timestamp NULL DEFAULT NULL, user_ip varchar(128) NOT NULL default '', registered timestamp NULL DEFAULT NULL, category_selection varchar(255) DEFAULT NULL, thread_order tinyint(4) NOT NULL default '0', user_view tinyint(4) NOT NULL default '0', sidebar tinyint(4) NOT NULL default '1', fold_threads tinyint(4) NOT NULL default '0', thread_display tinyint(4) NOT NULL default '0', new_posting_notification tinyint(4) default '0', new_user_notification tinyint(4) default '0', user_lock tinyint(4) default '0', browser_window_target tinyint(4) NOT NULL default '0', auto_login_code varchar(50) NOT NULL default '', pwf_code varchar(50) NOT NULL, activate_code varchar(50) NOT NULL default '', language VARCHAR(255) NOT NULL DEFAULT '', time_zone VARCHAR(255) NOT NULL DEFAULT '', time_difference smallint(4) default '0', theme VARCHAR(255) NOT NULL DEFAULT '', tou_accepted DATETIME NULL DEFAULT NULL, dps_accepted DATETIME NULL DEFAULT NULL, inactivity_notification BOOLEAN NOT NULL DEFAULT FALSE, PRIMARY KEY (user_id), KEY key_user_type (user_type), UNIQUE KEY key_user_name (user_name), UNIQUE KEY key_user_email (user_email)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_pages (id int(11) NOT NULL AUTO_INCREMENT,order_id int(11) NOT NULL, title varchar(255) NOT NULL default '', content text NOT NULL, menu_linkname varchar(255) NOT NULL default '', access tinyint(4) NOT NULL default '0', PRIMARY KEY (id)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_useronline (ip varchar(128) NOT NULL default '', time int(14) NOT NULL default '0', user_id int(11) default '0') ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_smilies (id int(11) UNSIGNED NOT NULL AUTO_INCREMENT, order_id int(11) NOT NULL default '0', file varchar(100) NOT NULL default '', code_1 varchar(50) NOT NULL default '', code_2 varchar(50) NOT NULL default '', code_3 varchar(50) NOT NULL default '', code_4 varchar(50) NOT NULL default '', code_5 varchar(50) NOT NULL default '', title varchar(255) NOT NULL default '', PRIMARY KEY (id)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_userdata (user_id int(11) UNSIGNED NOT NULL AUTO_INCREMENT, user_type tinyint(4) NOT NULL default '0', user_name varchar(128) NOT NULL COLLATE utf8mb4_bin, user_real_name varchar(255) NOT NULL default '', gender tinyint(4) NOT NULL default '0', birthday date NULL default NULL, user_pw varchar(255) NOT NULL default '', user_email varchar(255) NOT NULL, email_contact tinyint(4) default '0', user_hp varchar(255) NOT NULL default '', user_location varchar(255) NOT NULL default '', signature varchar(255) NOT NULL default '', profile text NOT NULL, logins int(11) NOT NULL default '0', last_login timestamp NULL default CURRENT_TIMESTAMP, last_logout timestamp NULL DEFAULT NULL, user_ip varchar(128) NOT NULL default '', registered timestamp NULL DEFAULT NULL, category_selection varchar(255) DEFAULT NULL, thread_order tinyint(4) NOT NULL default '0', user_view tinyint(4) NOT NULL default '0', sidebar tinyint(4) NOT NULL default '1', fold_threads tinyint(4) NOT NULL default '0', thread_display tinyint(4) NOT NULL default '0', new_posting_notification tinyint(4) default '0', new_user_notification tinyint(4) default '0', user_lock tinyint(4) default '0', browser_window_target tinyint(4) NOT NULL default '0', auto_login_code varchar(50) NOT NULL default '', pwf_code varchar(50) NOT NULL, activate_code varchar(50) NOT NULL default '', language VARCHAR(255) NOT NULL DEFAULT '', time_zone VARCHAR(255) NOT NULL DEFAULT '', time_difference smallint(4) default '0', theme VARCHAR(255) NOT NULL DEFAULT '', tou_accepted DATETIME NULL DEFAULT NULL, dps_accepted DATETIME NULL DEFAULT NULL, inactivity_notification BOOLEAN NOT NULL DEFAULT FALSE, PRIMARY KEY (user_id), KEY key_user_type (user_type), UNIQUE KEY key_user_name (user_name), UNIQUE KEY key_user_email (user_email)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_pages (id int(11) UNSIGNED NOT NULL AUTO_INCREMENT, order_id int(11) NOT NULL, title varchar(255) NOT NULL default '', content text NOT NULL, menu_linkname varchar(255) NOT NULL default '', access tinyint(4) NOT NULL default '0', PRIMARY KEY (id)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_useronline (ip varchar(128) NOT NULL default '', time int(14) NOT NULL default '0', user_id int(11) UNSIGNED default '0') ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_logincontrol (time timestamp NOT NULL default CURRENT_TIMESTAMP, ip varchar(128) NOT NULL default '', logins int(11) NOT NULL default '0') ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_entries_cache (cache_id int(11) NOT NULL, cache_text mediumtext NOT NULL, PRIMARY KEY (cache_id)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_userdata_cache (cache_id int(11) NOT NULL, cache_signature text NOT NULL, cache_profile text NOT NULL, PRIMARY KEY (cache_id)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_bookmarks (id int(11) NOT NULL AUTO_INCREMENT, user_id int(11) NOT NULL, posting_id int(11) NOT NULL, time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, subject varchar(255) NOT NULL, order_id int(11) NOT NULL DEFAULT '0', PRIMARY KEY (id), UNIQUE KEY UNIQUE_uid_pid (user_id,posting_id)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_bookmarks (id int(11) UNSIGNED NOT NULL AUTO_INCREMENT, user_id int(11) UNSIGNED NOT NULL, posting_id int(11) UNSIGNED NOT NULL, time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, subject varchar(255) NOT NULL, order_id int(11) NOT NULL DEFAULT '0', PRIMARY KEY (id), UNIQUE KEY UNIQUE_uid_pid (user_id,posting_id)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_read_entries (user_id int(11) UNSIGNED NOT NULL, posting_id int(11) UNSIGNED NOT NULL, time timestamp NOT NULL, PRIMARY KEY (user_id, posting_id), KEY `user_id` (`user_id`), KEY `posting_id` (`posting_id`)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_temp_infos (name varchar(50) NOT NULL, value varchar(255) NOT NULL, time timestamp NULL DEFAULT NULL, PRIMARY KEY (name)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
|
||||
CREATE TABLE mlf2_entry_tags (`bid` int(11) NOT NULL, `tid` int(11) NOT NULL, PRIMARY KEY (`bid`,`tid`)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_bookmark_tags (`bid` int(11) NOT NULL, `tid` int(11) NOT NULL, PRIMARY KEY (`bid`,`tid`)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_tags (`id` int(11) NOT NULL AUTO_INCREMENT, `tag` varchar(128) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `tag` (`tag`)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_tags (`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, `tag` varchar(128) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `tag` (`tag`)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_subscriptions (`user_id` int(12) UNSIGNED NULL, `eid` int(12) UNSIGNED NOT NULL, `unsubscribe_code` varchar(36) NOT NULL, `tstamp` datetime DEFAULT NULL, UNIQUE `user_thread` (`user_id`, `eid`) USING HASH, INDEX `hash` (`unsubscribe_code`)) ENGINE = InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_b8_rating (`eid` int(11) NOT NULL, `spam` tinyint(1) NOT NULL DEFAULT '0', `training_type` tinyint(1) NOT NULL DEFAULT '0', PRIMARY KEY (`eid`), KEY `b8_spam` (`spam`), KEY `B8_training_type` (`training_type`)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_akismet_rating (`eid` int(11) NOT NULL, `spam` tinyint(1) NOT NULL DEFAULT '0', `spam_check_status` tinyint(1) NOT NULL DEFAULT '0', PRIMARY KEY (`eid`), KEY `akismet_spam` (`spam`), KEY spam_check_status (spam_check_status)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_b8_wordlist (`token` varchar(255) NOT NULL, `count_ham` int unsigned default NULL, `count_spam` int unsigned default NULL, PRIMARY KEY (`token`)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
|
||||
CREATE TABLE mlf2_uploads (`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, `uploader` int(10) UNSIGNED NULL, `filename` varchar(64) NULL, `tstamp` datetime NULL, PRIMARY KEY (id)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
|
||||
CREATE TABLE mlf2_uploads (`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, `uploader` int(10) UNSIGNED NULL, `pathname` varchar(128) NOT NULL, `tstamp` datetime NULL, PRIMARY KEY (id), UNIQUE KEY `pathname` (`pathname`), CONSTRAINT `smbl_mlf2_uploader` FOREIGN KEY `fk_uploader` (`uploader`) REFERENCES mlf2_userdata(`user_id`) ON UPDATE CASCADE ON DELETE SET NULL) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
|
||||
|
||||
INSERT INTO mlf2_banlists VALUES ('user_agents', '');
|
||||
INSERT INTO mlf2_banlists VALUES ('ips', '');
|
||||
|
|
95
js/main.js
95
js/main.js
|
@ -98,8 +98,9 @@ if (window.Node && Node.prototype && !Node.prototype.contains) {
|
|||
document.createElementWithAttributes = function(tagName, attributes, parentElement) {
|
||||
var el = document.createElement(tagName);
|
||||
|
||||
for (var attribute in attributes)
|
||||
el[attribute] = attributes[attribute]; //el.setAttribute(attribute, attributes[attribute]); cannot used because function are evaluated in attributes e.g. {"onclick": function(e) { return false; }}
|
||||
for (const attribute in attributes) {
|
||||
el[attribute] = attributes[attribute]; //el.setAttribute(attribute, attributes[attribute]); cannot be used because function are evaluated in attributes e.g. {"onclick": function(e) { return false; }}
|
||||
}
|
||||
|
||||
if (parentElement)
|
||||
parentElement.appendChild(el);
|
||||
|
@ -510,40 +511,29 @@ function DragAndDropTable(table,mode,queryKey) {
|
|||
*/
|
||||
function Sidebar(templatePath) {
|
||||
templatePath = templatePath || "";
|
||||
var main = document.getElementById("sidebar") || document.getElementById("bottombar") || false;
|
||||
var icon = document.getElementById("sidebartoggle");
|
||||
var self = this;
|
||||
if (!main || !icon)
|
||||
const main = document.getElementById("sidebar") || document.getElementById("bottombar") || false;
|
||||
const self = this;
|
||||
if (!main)
|
||||
return;
|
||||
this.setVisible = function(visible) {
|
||||
if (visible) {
|
||||
main.classList.remove("js-display-fold");
|
||||
icon.src = templatePath + settings["hide_sidebar_image"];
|
||||
icon.classList.remove("show-sidebar");
|
||||
icon.classList.add("hide-sidebar");
|
||||
}
|
||||
else {
|
||||
main.classList.add("js-display-fold");
|
||||
icon.src = templatePath + settings["show_sidebar_image"];
|
||||
icon.classList.remove("hide-sidebar");
|
||||
icon.classList.add("show-sidebar");
|
||||
}
|
||||
};
|
||||
this.isVisible = function() {
|
||||
return !main.classList.contains("js-display-fold");
|
||||
};
|
||||
var links = main.getElementsByTagName("a");
|
||||
for (var i=0; i<links.length; i++) {
|
||||
if (links[i].href.search(/toggle_sidebar/) != -1) {
|
||||
links[i].onclick = function(e) {
|
||||
self.setVisible(!self.isVisible());
|
||||
new Request("index.php", "POST", new Query("toggle_sidebar", true));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
const link = main.querySelector(".sidebar a");
|
||||
link.onclick = function(e) {
|
||||
self.setVisible(!self.isVisible());
|
||||
new Request("index.php", "POST", new Query("toggle_sidebar", true));
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Thread object, which is created by an UL element or the numerical ID of the UL element,
|
||||
* which is used to collapse the tree
|
||||
|
@ -1155,12 +1145,13 @@ function DragAndDropTable(table,mode,queryKey) {
|
|||
return;
|
||||
|
||||
initThreadFoldingInSubMenu();
|
||||
|
||||
|
||||
for (var i=0; i<els.length; i++) {
|
||||
var el = els[i];
|
||||
var li = el.parentNode;
|
||||
var pLink = document.getFirstChildByElement(li, "a", ["ap", "reply", "thread", "replynew", "threadnew", "thread-sticky", "threadnew-sticky", "reply-search", "thread-search", "thread-locked"]);
|
||||
var pEmpty = !!document.getFirstChildByElement(li, "img", ["no-text"]);
|
||||
var li = el.closest("li");
|
||||
var pLink = li.querySelector(":scope > a.subject");
|
||||
var pEmptyEl = li.querySelector(":scope > .metadata .tail img.no-text");
|
||||
var pEmpty = (pEmptyEl !== null) ? true: false;
|
||||
var pid = parseInt( el.id.substring(1) );
|
||||
if (!pid)
|
||||
continue;
|
||||
|
@ -1174,7 +1165,7 @@ function DragAndDropTable(table,mode,queryKey) {
|
|||
self.selectPosting( this.pid );
|
||||
this.blur();
|
||||
return false;
|
||||
};
|
||||
};
|
||||
}
|
||||
else if (links[j].href.search(/delete_posting/) != -1) {
|
||||
links[j].onclick = function(e) {
|
||||
|
@ -1184,8 +1175,8 @@ function DragAndDropTable(table,mode,queryKey) {
|
|||
this.blur();
|
||||
return confirmed;
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!pEmpty && pLink && ajaxPreviewWindow) {
|
||||
if (links.length >= 1) {
|
||||
|
@ -1215,11 +1206,11 @@ function DragAndDropTable(table,mode,queryKey) {
|
|||
var confirmed = window.confirm( lang["delete_posting_confirm"] );
|
||||
if (confirmed)
|
||||
this.href += '&delete_posting_confirm=true';
|
||||
return confirmed;
|
||||
return confirmed;
|
||||
};
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1228,43 +1219,6 @@ function DragAndDropTable(table,mode,queryKey) {
|
|||
pEls = pEls.length>0?pEls:document.getElementsByClassName("thread-posting");
|
||||
new FullSizeImage(pEls);
|
||||
};
|
||||
|
||||
/**
|
||||
* Set the default value to an INPUT element
|
||||
*/
|
||||
var setDefaultInputValue = function(id) {
|
||||
var inp = document.getElementById(id);
|
||||
if (!inp)
|
||||
return;
|
||||
|
||||
var value = (inp.alt) ? inp.alt : inp.value;
|
||||
inp.onfocus = function(e) {
|
||||
if (this.value == value)
|
||||
this.value="";
|
||||
};
|
||||
inp.onblur = function(e) {
|
||||
if(this.value.trim() == "")
|
||||
this.value = value;
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
* Set focus to first INPUT element on the page, if exists
|
||||
*/
|
||||
var setFocusToContentForm = function() {
|
||||
var par = document.getElementById("content");
|
||||
if (par) {
|
||||
var f = par.getElementsByTagName("form");
|
||||
if (f && f.length>0) {
|
||||
for (var i=0; i<f[0].elements.length; i++) {
|
||||
if (f[0].elements[i].type == "text" && f[0].elements[i].name != "search_user" && f[0].elements[i].name != "smiley_code" && f[0].elements[i].name != "new_category") {
|
||||
f[0].elements[i].focus();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Add a checkbox to a INPUT element of type PASSWORD to show/hid the entered password
|
||||
|
@ -1475,9 +1429,6 @@ function DragAndDropTable(table,mode,queryKey) {
|
|||
*/
|
||||
this.init = function( ajaxPreviewStructure ) {
|
||||
ajaxPreviewStructure = ajaxPreviewStructure || false;
|
||||
setFocusToContentForm();
|
||||
setDefaultInputValue("search-input");
|
||||
setDefaultInputValue("search-user");
|
||||
templatePath = this.getTemplatePath();
|
||||
if (ajaxPreviewStructure)
|
||||
ajaxPreviewWindow = new AjaxPreviewWindow( ajaxPreviewStructure, templatePath );
|
||||
|
|
4
js/main.min.js
vendored
4
js/main.min.js
vendored
File diff suppressed because one or more lines are too long
205
js/posting.js
205
js/posting.js
|
@ -66,7 +66,7 @@ function BBCodeButton(el) {
|
|||
this.setHTMLElement = function(el) {
|
||||
htmlEl = el;
|
||||
htmlEl.onclick = function(e) {
|
||||
self.insertCode(this);
|
||||
self.insertCode(this);
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
@ -107,7 +107,7 @@ function BBCodeLinkButton(el) {
|
|||
txtarea.insertTextRange( "["+link_bb_code+"]" + insert_link + "[/"+link_bb_code+"]" );
|
||||
}
|
||||
}, 150);
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -178,10 +178,10 @@ function BBCodeColorChooserButton(el) {
|
|||
this.insertOptionCode = function(obj) {
|
||||
if (!this.canInsert())
|
||||
return;
|
||||
var buttonGroup = this.getButtonGroup();
|
||||
var buttonGroup = this.getButtonGroup();
|
||||
var txtarea = buttonGroup.getTextArea();
|
||||
var code = this.getCode();
|
||||
txtarea.insertTextRange( "[" + code + obj.extension + "]" + txtarea.getSelection() + "[/" + code + "]" );
|
||||
txtarea.insertTextRange( "[" + code + obj.extension + "]" + txtarea.getSelection() + "[/" + code + "]" );
|
||||
buttonGroup.getAdditionalOptionsWindow().enableOptionList(false);
|
||||
};
|
||||
|
||||
|
@ -191,7 +191,7 @@ function BBCodeColorChooserButton(el) {
|
|||
var buttonGroup = this.getButtonGroup();
|
||||
var objPos = document.getElementPoSi(obj);
|
||||
buttonGroup.getAdditionalOptionsWindow().setOptionList(colorTable);
|
||||
buttonGroup.getAdditionalOptionsWindow().enableOptionList(true, objPos);
|
||||
buttonGroup.getAdditionalOptionsWindow().enableOptionList(true, objPos);
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -222,16 +222,17 @@ function BBCodeOptionButton(el, list, quest, par) {
|
|||
return;
|
||||
var buttonGroup = this.getButtonGroup();
|
||||
// Ausnahme INLINECODE
|
||||
var codestart = this.getCode(), codeend = this.getCode();
|
||||
var codestart = this.getCode(), codeend = this.getCode();
|
||||
window.setTimeout(function(){
|
||||
var txtarea = buttonGroup.getTextArea();
|
||||
var selectionRange = txtarea.getSelection();
|
||||
|
||||
if (obj.attribute.toLowerCase() == "inlinecode") {
|
||||
codestart = codeend = obj.attribute;
|
||||
|
||||
if (obj.attribute != null && obj.attribute.trim() != "") {
|
||||
if (obj.attribute.trim().toLowerCase() == "inlinecode")
|
||||
codestart = codeend = obj.attribute;
|
||||
else
|
||||
codestart += "=" + obj.attribute;
|
||||
}
|
||||
if (obj.attribute.trim() && obj.attribute.toLowerCase() != "inlinecode")
|
||||
codestart += "=" + obj.attribute;
|
||||
|
||||
if (quest && selectionRange == "") {
|
||||
var p = window.prompt(quest, par);
|
||||
|
@ -248,10 +249,10 @@ function BBCodeOptionButton(el, list, quest, par) {
|
|||
this.insertCode = function(obj) {
|
||||
if (!this.canInsert())
|
||||
return;
|
||||
var buttonGroup = this.getButtonGroup();
|
||||
var buttonGroup = this.getButtonGroup();
|
||||
var objPos = document.getElementPoSi(obj);
|
||||
buttonGroup.getAdditionalOptionsWindow().setOptionList(optionList);
|
||||
buttonGroup.getAdditionalOptionsWindow().enableOptionList(true, objPos);
|
||||
buttonGroup.getAdditionalOptionsWindow().enableOptionList(true, objPos);
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -264,7 +265,7 @@ function BBCodeListButton(el) {
|
|||
this.insertCode = function(obj) {
|
||||
if (!this.canInsert())
|
||||
return;
|
||||
var buttonGroup = this.getButtonGroup();
|
||||
var buttonGroup = this.getButtonGroup();
|
||||
var txtarea = buttonGroup.getTextArea();
|
||||
var selectionRange = txtarea.getSelection();
|
||||
var listStr = "";
|
||||
|
@ -288,7 +289,7 @@ function BBCodeSingleSmilieButton(el) {
|
|||
this.insertCode = function(obj) {
|
||||
if (!this.canInsert())
|
||||
return;
|
||||
var buttonGroup = this.getButtonGroup();
|
||||
var buttonGroup = this.getButtonGroup();
|
||||
var txtarea = buttonGroup.getTextArea();
|
||||
|
||||
var selectionRange = txtarea.getSelection();
|
||||
|
@ -304,32 +305,31 @@ function BBCodeSingleSmilieButton(el) {
|
|||
function BBCodeSmilieButton(el, list) {
|
||||
this.constructor(el, list);
|
||||
var self = this;
|
||||
//var smilies = document.createElement("div");
|
||||
var smilies = document.createElementWithAttributes("div", {"id": "additional-smilies"}, null);
|
||||
var smilies = document.createElementWithAttributes("ul", {"id": "additional-smilies"}, null);
|
||||
|
||||
for (var i=0; i<list.length; i++) {
|
||||
var link = document.createElementWithAttributes("a", {"href": "#", "title": list[i].title, "code": list[i].code, "onclick": function(e) { self.insertOptionCode(this); return false; } }, smilies);
|
||||
link.appendChild( list[i].label );
|
||||
let item = document.createElementWithAttributes("li",{}, smilies);
|
||||
let btn = document.createElementWithAttributes("button",{"type": "button", "title": list[i].title, "value": list[i].code, "onclick": function(e) { self.insertButtonCode(this); return false; }}, item);
|
||||
btn.appendChild( list[i].label);
|
||||
}
|
||||
|
||||
this.insertOptionCode = function(obj) {
|
||||
if (!this.canInsert())
|
||||
return;
|
||||
var buttonGroup = this.getButtonGroup();
|
||||
|
||||
this.insertButtonCode = function(obj) {
|
||||
if (!this.canInsert()) return;
|
||||
var buttonGroup = this.getButtonGroup();
|
||||
var txtarea = buttonGroup.getTextArea();
|
||||
var code = obj.code;
|
||||
txtarea.insertTextRange( txtarea.getSelection() +code + " " );
|
||||
const val = event.target.closest("button").getAttribute("value");
|
||||
txtarea.insertTextRange( txtarea.getSelection() + val + " " );
|
||||
buttonGroup.getAdditionalOptionsWindow().enableOptionList(false);
|
||||
}
|
||||
|
||||
this.insertCode = function(obj) {
|
||||
if (!this.canInsert())
|
||||
return;
|
||||
var buttonGroup = this.getButtonGroup();
|
||||
var buttonGroup = this.getButtonGroup();
|
||||
var objPos = document.getElementPoSi(obj);
|
||||
buttonGroup.getAdditionalOptionsWindow().setOptionList(smilies);
|
||||
buttonGroup.getAdditionalOptionsWindow().enableOptionList(true, objPos);
|
||||
};
|
||||
buttonGroup.getAdditionalOptionsWindow().enableOptionList(true, objPos);
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -421,46 +421,53 @@ function ButtonGroup(f) {
|
|||
if (!document.getElementById("smiley-bar"))
|
||||
return;
|
||||
var buttonBar = document.getElementById("smiley-bar");
|
||||
|
||||
if (document.getElementById("smiley-instructions")) {
|
||||
var el = document.getElementById("smiley-instructions").firstChild;
|
||||
let elems = document.getElementById("smiley-instructions").querySelectorAll("div");
|
||||
var obj = null;
|
||||
var list = [];
|
||||
while (el != null) {
|
||||
if (el.nodeName && el.nodeName.toLowerCase() == "dt") {
|
||||
|
||||
for (const el of elems) {
|
||||
const term = el.querySelector("dt");
|
||||
const desc = el.querySelectorAll("dd");
|
||||
if (term) {
|
||||
obj = {
|
||||
code : el.firstChild.nodeValue,
|
||||
title : el.title,
|
||||
classes : el.className,
|
||||
code : term.textContent,
|
||||
title : term.getAttribute("title"),
|
||||
classes : term.getAttribute("class"),
|
||||
isSmilie: true,
|
||||
childs : []
|
||||
};
|
||||
}
|
||||
else if (obj && el.nodeName && el.nodeName.toLowerCase() == "dd") {
|
||||
obj.label = el.firstChild;
|
||||
if (obj.classes.search(/default/) != -1)
|
||||
createSingleButton(obj, buttonBar);
|
||||
else
|
||||
list.push(obj);
|
||||
obj = null;
|
||||
}
|
||||
el = el.nextSibling;
|
||||
if (obj && desc) {
|
||||
for (const d of desc) {
|
||||
obj.label = d.firstChild;
|
||||
if (obj.classes.search(/default/) != -1)
|
||||
createSingleButton(obj, buttonBar);
|
||||
else
|
||||
list.push(obj);
|
||||
obj = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (list && list.length > 0) {
|
||||
obj = {
|
||||
code : "",
|
||||
title : lang["more_smilies_title"],
|
||||
label : lang["more_smilies_label"],
|
||||
classes : "more-smilies",
|
||||
classes : "",
|
||||
isSmilie: true,
|
||||
childs : list
|
||||
};
|
||||
createSingleButton(obj, buttonBar);
|
||||
if (obj)
|
||||
createSingleButton(obj, buttonBar);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* WTransform introduction (for adding source code) into button elements
|
||||
* Transform introduction (for adding source code) into button elements
|
||||
*/
|
||||
var convertInstructionsToButton = function() {
|
||||
if (!document.getElementById("bbcode-bar"))
|
||||
|
@ -468,32 +475,33 @@ function ButtonGroup(f) {
|
|||
var buttonBar = document.getElementById("bbcode-bar");
|
||||
|
||||
if (document.getElementById("bbcode-instructions")) {
|
||||
var el = document.getElementById("bbcode-instructions").firstChild;
|
||||
let elems = document.getElementById("bbcode-instructions").querySelectorAll("div");
|
||||
var obj = null;
|
||||
|
||||
while (el != null) {
|
||||
if (el.nodeName && el.nodeName.toLowerCase() == "dt") {
|
||||
if (obj)
|
||||
createSingleButton(obj, buttonBar);
|
||||
|
||||
for (const el of elems) {
|
||||
const term = el.querySelector("dt");
|
||||
const desc = el.querySelectorAll("dd");
|
||||
if (term) {
|
||||
obj = {
|
||||
code : el.id,
|
||||
label : el.title,
|
||||
title : el.firstChild.nodeValue,
|
||||
classes : el.className,
|
||||
code : term.getAttribute("id"),
|
||||
label : term.getAttribute("title"),
|
||||
title : term.textContent,
|
||||
classes : term.getAttribute("class"),
|
||||
childs : []
|
||||
};
|
||||
}
|
||||
else if (obj && el.nodeName && el.nodeName.toLowerCase() == "dd") {
|
||||
var attChild = {
|
||||
attribute : el.id,
|
||||
label : el.title
|
||||
if (obj && desc) {
|
||||
for (const d of desc) {
|
||||
var attChild = {
|
||||
attribute : d.getAttribute("id"),
|
||||
label : d.getAttribute("title")
|
||||
}
|
||||
obj.childs.push(attChild);
|
||||
}
|
||||
obj.childs.push( attChild );
|
||||
}
|
||||
el = el.nextSibling;
|
||||
if (obj)
|
||||
createSingleButton(obj, buttonBar);
|
||||
}
|
||||
if (obj)
|
||||
createSingleButton(obj, buttonBar);
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -554,8 +562,7 @@ function ButtonGroup(f) {
|
|||
*/
|
||||
var createBBCodeButton = function(button, list) {
|
||||
var bbCodeButton = null;
|
||||
var bname=button&&button.name?button.name.toLowerCase():"";
|
||||
//switch(button.name.toLowerCase()) {
|
||||
var bname = button && button.name ? button.name.toLowerCase() : "";
|
||||
switch(bname) {
|
||||
case "link":
|
||||
bbCodeButton = new BBCodeLinkButton( button );
|
||||
|
@ -564,7 +571,7 @@ function ButtonGroup(f) {
|
|||
if (list && list.length > 1)
|
||||
bbCodeButton = new BBCodeOptionButton(button, list, lang["bbcode_image_url"], "https://" );
|
||||
else
|
||||
bbCodeButton = new BBCodePromtButton( button, lang["bbcode_image_url"], "https://" );
|
||||
bbCodeButton = new BBCodePromtButton( button, lang["bbcode_image_url"], "https://" );
|
||||
break;
|
||||
case "color":
|
||||
bbCodeButton = new BBCodeColorChooserButton( button );
|
||||
|
@ -573,10 +580,10 @@ function ButtonGroup(f) {
|
|||
bbCodeButton = new BBCodeListButton( button );
|
||||
break;
|
||||
case "upload":
|
||||
bbCodeButton = new BBCodePopUpButton( button, "index.php?mode=upload_image", settings["upload_popup_width"], settings["upload_popup_height"]);
|
||||
bbCodeButton = new BBCodePopUpButton( button, "index.php?mode=upload_image", settings["upload_popup_width"], settings["upload_popup_height"]);
|
||||
break;
|
||||
case "tex":
|
||||
bbCodeButton = new BBCodePromtButton( button, lang["bbcode_tex_code"] );
|
||||
bbCodeButton = new BBCodePromtButton( button, lang["bbcode_tex_code"] );
|
||||
break;
|
||||
default:
|
||||
if (button.isSmilie && list && list.length > 0)
|
||||
|
@ -591,8 +598,8 @@ function ButtonGroup(f) {
|
|||
}
|
||||
return bbCodeButton;
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
/**
|
||||
* Creates a window to show further options of the clicked button
|
||||
* @return win
|
||||
*/
|
||||
|
@ -625,10 +632,10 @@ function ButtonGroup(f) {
|
|||
else
|
||||
content.replaceChild(list, content.firstChild);
|
||||
};
|
||||
|
||||
|
||||
w.enableOptionList = function(enable, pos) {
|
||||
if (pos) {
|
||||
this.style.left = pos.left + "px";
|
||||
this.style.left = pos.left + "px";
|
||||
this.style.top = pos.top + "px";
|
||||
}
|
||||
if (enable)
|
||||
|
@ -638,13 +645,13 @@ function ButtonGroup(f) {
|
|||
};
|
||||
|
||||
var oldOnKeyPressFunc = window.document.onmousedown;
|
||||
window.document.onkeypress = function(e) {
|
||||
window.document.onkeypress = function(e) {
|
||||
if (e.key == "Esc")
|
||||
self.enableOptionList(false);
|
||||
|
||||
self.enableOptionList(false);
|
||||
|
||||
if (typeof oldOnKeyPressFunc == "function")
|
||||
oldOnKeyPressFunc(e);
|
||||
}
|
||||
}
|
||||
|
||||
return w;
|
||||
};
|
||||
|
@ -656,17 +663,18 @@ function ButtonGroup(f) {
|
|||
var initUserBBCodeButtons = function(isSmilie) {
|
||||
isSmilie = isSmilie || false;
|
||||
hasUserButtons = false;
|
||||
var id = isSmilie?"smiley-bar":"bbcode-bar";
|
||||
var id = isSmilie ? "smiley-bar" : "bbcode-bar";
|
||||
if (!document.getElementById(id))
|
||||
return;
|
||||
var userButtons = document.getElementById(id).getElementsByTagName("button");
|
||||
if (userButtons && userButtons.length > 0) {
|
||||
for (var i=0; i<userButtons.length; i++) {
|
||||
var j = userButtons.length;
|
||||
for (var i=0; i<j; i++) {
|
||||
hasUserButtons = true;
|
||||
userButtons[i].isSmilie = isSmilie;
|
||||
addButton(createBBCodeButton(userButtons[i], null), true);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -679,27 +687,20 @@ function ButtonGroup(f) {
|
|||
textarea.quote = textarea.value;
|
||||
textarea.value = "";
|
||||
}
|
||||
|
||||
|
||||
textarea.getQuote = function() {
|
||||
return textarea.quote.trim();
|
||||
}
|
||||
|
||||
// Zitieren-Link einfuegen
|
||||
// insert the quotation-link
|
||||
if (textarea.getQuote() != "" && document.getElementById("message")) {
|
||||
var labels = document.getElementById("message").getElementsByTagName("label");
|
||||
var label = null;
|
||||
for (var i=0; i<labels.length; i++) {
|
||||
if (labels[i].className.search(/textarea/) != -1) {
|
||||
label = labels[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
var label = document.querySelector('label[for="text"]');
|
||||
if (label) {
|
||||
var quoteButton = document.createElementWithAttributes("button", {"type": "button", "id": "insert-quote", "title": lang["quote_title"], "tabIndex": -1});
|
||||
quoteButton.onclick = function(e) {
|
||||
textarea.value = textarea.getQuote() + "\r\n\r\n" + textarea.value;
|
||||
this.classList.add("js-display-none");
|
||||
textarea.focus();
|
||||
textarea.value = textarea.getQuote() + "\r\n\r\n" + textarea.value;
|
||||
this.classList.add("js-display-none");
|
||||
textarea.focus();
|
||||
return false;
|
||||
};
|
||||
quoteButton.appendChild( document.createTextNode(lang["quote_label"]) )
|
||||
|
@ -748,7 +749,7 @@ function ButtonGroup(f) {
|
|||
*/
|
||||
this.getTextArea = function() {
|
||||
return textarea;
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns the property window of the button
|
||||
|
@ -766,19 +767,15 @@ function ButtonGroup(f) {
|
|||
link.onclick = function(e) {
|
||||
document.cookie = settings["session_prefix"]+'userdata=; expires=Thu, 01-Jan-70 00:00:01 GMT;';
|
||||
span.innerHTML = "";
|
||||
if(f.elements["setcookie"]) f.elements["setcookie"].checked = false;
|
||||
if(f.elements["setcookie"]) f.elements["setcookie"].checked = false;
|
||||
return false;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
var removeIntroductionElements = function() {
|
||||
if (document.getElementById("bbcode-instructions")) {
|
||||
var el = document.getElementById("bbcode-instructions");
|
||||
el.parentNode.removeChild(el);
|
||||
}
|
||||
if (document.getElementById("smiley-instructions")) {
|
||||
var el = document.getElementById("smiley-instructions");
|
||||
el.parentNode.removeChild(el);
|
||||
if (document.getElementById("formatting-help")) {
|
||||
var el = document.getElementById("formatting-help");
|
||||
el.classList.add('js-display-none');
|
||||
}
|
||||
};
|
||||
|
||||
|
|
2
js/posting.min.js
vendored
2
js/posting.min.js
vendored
File diff suppressed because one or more lines are too long
|
@ -27,8 +27,8 @@ locale = ar
|
|||
locale_charset = utf-8
|
||||
word_delimiters = ' '
|
||||
dir = rtl
|
||||
time_format = dd/mm/YYYY, HH:mm
|
||||
time_format_full = EEEE، dd F YYYY، HH:mm
|
||||
time_format = 'dd/MM/YYYY, HH:mm'
|
||||
time_format_full = 'EEEE، dd/MMMM/YYYY، HH:mm'
|
||||
forum_time = 'وقت المنتدى×: [time]'
|
||||
forum_time_with_time_zone = 'توقيت المنتدى:× [time] ([time_zone])'
|
||||
unknown_user = 'مستخدم غير معروف'
|
||||
|
@ -53,8 +53,8 @@ next_page_link = '»'
|
|||
previous_page_link = '«'
|
||||
next_page_link_title = 'الصفحة التالية'
|
||||
previous_page_link_title = 'الصفحة السابقة'
|
||||
posted_by = 'بواسطة× <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[time]'
|
||||
posted_by_location = 'بواسطة× <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>[time]'
|
||||
posted_by = 'بواسطة× [name][email_hp]<span class="interpunction">, </span>'
|
||||
posted_by_location = 'بواسطة× [name][email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>'
|
||||
original_posting_linktitle = 'انقر لتذهب إلى المنشور الأصلي لــ ×[name]'
|
||||
error_headline = 'خطأ!'
|
||||
no_authorisation = 'لا مفوّضين!'
|
||||
|
@ -217,6 +217,8 @@ more_smilies_label = 'مزيد...'
|
|||
more_smilies_title = 'وجوه تعبيريّة أخرى'
|
||||
close = 'إغلاق'
|
||||
no_postings_user = 'لا منشورات.'
|
||||
search_term = '<!-- TODO -->Search term'
|
||||
search_category = '<!-- TODO -->Search in category'
|
||||
search_submit_button = 'بحث'
|
||||
search_fulltext = 'نَص كامل'
|
||||
search_tags = 'وسوم'
|
||||
|
@ -312,7 +314,7 @@ error_bookmark_word_too_long = 'الكلمة× "[word]" ×طويلة جدًّ
|
|||
error_bookmark_tags_limit_reached = 'وسوم العلامات المرجعيّة قد بلغ الحد الممكن'
|
||||
|
||||
[entry]
|
||||
edited_by = 'تم تعديله بواسطة× [name], [time]'
|
||||
edited_by = 'تم تعديله بواسطة× [name]<span class="interpunction">, </span>'
|
||||
tags_marking = 'وسوم:'
|
||||
one_view = 'مشاهدة واحدة'
|
||||
several_views = '[views] ×مشاهدات'
|
||||
|
@ -369,6 +371,8 @@ subject_marking = 'عنوان:'
|
|||
message_marking = 'رسالة:'
|
||||
tags_marking = 'وسوم:'
|
||||
tags_note = '(اختياري, مفصول بفاصلة)'
|
||||
bbcode_help_heading = '<!-- TODO -->Formatting help'
|
||||
bbcode_help_skip_link = '<!-- TODO -->skip to input'
|
||||
bbcode_bold_label = 'عريض'
|
||||
bbcode_bold_title = 'تنسيق النص عريض'
|
||||
bbcode_bold_instruction = '[b]×خط عريض×[/b]'
|
||||
|
@ -699,6 +703,7 @@ register_user_email = 'تسجيل بريد المستخدم:'
|
|||
register_pw = 'تسجيل كلمة السر:'
|
||||
register_honeypot_field = 'اترك هذا الحقل فارغًا:'
|
||||
register_only_by_admin = 'لا يمكن تسجيل المستخدمين إلا من قبل مسؤول المنتدى.'
|
||||
register_link_to_login = '<!-- TODO -->Go to login'
|
||||
registered = ' <strong>[var]</strong> تم تسجيل الحساب وإرسال مفتاح التفعيل إليه. يجب تفعيل الحساب خلال يوم واحد'
|
||||
registered_send_error = 'تم تسجيل الحساب ولكن تعذر إرسال مفتاح التنشيط (خادم البريد غير متوفر). برجاء الاتصال بمسؤول المنتدى وطلب تفعيل الحساب يدويًا.'
|
||||
activation_failed = 'تنشيط الحساب قد فشل.'
|
||||
|
@ -970,9 +975,18 @@ no_users_in_selection = 'لا يوجد مستخدمون في التح
|
|||
# upload management
|
||||
upload_administration = 'إدارة الرفع والتحميل'
|
||||
mark_upload_for_removal = 'علامة للإزالة'
|
||||
mark_upload_for_managing = '<!-- TODO -->mark for managing'
|
||||
no_uploads_found = 'لم يتم العثور على أي ملفات مرفوعة.'
|
||||
delete_upload_confirmation = 'هل أنت متأكد أنك تريد حذف هذا التحميل؟'
|
||||
delete_uploads_confirmation = 'هل أنت متأكد أنك تريد حذف التحميلات التالية؟'
|
||||
check_for_unrecorded_uploads = '<!-- TODO -->record uploads'
|
||||
check_for_unrecorded_uploads_desc = '<!-- TODO -->Check whether there are any uploads that are not yet included in the list of uploads. If any are found, they are entered in the list.'
|
||||
upload_add_db_entry_button = '<!-- TODO -->record to database'
|
||||
upload_database_entry_alt = '<!-- TODO -->There is a database entry for this image'
|
||||
upload_database_no_entry_alt = '<!-- TODO -->There is no database entry for this image'
|
||||
upload_filter_not_managed_images ='<!-- TODO -->not managed images'
|
||||
upload_filter_managed_images = '<!-- TODO -->managed images'
|
||||
upload_filter_all_images = '<!-- TODO -->all images'
|
||||
|
||||
# spam protection:
|
||||
captcha = 'الصورة الإختباريّة'
|
||||
|
|
|
@ -30,8 +30,8 @@ locale = zh
|
|||
locale_charset = utf-8
|
||||
word_delimiters = ' 、,。;“”!?'
|
||||
dir = ltr
|
||||
time_format = YYYY-MM-dd, hh:mm
|
||||
time_format_full = EEEE, MMMM dd, YYYY, hh:mm
|
||||
time_format = 'YYYY-MM-dd, HH:mm'
|
||||
time_format_full = 'YYYY\'年\'MM\'月\'dd\'日\' (EEEE), HH\'时\'mm\'分\''
|
||||
forum_time = '论坛时间:[time]'
|
||||
forum_time_with_time_zone = '论坛时间:[time] ([time_zone])'
|
||||
unknown_user = '游客'
|
||||
|
@ -56,8 +56,8 @@ next_page_link = '»'
|
|||
previous_page_link = '«'
|
||||
next_page_link_title = '下一页'
|
||||
previous_page_link_title = '上一页'
|
||||
posted_by = '<!-- TODO -->by <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[time]'
|
||||
posted_by_location = '<!-- TODO -->by <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>[time]'
|
||||
posted_by = '<!-- TODO -->by [name][email_hp]<span class="interpunction">, </span>'
|
||||
posted_by_location = '<!-- TODO -->by [name][email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>'
|
||||
original_posting_linktitle = '点击前往原始帖子 by [name]'
|
||||
error_headline = '错误!'
|
||||
no_authorisation = '没有权限!'
|
||||
|
@ -220,6 +220,8 @@ more_smilies_label = '更多…'
|
|||
more_smilies_title = '更多表情'
|
||||
close = '关闭'
|
||||
no_postings_user = '目前还没有帖子。'
|
||||
search_term = '<!-- TODO -->Search term'
|
||||
search_category = '<!-- TODO -->Search in category'
|
||||
search_submit_button = '搜索'
|
||||
search_fulltext = '全文'
|
||||
search_tags = '标签'
|
||||
|
@ -315,7 +317,7 @@ error_bookmark_word_too_long = '词汇 "[word]" 过长'
|
|||
error_bookmark_tags_limit_reached = '标签数量已达到书签的上限'
|
||||
|
||||
[entry]
|
||||
edited_by = '编辑 by [name], [time]'
|
||||
edited_by = '编辑 by [name]<span class="interpunction">, </span>'
|
||||
tags_marking = '标签:'
|
||||
one_view = '1 次浏览'
|
||||
several_views = '[views] 次浏览'
|
||||
|
@ -372,6 +374,8 @@ subject_marking = '主题:'
|
|||
message_marking = '内容:'
|
||||
tags_marking = '标签:'
|
||||
tags_note = '(选填,以逗号区隔)'
|
||||
bbcode_help_heading = '<!-- TODO -->Formatting help'
|
||||
bbcode_help_skip_link = '<!-- TODO -->skip to input'
|
||||
bbcode_bold_label = '粗体'
|
||||
bbcode_bold_title = '粗体文字'
|
||||
bbcode_bold_instruction = '[b]粗体文字[/b]'
|
||||
|
@ -702,6 +706,7 @@ register_user_email = '邮箱:'
|
|||
register_pw = '密码:'
|
||||
register_honeypot_field = '将此栏留空:'
|
||||
register_only_by_admin = '目前只有管理员可以注册用户。'
|
||||
register_link_to_login = '<!-- TODO -->Go to login'
|
||||
registered = '帐号已注册,启用码已寄至 <strong>[var]</strong>。<strong>帐号必须在一天内启用。</strong>'
|
||||
registered_send_error = '帐号已注册,但无法寄出启用码 (邮箱服务器无法使用)。请与管理员联系并请求协助启用帐号。'
|
||||
activation_failed = '帐号启用失败。'
|
||||
|
@ -973,9 +978,18 @@ no_users_in_selection = '尚未选择用户'
|
|||
# upload management
|
||||
upload_administration = '<!-- TODO -->Upload management'
|
||||
mark_upload_for_removal = '<!-- TODO -->mark for removal'
|
||||
mark_upload_for_managing = '<!-- TODO -->mark for managing'
|
||||
no_uploads_found = '<!-- TODO -->Found no uploaded files.'
|
||||
delete_upload_confirmation = '<!-- TODO -->Are you sure you want to delete this upload?'
|
||||
delete_uploads_confirmation = '<!-- TODO -->Are you sure you want to delete the following uploads?'
|
||||
check_for_unrecorded_uploads = '<!-- TODO -->record uploads'
|
||||
check_for_unrecorded_uploads_desc = '<!-- TODO -->Check whether there are any uploads that are not yet included in the list of uploads. If any are found, they are entered in the list.'
|
||||
upload_add_db_entry_button = '<!-- TODO -->record to database'
|
||||
upload_database_entry_alt = '<!-- TODO -->There is a database entry for this image'
|
||||
upload_database_no_entry_alt = '<!-- TODO -->There is no database entry for this image'
|
||||
upload_filter_not_managed_images ='<!-- TODO -->not managed images'
|
||||
upload_filter_managed_images = '<!-- TODO -->managed images'
|
||||
upload_filter_all_images = '<!-- TODO -->all images'
|
||||
|
||||
# spam protection:
|
||||
captcha = 'CAPTCHA'
|
||||
|
|
|
@ -30,8 +30,8 @@ locale = zh
|
|||
locale_charset = utf-8
|
||||
word_delimiters = ' 、,。;“”!?'
|
||||
dir = ltr
|
||||
time_format = YYYY-MM-dd, hh:mm
|
||||
time_format_full = EEEE, MMMM dd, YYYY, hh:mm
|
||||
time_format = 'YYYY-MM-dd, HH:mm'
|
||||
time_format_full = 'YYYY\'年\'MM\'月\'dd\'日\' (EEEE), HH\'時\'mm\'分\''
|
||||
forum_time = '論壇時間:[time]'
|
||||
forum_time_with_time_zone = '論壇時間:[time] ([time_zone])'
|
||||
unknown_user = '訪客'
|
||||
|
@ -56,8 +56,8 @@ next_page_link = '»'
|
|||
previous_page_link = '«'
|
||||
next_page_link_title = '下一頁'
|
||||
previous_page_link_title = '上一頁'
|
||||
posted_by = 'by <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[time]'
|
||||
posted_by_location = 'by <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>[time]'
|
||||
posted_by = 'by [name][email_hp]<span class="interpunction">, </span>'
|
||||
posted_by_location = 'by [name][email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>'
|
||||
original_posting_linktitle = '點擊前往原始文章 by [name]'
|
||||
error_headline = '錯誤!'
|
||||
no_authorisation = '沒有權限!'
|
||||
|
@ -220,6 +220,8 @@ more_smilies_label = '更多…'
|
|||
more_smilies_title = '更多表情'
|
||||
close = '關閉'
|
||||
no_postings_user = '目前還沒有文章。'
|
||||
search_term = '<!-- TODO -->Search term'
|
||||
search_category = '<!-- TODO -->Search in category'
|
||||
search_submit_button = '搜尋'
|
||||
search_fulltext = '全文'
|
||||
search_tags = '標籤'
|
||||
|
@ -315,7 +317,7 @@ error_bookmark_word_too_long = '詞彙 "[word]" 過長'
|
|||
error_bookmark_tags_limit_reached = '標籤數量已達到書籤的上限'
|
||||
|
||||
[entry]
|
||||
edited_by = '編輯 by [name], [time]'
|
||||
edited_by = '編輯 by [name]<span class="interpunction">, </span>'
|
||||
tags_marking = '標籤:'
|
||||
one_view = '1 次瀏覽'
|
||||
several_views = '[views] 次瀏覽'
|
||||
|
@ -372,6 +374,8 @@ subject_marking = '主題:'
|
|||
message_marking = '內容:'
|
||||
tags_marking = '標籤:'
|
||||
tags_note = '(選填,以逗號區隔)'
|
||||
bbcode_help_heading = '<!-- TODO -->Formatting help'
|
||||
bbcode_help_skip_link = '<!-- TODO -->skip to input'
|
||||
bbcode_bold_label = '粗體'
|
||||
bbcode_bold_title = '粗體文字'
|
||||
bbcode_bold_instruction = '[b]粗體文字[/b]'
|
||||
|
@ -702,6 +706,7 @@ register_user_email = '信箱:'
|
|||
register_pw = '密碼:'
|
||||
register_honeypot_field = '將此欄留空:'
|
||||
register_only_by_admin = '目前只有管理員可以註冊用戶。'
|
||||
register_link_to_login = '<!-- TODO -->Go to login'
|
||||
registered = '帳號已註冊,啟用碼已寄至 <strong>[var]</strong>。<strong>帳號必須在一天內啟用。</strong>'
|
||||
registered_send_error = '帳號已註冊,但無法寄出啟用碼 (信箱伺服器無法使用)。請與管理員聯繫並請求協助啟用帳號。'
|
||||
activation_failed = '帳號啟用失敗。'
|
||||
|
@ -973,9 +978,18 @@ no_users_in_selection = '尚未選擇用戶'
|
|||
# upload management
|
||||
upload_administration = '<!-- TODO -->Upload management'
|
||||
mark_upload_for_removal = '<!-- TODO -->mark for removal'
|
||||
mark_upload_for_managing = '<!-- TODO -->mark for managing'
|
||||
no_uploads_found = '<!-- TODO -->Found no uploaded files.'
|
||||
delete_upload_confirmation = '<!-- TODO -->Are you sure you want to delete this upload?'
|
||||
delete_uploads_confirmation = '<!-- TODO -->Are you sure you want to delete the following uploads?'
|
||||
check_for_unrecorded_uploads = '<!-- TODO -->record uploads'
|
||||
check_for_unrecorded_uploads_desc = '<!-- TODO -->Check whether there are any uploads that are not yet included in the list of uploads. If any are found, they are entered in the list.'
|
||||
upload_add_db_entry_button = '<!-- TODO -->record to database'
|
||||
upload_database_entry_alt = '<!-- TODO -->There is a database entry for this image'
|
||||
upload_database_no_entry_alt = '<!-- TODO -->There is no database entry for this image'
|
||||
upload_filter_not_managed_images ='<!-- TODO -->not managed images'
|
||||
upload_filter_managed_images = '<!-- TODO -->managed images'
|
||||
upload_filter_all_images = '<!-- TODO -->all images'
|
||||
|
||||
# spam protection:
|
||||
captcha = 'CAPTCHA'
|
||||
|
|
|
@ -30,8 +30,8 @@ locale = hr
|
|||
locale_charset = utf-8
|
||||
word_delimiters = ' '
|
||||
dir = ltr
|
||||
time_format = dd/MM/YYYY, hh:mm
|
||||
time_format_full = EEEE dd MMMM YYYY, hh:mm
|
||||
time_format = 'dd.\' \'MM.\' \'YYYY, HH:mm'
|
||||
time_format_full = 'EEEE d MMMM YYYY, H:mm'
|
||||
forum_time = 'Vrijeme na forumu: [time]'
|
||||
forum_time_with_time_zone = 'Vrijeme na forumu: [time] ([time_zone])'
|
||||
unknown_user = 'nepoznat'
|
||||
|
@ -56,8 +56,8 @@ next_page_link = 'Sljedeća stranica »'
|
|||
previous_page_link = '« Prethodna stranica'
|
||||
next_page_link_title = 'sljedeća stranica'
|
||||
previous_page_link_title = 'prethodna stranica'
|
||||
posted_by = 'od <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[time]'
|
||||
posted_by_location = 'od <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>[time]'
|
||||
posted_by = 'od [name][email_hp]<span class="interpunction">, </span>'
|
||||
posted_by_location = 'od [name][email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>'
|
||||
original_posting_linktitle = 'klikni za otvaranje početne poruke od [name]'
|
||||
error_headline = 'Greška!'
|
||||
no_authorisation = 'Nemate dopuštenje!'
|
||||
|
@ -220,6 +220,8 @@ more_smilies_label = 'više...'
|
|||
more_smilies_title = 'više smajlića'
|
||||
close = 'zatvori'
|
||||
no_postings_user = 'Nema poruka.'
|
||||
search_term = '<!-- TODO -->Search term'
|
||||
search_category = '<!-- TODO -->Search in category'
|
||||
search_submit_button = 'Traži'
|
||||
search_fulltext = 'izraz'
|
||||
search_tags = 'oznake'
|
||||
|
@ -315,7 +317,7 @@ error_bookmark_word_too_long = '<!-- TODO -->The word "[word]" is too long'
|
|||
error_bookmark_tags_limit_reached = '<!-- TODO -->Tags limit reached for bookmark'
|
||||
|
||||
[entry]
|
||||
edited_by = 'Ispravio [name], [time]'
|
||||
edited_by = 'Ispravio [name]<span class="interpunction">, </span>'
|
||||
tags_marking = 'Oznake:'
|
||||
one_view = '1 otvaranje'
|
||||
several_views = '[views] otvaranja'
|
||||
|
@ -372,6 +374,8 @@ subject_marking = 'Tema:'
|
|||
message_marking = 'Poruka:'
|
||||
tags_marking = 'Oznake:'
|
||||
tags_note = '(nije obavezno, razdvojeno zarezima)'
|
||||
bbcode_help_heading = '<!-- TODO -->Formatting help'
|
||||
bbcode_help_skip_link = '<!-- TODO -->skip to input'
|
||||
bbcode_bold_label = 'podebljano'
|
||||
bbcode_bold_title = 'Podebljaj tekst'
|
||||
bbcode_bold_instruction = '[b]Tekst[/b]'
|
||||
|
@ -702,6 +706,7 @@ register_user_email = 'E-mail:'
|
|||
register_pw = 'Lozinka:'
|
||||
register_honeypot_field = '<!-- TODO -->Leave this field empty:'
|
||||
register_only_by_admin = 'Samo administrator može registrirati nove korisnike.'
|
||||
register_link_to_login = '<!-- TODO -->Go to login'
|
||||
registered = 'Korisnički račun je registriran i aktivacijski ključ je poslan na <strong>[var]</strong>. Korsnički račun mora biti aktiviran unutar jednog dana.'
|
||||
registered_send_error = 'Korisnički račun je registriran ali aktivacijski ključ nije poslan zbog problema sa mail poslužiteljem. Kontaktirajte administratora i zatražite ručnu aktivaciju.'
|
||||
activation_failed = 'Aktivacija korisničkog računa nije uspjela.'
|
||||
|
@ -973,9 +978,18 @@ no_users_in_selection = 'Nema korisnika koji zadovoljavaju postavljene
|
|||
# upload management
|
||||
upload_administration = '<!-- TODO -->Upload management'
|
||||
mark_upload_for_removal = '<!-- TODO -->mark for removal'
|
||||
mark_upload_for_managing = '<!-- TODO -->mark for managing'
|
||||
no_uploads_found = '<!-- TODO -->Found no uploaded files.'
|
||||
delete_upload_confirmation = '<!-- TODO -->Are you sure you want to delete this upload?'
|
||||
delete_uploads_confirmation = '<!-- TODO -->Are you sure you want to delete the following uploads?'
|
||||
check_for_unrecorded_uploads = '<!-- TODO -->record uploads'
|
||||
check_for_unrecorded_uploads_desc = '<!-- TODO -->Check whether there are any uploads that are not yet included in the list of uploads. If any are found, they are entered in the list.'
|
||||
upload_add_db_entry_button = '<!-- TODO -->record to database'
|
||||
upload_database_entry_alt = '<!-- TODO -->There is a database entry for this image'
|
||||
upload_database_no_entry_alt = '<!-- TODO -->There is no database entry for this image'
|
||||
upload_filter_not_managed_images ='<!-- TODO -->not managed images'
|
||||
upload_filter_managed_images = '<!-- TODO -->managed images'
|
||||
upload_filter_all_images = '<!-- TODO -->all images'
|
||||
|
||||
# spam protection:
|
||||
captcha = 'CAPTCHA'
|
||||
|
|
|
@ -30,8 +30,8 @@ locale = da_DK
|
|||
locale_charset = utf-8
|
||||
word_delimiters = ' '
|
||||
dir = ltr
|
||||
time_format = d/M YYYY, HH:mm
|
||||
time_format_full = EEEE d. MMMM, YYYY, HH:mm
|
||||
time_format = 'd/M YYYY, HH:mm'
|
||||
time_format_full = 'EEEE, \'den\' d. MMMM YYYY, HH:mm'
|
||||
forum_time = 'Forumtid: [time]'
|
||||
forum_time_with_time_zone = 'Forumtid: [time] ([time_zone])'
|
||||
unknown_user = 'ukendt'
|
||||
|
@ -56,8 +56,8 @@ next_page_link = 'Næste side »'
|
|||
previous_page_link = '« Forrige side'
|
||||
next_page_link_title = 'næste side'
|
||||
previous_page_link_title = 'forrige side'
|
||||
posted_by = 'af <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[time]'
|
||||
posted_by_location = 'af <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>[time]'
|
||||
posted_by = 'af [name][email_hp]<span class="interpunction">, </span>'
|
||||
posted_by_location = 'af [name][email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>'
|
||||
original_posting_linktitle = 'klik for at gå til det originale indlæg af [name]'
|
||||
error_headline = 'Fejl!'
|
||||
no_authorisation = 'Ingen autoritet!'
|
||||
|
@ -220,6 +220,8 @@ more_smilies_label = 'flere …'
|
|||
more_smilies_title = 'flere smilies'
|
||||
close = 'luk'
|
||||
no_postings_user = 'Ingen indlæg.'
|
||||
search_term = '<!-- TODO -->Search term'
|
||||
search_category = '<!-- TODO -->Search in category'
|
||||
search_submit_button = 'Søg'
|
||||
search_fulltext = 'fuld tekst'
|
||||
search_tags = 'tags'
|
||||
|
@ -315,7 +317,7 @@ error_bookmark_word_too_long = 'Ordet "[word]" er for langt'
|
|||
error_bookmark_tags_limit_reached = 'Taggrænsen for bogmærker er nået'
|
||||
|
||||
[entry]
|
||||
edited_by = 'redigeret af [name], [time]'
|
||||
edited_by = 'redigeret af [name]<span class="interpunction">, </span>'
|
||||
tags_marking = 'Tags:'
|
||||
one_view = '1 visning'
|
||||
several_views = '[views] visninger'
|
||||
|
@ -372,6 +374,8 @@ subject_marking = 'Emne:'
|
|||
message_marking = 'Besked:'
|
||||
tags_marking = 'Tags:'
|
||||
tags_note = '(valgfri, adskil med komma)'
|
||||
bbcode_help_heading = '<!-- TODO -->Formatting help'
|
||||
bbcode_help_skip_link = '<!-- TODO -->skip to input'
|
||||
bbcode_bold_label = 'fed'
|
||||
bbcode_bold_title = 'Fed tekst'
|
||||
bbcode_bold_instruction = '[b]Tekst[/b]'
|
||||
|
@ -702,6 +706,7 @@ register_user_email = 'E-mail:'
|
|||
register_pw = 'Kodeord:'
|
||||
register_honeypot_field = 'Lad dette felt være tomt:'
|
||||
register_only_by_admin = 'Brugere kan kun blive registreret af forum administratoren.'
|
||||
register_link_to_login = '<!-- TODO -->Go to login'
|
||||
registered = 'Kontoen er registreret og aktiverings nøglen er sendt til <strong>[var]</strong>. Kontoen skal aktiveres indenfor det næste døgn.'
|
||||
registered_send_error = 'Kontoen er registreret men aktiverings nøglen kunne ikke sendes (mailserver ikke tilgængelig). Kontakt venligst forum administratoren og spørg efter en manuel konto aktivering.'
|
||||
activation_failed = 'Aktiveringen af kontoen fejlede.'
|
||||
|
@ -973,9 +978,18 @@ no_users_in_selection = 'Ingen brugere fundet'
|
|||
# upload management
|
||||
upload_administration = 'Uploadstyring'
|
||||
mark_upload_for_removal = 'Markér til sletning'
|
||||
mark_upload_for_managing = '<!-- TODO -->mark for managing'
|
||||
no_uploads_found = 'Ingen uploadede filer fundet.'
|
||||
delete_upload_confirmation = 'Er du sikker på, du vil slette denne upload?'
|
||||
delete_uploads_confirmation = 'Er du sikker på, du vil slette disse upload?'
|
||||
check_for_unrecorded_uploads = '<!-- TODO -->record uploads'
|
||||
check_for_unrecorded_uploads_desc = '<!-- TODO -->Check whether there are any uploads that are not yet included in the list of uploads. If any are found, they are entered in the list.'
|
||||
upload_add_db_entry_button = '<!-- TODO -->record to database'
|
||||
upload_database_entry_alt = '<!-- TODO -->There is a database entry for this image'
|
||||
upload_database_no_entry_alt = '<!-- TODO -->There is no database entry for this image'
|
||||
upload_filter_not_managed_images ='<!-- TODO -->not managed images'
|
||||
upload_filter_managed_images = '<!-- TODO -->managed images'
|
||||
upload_filter_all_images = '<!-- TODO -->all images'
|
||||
|
||||
# spam protection:
|
||||
captcha = 'CAPTCHA'
|
||||
|
|
|
@ -27,8 +27,8 @@ locale = en
|
|||
locale_charset = utf-8
|
||||
word_delimiters = ' '
|
||||
dir = ltr
|
||||
time_format = YYYY-MM-dd, hh:mm
|
||||
time_format_full = EEEE, MMMM dd, YYYY, hh:mm
|
||||
time_format = 'YYYY-MM-dd, hh:mm a'
|
||||
time_format_full = 'EEEE, MMMM dd, YYYY, hh:mm a'
|
||||
forum_time = 'Forum time: [time]'
|
||||
forum_time_with_time_zone = 'Forum time: [time] ([time_zone])'
|
||||
unknown_user = 'unknown'
|
||||
|
@ -53,8 +53,8 @@ next_page_link = '»'
|
|||
previous_page_link = '«'
|
||||
next_page_link_title = 'next page'
|
||||
previous_page_link_title = 'previous page'
|
||||
posted_by = 'by <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[time]'
|
||||
posted_by_location = 'by <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>[time]'
|
||||
posted_by = 'by [name][email_hp]<span class="interpunction">, </span>'
|
||||
posted_by_location = 'by [name][email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>'
|
||||
original_posting_linktitle = 'click to go to the original posting by [name]'
|
||||
error_headline = 'Error!'
|
||||
no_authorisation = 'No authorisation!'
|
||||
|
@ -217,6 +217,8 @@ more_smilies_label = 'more...'
|
|||
more_smilies_title = 'more smilies'
|
||||
close = 'close'
|
||||
no_postings_user = 'No postings.'
|
||||
search_term = 'Search term'
|
||||
search_category = 'Search in category'
|
||||
search_submit_button = 'Search'
|
||||
search_fulltext = 'full text'
|
||||
search_tags = 'tags'
|
||||
|
@ -312,7 +314,7 @@ error_bookmark_word_too_long = 'The word "[word]" is too long'
|
|||
error_bookmark_tags_limit_reached = 'Tags limit reached for bookmark'
|
||||
|
||||
[entry]
|
||||
edited_by = 'edited by [name], [time]'
|
||||
edited_by = 'edited by [name]<span class="interpunction">, </span>'
|
||||
tags_marking = 'Tags:'
|
||||
one_view = '1 view'
|
||||
several_views = '[views] views'
|
||||
|
@ -369,6 +371,8 @@ subject_marking = 'Subject:'
|
|||
message_marking = 'Message:'
|
||||
tags_marking = 'Tags:'
|
||||
tags_note = '(optional, separated by comma)'
|
||||
bbcode_help_heading = 'Formatting help'
|
||||
bbcode_help_skip_link = 'skip to input'
|
||||
bbcode_bold_label = 'bold'
|
||||
bbcode_bold_title = 'format text bold'
|
||||
bbcode_bold_instruction = '[b]bold text[/b]'
|
||||
|
@ -699,6 +703,7 @@ register_user_email = 'E-mail:'
|
|||
register_pw = 'Password:'
|
||||
register_honeypot_field = 'Leave this field empty:'
|
||||
register_only_by_admin = 'Users can only be registered by the admin of the forum.'
|
||||
register_link_to_login = 'Go to login'
|
||||
registered = 'The account has been registered and the activation key has been sent to <strong>[var]</strong>. The account has to be activated within one day.'
|
||||
registered_send_error = 'The account has been registered but the activation key could not been sent (mail server not available). Please contact the forum administrator and ask for manual account activation.'
|
||||
activation_failed = 'The activation of the account failed.'
|
||||
|
@ -970,9 +975,18 @@ no_users_in_selection = 'No users in selection'
|
|||
# upload management
|
||||
upload_administration = 'Upload management'
|
||||
mark_upload_for_removal = 'mark for removal'
|
||||
mark_upload_for_managing = 'mark for managing'
|
||||
no_uploads_found = 'Found no uploaded files.'
|
||||
delete_upload_confirmation = 'Are you sure you want to delete this upload?'
|
||||
delete_uploads_confirmation = 'Are you sure you want to delete the following uploads?'
|
||||
check_for_unrecorded_uploads = 'record uploads'
|
||||
check_for_unrecorded_uploads_desc = 'Check whether there are any uploads that are not yet included in the list of uploads. If any are found, they are entered in the list.'
|
||||
upload_add_db_entry_button = 'record to database'
|
||||
upload_database_entry_alt = 'There is a database entry for this image'
|
||||
upload_database_no_entry_alt = 'There is no database entry for this image'
|
||||
upload_filter_not_managed_images ='not managed images'
|
||||
upload_filter_managed_images = 'managed images'
|
||||
upload_filter_all_images = 'all images'
|
||||
|
||||
# spam protection:
|
||||
captcha = 'CAPTCHA'
|
||||
|
|
|
@ -34,8 +34,8 @@ locale = fr
|
|||
locale_charset = utf-8
|
||||
word_delimiters = ' '
|
||||
dir = ltr
|
||||
time_format = dd/MM/YYYY, hh:mm
|
||||
time_format_full = EEEE dd MMMM YYYY, hh:mm
|
||||
time_format = 'dd/MM/YYYY, HH:mm'
|
||||
time_format_full = 'EEEE dd MMMM YYYY, HH \'h\' mm'
|
||||
forum_time = 'Temps actuel sur le forum : [time]'
|
||||
forum_time_with_time_zone = 'Temps actuel sur le forum : [time] ([time_zone])'
|
||||
unknown_user = 'inconnu'
|
||||
|
@ -60,8 +60,8 @@ next_page_link = '»'
|
|||
previous_page_link = '«'
|
||||
next_page_link_title = 'page suivante'
|
||||
previous_page_link_title = 'page précédente'
|
||||
posted_by = 'par <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[time]'
|
||||
posted_by_location = 'par <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>[time]'
|
||||
posted_by = 'par [name][email_hp]<span class="interpunction">, </span>'
|
||||
posted_by_location = 'par [name][email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>'
|
||||
original_posting_linktitle = 'Cliquer pour aller au message de base posté par [name]'
|
||||
error_headline = 'Erreur !'
|
||||
no_authorisation = 'Pas d\'autorisation !'
|
||||
|
@ -224,6 +224,8 @@ more_smilies_label = 'plus...'
|
|||
more_smilies_title = 'plus de smileys'
|
||||
close = 'fermer'
|
||||
no_postings_user = 'Pas de messages.'
|
||||
search_term = '<!-- TODO -->Search term'
|
||||
search_category = '<!-- TODO -->Search in category'
|
||||
search_submit_button = 'Rechercher'
|
||||
search_fulltext = 'texte entier'
|
||||
search_tags = 'Mots-clés'
|
||||
|
@ -319,7 +321,7 @@ error_bookmark_word_too_long = 'Le mot "[word]" est trop long'
|
|||
error_bookmark_tags_limit_reached = 'Il y a trop de tags'
|
||||
|
||||
[entry]
|
||||
edited_by = 'édité par [name], [time]'
|
||||
edited_by = 'édité par [name]<span class="interpunction">, </span>'
|
||||
tags_marking = 'Mots-clés :'
|
||||
one_view = '1 vue'
|
||||
several_views = '[views] vues'
|
||||
|
@ -376,6 +378,8 @@ subject_marking = 'Sujet :'
|
|||
message_marking = 'Message :'
|
||||
tags_marking = 'Mots-clés :'
|
||||
tags_note = '(en option, séparé par une virgule)'
|
||||
bbcode_help_heading = '<!-- TODO -->Formatting help'
|
||||
bbcode_help_skip_link = '<!-- TODO -->skip to input'
|
||||
bbcode_bold_label = 'gras'
|
||||
bbcode_bold_title = 'Format texte gras'
|
||||
bbcode_bold_instruction = '[b]Texte[/b]'
|
||||
|
@ -706,6 +710,7 @@ register_user_email = 'Email :'
|
|||
register_pw = 'Mot de passe :'
|
||||
register_honeypot_field = 'Si vous voyez ce champs, ne le remplissez pas :'
|
||||
register_only_by_admin = 'Les utilisateurs ne peuvent être enregistrés que par l\'administrateur du forum.'
|
||||
register_link_to_login = '<!-- TODO -->Go to login'
|
||||
registered = 'Le compte a été enregistré et la clef d\'activation a été envoyée à <strong>[var]</strong>. Ce compte doit être activé dans les 24 heures.'
|
||||
registered_send_error = 'Le compte a été enregistré mais la clef d\'activation n\'a pas pu être envoyée (le serveur de email est inaccessible). Veuillez contacter l\'administrateur du forum et demander une activation manuelle du compte.'
|
||||
activation_failed = 'La validation du compte a échoué.'
|
||||
|
@ -977,9 +982,18 @@ no_users_in_selection = 'Aucun utilisateur dans la sélection'
|
|||
# upload management
|
||||
upload_administration = 'Gérer les téléchargements'
|
||||
mark_upload_for_removal = 'À supprimer'
|
||||
mark_upload_for_managing = '<!-- TODO -->mark for managing'
|
||||
no_uploads_found = 'Aucun téléchargement trouvé'
|
||||
delete_upload_confirmation = 'Êtes-vous sûr de vouloir supprimer ce téléchargement ?'
|
||||
delete_uploads_confirmation = 'Êtes-vous sûr de vouloir supprimer ces téléchargements ?'
|
||||
check_for_unrecorded_uploads = '<!-- TODO -->record uploads'
|
||||
check_for_unrecorded_uploads_desc = '<!-- TODO -->Check whether there are any uploads that are not yet included in the list of uploads. If any are found, they are entered in the list.'
|
||||
upload_add_db_entry_button = '<!-- TODO -->record to database'
|
||||
upload_database_entry_alt = '<!-- TODO -->There is a database entry for this image'
|
||||
upload_database_no_entry_alt = '<!-- TODO -->There is no database entry for this image'
|
||||
upload_filter_not_managed_images ='<!-- TODO -->not managed images'
|
||||
upload_filter_managed_images = '<!-- TODO -->managed images'
|
||||
upload_filter_all_images = '<!-- TODO -->all images'
|
||||
|
||||
# spam protection:
|
||||
captcha = 'PROTECTION'
|
||||
|
|
|
@ -31,8 +31,8 @@ locale = de
|
|||
locale_charset = utf-8
|
||||
word_delimiters = ' '
|
||||
dir = ltr
|
||||
time_format = dd.MM.YYYY, HH:mm
|
||||
time_format_full = EEEE, dd. MMMM YYYY, HH:mm
|
||||
time_format = 'dd.MM.YYYY, HH:mm'
|
||||
time_format_full = 'EEEE, dd. MMMM YYYY, HH:mm'
|
||||
forum_time = 'Forumszeit: [time]'
|
||||
forum_time_with_time_zone = 'Forumszeit: [time] ([time_zone])'
|
||||
unknown_user = 'unbekannt'
|
||||
|
@ -57,8 +57,8 @@ next_page_link = '»'
|
|||
previous_page_link = '«'
|
||||
next_page_link_title = 'nächste Seite'
|
||||
previous_page_link_title = 'vorige Seite'
|
||||
posted_by = '<strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[time]'
|
||||
posted_by_location = '<strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>[time]'
|
||||
posted_by = '[name][email_hp]<span class="interpunction">, </span>'
|
||||
posted_by_location = '[name][email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>'
|
||||
original_posting_linktitle = 'Klicken, um zum Originalposting von [name] zu gelangen'
|
||||
error_headline = 'Fehler!'
|
||||
no_authorisation = 'Keine Berechtigung!'
|
||||
|
@ -221,6 +221,8 @@ more_smilies_label = 'mehr…'
|
|||
more_smilies_title = 'mehr Smilies'
|
||||
close = 'schließen'
|
||||
no_postings_user = 'keine Einträge'
|
||||
search_term = 'Suchbegriff'
|
||||
search_category = 'in Kategorie suchen'
|
||||
search_submit_button = 'Suche'
|
||||
search_fulltext = 'Volltext'
|
||||
search_tags = 'Tags'
|
||||
|
@ -316,7 +318,7 @@ error_bookmark_word_too_long = 'das Wort "[word]" ist zu lang'
|
|||
error_bookmark_tags_limit_reached = 'Maximale Anzahl an Tags pro Lesezeichen überschritten'
|
||||
|
||||
[entry]
|
||||
edited_by = 'bearbeitet von [name], [time]'
|
||||
edited_by = 'bearbeitet von [name]<span class="interpunction">, </span>'
|
||||
tags_marking = 'Tags:'
|
||||
one_view = 'ein View'
|
||||
several_views = '[views] Views'
|
||||
|
@ -373,6 +375,8 @@ subject_marking = 'Betreff:'
|
|||
message_marking = 'Nachricht:'
|
||||
tags_marking = 'Tags:'
|
||||
tags_note = '(optional, durch Komma getrennt)'
|
||||
bbcode_help_heading = 'Formatierungshilfe'
|
||||
bbcode_help_skip_link = 'zur Eingabe springen'
|
||||
bbcode_bold_label = 'fett'
|
||||
bbcode_bold_title = 'Text fett formatieren'
|
||||
bbcode_bold_instruction = '[b]fetter Text[/b]'
|
||||
|
@ -703,6 +707,7 @@ register_user_email = 'E-Mail:'
|
|||
register_pw = 'Passwort:'
|
||||
register_honeypot_field = 'Dieses Feld bitte unausgefüllt lassen:'
|
||||
register_only_by_admin = 'Neue Benutzer können nur vom Administrator registriert werden.'
|
||||
register_link_to_login = 'zum Login'
|
||||
registered = 'Das Benutzerkonto wurde eingerichtet und der Aktivierungslink wurde an <strong>[var]</strong> gesendet. Bitte das Konto innerhalb eines Tages aktivieren.'
|
||||
registered_send_error = 'Das Benutzerkonto wurde eingerichtet aber der Aktivierungslink konnte nicht gesendet werden (Mailserver-Fehler). Bitte den Administrator kontaktieren um das Konto manuell zu aktivieren.'
|
||||
activation_failed = 'Aktivierung fehlgeschlagen!'
|
||||
|
@ -974,9 +979,19 @@ no_users_in_selection = 'keine Benutzer in der Auswahl'
|
|||
# Uploadverwaltung
|
||||
upload_administration = 'Verwaltung der Uploads'
|
||||
mark_upload_for_removal = 'zum löschen vormerken'
|
||||
mark_upload_for_managing = 'für Verwaltung markieren'
|
||||
no_uploads_found = 'Es wurden keine hochgeladenen Dateien gefunden.'
|
||||
delete_upload_confirmation = 'Sicher, dass dieser Upload gelöscht werden soll?'
|
||||
delete_uploads_confirmation = 'Sicher, dass diese Uploads gelöscht werden sollen?'
|
||||
check_for_unrecorded_uploads = 'erfasse Uploads'
|
||||
check_for_unrecorded_uploads_desc = 'Prüfe, ob Uploads vorhanden sind, die noch nicht in der Liste der Uploads erfasst sind. Falls welche gefunden werden, werden sie in der Liste eingetragen.'
|
||||
upload_add_db_entry_button = 'in der Datenbank aufnehmen'
|
||||
upload_database_entry_alt = 'Für dieses Bild existiert ein Datenbankeintrag'
|
||||
upload_database_no_entry_alt = 'Für dieses Bild existiert kein Datenbankeintrag'
|
||||
upload_filter_not_managed_images ='nicht verwaltete Bilder'
|
||||
upload_filter_managed_images = 'verwaltete Bilder'
|
||||
upload_filter_all_images = 'alle Bilder'
|
||||
|
||||
|
||||
# Spamschutz:
|
||||
captcha = 'CAPTCHA'
|
||||
|
@ -1052,7 +1067,7 @@ update_submit = 'OK – Update ausführen'
|
|||
update_successful = 'Die Datenbank wurde erfolgreich aktualisiert.'
|
||||
update_items_note = 'Bitte jetzt die folgenden Dateien/Verzeichnisse der neuen Version ([version]) hochladen:'
|
||||
update_download = 'Falls nicht verfügbar, können diese Dateien [[hier]] heruntergeladen werden.'
|
||||
update_reenabling_notice = 'Bitte zu beachten, dass das Forum aktuell reaktiviert ist und <a href="index.php?mode=admin&action=settings">in den Einstellungen</a> wieder eingeschaltet werden muss.'
|
||||
update_reenabling_notice = 'Bitte zu beachten, dass das Forum aktuell deaktiviert ist und <a href="index.php?mode=admin&action=settings">in den Einstellungen</a> wieder eingeschaltet werden muss.'
|
||||
|
||||
[emails]
|
||||
email_subject = 'Antwort auf "[original_subject]"'
|
||||
|
|
|
@ -31,8 +31,8 @@ locale = ita
|
|||
locale_charset = utf-8
|
||||
word_delimiters = ' '
|
||||
dir = ltr
|
||||
time_format = YYYY-MM-dd, hh:mm
|
||||
time_format_full = EEEE, MMMM dd, YYYY, hh:mm
|
||||
time_format = 'dd/MM/YYYY, HH.mm'
|
||||
time_format_full = 'EEEE dd MMMM YYYY, H.mm'
|
||||
forum_time = 'Orario: [time]'
|
||||
forum_time_with_time_zone = 'Orario: [time] ([time_zone])'
|
||||
unknown_user = 'sconosciuto'
|
||||
|
@ -57,8 +57,8 @@ next_page_link = '»'
|
|||
previous_page_link = '«'
|
||||
next_page_link_title = 'prossima pagina'
|
||||
previous_page_link_title = 'pagina precedente'
|
||||
posted_by = 'Inviato da <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[time]'
|
||||
posted_by_location = 'Inviato da <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>[time]'
|
||||
posted_by = 'Inviato da [name][email_hp]<span class="interpunction">, </span>'
|
||||
posted_by_location = 'Inviato da [name][email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>'
|
||||
original_posting_linktitle = 'clicca per andare al posting originale di [name]'
|
||||
error_headline = 'Errore!'
|
||||
no_authorisation = 'Non si dispone dell\'autorizzazione necessaria!'
|
||||
|
@ -221,6 +221,8 @@ more_smilies_label = 'altro ...'
|
|||
more_smilies_title = 'altri smilies'
|
||||
close = 'chiudi'
|
||||
no_postings_user = 'Nessun messaggio'
|
||||
search_term = '<!-- TODO -->Search term'
|
||||
search_category = '<!-- TODO -->Search in category'
|
||||
search_submit_button = 'Ricerca'
|
||||
search_fulltext = 'tutto il testo'
|
||||
search_tags = 'tags'
|
||||
|
@ -316,7 +318,7 @@ error_bookmark_word_too_long = '<!-- TODO -->The word "[word]" is too long'
|
|||
error_bookmark_tags_limit_reached = '<!-- TODO -->Tags limit reached for bookmark'
|
||||
|
||||
[entry]
|
||||
edited_by = 'modificato da [name], [time]'
|
||||
edited_by = 'modificato da [name]<span class="interpunction">, </span>'
|
||||
tags_marking = 'Tags:'
|
||||
one_view = '1 vista'
|
||||
several_views = '[views] viste'
|
||||
|
@ -373,6 +375,8 @@ subject_marking = 'Oggetto:'
|
|||
message_marking = 'Messaggio:'
|
||||
tags_marking = 'Tags:'
|
||||
tags_note = '(opzionali, separati dalla virgola)'
|
||||
bbcode_help_heading = '<!-- TODO -->Formatting help'
|
||||
bbcode_help_skip_link = '<!-- TODO -->skip to input'
|
||||
bbcode_bold_label = 'grosseto'
|
||||
bbcode_bold_title = 'Impostare il testo in grosseto'
|
||||
bbcode_bold_instruction = '[b]Esempio[/b]'
|
||||
|
@ -703,6 +707,7 @@ register_user_email = 'E-mail:'
|
|||
register_pw = 'Password:'
|
||||
register_honeypot_field = '<!-- TODO -->Leave this field empty:'
|
||||
register_only_by_admin = 'Gli utenti possono essere registrati esclusivamente dall\'amministratore del forum.'
|
||||
register_link_to_login = '<!-- TODO -->Go to login'
|
||||
registered = 'L\'account è stato registrato con successo e la sua chiave d\'attivazione è stata spedita a <strong>[var]</strong>. L\'account deve essere attivato entro un giorno.'
|
||||
registered_send_error = '<!-- TODO -->The account has been registered but the activation key could not been sent (mail server not available). Please contact the forum administrator and ask for manual account activation.'
|
||||
activation_failed = 'L\'attivazione dell\'account è fallita.'
|
||||
|
@ -974,9 +979,18 @@ no_users_in_selection = 'Nessun utente selezionato'
|
|||
# upload management
|
||||
upload_administration = '<!-- TODO -->Upload management'
|
||||
mark_upload_for_removal = '<!-- TODO -->mark for removal'
|
||||
mark_upload_for_managing = '<!-- TODO -->mark for managing'
|
||||
no_uploads_found = '<!-- TODO -->Found no uploaded files.'
|
||||
delete_upload_confirmation = '<!-- TODO -->Are you sure you want to delete this upload?'
|
||||
delete_uploads_confirmation = '<!-- TODO -->Are you sure you want to delete the following uploads?'
|
||||
check_for_unrecorded_uploads = '<!-- TODO -->record uploads'
|
||||
check_for_unrecorded_uploads_desc = '<!-- TODO -->Check whether there are any uploads that are not yet included in the list of uploads. If any are found, they are entered in the list.'
|
||||
upload_add_db_entry_button = '<!-- TODO -->record to database'
|
||||
upload_database_entry_alt = '<!-- TODO -->There is a database entry for this image'
|
||||
upload_database_no_entry_alt = '<!-- TODO -->There is no database entry for this image'
|
||||
upload_filter_not_managed_images ='<!-- TODO -->not managed images'
|
||||
upload_filter_managed_images = '<!-- TODO -->managed images'
|
||||
upload_filter_all_images = '<!-- TODO -->all images'
|
||||
|
||||
# spam protection:
|
||||
captcha = 'CAPTCHA'
|
||||
|
|
|
@ -28,8 +28,8 @@ locale = nor
|
|||
locale_charset = utf-8
|
||||
word_delimiters = ' '
|
||||
dir = ltr
|
||||
time_format = dd.MM.YYYY, hh:mm
|
||||
time_format_full = EEEE d. MMMM YYYY, 'kl.' hh:mm
|
||||
time_format = 'dd.MM.YYYY, HH:mm'
|
||||
time_format_full = 'EEEE d. MMMM YYYY, \'kl.\' HH:mm'
|
||||
forum_time = 'Forumtid: [time]'
|
||||
forum_time_with_time_zone = 'Forumtid: [time] ([time_zone])'
|
||||
unknown_user = 'ukjent'
|
||||
|
@ -54,8 +54,8 @@ next_page_link = '»'
|
|||
previous_page_link = '«'
|
||||
next_page_link_title = 'neste side'
|
||||
previous_page_link_title = 'forrige side'
|
||||
posted_by = 'av <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[time]'
|
||||
posted_by_location = 'av <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>[time]'
|
||||
posted_by = 'av [name][email_hp]<span class="interpunction">, </span>'
|
||||
posted_by_location = 'av [name][email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>'
|
||||
original_posting_linktitle = 'klikk for å se den originale meldingen skrevet av [name]'
|
||||
error_headline = 'Feil!'
|
||||
no_authorisation = 'Ingen tillatelse!'
|
||||
|
@ -218,6 +218,8 @@ more_smilies_label = 'mer …'
|
|||
more_smilies_title = 'flere smil'
|
||||
close = 'lukk'
|
||||
no_postings_user = 'Ingen innlegg.'
|
||||
search_term = '<!-- TODO -->Search term'
|
||||
search_category = '<!-- TODO -->Search in category'
|
||||
search_submit_button = 'Søk'
|
||||
search_fulltext = 'fulltekst'
|
||||
search_tags = 'merkelapper'
|
||||
|
@ -313,7 +315,7 @@ error_bookmark_word_too_long = 'Ordet "[word]" er for langt'
|
|||
error_bookmark_tags_limit_reached = 'Tagg-grensen nådd for favoritt'
|
||||
|
||||
[entry]
|
||||
edited_by = 'redigert av [name], [time]'
|
||||
edited_by = 'redigert av [name]<span class="interpunction">, </span>'
|
||||
tags_marking = 'Merkelapper:'
|
||||
one_view = '1 visning'
|
||||
several_views = '[views] visninger'
|
||||
|
@ -370,6 +372,8 @@ subject_marking = 'Emne:'
|
|||
message_marking = 'Melding:'
|
||||
tags_marking = 'Merkelapper:'
|
||||
tags_note = '(valgfritt, separer merkelappene med komma)'
|
||||
bbcode_help_heading = '<!-- TODO -->Formatting help'
|
||||
bbcode_help_skip_link = '<!-- TODO -->skip to input'
|
||||
bbcode_bold_label = 'fet'
|
||||
bbcode_bold_title = 'Fet tekstformatering'
|
||||
bbcode_bold_instruction = '[b]Tekst[/b]'
|
||||
|
@ -700,6 +704,7 @@ register_user_email = 'E-post:'
|
|||
register_pw = 'Passord:'
|
||||
register_honeypot_field = 'La dette feltet være tomt:'
|
||||
register_only_by_admin = 'Brukere kan bare registreres av forumadministratoren.'
|
||||
register_link_to_login = '<!-- TODO -->Go to login'
|
||||
registered = 'Kontoen ble registrert og aktiveringsnøkkelen er sendt til <strong>[var]</strong>. Kontoen må aktiveres innen én dag.'
|
||||
registered_send_error = 'Kontoen ble registrert, men aktiveringsnøkkelen kunne ikke sendes (e-postserveren var ikke tilgjengelig). Kontakt forumadministratoren for å få kontoen aktivert manuelt.'
|
||||
activation_failed = 'Aktivering av kontoen mislykted.'
|
||||
|
@ -974,9 +979,18 @@ no_users_in_selection = 'Ingen brukere i utvalget'
|
|||
# upload management
|
||||
upload_administration = 'Administrer opplastninger'
|
||||
mark_upload_for_removal = 'marker for fjerning'
|
||||
mark_upload_for_managing = '<!-- TODO -->mark for managing'
|
||||
no_uploads_found = 'Fant ingen opplastede filer.'
|
||||
delete_upload_confirmation = 'Er du sikker på at du vil slette denne opplastingen?'
|
||||
delete_uploads_confirmation = 'Er du sikker på at du vil slette følgende opplastinger?'
|
||||
check_for_unrecorded_uploads = '<!-- TODO -->record uploads'
|
||||
check_for_unrecorded_uploads_desc = '<!-- TODO -->Check whether there are any uploads that are not yet included in the list of uploads. If any are found, they are entered in the list.'
|
||||
upload_add_db_entry_button = '<!-- TODO -->record to database'
|
||||
upload_database_entry_alt = '<!-- TODO -->There is a database entry for this image'
|
||||
upload_database_no_entry_alt = '<!-- TODO -->There is no database entry for this image'
|
||||
upload_filter_not_managed_images ='<!-- TODO -->not managed images'
|
||||
upload_filter_managed_images = '<!-- TODO -->managed images'
|
||||
upload_filter_all_images = '<!-- TODO -->all images'
|
||||
|
||||
# spam protection:
|
||||
captcha = 'CAPTCHA'
|
||||
|
|
|
@ -40,8 +40,8 @@ locale = rus
|
|||
locale_charset = utf-8
|
||||
word_delimiters = ' '
|
||||
dir = ltr
|
||||
time_format = YYYY-MM-dd, hh:mm
|
||||
time_format_full = YYYY-MM-dd, hh:mm
|
||||
time_format = 'dd.MM.YYYY, H:mm'
|
||||
time_format_full = 'EEEE, dd MMMM YYYY, H:mm'
|
||||
forum_time = 'Время форума: [time]'
|
||||
forum_time_with_time_zone = 'Время форума: [time] ([time_zone])'
|
||||
unknown_user = 'неизвестный'
|
||||
|
@ -66,8 +66,8 @@ next_page_link = '»'
|
|||
previous_page_link = '«'
|
||||
next_page_link_title = 'следующая страница'
|
||||
previous_page_link_title = 'предыдущая страница'
|
||||
posted_by = 'написал <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[time]'
|
||||
posted_by_location = 'написал <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>[time]'
|
||||
posted_by = 'написал [name][email_hp]<span class="interpunction">, </span>'
|
||||
posted_by_location = 'написал [name][email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>'
|
||||
original_posting_linktitle = 'кликните, чтобы перейти к посту, который написал [name]'
|
||||
error_headline = 'Ошибочка!'
|
||||
no_authorisation = 'Не автоирзован!'
|
||||
|
@ -230,6 +230,8 @@ more_smilies_label = 'ещё'
|
|||
more_smilies_title = 'ещё смайлики'
|
||||
close = 'закрыть'
|
||||
no_postings_user = 'Нет сообщений.'
|
||||
search_term = '<!-- TODO -->Search term'
|
||||
search_category = '<!-- TODO -->Search in category'
|
||||
search_submit_button = 'Поиск'
|
||||
search_fulltext = 'весь текст'
|
||||
#search_fulltext_or = 'весь текст (или)'
|
||||
|
@ -326,7 +328,7 @@ error_bookmark_word_too_long = 'Слово "[word]" слишком длинн
|
|||
error_bookmark_tags_limit_reached = 'Превышен лимит тэгов для закладки'
|
||||
|
||||
[entry]
|
||||
edited_by = 'исправил [name], в [time]'
|
||||
edited_by = 'исправил [name]<span class="interpunction">, </span>'
|
||||
tags_marking = 'Тэги:'
|
||||
one_view = '1 просмотр'
|
||||
several_views = '[views] просмотров'
|
||||
|
@ -383,6 +385,8 @@ subject_marking = 'Тема:'
|
|||
message_marking = 'Сообщение:'
|
||||
tags_marking = 'Тэги:'
|
||||
tags_note = '(не обязательно, разделяются запятыми)'
|
||||
bbcode_help_heading = '<!-- TODO -->Formatting help'
|
||||
bbcode_help_skip_link = '<!-- TODO -->skip to input'
|
||||
bbcode_bold_label = 'жирный'
|
||||
bbcode_bold_title = 'Выделить текст жирным'
|
||||
bbcode_bold_instruction = '[b]жирный текст[/b]'
|
||||
|
@ -714,6 +718,7 @@ register_user_email = 'E-mail:'
|
|||
register_pw = 'Пароль:'
|
||||
register_honeypot_field = 'Оставьте это поле пустым:'
|
||||
register_only_by_admin = 'Пользователь может быть зарегистрирован только Администратором форума.'
|
||||
register_link_to_login = '<!-- TODO -->Go to login'
|
||||
registered = 'Учётная запись была зарегистрирована и ключ активации выслан на <strong>[var]</strong>. Учётная запись должна быть активирована в течение суток.'
|
||||
registered_send_error = 'Учётная запись была зарегистрирована, но ключ активации не может быть выслан (почтовый сервер недоступен). Пожалуйста, свяжитесь с Администратором форума и попросите его вручную активировать вашу учётную запись.'
|
||||
activation_failed = 'Не получилось активировать учётную запись.'
|
||||
|
@ -986,9 +991,18 @@ no_users_in_selection = 'Пользователи не выбраны'
|
|||
# upload management
|
||||
upload_administration = 'Управление загрузкой'
|
||||
mark_upload_for_removal = 'отметить для удаления'
|
||||
mark_upload_for_managing = '<!-- TODO -->mark for managing'
|
||||
no_uploads_found = 'Загруженных файлов не найдено.'
|
||||
delete_upload_confirmation = 'Вы уверены в том, что хотите удалить эту загрузку?'
|
||||
delete_uploads_confirmation = 'Вы уверены в том, что хотите удалить следующие загрузки?'
|
||||
check_for_unrecorded_uploads = '<!-- TODO -->record uploads'
|
||||
check_for_unrecorded_uploads_desc = '<!-- TODO -->Check whether there are any uploads that are not yet included in the list of uploads. If any are found, they are entered in the list.'
|
||||
upload_add_db_entry_button = '<!-- TODO -->record to database'
|
||||
upload_database_entry_alt = '<!-- TODO -->There is a database entry for this image'
|
||||
upload_database_no_entry_alt = '<!-- TODO -->There is no database entry for this image'
|
||||
upload_filter_not_managed_images ='<!-- TODO -->not managed images'
|
||||
upload_filter_managed_images = '<!-- TODO -->managed images'
|
||||
upload_filter_all_images = '<!-- TODO -->all images'
|
||||
|
||||
# защита от спама:
|
||||
captcha = 'КАПЧА'
|
||||
|
|
|
@ -32,8 +32,8 @@ locale = sp
|
|||
locale_charset = utf-8
|
||||
word_delimiters = ' '
|
||||
dir = ltr
|
||||
time_format = dd-MM-YYYY, hh:mm
|
||||
time_format_full = EEEE, dd 'de' MMMM 'de' YYYY, hh:mm
|
||||
time_format = 'dd-MM-YYYY, HH:mm'
|
||||
time_format_full = 'EEEE, dd \'de\' MMMM \'de\' YYYY, hh:mm'
|
||||
forum_time = 'Hora del foro: [time]'
|
||||
forum_time_with_time_zone = 'Hora del foro: [time] ([time_zone])'
|
||||
unknown_user = 'desconocido'
|
||||
|
@ -58,8 +58,8 @@ next_page_link = '»'
|
|||
previous_page_link = '«'
|
||||
next_page_link_title = 'siguiente página'
|
||||
previous_page_link_title = 'página previa'
|
||||
posted_by = 'Escrito por <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[time]'
|
||||
posted_by_location = 'Escrito por <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>[time]'
|
||||
posted_by = 'Escrito por [name][email_hp]<span class="interpunction">, </span>'
|
||||
posted_by_location = 'Escrito por [name][email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>'
|
||||
original_posting_linktitle = 'click para ir al mensaje original escrito por [name]'
|
||||
error_headline = 'Error!'
|
||||
no_authorisation = 'No tienes permiso para hacer eso!'
|
||||
|
@ -222,6 +222,8 @@ more_smilies_label = 'más …'
|
|||
more_smilies_title = 'más emoticonos'
|
||||
close = 'cerrar'
|
||||
no_postings_user = 'No hay mensajes.'
|
||||
search_term = '<!-- TODO -->Search term'
|
||||
search_category = '<!-- TODO -->Search in category'
|
||||
search_submit_button = 'Búsqueda'
|
||||
search_fulltext = 'texto completo'
|
||||
search_tags = 'Etiquetas'
|
||||
|
@ -317,7 +319,7 @@ error_bookmark_word_too_long = 'La palabra "[word]" es demasiado larga'
|
|||
error_bookmark_tags_limit_reached = 'Alcanzado el límite de etiquetas por marcador'
|
||||
|
||||
[entry]
|
||||
edited_by = 'editado por [name], [time]'
|
||||
edited_by = 'editado por [name]<span class="interpunction">, </span>'
|
||||
tags_marking = 'Etiquetas:'
|
||||
one_view = '1 vista'
|
||||
several_views = '[views] vistas'
|
||||
|
@ -374,6 +376,8 @@ subject_marking = 'Asunto:'
|
|||
message_marking = 'Mensaje:'
|
||||
tags_marking = 'Etiquetas:'
|
||||
tags_note = '(opcional, separados por una coma)'
|
||||
bbcode_help_heading = '<!-- TODO -->Formatting help'
|
||||
bbcode_help_skip_link = '<!-- TODO -->skip to input'
|
||||
bbcode_bold_label = 'negrita'
|
||||
bbcode_bold_title = 'Formato de texto en negrita'
|
||||
bbcode_bold_instruction = '[b]texto en negrita[/b]'
|
||||
|
@ -704,6 +708,7 @@ register_user_email = 'E-mail:'
|
|||
register_pw = 'Contraseña:'
|
||||
register_honeypot_field = 'Dejar este campo vacío:'
|
||||
register_only_by_admin = 'Los usuarios solo pueden ser registrados por el administrador del foro.'
|
||||
register_link_to_login = '<!-- TODO -->Go to login'
|
||||
registered = 'La cuenta ha sido registrada y la clave de activación ha sido enviada a <strong>[var]</strong>. La cuenta tiene que ser activada en plazo de un día!!!.'
|
||||
registered_send_error = 'La cuenta ha sido registrada, pero la clave de activación no se ha enviado (el servidor de correos no está disponible). Ponte en contacto con el administrador del foro y solicita la activación de la cuenta manualmente.'
|
||||
activation_failed = 'La activación de la cuenta ha fallado'
|
||||
|
@ -975,9 +980,18 @@ no_users_in_selection = 'No hay usuarios en la selección'
|
|||
# upload management
|
||||
upload_administration = 'Gestionar las subidas'
|
||||
mark_upload_for_removal = 'marcar para eliminación'
|
||||
mark_upload_for_managing = '<!-- TODO -->mark for managing'
|
||||
no_uploads_found = 'No se han encontrado archivos subidos.'
|
||||
delete_upload_confirmation = '¿Estas seguro que quieres eliminar esta subida?'
|
||||
delete_uploads_confirmation = '¿Estás seguro que quieres eliminar las siguientes subidas?'
|
||||
check_for_unrecorded_uploads = '<!-- TODO -->record uploads'
|
||||
check_for_unrecorded_uploads_desc = '<!-- TODO -->Check whether there are any uploads that are not yet included in the list of uploads. If any are found, they are entered in the list.'
|
||||
upload_add_db_entry_button = '<!-- TODO -->record to database'
|
||||
upload_database_entry_alt = '<!-- TODO -->There is a database entry for this image'
|
||||
upload_database_no_entry_alt = '<!-- TODO -->There is no database entry for this image'
|
||||
upload_filter_not_managed_images ='<!-- TODO -->not managed images'
|
||||
upload_filter_managed_images = '<!-- TODO -->managed images'
|
||||
upload_filter_all_images = '<!-- TODO -->all images'
|
||||
|
||||
# spam protection:
|
||||
captcha = 'CAPTCHA'
|
||||
|
|
|
@ -31,8 +31,8 @@ locale = sv
|
|||
locale_charset = utf-8
|
||||
word_delimiters = ' '
|
||||
dir = ltr
|
||||
time_format = YYYY-MM-dd, hh:mm
|
||||
time_format_full = EEEE, MMMM dd, YYYY, hh:mm
|
||||
time_format = 'YYYY-MM-dd, HH.mm'
|
||||
time_format_full = 'EEEE, dd MMMM YYYY, HH.mm'
|
||||
forum_time = 'Forum tid: [time]'
|
||||
forum_time_with_time_zone = 'Forum tidszon: [time] ([time_zone])'
|
||||
unknown_user = 'Okänd'
|
||||
|
@ -57,8 +57,8 @@ next_page_link = 'Nästa sida »'
|
|||
previous_page_link = '« Föregående sida'
|
||||
next_page_link_title = 'Nästa sida'
|
||||
previous_page_link_title = 'Föregående sida'
|
||||
posted_by = 'av <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[time]'
|
||||
posted_by_location = 'av <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>[time]'
|
||||
posted_by = 'av [name][email_hp]<span class="interpunction">, </span>'
|
||||
posted_by_location = 'av [name][email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>'
|
||||
original_posting_linktitle = 'Klicka för att komma till ursprungsinlägget av: [name]'
|
||||
error_headline = 'Fel!'
|
||||
no_authorisation = 'Ej behörig!'
|
||||
|
@ -221,6 +221,8 @@ more_smilies_label = 'Fler …'
|
|||
more_smilies_title = 'Fler smajlisar'
|
||||
close = 'Stäng'
|
||||
no_postings_user = 'Inga inlägg.'
|
||||
search_term = '<!-- TODO -->Search term'
|
||||
search_category = '<!-- TODO -->Search in category'
|
||||
search_submit_button = 'Sök'
|
||||
search_fulltext = 'Fulltext'
|
||||
search_tags = 'Sökord'
|
||||
|
@ -316,7 +318,7 @@ error_bookmark_word_too_long = 'Ordet "[word]" för för långt'
|
|||
error_bookmark_tags_limit_reached = 'Övre gränsen för antal taggar har nåtts för bokmärke'
|
||||
|
||||
[entry]
|
||||
edited_by = 'Redigerad av [name], [time]'
|
||||
edited_by = 'Redigerad av [name]<span class="interpunction">, </span>'
|
||||
tags_marking = 'Sökord:'
|
||||
one_view = '1 visning'
|
||||
several_views = '[views] visningar'
|
||||
|
@ -373,6 +375,8 @@ subject_marking = 'Ämne:'
|
|||
message_marking = 'Inlägg:'
|
||||
tags_marking = 'Sökord:'
|
||||
tags_note = '(valfritt, separera med kommatecken)'
|
||||
bbcode_help_heading = '<!-- TODO -->Formatting help'
|
||||
bbcode_help_skip_link = '<!-- TODO -->skip to input'
|
||||
bbcode_bold_label = 'Fet'
|
||||
bbcode_bold_title = 'Fetstil'
|
||||
bbcode_bold_instruction = '[b]Text[/b]'
|
||||
|
@ -703,6 +707,7 @@ register_user_email = 'E-post:'
|
|||
register_pw = 'Lösenord:'
|
||||
register_honeypot_field = 'Lämna detta fältet tomt:'
|
||||
register_only_by_admin = 'Nya användare kan bara registreras av forumets administratörer.'
|
||||
register_link_to_login = '<!-- TODO -->Go to login'
|
||||
registered = 'Kontot har blivit registrerat och en aktiveringsnyckel har blivit skickad till <strong>[var]</strong>. Kontot måste aktiveras inom ett dygn.'
|
||||
registered_send_error = 'Kontot har blivit registrerat men aktiveringsnyckeln kunde inte skickas (mail server är inte tillgänglig). Vänligen kontakta forumets administratör och be om manuell aktivering av kontot.'
|
||||
activation_failed = 'Aktivering av kontot misslyckades.'
|
||||
|
@ -974,9 +979,18 @@ no_users_in_selection = 'Inga användare finns i detta urval'
|
|||
# upload management
|
||||
upload_administration = 'Hantering av uppladdade filer'
|
||||
mark_upload_for_removal = 'Märk för borttagning'
|
||||
mark_upload_for_managing = '<!-- TODO -->mark for managing'
|
||||
no_uploads_found = 'Hittade inga uppladdade filer.'
|
||||
delete_upload_confirmation = 'Är du säker på att du vill radera den här uppladdade filen?'
|
||||
delete_uploads_confirmation = 'Är du säker på att du vill radera de följande uppladdade filerna?'
|
||||
check_for_unrecorded_uploads = '<!-- TODO -->record uploads'
|
||||
check_for_unrecorded_uploads_desc = '<!-- TODO -->Check whether there are any uploads that are not yet included in the list of uploads. If any are found, they are entered in the list.'
|
||||
upload_add_db_entry_button = '<!-- TODO -->record to database'
|
||||
upload_database_entry_alt = '<!-- TODO -->There is a database entry for this image'
|
||||
upload_database_no_entry_alt = '<!-- TODO -->There is no database entry for this image'
|
||||
upload_filter_not_managed_images ='<!-- TODO -->not managed images'
|
||||
upload_filter_managed_images = '<!-- TODO -->managed images'
|
||||
upload_filter_all_images = '<!-- TODO -->all images'
|
||||
|
||||
# spam protection:
|
||||
captcha = 'CAPTCHA'
|
||||
|
|
|
@ -27,8 +27,8 @@ locale = ta
|
|||
locale_charset = utf-8
|
||||
word_delimiters = ' '
|
||||
dir = ltr
|
||||
time_format = YYYY-MM-dd, hh:mm
|
||||
time_format_full = EEEE, MMMM dd, YYYY, hh:mm
|
||||
time_format = 'YYYY-MM-dd, hh:mm a'
|
||||
time_format_full = 'EEEE, MMMM dd, YYYY, hh:mm a'
|
||||
forum_time = 'கருத்தரங்கின் நேரம்: [time]'
|
||||
forum_time_with_time_zone = 'கருத்தரங்கின் நேரம்: [time] ([time_zone])'
|
||||
unknown_user = 'தெரியாதவர்'
|
||||
|
@ -53,8 +53,8 @@ next_page_link = '»'
|
|||
previous_page_link = '«'
|
||||
next_page_link_title = 'அடுத்த பக்கம்'
|
||||
previous_page_link_title = 'முந்தய பக்கம்'
|
||||
posted_by = 'இப்படிக்கு <strong>[name]</strong>[email_hp]<span class="interpunction">,</span> [time]'
|
||||
posted_by_location = 'இப்படிக்கு <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>[time]'
|
||||
posted_by = 'இப்படிக்கு [name][email_hp]<span class="interpunction">, </span>'
|
||||
posted_by_location = 'இப்படிக்கு [name][email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>'
|
||||
original_posting_linktitle = '[name]னுடைய அசல் தகவலுக்கு செல்ல'
|
||||
error_headline = 'தவரு!'
|
||||
no_authorisation = 'அங்கிகாரம் இல்லை!'
|
||||
|
@ -217,6 +217,8 @@ more_smilies_label = 'மேலும்...'
|
|||
more_smilies_title = 'மேலும் சிரிப்பு முகங்கள்'
|
||||
close = 'மூடு'
|
||||
no_postings_user = 'போஸ்டிங்ஸ் இல்லை.'
|
||||
search_term = '<!-- TODO -->Search term'
|
||||
search_category = '<!-- TODO -->Search in category'
|
||||
search_submit_button = 'தேடு'
|
||||
search_fulltext = 'முழு உரை'
|
||||
search_tags = 'அடையாள முத்திரை'
|
||||
|
@ -312,7 +314,7 @@ error_bookmark_word_too_long = '<!-- TODO -->The word "[word]" is too long'
|
|||
error_bookmark_tags_limit_reached = '<!-- TODO -->Tags limit reached for bookmark'
|
||||
|
||||
[entry]
|
||||
edited_by = 'புதுப்பித்தவர் [name], [time]'
|
||||
edited_by = 'புதுப்பித்தவர் [name]<span class="interpunction">, </span>'
|
||||
tags_marking = 'அடையாள முத்திரை:'
|
||||
one_view = '1 காட்ச்சி'
|
||||
several_views = '[views] காட்ச்சிகள்'
|
||||
|
@ -369,6 +371,8 @@ subject_marking = 'பாடம்:'
|
|||
message_marking = 'தகவல்:'
|
||||
tags_marking = 'அடையாள முத்திரை:'
|
||||
tags_note = '(விரும்பினால், "," வைத்து பிரிக்கவும்)'
|
||||
bbcode_help_heading = '<!-- TODO -->Formatting help'
|
||||
bbcode_help_skip_link = '<!-- TODO -->skip to input'
|
||||
bbcode_bold_label = 'தடிப்பமாக'
|
||||
bbcode_bold_title = 'தடிப்பமான உரை நடை'
|
||||
bbcode_bold_instruction = '[b]உரை[/b]'
|
||||
|
@ -699,6 +703,7 @@ register_user_email = 'மின்-அசல்:'
|
|||
register_pw = 'மறைவு சொல்:'
|
||||
register_honeypot_field = '<!-- TODO -->Leave this field empty:'
|
||||
register_only_by_admin = 'பொது மன்ற நிர்வாகியின் மூலமே பயன் படுத்துபவர் சேர முடியும்.'
|
||||
register_link_to_login = '<!-- TODO -->Go to login'
|
||||
registered = 'உங்கள் கணக்கு உருவாக்கப்பட்டுவிட்டது மறறும் அதற்கான செயல்படுத்தும் சாவி இணைப்பை உங்கள் <strong>[var]</strong> அநுப்பப்பட்டுவிட்டது. மேலும் உங்கள் பொது மன்ற கணக்கு ஒரு நாளுக்குள் செயல்பாட்டிற்கு கொண்டுவரப்படவேண்டும்.'
|
||||
registered_send_error = 'உங்கள் கணக்கு உருவாக்கப்பட்டுவிட்டது மறறும் அதற்கான செயல்படுத்தும் சாவி இணைப்பை உங்களுக்கு அநுப்பப்பமுடியவில்லை (அஞ்சல் சேவை மைய்யம் இயங்கவில்லை). கணக்கை செயல்பாட்டிற்கு கொண்டுவரப்படவேண்டுமானால் தயவு செய்து பொது மன்ற நிர்வாகியை அநுகவும்.'
|
||||
activation_failed = 'கணக்கை செயல்பாட்டிற்கு கொண்டுவர முடியவில்லை.'
|
||||
|
@ -970,9 +975,18 @@ no_users_in_selection = 'தெரிவு செய்யப்ப
|
|||
# upload management
|
||||
upload_administration = '<!-- TODO -->Upload management'
|
||||
mark_upload_for_removal = '<!-- TODO -->mark for removal'
|
||||
mark_upload_for_managing = '<!-- TODO -->mark for managing'
|
||||
no_uploads_found = '<!-- TODO -->Found no uploaded files.'
|
||||
delete_upload_confirmation = '<!-- TODO -->Are you sure you want to delete this upload?'
|
||||
delete_uploads_confirmation = '<!-- TODO -->Are you sure you want to delete the following uploads?'
|
||||
check_for_unrecorded_uploads = '<!-- TODO -->record uploads'
|
||||
check_for_unrecorded_uploads_desc = '<!-- TODO -->Check whether there are any uploads that are not yet included in the list of uploads. If any are found, they are entered in the list.'
|
||||
upload_add_db_entry_button = '<!-- TODO -->record to database'
|
||||
upload_database_entry_alt = '<!-- TODO -->There is a database entry for this image'
|
||||
upload_database_no_entry_alt = '<!-- TODO -->There is no database entry for this image'
|
||||
upload_filter_not_managed_images ='<!-- TODO -->not managed images'
|
||||
upload_filter_managed_images = '<!-- TODO -->managed images'
|
||||
upload_filter_all_images = '<!-- TODO -->all images'
|
||||
|
||||
# spam protection:
|
||||
captcha = 'CAPTCHA'
|
||||
|
|
|
@ -31,8 +31,8 @@ charset = utf-8
|
|||
locale_charset = utf-8
|
||||
word_delimiters = ' '
|
||||
dir = ltr
|
||||
time_format = dd-MM-YYYY, hh:mm
|
||||
time_format_full = EEEE, MMMM dd, YYYY, hh:mm
|
||||
time_format = 'dd.MM.YYYY, HH:mm'
|
||||
time_format_full = 'dd MMMM YYYY, HH:mm'
|
||||
forum_time = 'Forum zamanı: [time]'
|
||||
forum_time_with_time_zone = 'Forum zamanı: [time] ([time_zone])'
|
||||
unknown_user = 'bilinmeyen'
|
||||
|
@ -57,8 +57,8 @@ next_page_link = 'Sonraki sayfa »'
|
|||
previous_page_link = '« Önceki sayfa'
|
||||
next_page_link_title = 'sonraki sayfa'
|
||||
previous_page_link_title = 'önceki sayfa'
|
||||
posted_by = 'gönderen: <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[time]'
|
||||
posted_by_location = 'gönderen: <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>[time]'
|
||||
posted_by = 'gönderen: [name][email_hp]<span class="interpunction">, </span>'
|
||||
posted_by_location = 'gönderen: [name][email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>'
|
||||
original_posting_linktitle = 'asıl [name] orijinal izlenime geçmek için tıklayınız'
|
||||
error_headline = 'Hata!'
|
||||
no_authorisation = 'Yetki yok!'
|
||||
|
@ -221,6 +221,8 @@ more_smilies_label = 'daha...'
|
|||
more_smilies_title = 'daha fazla simgeler'
|
||||
close = 'kapat'
|
||||
no_postings_user = 'Gönderim yok.'
|
||||
search_term = '<!-- TODO -->Search term'
|
||||
search_category = '<!-- TODO -->Search in category'
|
||||
search_submit_button = 'Ara'
|
||||
search_fulltext = 'tüm metin'
|
||||
search_tags = 'konular'
|
||||
|
@ -316,7 +318,7 @@ error_bookmark_word_too_long = '<!-- TODO -->The word "[word]" is too long'
|
|||
error_bookmark_tags_limit_reached = '<!-- TODO -->Tags limit reached for bookmark'
|
||||
|
||||
[entry]
|
||||
edited_by = '[name] tarafından, [time] tarihinde düzenlendi'
|
||||
edited_by = '[name] tarafından<span class="interpunction">, </span>'
|
||||
tags_marking = 'Konular:'
|
||||
one_view = '1 kez okundu'
|
||||
several_views = '[views] kez okundu'
|
||||
|
@ -373,6 +375,8 @@ subject_marking = 'Konu:'
|
|||
message_marking = 'Mesaj:'
|
||||
tags_marking = 'Konular:'
|
||||
tags_note = '(opsiyonel, virgül ile ayrılmış biçimde)'
|
||||
bbcode_help_heading = '<!-- TODO -->Formatting help'
|
||||
bbcode_help_skip_link = '<!-- TODO -->skip to input'
|
||||
bbcode_bold_label = 'koyu'
|
||||
bbcode_bold_title = 'Metni koyu biçimlendir'
|
||||
bbcode_bold_instruction = '[b]bold text[/b]'
|
||||
|
@ -703,6 +707,7 @@ register_user_email = 'E-posta:'
|
|||
register_pw = 'Şifre:'
|
||||
register_honeypot_field = '<!-- TODO -->Leave this field empty:'
|
||||
register_only_by_admin = 'Kullanıcılar sadece forum yöneticileri tarafından kayıt edilebilir.'
|
||||
register_link_to_login = '<!-- TODO -->Go to login'
|
||||
registered = 'Hesabınız kaydedildi ve <strong>[var]</strong> adresine aktivasyon iletisi gönderildi. Lütfen hesabınızı en geç bir gün içinde aktif ediniz.'
|
||||
registered_send_error = 'Hesabınız kaydedildi fakat aktivasyon anahtarı gönderilemedi. (mail sunucusu mevcut değil). Lütfen forum yöneticisiyle irtibata geçip hesabınızı manüel olarak aktif ettiriniz.'
|
||||
activation_failed = 'Hesabın aktivasyonu başarısız.'
|
||||
|
@ -974,9 +979,18 @@ no_users_in_selection = 'Belirli bir kullanıcı yok'
|
|||
# upload management
|
||||
upload_administration = '<!-- TODO -->Upload management'
|
||||
mark_upload_for_removal = '<!-- TODO -->mark for removal'
|
||||
mark_upload_for_managing = '<!-- TODO -->mark for managing'
|
||||
no_uploads_found = '<!-- TODO -->Found no uploaded files.'
|
||||
delete_upload_confirmation = '<!-- TODO -->Are you sure you want to delete this upload?'
|
||||
delete_uploads_confirmation = '<!-- TODO -->Are you sure you want to delete the following uploads?'
|
||||
check_for_unrecorded_uploads = '<!-- TODO -->record uploads'
|
||||
check_for_unrecorded_uploads_desc = '<!-- TODO -->Check whether there are any uploads that are not yet included in the list of uploads. If any are found, they are entered in the list.'
|
||||
upload_add_db_entry_button = '<!-- TODO -->record to database'
|
||||
upload_database_entry_alt = '<!-- TODO -->There is a database entry for this image'
|
||||
upload_database_no_entry_alt = '<!-- TODO -->There is no database entry for this image'
|
||||
upload_filter_not_managed_images ='<!-- TODO -->not managed images'
|
||||
upload_filter_managed_images = '<!-- TODO -->managed images'
|
||||
upload_filter_all_images = '<!-- TODO -->all images'
|
||||
|
||||
# spam protection:
|
||||
captcha = 'CAPTCHA'
|
||||
|
|
|
@ -1,87 +1,266 @@
|
|||
{config_load file=$language_file section="general"}{config_load file=$language_file section="avatar"}<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="{#language#}">
|
||||
<head>
|
||||
<title>{$settings.forum_name}{if $page_title} - {$page_title}{elseif $subnav_location} - {$subnav_location}{/if}</title>
|
||||
<meta http-equiv="content-type" content="text/html; charset={#charset#}" />
|
||||
<meta http-equiv="cache-control" content="no-cache">
|
||||
{config_load file=$language_file section="general"}{config_load file=$language_file section="avatar"}<!DOCTYPE html>
|
||||
<html lang="{#language#}">
|
||||
<head>
|
||||
<meta charset="{#charset#}" />
|
||||
<title>{$settings.forum_name}{if $page_title} - {$page_title}{elseif $subnav_location} - {$subnav_location}{/if}</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta http-equiv="cache-control" content="no-cache">
|
||||
<style type="text/css">
|
||||
{literal}
|
||||
<style type="text/css">
|
||||
<!--
|
||||
body { color: #000000; background: #ffffff; margin: 20px; padding: 0px; font-family: verdana, arial, sans-serif; font-size: 13px; }
|
||||
h1 { font-family: verdana, arial, sans-serif; font-size: 18px; font-weight: bold; }
|
||||
p { font-family: verdana, arial, sans-serif; font-size: 13px; line-height: 19px; }
|
||||
.caution { padding: 0px 0px 0px 20px; color: red; font-weight: bold; background-image:url({/literal}{$THEMES_DIR}/{$settings.theme}{literal}/images/caution.png); background-repeat:no-repeat; background-position: left; }
|
||||
.ok { padding: 0px 0px 0px 20px; font-weight:bold; color:red; background-image:url({/literal}{$THEMES_DIR}/{$settings.theme}{literal}/images/tick.png); background-repeat:no-repeat; background-position: left; }
|
||||
img.uploaded { border: 1px solid #000; cursor:pointer; }
|
||||
.small { font-size:11px; line-height:16px; }
|
||||
.delete a { text-decoration:none !important; }
|
||||
.delete a:hover span { text-decoration:underline; }
|
||||
.delete a img { border:none; margin:0px 5px -3px 0px; padding:0px; }
|
||||
a:link { color: #0000cc; text-decoration: none; }
|
||||
a:visited { color: #0000cc; text-decoration: none; }
|
||||
a:hover { color: #0000ff; text-decoration: underline; }
|
||||
a:active { color: #ff0000; text-decoration: none; }
|
||||
-->
|
||||
</style>
|
||||
|
||||
<script type="text/javascript">/* <![CDATA[ */
|
||||
function setPictureToProfil(src) {
|
||||
if (opener && opener.document.getElementById("avatar_wrapper")) {
|
||||
var avatarWrapper = opener.document.getElementById("avatar_wrapper")
|
||||
if (src) {
|
||||
var img = new Image();
|
||||
img.src = src;
|
||||
avatarWrapper.innerHTML = '';
|
||||
avatarWrapper.appendChild(img);
|
||||
}
|
||||
else {
|
||||
avatarWrapper.innerHTML = '';
|
||||
}
|
||||
}
|
||||
*,
|
||||
::before,
|
||||
::after {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
body {
|
||||
color: #000;
|
||||
background: #fff;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
font-family: verdana, arial, sans-serif;
|
||||
font-size: 1em;
|
||||
font-size: 1rem;
|
||||
line-height: 1.5;
|
||||
}
|
||||
body > * {
|
||||
padding-block: 0;
|
||||
padding-inline: 0.5em;
|
||||
}
|
||||
header {
|
||||
margin: 0;
|
||||
background: #f9f9f9;
|
||||
border-bottom: 1px solid #bacbdf;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
position: sticky;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
}
|
||||
header > * {
|
||||
margin:0;
|
||||
padding:0;
|
||||
}
|
||||
main {
|
||||
margin-inline: 0;
|
||||
margin-block: 0.5em;
|
||||
}
|
||||
h1 {
|
||||
font-size: 1em;
|
||||
font-weight: bold;
|
||||
}
|
||||
.caution,
|
||||
.ok {
|
||||
margin-block: 0.5em;
|
||||
padding: 0 0 0 24px;
|
||||
background-repeat:no-repeat;
|
||||
background-position: 2px 3px;
|
||||
}
|
||||
.caution h2,
|
||||
.ok h2 {
|
||||
font-size: 1em;
|
||||
margin: 0 0 0.5em 0;
|
||||
}
|
||||
.caution {
|
||||
color: #cc0000;
|
||||
font-weight: bold;
|
||||
background-image:url({/literal}{$THEMES_DIR}/{$settings.theme}{literal}/images/caution.png);
|
||||
}
|
||||
.ok {
|
||||
font-weight:bold;
|
||||
color:green;
|
||||
background-image:url({/literal}{$THEMES_DIR}/{$settings.theme}{literal}/images/tick.png);
|
||||
}
|
||||
img.uploaded {
|
||||
border: 1px solid #000;
|
||||
cursor:pointer;
|
||||
}
|
||||
.instruction,
|
||||
.small {
|
||||
font-size: 0.82em;
|
||||
}
|
||||
.instruction,
|
||||
p.small {
|
||||
margin-block:0.5em;
|
||||
}
|
||||
a {
|
||||
color: #00c;
|
||||
text-decoration: none;
|
||||
}
|
||||
a:focus,
|
||||
a:hover {
|
||||
color:#00f;
|
||||
text-decoration: underline dotted 9% #45f;
|
||||
}
|
||||
a:active {
|
||||
color:#f00;
|
||||
text-decoration: underline solid 7% #d00;
|
||||
}
|
||||
form > div:not(:last-child) {
|
||||
margin-block-end: .75em;
|
||||
}
|
||||
ul {
|
||||
list-style:none;
|
||||
margin-block:0.5em;
|
||||
padding: 0;
|
||||
}
|
||||
#imgtab {
|
||||
display:flex;
|
||||
flex-direction:column;
|
||||
gap:0.75em;
|
||||
min-width: 20em;
|
||||
max-width: 40em;
|
||||
margin-inline: auto;
|
||||
}
|
||||
#del-upload-form {
|
||||
text-align:center;
|
||||
}
|
||||
#imgtab li {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 0.5em;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
}
|
||||
li > *:last-child {
|
||||
align-content:center;
|
||||
}
|
||||
img {
|
||||
border:none;
|
||||
display: block;
|
||||
}
|
||||
#imgtab img {
|
||||
max-width: 100%;
|
||||
margin-inline: auto;
|
||||
}
|
||||
#imgtab:not(.shrinked) img {
|
||||
cursor: pointer;
|
||||
}
|
||||
#imgtab.shrinked img {
|
||||
max-width: 50%;
|
||||
height: auto;
|
||||
}
|
||||
.buttonbar {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 0.3em;
|
||||
}
|
||||
button {
|
||||
cursor: pointer;
|
||||
}
|
||||
#imgtab li button:has(> img) {
|
||||
background: transparent;
|
||||
border: none;
|
||||
padding: 0;
|
||||
}
|
||||
.invisible {
|
||||
visibility: hidden;
|
||||
}
|
||||
{/literal}
|
||||
</style>
|
||||
<script>{literal}
|
||||
function setPictureToProfile(src) {
|
||||
if (opener && opener.document.getElementById("avatar_wrapper")) {
|
||||
const avatarWrapper = opener.document.getElementById("avatar_wrapper")
|
||||
if (src) {
|
||||
const img = new Image();
|
||||
img.src = src;
|
||||
avatarWrapper.innerHTML = '';
|
||||
avatarWrapper.appendChild(img);
|
||||
} else {
|
||||
avatarWrapper.innerHTML = '';
|
||||
}
|
||||
}
|
||||
};
|
||||
{/literal}
|
||||
{if $avatar_uploaded}
|
||||
setPictureToProfil('{$avatar}');
|
||||
setPictureToProfile('{$avatar}');
|
||||
{elseif $avatar_deleted}
|
||||
setPictureToProfil('');
|
||||
setPictureToProfile('');
|
||||
{/if}
|
||||
{literal}
|
||||
/* ]]> */</script>
|
||||
{/literal}
|
||||
</head>
|
||||
<body>
|
||||
|
||||
window.addEventListener('DOMContentLoaded', function() {
|
||||
if (document.querySelector('button[name="close-form"]')) {
|
||||
document.querySelector('button[name="close-form"]').addEventListener('click', function() {
|
||||
window.close();
|
||||
});
|
||||
}
|
||||
if (document.querySelector('button[name="upload_img"]')) {
|
||||
document.querySelector('button[name="upload_img"]').addEventListener('click', function() {
|
||||
const close_btn = document.querySelector('button[name="close-form"]');
|
||||
const throbber = document.getElementById('throbber-submit');
|
||||
close_btn.addAttribute('hidden');
|
||||
if (throbber.classList.contains('invisible')) {
|
||||
throbber.classList.remove('invisible');
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
{if $avatar}
|
||||
<h1>{#avatar_hl#}</h1>
|
||||
<header>
|
||||
<h1>{#avatar_hl#}</h1>
|
||||
</header>
|
||||
<main>
|
||||
{if $avatar_uploaded}
|
||||
<p class="ok">{#upload_successful#}</p>
|
||||
<div class="ok">
|
||||
<h2>{#upload_successful#}</h2>
|
||||
</div>
|
||||
{/if}
|
||||
<p><img src="{$avatar}" alt="" /></p>
|
||||
{if $image_downsized}<p class="small">{$smarty.config.image_downsized|replace:"[width]":$new_width|replace:"[height]":$new_height|replace:"[filesize]":$new_filesize}</p>{/if}
|
||||
<ul id="imgtab" class="shrinked">
|
||||
<li><img src="{$avatar}" alt="" /></li>
|
||||
</ul>
|
||||
{if $image_downsized} <p class="small">{$smarty.config.image_downsized|replace:"[width]":$new_width|replace:"[height]":$new_height|replace:"[filesize]":$new_filesize}</p>{/if}
|
||||
<form id="del-upload-form" action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<input type="hidden" name="mode" value="avatar" />
|
||||
{if $avatar_uploaded}
|
||||
<script type="text/javascript">/* <![CDATA[ */ document.write('<p><button onclick=\"window.close()\">{#close_window#}</button><\/p>'); /* ]]> */</script>
|
||||
<div>
|
||||
<button type="button" name="close-form">{#close_window#}</button>
|
||||
</div>
|
||||
{else}
|
||||
<p class="delete"><a href="index.php?mode=avatar&delete=true"><img src="{$THEMES_DIR}/{$settings.theme}/images/delete.png" alt="" width="16" height="16" /><span>{#delete_avatar#}</span></a></p>
|
||||
<div>
|
||||
<button name="delete" value="{#delete_avatar#}">{#delete_avatar#}</button>
|
||||
<button type="button" name="close-form">{#close_window#}</button>
|
||||
</div>
|
||||
{/if}
|
||||
</form>
|
||||
</main>
|
||||
{elseif $upload}
|
||||
<h1>{#upload_avatar_hl#}</h1>
|
||||
<p>{#upload_avatar_notes#|replace:"[width]":$settings.avatar_max_width|replace:"[height]":$settings.avatar_max_width|replace:"[filesize]":$settings.avatar_max_filesize}</p>
|
||||
<header>
|
||||
<h1>{#upload_avatar_hl#}</h1>
|
||||
</header>
|
||||
<main>
|
||||
<p class="instruction">{#upload_avatar_notes#|replace:"[width]":$settings.avatar_max_width|replace:"[height]":$settings.avatar_max_width|replace:"[filesize]":$settings.avatar_max_filesize}</p>
|
||||
{if $errors}
|
||||
<p class="caution">{#error_headline#}</p>
|
||||
<ul>
|
||||
<div class="caution">
|
||||
<h2>{#error_headline#}</h2>
|
||||
<ul>
|
||||
{section name=mysec loop=$errors}
|
||||
<li>{assign var="error" value=$errors[mysec]}{$smarty.config.$error|replace:"[width]":$width|replace:"[height]":$height|replace:"[filesize]":$filesize|replace:"[max_width]":$max_width|replace:"[max_height]":$max_height|replace:"[max_filesize]":$max_filesize|replace:"[server_max_filesize]":$server_max_filesize}</li>
|
||||
<li>{assign var="error" value=$errors[mysec]}{$smarty.config.$error|replace:"[width]":$width|replace:"[height]":$height|replace:"[filesize]":$filesize|replace:"[max_width]":$max_width|replace:"[max_height]":$max_height|replace:"[max_filesize]":$max_filesize|replace:"[server_max_filesize]":$server_max_filesize}</li>
|
||||
{/section}
|
||||
</ul>
|
||||
</ul>
|
||||
</div>
|
||||
{/if}
|
||||
<form id="uploadform" action="index.php" method="post" enctype="multipart/form-data" accept-charset="{#charset#}">
|
||||
<div>
|
||||
<input type="hidden" name="mode" value="avatar" />
|
||||
<p><input type="file" name="probe" size="17" /></p>
|
||||
<p><input type="submit" name="" value="{#upload_image_button#}" onclick="document.getElementById('throbber-submit').style.visibility='visible'" /> <img id="throbber-submit" style="visibility:hidden;" src="{$THEMES_DIR}/{$settings.template}/images/throbber_submit.gif" alt="" width="16" height="16" /></p>
|
||||
</div>
|
||||
</form>
|
||||
<form id="uploadform" action="index.php" method="post" enctype="multipart/form-data" accept-charset="{#charset#}">
|
||||
<input type="hidden" name="mode" value="avatar" />
|
||||
<div>
|
||||
<input type="file" name="probe" size="17" />
|
||||
</div>
|
||||
<div class="buttonbar">
|
||||
<button name="upload_img" value="{#upload_image_button#}">{#upload_image_button#}</button>
|
||||
<button type="button" name="close-form">{#close_window#}</button>
|
||||
<img id="throbber-submit" class="invisible" src="{$THEMES_DIR}/{$theme}/images/throbber_submit.gif" alt="" width="16" height="16" />
|
||||
</div>
|
||||
</form>
|
||||
</main>
|
||||
{else}
|
||||
<p class="caution">{#avatars_disabled#}</p>
|
||||
<main>
|
||||
<div class="caution">
|
||||
<h2>{#avatars_disabled#}</h2>
|
||||
</div>
|
||||
</main>
|
||||
{/if}
|
||||
</body>
|
||||
</html>
|
||||
|
|
47
themes/default/images/database-no.svg
Normal file
47
themes/default/images/database-no.svg
Normal file
|
@ -0,0 +1,47 @@
|
|||
<?xml version="1.0" standalone="yes"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xhtml="http://www.w3.org/1999/xhtml" width="264" height="264" viewBox="0 0 264 264">
|
||||
<defs>
|
||||
<linearGradient id="cyl" x1="0%" y1="0%" x2="100%" y2="0%">
|
||||
<stop offset="0%" stop-color="#7f99b9" />
|
||||
<stop offset="46%" stop-color="#a2bfdf" />
|
||||
<stop offset="66%" stop-color="#bae8fa" />
|
||||
<stop offset="86%" stop-color="#a4c6ed" />
|
||||
<stop offset="100%" stop-color="#98bcde" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
#contour { fill: none; stroke-width: 5; stroke: #7894b2; }
|
||||
#frontcontour { fill: none; stroke-width: 3.5; stroke: #9abfe4; stroke-linecap: round; }
|
||||
#front { fill: url(#cyl); stroke: none; }
|
||||
#cross { stroke-width: 38; stroke: #f80800; stroke-linecap: round; }
|
||||
.gradient {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: repeating-conic-gradient(
|
||||
from -90deg,
|
||||
#8f9fbc 0deg,
|
||||
#a2bfdf 25.2deg,
|
||||
#bae8fa 60deg,
|
||||
#a4c6ed 94.8deg,
|
||||
#8f9fbc 180deg
|
||||
);
|
||||
}
|
||||
]]>
|
||||
</style>
|
||||
<symbol id="disc">
|
||||
<clipPath id="top">
|
||||
<path d="M 28 108 A 104 48 180 0 1 236 108 A 104 48 180 0 1 28 108 z" />
|
||||
</clipPath>
|
||||
<foreignObject x="0" y="60" width="264" height="100" clip-path="url(#top)">
|
||||
<xhtml:div class="gradient" />
|
||||
</foreignObject>
|
||||
<path id="front" d="M 28 108 A 104 48 180 0 0 236 108 l 0 40 A 104 48 180 0 1 28 148 z" />
|
||||
<path id="frontcontour" d="M 28 108 A 104 48 180 0 0 236 108" />
|
||||
<path id="contour" d="M 28 108 A 104 48 180 0 1 236 108 l 0 40 A 104 48 180 0 1 28 148 z" />
|
||||
</symbol>
|
||||
<use href="#disc" x="0" y="63" />
|
||||
<use href="#disc" x="0" y="3" />
|
||||
<use href="#disc" x="0" y="-57" />
|
||||
<path id="cross" d="M 32 32, 232 232 M 232 32, 32 232" />
|
||||
</svg>
|
After Width: | Height: | Size: 1.7 KiB |
45
themes/default/images/database.svg
Normal file
45
themes/default/images/database.svg
Normal file
|
@ -0,0 +1,45 @@
|
|||
<?xml version="1.0" standalone="yes"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xhtml="http://www.w3.org/1999/xhtml" width="264" height="264" viewBox="0 0 264 264">
|
||||
<defs>
|
||||
<linearGradient id="cyl" x1="0%" y1="0%" x2="100%" y2="0%">
|
||||
<stop offset="0%" stop-color="#7f99b9" />
|
||||
<stop offset="46%" stop-color="#a2bfdf" />
|
||||
<stop offset="66%" stop-color="#bae8fa" />
|
||||
<stop offset="86%" stop-color="#a4c6ed" />
|
||||
<stop offset="100%" stop-color="#98bcde" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
.contour { fill: none; stroke-width: 5; stroke: #7894b2; }
|
||||
.frontcontour { fill: none; stroke-width: 3.5; stroke: #9abfe4; stroke-linecap: round; }
|
||||
.front { fill: url(#cyl); stroke: none; }
|
||||
.gradient {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: repeating-conic-gradient(
|
||||
from -90deg,
|
||||
#8f9fbc 0deg,
|
||||
#a2bfdf 25.2deg,
|
||||
#bae8fa 60deg,
|
||||
#a4c6ed 94.8deg,
|
||||
#8f9fbc 180deg
|
||||
);
|
||||
}
|
||||
]]>
|
||||
</style>
|
||||
<symbol id="disc">
|
||||
<clipPath id="top">
|
||||
<path d="M 28 108 A 104 48 180 0 1 236 108 A 104 48 180 0 1 28 108 z" />
|
||||
</clipPath>
|
||||
<foreignObject x="0" y="60" width="264" height="100" clip-path="url(#top)">
|
||||
<xhtml:div class="gradient" />
|
||||
</foreignObject>
|
||||
<path class="front" d="M 28 108 A 104 48 180 0 0 236 108 l 0 40 A 104 48 180 0 1 28 148 z" />
|
||||
<path class="frontcontour" d="M 28 108 A 104 48 180 0 0 236 108" />
|
||||
<path class="contour" d="M 28 108 A 104 48 180 0 1 236 108 l 0 40 A 104 48 180 0 1 28 148 z" />
|
||||
</symbol>
|
||||
<use href="#disc" x="0" y="63" />
|
||||
<use href="#disc" x="0" y="3" />
|
||||
<use href="#disc" x="0" y="-57" />
|
||||
</svg>
|
After Width: | Height: | Size: 1.6 KiB |
11
themes/default/images/triangle-bottom.svg
Normal file
11
themes/default/images/triangle-bottom.svg
Normal file
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" standalone="yes"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128">
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
svg { background: transparent; }
|
||||
path { fill: #a8afbb; stroke-width: 10; stroke: #a8afbb; stroke-linejoin: round; }
|
||||
]]>
|
||||
</style>
|
||||
<path d="M 64,118 8,42 120,42 z" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 320 B |
11
themes/default/images/triangle-left.svg
Normal file
11
themes/default/images/triangle-left.svg
Normal file
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" standalone="yes"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128">
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
svg { background: transparent; }
|
||||
path { fill: #a8afbb; stroke-width: 10; stroke: #a8afbb; stroke-linejoin: round; }
|
||||
]]>
|
||||
</style>
|
||||
<path d="M10,64 86,120 86,8 z" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 318 B |
11
themes/default/images/triangle-right.svg
Normal file
11
themes/default/images/triangle-right.svg
Normal file
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" standalone="yes"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128">
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
svg { background: transparent; }
|
||||
path { fill: #a8afbb; stroke-width: 10; stroke: #a8afbb; stroke-linejoin: round; }
|
||||
]]>
|
||||
</style>
|
||||
<path d="M118,64 42,120 42,8 z" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 319 B |
11
themes/default/images/triangle-top.svg
Normal file
11
themes/default/images/triangle-top.svg
Normal file
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" standalone="yes"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128">
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
svg { background: transparent; }
|
||||
path { fill: #a8afbb; stroke-width: 10; stroke: #a8afbb; stroke-linejoin: round; }
|
||||
]]>
|
||||
</style>
|
||||
<path d="M 64,10 120,86 8,86 z" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 319 B |
File diff suppressed because it is too large
Load diff
191
themes/default/style.min.css
vendored
191
themes/default/style.min.css
vendored
|
@ -77,7 +77,7 @@ html[dir="rtl"] a.rss{background-position-x:calc(100% + 4px)}
|
|||
p.right a.rss{padding-inline-start:15px}
|
||||
input.small,select.small{font-family:verdana,arial,sans-serif;font-size:.82em}
|
||||
#content{margin:0;padding:1em;padding:1rem;line-height:1.5;background:#fff;flex:1;overflow:auto}
|
||||
#content p,#content ul,#content td{font-size:.82em;max-width:60em}
|
||||
#content p,#content ul,#content td,#postingform{font-size:.82em;max-width:60em}
|
||||
#content li,#content ul ul{font-size:1em}
|
||||
#content .xsmall{font-size:.69em;line-height:1.19em;color:gray;font-weight:400}
|
||||
#content .small{font-size:.69em;line-height:1.19em;font-weight:400}
|
||||
|
@ -95,15 +95,16 @@ html[dir="ltr"] #footermenu a.go-to-top-link{background:url(images/arrow_up.png)
|
|||
html[dir="rtl"] #footermenu a.go-to-top-link{background:url(images/arrow_up.png) no-repeat 100% 0 / auto 90%}
|
||||
#pbmlf{text-align:center;font-size:.69em;color:gray;grid-area:projectlink}
|
||||
#pbmlf a{color:gray;text-decoration:none}
|
||||
#main-grid{display:grid;grid-template-columns:1fr;grid-template-rows:auto auto;gap:.75em;grid-template-areas:"sidebar" "threadlist"}
|
||||
#main-grid{display:grid;grid-template-columns:calc(100vw - 2em);grid-template-rows:auto auto;gap:.75em;grid-template-areas:"sidebar" "threadlist"}
|
||||
#threadlist{grid-area:threadlist;}
|
||||
#sidebar{grid-area:sidebar;position:relative;margin:0;padding:0}
|
||||
#sidebar div{position:relative;z-index:2}
|
||||
#sidebarcontent div:not(:last-child){margin: 0 0 .75em 0}
|
||||
h2.sidebar{font-size:.82em;line-height:1.7em;font-weight:700;margin-block:0 .75em;margin-inline:0;padding-block:0;padding-inline:.375em 17px;background:#d2ddea;background:linear-gradient(to bottom, rgb(210, 222, 236) 0, rgb(237, 242, 245) 100%);border:1px solid #bacbdf;z-index:1}
|
||||
h2.sidebar a{color:#000;text-decoration:none;z-index:2}
|
||||
h2.sidebar{font-size:.82em;line-height:1.7;font-weight:bold;margin-block:0 .75em;margin-inline:0;padding:0;background:#d2ddea;background:linear-gradient(to bottom, rgb(210, 222, 236) 0, rgb(237, 242, 245) 100%);border:1px solid #bacbdf;z-index:1}
|
||||
h2.sidebar a{display:block;color:#000;padding-inline:1.625em .375em;background:url("images/triangle-top.svg") 0.375em calc(50% + .075em)/0.9em 0.9em no-repeat;text-decoration:none}
|
||||
.js-display-fold h2.sidebar a{background:url("images/triangle-bottom.svg") 0.375em calc(50% - .075em)/0.9em 0.9em no-repeat}
|
||||
h2.sidebar a:focus,h2.sidebar a:hover,h2.sidebar a:active{text-decoration:underline}
|
||||
.js-display-fold h2.sidebar {margin-block:0}
|
||||
#sidebartoggle{position:absolute;top:7px;inset-inline-end:4px;margin:0;padding:0;z-index:3}
|
||||
#sidebarcontent div h3{font-size:.82em;line-height:1.7;font-weight:400;margin:0;padding:0 .375em;background:#d2ddea;background:linear-gradient(to bottom, rgb(210, 222, 236) 0, rgb(237, 242, 245) 100%)}
|
||||
#latest-postings{background:#f9f9f9;border:1px solid #bacbdf;padding:0}
|
||||
#latest-postings a.hide-sidebar{position:absolute;top:2px;right:4px;margin:0;padding:0;line-height:11px}
|
||||
|
@ -243,7 +244,11 @@ span.userdata{margin:0;padding:0}
|
|||
.underline{text-decoration:underline}
|
||||
ins {font-style:italic}
|
||||
del,s {color:#555}
|
||||
label.main{font-weight:700}
|
||||
#card {border:1px solid #bacbdf;border-radius:.375em;padding-inline:.5em;padding-block:.5em;margin-inline:auto;min-width:16em;max-width:24em}
|
||||
#card > * {margin-inline: 0;margin-block:0 .75rem}
|
||||
#card > *:last-child {margin-block:0}
|
||||
#card form > *:not(:last-child) {margin-block:0 .375rem}
|
||||
label.main{font-weight:bold;display:block}
|
||||
label.active{color:#000}
|
||||
label.inactive{color:gray!important}
|
||||
label.inactive input{color:gray}
|
||||
|
@ -260,6 +265,7 @@ ul.filelist{list-style-type:none;padding-left:0;margin-left:0;font-size:.82em;li
|
|||
ul.filelist img{margin:0 5px -3px 0;padding:0}
|
||||
ul.thread span.mod,ul.thread span.admin,td span.admin,td span.mod{cursor:help}
|
||||
.registered_user::after{content:" \00AE"}
|
||||
.author-name{font-weight:bold}
|
||||
#captcha{margin:0;padding:0}
|
||||
#captcha p{font-size:1em}
|
||||
#captcha img,img.captcha{border:1px solid #000}
|
||||
|
@ -287,22 +293,26 @@ p.userdata{margin:0}
|
|||
.normalform{font-size:.82em;margin:0}
|
||||
.normalform:not(:first-child){margin:1em 0 0}
|
||||
.inline{display:inline}
|
||||
#postingform fieldset{border:none;margin:0 0 1em}
|
||||
#postingform p{font-size:1em;margin:0 0 5px;padding:0}
|
||||
#postingform label.input{display:block;float:left;float:inline-start;width:8em;font-weight:700}
|
||||
#postingform label.textarea{font-weight:700}
|
||||
#postingform input.checkbox{margin-left:8em}
|
||||
#postingform #insert-quote{margin:0 0 0 .5em;font-weight:400;font-size:.82em;padding:0 0 0 14px;background:url(images/quote_message.png) no-repeat left center transparent;border:none;color:#00c}
|
||||
#postingform fieldset{border:none;margin-inline:0;}
|
||||
#postingform fieldset:not(:last-child){margin-block:0 1em}
|
||||
#postingform fieldset > *{font-size:1em;margin:0;padding:0}
|
||||
#postingform fieldset > *:not(:last-child){margin-block-end:.75em}
|
||||
#postingform #sticky-selection{padding-inline:0;list-style:none}
|
||||
#postingform label.input{display:block;font-weight:700;margin-inline:0;margin-block:0 .25em}
|
||||
#postingform label.textarea{font-weight:700;margin-block:0 .25em; margin-inline:0}
|
||||
div#entry-input,#postingform input[type="text"],#postingform input[type="email"],#postingform input[type="url"],#postingform input[type="tel"]{max-width:calc(100vw - 4em)}
|
||||
#postingform #insert-quote{margin-block:0 .25em;margin-inline:.75em 0;font-weight:400;font-size:.82em;padding-block:0;padding-inline:14px 0;background:url(images/quote_message.png) no-repeat left center transparent;border:none;color:#00c}
|
||||
html[dir="rtl"] #postingform #insert-quote{background-position-x:right}
|
||||
#postingform #insert-quote:focus,#postingform #insert-quote:hover{color:#00f}
|
||||
#postingform #text{width:700px;height:400px;float:left;float:inline-start}
|
||||
#postingform #format-bar{margin-left:720px}
|
||||
#postingform{font-size:.82em}
|
||||
#postingform #text{margin:0;width:100%;height:24em}
|
||||
#postingform .small,#postingform .xsmall{font-size:.82em}
|
||||
#delete_cookie{font-size:.82em}
|
||||
#delete_cookie a{padding-left:13px;background:url(images/bg_sprite_3.png) no-repeat 0 -47px}
|
||||
#bbcode-bar{margin:0 0 10px;width:62px}
|
||||
#bbcode-bar button{width:62px;font-size:11px;margin:0 0 3px;padding:0}
|
||||
#bbcode-bar button span{line-height:1.4em}
|
||||
div#format-bar{margin:0 !important;padding:.375em;background:#f2f2f2}
|
||||
#postingform #format-bar > *{display:flex;flex-wrap:wrap;gap:.125em}
|
||||
#postingform #format-bar > *:not(:last-child){margin-block-end:.375em}
|
||||
#format-bar button{font-size:.82em;min-height:2.4em;margin:0;padding-block:.25em;padding-inline:1em}
|
||||
#format-bar button span{display:block;line-height:1.4em}
|
||||
#bbcodebutton-b span{font-weight:700}
|
||||
#bbcodebutton-i span{font-style:italic}
|
||||
#bbcodebutton-link span{color:#00c;text-decoration:underline}
|
||||
|
@ -322,19 +332,16 @@ p.userdata{margin:0}
|
|||
#bbcode-options table td{width:15px!important;height:15px!important;margin:0;padding:0}
|
||||
#bbcode-options table a{margin:0;padding:0;border:1px solid #bbb;width:15px;height:15px}
|
||||
#bbcode-options table a:focus,#bbcode-options table a:hover{border:1px solid #fff;text-decoration:none}
|
||||
#smiley-bar{width:70px}
|
||||
#smiley-bar button.default{margin:0 1px 1px 0;padding:0;width:30px}
|
||||
#smiley-bar button.default span{display:block;line-height:1px;margin:0;padding:0}
|
||||
#smiley-bar button.default img{margin:0;padding:0}
|
||||
#smiley-bar button.more-smilies{width:62px;font-size:11px;margin:0 0 3px;padding:0}
|
||||
#smiley-bar button span{line-height:1.4em}
|
||||
#additional-smilies{border:none!important;margin:0;padding:7px 0 0 7px !important;max-width:200px}
|
||||
#additional-smilies img{margin:0 7px 7px 0}
|
||||
#bbcode-instructions{margin:0;padding:0;font-size:.82em}
|
||||
#bbcode-instructions dt{font-weight:700}
|
||||
#bbcode-instructions dd{margin-left:0}
|
||||
#smiley-instructions dt{float:left;float:inline-start}
|
||||
#smiley-instructions dd{clear:right;clear:inline-end}
|
||||
#additional-smilies{max-width:200px;display:flex;flex-wrap:wrap;align-items:self-start;align-content:stretch;gap:.125em}
|
||||
#additional-smilies button{font-size:.82em;min-height:2.4em;margin:0;padding-block:.25em;padding-inline:1em;background:transparent;border:none}
|
||||
#smiley-bar button img,#additional-smilies button img{display:block;width:1.2em;height:auto;margin:0;padding:0}
|
||||
#formatting-help > *{margin-block:0 .75em;margin-block:0 .75rem;padding:0}
|
||||
#formatting-help dl > div:not(:last-child){margin-block:0 .375em}
|
||||
#formatting-help dt{font-weight:bold}
|
||||
#formatting-help dd{margin-left:0}
|
||||
#formatting-help dd img{display:block}
|
||||
#smiley-instructions div{display:flex;gap:.5em}
|
||||
#smiley-instructions dt{flex:0 0 6em}
|
||||
button.insert-smiley{margin:0;padding:0;font-size:11px;font-weight:400}
|
||||
#smilies li{display:inline-block;min-width:50px;padding:0 10px 10px 0;white-space:nowrap}
|
||||
ul.pagination{margin:.75em 0;padding:0;list-style-type:none}
|
||||
|
@ -343,12 +350,6 @@ ul.pagination{margin:.75em 0;padding:0;list-style-type:none}
|
|||
ul.pagination a,ul.pagination span{border:1px solid #bacbdf;background:#f9f9f9;padding:1px 6px}
|
||||
ul.pagination a:focus,ul.pagination a:hover{border:1px solid #00c;background:#efefef;text-decoration:none}
|
||||
ul.pagination .current{border:1px solid #bacbdf;color:red;font-weight:700}
|
||||
#more-smilies{position:absolute;width:200px;background:#ffc;border:1px solid silver;display:none}
|
||||
#more-smilies .close{position:absolute;top:0;right:0;padding:0}
|
||||
#more-smilies-body{overflow:auto}
|
||||
#more-smilies-content{max-height:300px}
|
||||
#more-smilies-content p{padding:10px}
|
||||
#more-smilies-content img{padding:5px}
|
||||
#colorpicker{position:absolute;background:#bbb;border:1px solid #bbb;display:none}
|
||||
#colorpicker table{margin:0;padding:0;line-height:10px}
|
||||
#colorpicker table img{margin:0;padding:0;border:1px solid #bbb}
|
||||
|
@ -361,8 +362,10 @@ ul.pagination .current{border:1px solid #bacbdf;color:red;font-weight:700}
|
|||
#codepicker ul{list-style-type:none;margin:0;padding:0}
|
||||
#codepicker ul a{color:#000;display:block;text-decoration:none;padding:1px 5px}
|
||||
#codepicker ul a:focus,#codepicker ul a:hover{background:#e0e0e0}
|
||||
.buttonbar{display:flex; flex-wrap:wrap; gap:.3em}
|
||||
.buttonbar{display:flex; flex-wrap:wrap; gap:.3em;align-items:baseline}
|
||||
.buttonbar > *{margin-block:0}
|
||||
.buttonbar button{padding:.3em}
|
||||
.buttonbar a{display:inline-block;text-align:center;align-content:center;padding:.3em}
|
||||
#admin-main-menu{display:grid;grid-template-areas:"infoboxes" "mainmenu";grid-template-columns:1fr;grid-template-rows:auto auto;gap:.75em}
|
||||
#admin-main-menu > *{margin:0;padding:0}
|
||||
.additional-admin-info{grid-area:infoboxes}
|
||||
|
@ -384,79 +387,61 @@ main > .adminmenu{margin-block:1em;margin-inline:0;padding:0}
|
|||
h2#admin_header{margin:0 0 .5em 0}
|
||||
.manage-postings{border:1px solid #bacbdf;margin-top:25px;background:#f9f9f9}
|
||||
.manage-postings legend{font-size:.82em;font-weight:700}
|
||||
ul#uploadlist{list-style:none;margin:0;padding:0;max-width:100%;display:flex;flex-wrap:wrap;gap:.75em}
|
||||
#uploadlist li{width:18.5em;margin:0;padding:0;border:1px solid #bacbdf;background:#f9f9f9}
|
||||
ul#uploadlist{list-style:none;margin-inline:0;margin-block:0 .75em;padding:0;max-width:100%;display:flex;flex-wrap:wrap;gap:.75em}
|
||||
#uploadlist > li{width:18.5em;margin:0;padding:0;border:1px solid #bacbdf;background:#f9f9f9}
|
||||
#uploadlist .image_container{padding:.5em;height:21.5em;width:100%;margin:0 0 .25em 0;text-align:center}
|
||||
#uploadlist img{max-width:100%;max-height:100%}
|
||||
#uploadlist .management_container{margin:0;padding:.25em 0}
|
||||
#uploadlist .management_container{margin:0;padding:.25em 0;list-style:none}
|
||||
#uploadlist .management_container > li{margin:0;padding-block:.125em;padding-inline:.25em}
|
||||
#uploadlist .management_container input{margin:0 .125em}
|
||||
#uploadlist + p{margin-block:.75em 1em}
|
||||
#uploadlist .information{display:flex;}
|
||||
#uploadlist .information > img{display:block;}
|
||||
.confirm-selection{list-style:none;padding:0;border-top:1px solid #bacbdf}
|
||||
.confirm-selection li{min-height:2.5em;margin:0 0 .25em 0;padding:.25em .5em;border-bottom:1px solid #bacbdf}
|
||||
.confirm-selection .item{margin:0 0 .25em 0}
|
||||
.confirm-selection .info{font-weight:bold;margin:0}
|
||||
a.thread,a.thread:link{padding-inline-start:18px;color:#00c;text-decoration:none;font-weight:700;background:url(images/bg_sprite_1.png) no-repeat 0 -148px}
|
||||
html[dir="rtl"] a.thread,html[dir="rtl"] a.thread:link{background:url(images/bg_sprite_1.png) no-repeat 100% -148px}
|
||||
a.thread:visited{color:#007}
|
||||
a.thread:focus,a.thread:hover{color:#00f;text-decoration:underline}
|
||||
a.thread:active{color:red}
|
||||
a.thread-sticky,a.thread-sticky:link{padding-inline-start:18px;color:#00c;text-decoration:none;font-weight:700;background:url(images/bg_sprite_1.png) no-repeat 0 -250px}
|
||||
html[dir="rtl"] a.thread-sticky,html[dir="rtl"] a.thread-sticky:link{background:url(images/bg_sprite_1.png) no-repeat 100% -250px}
|
||||
a.thread-sticky:visited{color:#007}
|
||||
a.thread-sticky:focus,a.thread-sticky:hover{color:#00f;text-decoration:underline}
|
||||
a.thread-sticky:active{color:red}
|
||||
a.thread-sticky-locked,a.thread-sticky-locked:link{padding-inline-start:18px;color:#00c;text-decoration:none;font-weight:700;background:url(images/bg_sprite_1.png) no-repeat 0 -1210px}
|
||||
html[dir="rtl"] a.thread-sticky-locked,html[dir="rtl"] a.thread-sticky-locked:link{background:url(images/bg_sprite_1.png) no-repeat 100% -1210px}
|
||||
a.thread-sticky-locked:visited{color:#007}
|
||||
a.thread-sticky-locked:focus,a.thread-sticky-locked:hover{color:#00f;text-decoration:underline}
|
||||
a.thread-sticky-locked:active{color:red}
|
||||
a.thread-locked,a.thread-locked:link{padding-inline-start:18px;color:#00c;text-decoration:none;font-weight:700;background:url(images/bg_sprite_1.png) no-repeat 0 -1109px}
|
||||
html[dir="rtl"] a.thread-locked,html[dir="rtl"] a.thread-locked:link{background:url(images/bg_sprite_1.png) no-repeat 100% -1109px}
|
||||
a.thread-locked:visited{color:#007}
|
||||
a.thread-locked:focus,a.thread-locked:hover{color:#00f;text-decoration:underline}
|
||||
a.thread-locked:active{color:red}
|
||||
a.threadnew-sticky,a.threadnew-sticky:link{padding-inline-start:18px;color:#00c;text-decoration:none;font-weight:700;background:url(images/bg_sprite_1.png) no-repeat 0 -300px}
|
||||
html[dir="rtl"] a.threadnew-sticky,html[dir="rtl"] a.threadnew-sticky:link{background:url(images/bg_sprite_1.png) no-repeat 100% -300px}
|
||||
a.threadnew-sticky:visited{color:#007}
|
||||
a.threadnew-sticky:focus,a.threadnew-sticky:hover{color:#00f;text-decoration:underline}
|
||||
a.threadnew-sticky:active{color:red}
|
||||
a.threadnew-sticky-locked,a.threadnew-sticky-locked:link{padding-inline-start:18px;color:#00c;text-decoration:none;font-weight:700;background:url(images/bg_sprite_1.png) no-repeat 0 -1260px}
|
||||
html[dir="rtl"] a.threadnew-sticky-locked,html[dir="rtl"] a.threadnew-sticky-locked:link{background:url(images/bg_sprite_1.png) no-repeat 100% -1260px}
|
||||
a.threadnew-sticky-locked:visited{color:#007}
|
||||
a.threadnew-sticky-locked:focus,a.threadnew-sticky-locked:hover{color:#00f;text-decoration:underline}
|
||||
a.threadnew-sticky-locked:active{color:red}
|
||||
a.threadnew-locked,a.threadnew-locked:link{padding-inline-start:18px;color:#00c;text-decoration:none;font-weight:700;background:url(images/bg_sprite_1.png) no-repeat 0 -1160px}
|
||||
html[dir="rtl"] a.threadnew-locked,html[dir="rtl"] a.threadnew-locked:link{background:url(images/bg_sprite_1.png) no-repeat 100% -1160px}
|
||||
a.threadnew-locked:visited{color:#007}
|
||||
a.threadnew-locked:focus,a.threadnew-locked:hover{color:#00f;text-decoration:underline}
|
||||
a.threadnew-locked:active{color:red}
|
||||
a.threadnew,a.threadnew:link{padding-inline-start:18px;color:#00c;text-decoration:none;font-weight:700;background:url(images/bg_sprite_1.png) no-repeat 0 -198px}
|
||||
html[dir="rtl"] a.threadnew,html[dir="rtl"] a.threadnew:link{background:url(images/bg_sprite_1.png) no-repeat 100% -198px}
|
||||
a.threadnew:visited{color:#007}
|
||||
a.threadnew:focus,a.threadnew:hover{color:#00f;text-decoration:underline}
|
||||
a.threadnew:active{color:red}
|
||||
a.reply,a.reply:link{padding-inline-start:16px;color:#00c;text-decoration:none;font-weight:400;background:url(images/bg_sprite_1.png) no-repeat 0 -348px}
|
||||
html[dir="rtl"] a.reply,html[dir="rtl"] a.reply:link{background:url(images/bg_sprite_1.png) no-repeat 100% -1408px}
|
||||
a.reply:visited{color:#007}
|
||||
a.reply:focus,a.reply:hover{color:#00f;text-decoration:underline}
|
||||
a.reply:active{color:red}
|
||||
a.replynew,a.replynew:link{padding-inline-start:16px;color:#00c;text-decoration:none;font-weight:400;background:url(images/bg_sprite_1.png) no-repeat 0 -398px}
|
||||
html[dir="rtl"] a.replynew,html[dir="rtl"] a.replynew:link{background:url(images/bg_sprite_1.png) no-repeat 100% -1458px}
|
||||
a.replynew:visited{color:#007}
|
||||
a.replynew:focus,a.replynew:hover{color:#00f;text-decoration:underline}
|
||||
a.replynew:active{color:red}
|
||||
span.subject,a.subject,a.subject:link{text-decoration:none;font-weight:bold}
|
||||
a.subject,a.subject:link{color:#00c}
|
||||
a.subject:visited{color:#007}
|
||||
a.subject:focus,a.subject:hover{color:#00f;text-decoration:underline}
|
||||
a.subject:active{color:red}
|
||||
a.thread,a.thread:link{padding-inline-start:18px;background:url(images/bg_sprite_1.png) no-repeat 0 -148px}
|
||||
html[dir="rtl"] a.thread,html[dir="rtl"] a.thread:link{background-position-x:100%}
|
||||
a.thread-sticky,a.thread-sticky:link{padding-inline-start:18px;background:url(images/bg_sprite_1.png) no-repeat 0 -250px}
|
||||
html[dir="rtl"] a.thread-sticky,html[dir="rtl"] a.thread-sticky:link{background-position-x:100%}
|
||||
a.thread-sticky-locked,a.thread-sticky-locked:link{padding-inline-start:18px;background:url(images/bg_sprite_1.png) no-repeat 0 -1210px}
|
||||
html[dir="rtl"] a.thread-sticky-locked,html[dir="rtl"] a.thread-sticky-locked:link{background-position-x:100%}
|
||||
a.thread-locked,a.thread-locked:link{padding-inline-start:18px;background:url(images/bg_sprite_1.png) no-repeat 0 -1109px}
|
||||
html[dir="rtl"] a.thread-locked,html[dir="rtl"] a.thread-locked:link{background-position-x:100%}
|
||||
a.threadnew-sticky,a.threadnew-sticky:link{padding-inline-start:18px;background:url(images/bg_sprite_1.png) no-repeat 0 -300px}
|
||||
html[dir="rtl"] a.threadnew-sticky,html[dir="rtl"] a.threadnew-sticky:link{background-position-x:100%}
|
||||
a.threadnew-sticky-locked,a.threadnew-sticky-locked:link{padding-inline-start:18px;background:url(images/bg_sprite_1.png) no-repeat 0 -1260px}
|
||||
html[dir="rtl"] a.threadnew-sticky-locked,html[dir="rtl"] a.threadnew-sticky-locked:link{background-position-x:100%}
|
||||
a.threadnew-locked,a.threadnew-locked:link{padding-inline-start:18px;background:url(images/bg_sprite_1.png) no-repeat 0 -1160px}
|
||||
html[dir="rtl"] a.threadnew-locked,html[dir="rtl"] a.threadnew-locked:link{background-position-x:100%}
|
||||
a.threadnew,a.threadnew:link{padding-inline-start:18px;background:url(images/bg_sprite_1.png) no-repeat 0 -198px}
|
||||
html[dir="rtl"] a.threadnew,html[dir="rtl"] a.threadnew:link{background-position-x:100%}
|
||||
a.reply,a.reply:link{padding-inline-start:16px;font-weight:normal;background:url(images/bg_sprite_1.png) no-repeat 0 -348px}
|
||||
html[dir="rtl"] a.reply,html[dir="rtl"] a.reply:link{background-position:100% -1408px}
|
||||
a.replynew,a.replynew:link{padding-inline-start:16px;font-weight:normal;background:url(images/bg_sprite_1.png) no-repeat 0 -398px}
|
||||
html[dir="rtl"] a.replynew,html[dir="rtl"] a.replynew:link{background-position:100% -1458px}
|
||||
a.read,a.read:link,a.read:visited,#latest-postings li a span.read{color:#007}
|
||||
a.read:focus,a.read:hover{color:#00f}
|
||||
a.read:active{color:red}
|
||||
.currentthread{padding-inline-start:18px;color:red;font-weight:700;background:url(images/bg_sprite_1.png) no-repeat 0 -148px}
|
||||
html[dir="rtl"] .currentthread{background:url(images/bg_sprite_1.png) no-repeat 100% -148px}
|
||||
.currentthreadnew{padding-inline-start:18px;color:red;font-weight:700;background:url(images/bg_sprite_1.png) no-repeat 0 -198px}
|
||||
html[dir="rtl"] .currentthreadnew{background:url(images/bg_sprite_1.png) no-repeat 100% -198px}
|
||||
.currentreply{padding-inline-start:16px;color:red;font-weight:700;background:url(images/bg_sprite_1.png) no-repeat 0 -348px}
|
||||
html[dir="rtl"] .currentreply{background:url(images/bg_sprite_1.png) no-repeat 100% -1408px}
|
||||
.currentreplynew{padding-inline-start:16px;color:red;font-weight:700;background:url(images/bg_sprite_1.png) no-repeat 0 -398px}
|
||||
html[dir="rtl"] .currentreplynew{background:url(images/bg_sprite_1.png) no-repeat 100% -1458px}
|
||||
ul.thread li > a,ul.thread li .currentreply,ul.thread li > .metadata{text-wrap:nowrap}
|
||||
main:not(:has(table#threadlist)) ul.thread li > a::after{content:" - "}
|
||||
.currentthread,.currentthreadnew,.currentreply,.currentreplynew{color:#ff0000;font-weight:bold}
|
||||
.currentthread{padding-inline-start:18px;background:url(images/bg_sprite_1.png) no-repeat 0 -148px}
|
||||
html[dir="rtl"] .currentthread{background-position-x:100%}
|
||||
.currentthreadnew{padding-inline-start:18px;background:url(images/bg_sprite_1.png) no-repeat 0 -198px}
|
||||
html[dir="rtl"] .currentthreadnew{background-position-x:100%}
|
||||
.currentreply{padding-inline-start:16px;background:url(images/bg_sprite_1.png) no-repeat 0 -348px}
|
||||
html[dir="rtl"] .currentreply{background-position:100% -1408px}
|
||||
.currentreplynew{padding-inline-start:16px;background:url(images/bg_sprite_1.png) no-repeat 0 -398px}
|
||||
html[dir="rtl"] .currentreplynew{background-position:100% -1458px}
|
||||
a.internal,a.internal:link{padding-inline-start:18px;color:#00c;text-decoration:none;background:url(images/bg_sprite_1.png) no-repeat 0 -148px}
|
||||
html[dir="rtl"] a.internal,html[dir="rtl"] a.internal:link{background:url(images/bg_sprite_1.png) no-repeat 100% -148px}
|
||||
html[dir="rtl"] a.internal,html[dir="rtl"] a.internal:link{background-position-x:100%}
|
||||
a.internal:focus,a.internal:hover{color:#00f;text-decoration:underline}
|
||||
a.internal:active{color:red}
|
||||
ul.thread{margin:0 0 1.5em;padding:0;list-style-type:none;max-width:100%!important}
|
||||
|
@ -522,7 +507,7 @@ img.right{float:right;float:inline-end;margin:0 0 10px 10px}
|
|||
.js-cursor-move{cursor:move}
|
||||
.js-display-fold .wrapper,.js-display-fold #sidebarcontent{display:none}
|
||||
.js-display-fold img.avatar{width:1.6em;height:1.6em}
|
||||
form p.hp{display:none}
|
||||
form .hp{display:none}
|
||||
@media screen and (min-width:38em) {
|
||||
#top {flex-direction:row;justify-content:space-between}
|
||||
#usermenu{justify-content:flex-end}
|
||||
|
@ -532,6 +517,10 @@ form p.hp{display:none}
|
|||
#admin-main-menu{grid-template-areas:"infoboxes mainmenu";grid-template-columns:18em auto;grid-template-rows:auto}
|
||||
#main-grid.threaded {grid-template-areas:"threadlist sidebar";grid-template-columns:auto 18em;grid-template-rows:auto}
|
||||
#main-grid.threaded:has(div.js-display-fold){grid-template-columns:auto 8.5em}
|
||||
h2.sidebar a{padding-inline:1.25em .375em;background:url("images/triangle-right.svg") 0.175em center/0.9em 0.9em no-repeat}
|
||||
.js-display-fold h2.sidebar a{background:url("images/triangle-left.svg") 0.325em center/0.9em 0.9em no-repeat}
|
||||
html[dir="rtl"] h2.sidebar a{background:url("images/triangle-left.svg") calc(100% - 0.175em) center/0.9em 0.9em no-repeat}
|
||||
html[dir="rtl"] .js-display-fold h2.sidebar a{background:url("images/triangle-right.svg") calc(100% - 0.175em) center/0.9em 0.9em no-repeat}
|
||||
}
|
||||
@media screen and (min-width:48em) {
|
||||
#logo h1{font-size:1.6em}
|
||||
|
|
|
@ -427,7 +427,7 @@
|
|||
{cycle values="a,b" assign=c}
|
||||
<tr class="{$c}">
|
||||
<td style="width:10px;"><input type="checkbox" name="selected[]" value="{$userdata[row].user_id}" /></td>
|
||||
<td>{if $userdata[row].inactive}<span title="{#user_inactive#}" style="font-weight:bold;color:red;">{$userdata[row].user_name}</span>{else}<a href="index.php?mode=user&show_user={$userdata[row].user_id}" title="{#show_userdata_linktitle#|replace:"[user]":$userdata[row].user_name}"><strong>{$userdata[row].user_name}</strong></a>{/if}</td>
|
||||
<td>{if $userdata[row].inactive}<span class="author-name inactive-user" title="{#user_inactive#}">{$userdata[row].user_name}</span>{else}<a href="index.php?mode=user&show_user={$userdata[row].user_id}" title="{#show_userdata_linktitle#|replace:"[user]":$userdata[row].user_name}"><span class="author-name">{$userdata[row].user_name}</span></a>{/if}</td>
|
||||
<td><span class="small"><a href="mailto:{$userdata[row].user_email}" title="{#mailto_user_lt#|replace:"[user]":$userdata[row].user_name}">{$userdata[row].user_email}</a></span></td>
|
||||
<td><span class="small">{if $userdata[row].user_type==2}{#admin#}{elseif $userdata[row].user_type==1}{#mod#}{else}{#user#}{/if}</span></td>
|
||||
<td><span class="small">{$userdata[row].registered_time}</span></td>
|
||||
|
@ -647,7 +647,7 @@
|
|||
<p><label for="ar_email" class="main">{#register_email#}</label><br />
|
||||
<input id="ar_email" type="text" size="25" name="ar_email" value="{$ar_email|default:''}" maxlength="{$settings.email_maxlength}" /></p>
|
||||
<p><label for="ar_pw" class="main">{#register_pw#}</label><br />
|
||||
<input id="ar_pw" type="password" spellcheck="false" autocomplete="off" size="25" name="ar_pw" maxlength="50" /></p>
|
||||
<input id="ar_pw" type="password" spellcheck="false" autocomplete="off" writingsuggestions="false" size="25" name="ar_pw" maxlength="50" /></p>
|
||||
<p><input id="ar_send_userdata" type="checkbox" name="ar_send_userdata" value="true"{if $ar_send_userdata} checked="checked"{/if} /> <label for="ar_send_userdata">{#register_send_userdata#}</label></p>
|
||||
<p><input type="submit" name="register_submit" value="{#submit_button_ok#}" /></p>
|
||||
</div>
|
||||
|
@ -832,7 +832,7 @@
|
|||
<p><input id="delete_postings" type="checkbox" name="delete_postings" value="true" /><label for="delete_postings"> {#delete_postings#}</label></p>
|
||||
<p><input id="delete_userdata" type="checkbox" name="delete_userdata" value="true" /><label for="delete_userdata"> {#delete_userdata#}</label></p>
|
||||
<p>{#admin_confirm_password#}<br />
|
||||
<input type="password" spellcheck="false" autocomplete="off" size="20" name="confirm_pw" /> <input type="submit" name="reset_forum_confirmed" value="{#reset_forum_submit#}" /></p>
|
||||
<input type="password" spellcheck="false" autocomplete="off" writingsuggestions="false" size="20" name="confirm_pw" /> <input type="submit" name="reset_forum_confirmed" value="{#reset_forum_submit#}" /></p>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
|
@ -845,7 +845,7 @@
|
|||
<input type="hidden" name="mode" value="admin" />
|
||||
<input type="hidden" name="csrf_token" value="{$CSRF_TOKEN}" />
|
||||
<p>{#reset_uninstall_conf_pw#}<br />
|
||||
<input type="password" spellcheck="false" autocomplete="off" size="20" name="confirm_pw" /> <input type="submit" name="uninstall_forum_confirmed" value="{#uninstall_forum_submit#}" /></p>
|
||||
<input type="password" spellcheck="false" autocomplete="off" writingsuggestions="false" size="20" name="confirm_pw" /> <input type="submit" name="uninstall_forum_confirmed" value="{#uninstall_forum_submit#}" /></p>
|
||||
</div>
|
||||
</form>
|
||||
{elseif $action=='update'}
|
||||
|
@ -881,7 +881,7 @@
|
|||
<input type="hidden" name="mode" value="admin" />
|
||||
<input type="hidden" name="update_file_submit" value="{$update_file}" />
|
||||
<input type="hidden" name="csrf_token" value="{$CSRF_TOKEN}" />
|
||||
<p>{#admin_confirm_password#}<br /><input type="password" name="update_password" spellcheck="false" autocomplete="off" size="25"/></p>
|
||||
<p>{#admin_confirm_password#}<br /><input type="password" name="update_password" spellcheck="false" autocomplete="off" writingsuggestions="false" size="25"/></p>
|
||||
<p><input type="submit" name="update_submit" value="{#update_submit#}" onclick="document.getElementById('throbber-submit').style.visibility = 'visible';" /> <img id="throbber-submit" style="visibility:hidden;" src="{$THEMES_DIR}/{$theme}/images/throbber_submit.gif" alt="" width="16" height="16" /></p>
|
||||
</div>
|
||||
</form>
|
||||
|
@ -905,7 +905,7 @@
|
|||
{/foreach}
|
||||
</ul>
|
||||
{/if}
|
||||
<p>{#update_reenable_notice#}</p>
|
||||
<p>{#update_reenabling_notice#}</p>
|
||||
{if $update_download_url}<p class="small">{#update_download#|replace:"[[":"<a href=\"$update_download_url\">"|replace:"]]":"</a>"}</p>{/if}
|
||||
{if $update_message}{$update_message}{/if}
|
||||
{elseif $action == 'email_list'}
|
||||
|
@ -1047,37 +1047,59 @@
|
|||
|
||||
{elseif $action=='list_uploads'}
|
||||
<h2 id="admin_header">{#upload_administration#}</h2>
|
||||
{if $images}
|
||||
|
||||
<div>
|
||||
<form action="index.php" method="get" accept-charset="{#charset#}">
|
||||
<input type="hidden" name="mode" value="admin" />
|
||||
<input type="hidden" name="action" value="list_uploads" />
|
||||
<div>
|
||||
<button name="filter" value="not-managed-images">{#upload_filter_not_managed_images#}</button>
|
||||
<button name="filter" value="managed-images">{#upload_filter_managed_images#}</button>
|
||||
<button name="filter" value="all-images" class="active-filter">{#upload_filter_all_images#}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
{if $images}
|
||||
{if $pagination}
|
||||
<ul class="pagination">
|
||||
{if $pagination.previous}<li><a href="index.php?mode={$mode}{if $action}&action={$action}{/if}{if $search_user_encoded}&search_user={$search_user_encoded}{/if}{if $method && $method!='fulltext'}&method={$method}{/if}{if $id}&id={$id}{/if}{if $pagination.previous>1}&page={$pagination.previous}{/if}{if $p_category && $p_category>0}&p_category={$p_category}{/if}{if $order}&order={$order}{/if}{if $descasc}&descasc={$descasc}{/if}" title="{#previous_page_link_title#}">{#previous_page_link#}</a></li>{/if}
|
||||
{if $pagination.previous}<li><a href="index.php?mode={$mode}{if $action}&action={$action}{/if}{if $search_user_encoded}&search_user={$search_user_encoded}{/if}{if $method && $method!='fulltext'}&method={$method}{/if}{if $id}&id={$id}{/if}{if $pagination.previous>1}&page={$pagination.previous}{/if}{if $p_category && $p_category>0}&p_category={$p_category}{/if}{if $order}&order={$order}{/if}{if $descasc}&descasc={$descasc}{/if}{if $filter}&filter={$filter}{/if}" title="{#previous_page_link_title#}">{#previous_page_link#}</a></li>{/if}
|
||||
{foreach from=$pagination.items item=item}
|
||||
{if $item==0}<li>…</li>{elseif $item==$pagination.current}<li><span class="current">{$item}</span></li>{else}<li><a href="index.php?mode={$mode}{if $action}&action={$action}{/if}{if $search_user_encoded}&search_user={$search_user_encoded}{/if}{if $method && $method!='fulltext'}&method={$method}{/if}{if $id}&id={$id}{/if}&page={$item}{if $p_category && $p_category>0}&p_category={$p_category}{/if}{if $order}&order={$order}{/if}{if $descasc}&descasc={$descasc}{/if}">{$item}</a></li>{/if}
|
||||
{if $item==0}<li>…</li>{elseif $item==$pagination.current}<li><span class="current">{$item}</span></li>{else}<li><a href="index.php?mode={$mode}{if $action}&action={$action}{/if}{if $search_user_encoded}&search_user={$search_user_encoded}{/if}{if $method && $method!='fulltext'}&method={$method}{/if}{if $id}&id={$id}{/if}&page={$item}{if $p_category && $p_category>0}&p_category={$p_category}{/if}{if $order}&order={$order}{/if}{if $descasc}&descasc={$descasc}{/if}{if $filter}&filter={$filter}{/if}">{$item}</a></li>{/if}
|
||||
{/foreach}
|
||||
{if $pagination.next}<li><a href="index.php?mode={$mode}{if $action}&action={$action}{/if}{if $search_user_encoded}&search_user={$search_user_encoded}{/if}{if $method && $method!='fulltext'}&method={$method}{/if}{if $id}&id={$id}{/if}&page={$pagination.next}{if $p_category && $p_category>0}&p_category={$p_category}{/if}{if $order}&order={$order}{/if}{if $descasc}&descasc={$descasc}{/if}" title="{#next_page_link_title#}">{#next_page_link#}</a></li>{/if}
|
||||
{if $pagination.next}<li><a href="index.php?mode={$mode}{if $action}&action={$action}{/if}{if $search_user_encoded}&search_user={$search_user_encoded}{/if}{if $method && $method!='fulltext'}&method={$method}{/if}{if $id}&id={$id}{/if}&page={$pagination.next}{if $p_category && $p_category>0}&p_category={$p_category}{/if}{if $order}&order={$order}{/if}{if $descasc}&descasc={$descasc}{/if}{if $filter}&filter={$filter}{/if}" title="{#next_page_link_title#}">{#next_page_link#}</a></li>{/if}
|
||||
</ul>
|
||||
{/if}
|
||||
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<input type="hidden" name="mode" value="admin" />
|
||||
<input type="hidden" name="csrf_token" value="{$CSRF_TOKEN}" />
|
||||
{if $filter}
|
||||
<input type="hidden" name="filter" value="{$filter}" />
|
||||
{/if}
|
||||
<ul id="uploadlist">
|
||||
{section name=nr loop=$images start=$start max=$images_per_page}
|
||||
<li><p class="image_container"><img src="images/uploaded/{$images[nr]}" alt="{$images[nr]}" /></p>
|
||||
<p class="management_container"><input type="checkbox" id="{$images[nr]}" name="uploads_remove[]" value="{$images[nr]}" /><label for="{$images[nr]}">{#mark_upload_for_removal#}</label></p></li>
|
||||
<li>
|
||||
<p class="image_container"><img src="images/uploaded/{$images[nr].pathname}" alt="{$images[nr].pathname}" /></p>
|
||||
<ul class="management_container">
|
||||
<li class="information">{if $images[nr].status == 1}<img src="themes/{$settings.theme}/images/database.svg" alt="{#upload_database_entry_alt#}" width="16" height="16">{else}<img src="themes/{$settings.theme}/images/database-no.svg" alt="{#upload_database_no_entry_alt#}" width="16" height="16">{/if}</li>
|
||||
<li><input type="checkbox" id="id-{$images[nr].number}" name="manage_uploads[]" value="{$images[nr].pathname}" /><label for="id-{$images[nr].number}">{#mark_upload_for_managing#}</label></li>
|
||||
</ul>
|
||||
</li>
|
||||
{/section}
|
||||
</ul>
|
||||
<p><input type="submit" name="delete_selected_uploads" value="{#delete#}" /></p>
|
||||
<div>
|
||||
<button name="record_selected_uploads" value="record">{#upload_add_db_entry_button#}</button>
|
||||
<button name="delete_selected_uploads" value="{#delete#}">{#delete#}</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
{if $pagination}
|
||||
<ul class="pagination">
|
||||
{if $pagination.previous}<li><a href="index.php?mode={$mode}{if $action}&action={$action}{/if}{if $search_user_encoded}&search_user={$search_user_encoded}{/if}{if $method && $method!='fulltext'}&method={$method}{/if}{if $id}&id={$id}{/if}{if $pagination.previous>1}&page={$pagination.previous}{/if}{if $p_category && $p_category>0}&p_category={$p_category}{/if}{if $order}&order={$order}{/if}{if $descasc}&descasc={$descasc}{/if}" title="{#previous_page_link_title#}">{#previous_page_link#}</a></li>{/if}
|
||||
{if $pagination.previous}<li><a href="index.php?mode={$mode}{if $action}&action={$action}{/if}{if $search_user_encoded}&search_user={$search_user_encoded}{/if}{if $method && $method!='fulltext'}&method={$method}{/if}{if $id}&id={$id}{/if}{if $pagination.previous>1}&page={$pagination.previous}{/if}{if $p_category && $p_category>0}&p_category={$p_category}{/if}{if $order}&order={$order}{/if}{if $descasc}&descasc={$descasc}{/if}{if $filter}&filter={$filter}{/if}" title="{#previous_page_link_title#}">{#previous_page_link#}</a></li>{/if}
|
||||
{foreach from=$pagination.items item=item}
|
||||
{if $item==0}<li>…</li>{elseif $item==$pagination.current}<li><span class="current">{$item}</span></li>{else}<li><a href="index.php?mode={$mode}{if $action}&action={$action}{/if}{if $search_user_encoded}&search_user={$search_user_encoded}{/if}{if $method && $method!='fulltext'}&method={$method}{/if}{if $id}&id={$id}{/if}&page={$item}{if $p_category && $p_category>0}&p_category={$p_category}{/if}{if $order}&order={$order}{/if}{if $descasc}&descasc={$descasc}{/if}">{$item}</a></li>{/if}
|
||||
{if $item==0}<li>…</li>{elseif $item==$pagination.current}<li><span class="current">{$item}</span></li>{else}<li><a href="index.php?mode={$mode}{if $action}&action={$action}{/if}{if $search_user_encoded}&search_user={$search_user_encoded}{/if}{if $method && $method!='fulltext'}&method={$method}{/if}{if $id}&id={$id}{/if}&page={$item}{if $p_category && $p_category>0}&p_category={$p_category}{/if}{if $order}&order={$order}{/if}{if $descasc}&descasc={$descasc}{/if}{if $filter}&filter={$filter}{/if}">{$item}</a></li>{/if}
|
||||
{/foreach}
|
||||
{if $pagination.next}<li><a href="index.php?mode={$mode}{if $action}&action={$action}{/if}{if $search_user_encoded}&search_user={$search_user_encoded}{/if}{if $method && $method!='fulltext'}&method={$method}{/if}{if $id}&id={$id}{/if}&page={$pagination.next}{if $p_category && $p_category>0}&p_category={$p_category}{/if}{if $order}&order={$order}{/if}{if $descasc}&descasc={$descasc}{/if}" title="{#next_page_link_title#}">{#next_page_link#}</a></li>{/if}
|
||||
{if $pagination.next}<li><a href="index.php?mode={$mode}{if $action}&action={$action}{/if}{if $search_user_encoded}&search_user={$search_user_encoded}{/if}{if $method && $method!='fulltext'}&method={$method}{/if}{if $id}&id={$id}{/if}&page={$pagination.next}{if $p_category && $p_category>0}&p_category={$p_category}{/if}{if $order}&order={$order}{/if}{if $descasc}&descasc={$descasc}{/if}{if $filter}&filter={$filter}{/if}" title="{#next_page_link_title#}">{#next_page_link#}</a></li>{/if}
|
||||
</ul>
|
||||
{/if}
|
||||
{else}
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
{cycle values="a,b" assign=c}
|
||||
<tr id="id_{$row.bid}" class="{$c}">
|
||||
<td><a href="index.php?id={$row.id}" title="{$row.subject}"><strong>{$row.subject}</strong></a></td>
|
||||
<td>{if $row.user_id > 0}<a href="index.php?mode=user&show_user={$row.user_id}" title="{#show_userdata_linktitle#|replace:"[user]":$row.user_name}">{/if}<strong>{$row.user_name}</strong>{if $row.user_id > 0}</a>{/if}</td>
|
||||
<td>{if $row.user_id > 0}<a href="index.php?mode=user&show_user={$row.user_id}" title="{#show_userdata_linktitle#|replace:"[user]":$row.user_name}">{/if}<span class="author-name">{$row.user_name}</span>{if $row.user_id > 0}</a>{/if}</td>
|
||||
<td><span class="small">{$row.bookmark_time}</span></td>
|
||||
<td><span class="small">{$row.posting_time}</span></td>
|
||||
|
||||
|
|
|
@ -15,30 +15,49 @@
|
|||
{/section}
|
||||
</ul>
|
||||
{/if}
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<div>
|
||||
<input type="hidden" name="mode" value="contact" />
|
||||
{if $id}<input type="hidden" name="id" value="{$id}" />{/if}
|
||||
{if $recipient_user_id}<input type="hidden" name="recipient_user_id" value="{$recipient_user_id}" />{/if}
|
||||
{if $session}<input type="hidden" name="{$session.name}" value="{$session.id}" />{/if}
|
||||
{if not $user_id}<p><label for="sender_email">{#sender_address_caption#}</label><br />
|
||||
<input id="sender_email" type="text" name="sender_email" value="" size="50" /></p>{/if}
|
||||
<p><label for="subject">{#subject_caption#}</label><br />
|
||||
<input id="subject" type="text" name="subject" value="{$subject|default:""}" size="50" maxlength="{$settings.email_subject_maxlength}" /></p>
|
||||
<p><label for="message">{#message_caption#}</label><br />
|
||||
<textarea id="message" name="text" rows="20" cols="80">{$text|default:""}</textarea></p>
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<input type="hidden" name="mode" value="contact" />
|
||||
{if $id} <input type="hidden" name="id" value="{$id}" />{/if}
|
||||
{if $recipient_user_id} <input type="hidden" name="recipient_user_id" value="{$recipient_user_id}" />{/if}
|
||||
{if $session} <input type="hidden" name="{$session.name}" value="{$session.id}" />{/if}
|
||||
{if not $user_id}
|
||||
<div>
|
||||
<label for="sender_email">{#sender_address_caption#}</label>
|
||||
<input id="sender_email" type="email" name="sender_email" value="" size="50" required />
|
||||
</div>
|
||||
{/if}
|
||||
<div>
|
||||
<label for="subject">{#subject_caption#}</label>
|
||||
<input id="subject" type="text" name="subject" value="{$subject|default:""}" size="50" maxlength="{$settings.email_subject_maxlength}" required />
|
||||
</div>
|
||||
<div>
|
||||
<label for="message">{#message_caption#}</label>
|
||||
<textarea id="message" name="text" rows="20" cols="80" required>{$text|default:""}</textarea>
|
||||
</div>
|
||||
{if $captcha}
|
||||
{if $captcha.type==2}
|
||||
<p><strong>{#captcha_marking#}</strong><br />
|
||||
<img class="captcha" src="modules/captcha/captcha_image.php?{$session.name}={$session.id}" alt="{#captcha_image_alt#}" width="180" height="40" /><br />
|
||||
<label for="captcha_code">{#captcha_expl_image#}</label> <input id="captcha_code" type="text" name="captcha_code" value="" size="10" /></p>
|
||||
<div>
|
||||
<span class="label-like">{#captcha_marking#}</span><br />
|
||||
<img class="captcha" src="modules/captcha/captcha_image.php?{$session.name}={$session.id}" alt="{#captcha_image_alt#}" width="180" height="40" /><br />
|
||||
<label for="captcha_code">{#captcha_expl_image#}</label>
|
||||
<input id="captcha_code" type="text" name="captcha_code" value="" size="10" />
|
||||
</div>
|
||||
{else}
|
||||
<p><strong>{#captcha_marking#}</strong><br />
|
||||
<label for="captcha_code">{#captcha_expl_math#} {$captcha.number_1} + {$captcha.number_2} = </label><input id="captcha_code" type="text" name="captcha_code" value="" size="5" /></p>
|
||||
<div>
|
||||
<span class="label-like">{#captcha_marking#}</span><br />
|
||||
<label for="captcha_code">{#captcha_expl_math#} {$captcha.number_1} + {$captcha.number_2} = </label>
|
||||
<input id="captcha_code" type="text" name="captcha_code" value="" size="5" />
|
||||
</div>
|
||||
{/if}
|
||||
{/if}
|
||||
{if $user_id}<p><input id="confirmation_email" type="checkbox" name="confirmation_email" value="1" /> <label for="confirmation_email">{#sender_confirmation_caption#}</label></p>{/if}
|
||||
<p><input type="submit" name="message_submit" value="{#message_submit_caption#}" onclick="document.getElementById('throbber-submit').classList.remove('js-visibility-hidden');" /> <img id="throbber-submit" class="js-visibility-hidden" src="{$THEMES_DIR}/{$theme}/images/throbber_submit.gif" alt="" width="16" height="16" /></p>
|
||||
</div>
|
||||
</form>
|
||||
{if $user_id}
|
||||
<div>
|
||||
<input id="confirmation_email" type="checkbox" name="confirmation_email" value="1" /><label for="confirmation_email">{#sender_confirmation_caption#}</label>
|
||||
</div>
|
||||
{/if}
|
||||
<div>
|
||||
<input type="submit" name="message_submit" value="{#message_submit_caption#}" onclick="document.getElementById('throbber-submit').classList.remove('js-visibility-hidden');" />
|
||||
<img id="throbber-submit" class="js-visibility-hidden" src="{$THEMES_DIR}/{$theme}/images/throbber_submit.gif" alt="" width="16" height="16" />
|
||||
</div>
|
||||
</form>
|
||||
{/if}
|
|
@ -12,14 +12,14 @@
|
|||
{/if}
|
||||
{if $user_type==2}
|
||||
{assign var=admin_title value=$smarty.config.administrator_title}
|
||||
{assign var=name value="<span class=\"admin registered_user\" title=\"$admin_title\">$name</span>"}
|
||||
{assign var=name value="<span class=\"author-name admin registered_user\" title=\"$admin_title\">$name</span>"}
|
||||
{elseif $user_type==1}
|
||||
{assign var=mod_title value=$smarty.config.moderator_title}
|
||||
{assign var=name value="<span class=\"mod registered_user\" title=\"$mod_title\">$name</span>"}
|
||||
{assign var=name value="<span class=\"author-name mod registered_user\" title=\"$mod_title\">$name</span>"}
|
||||
{elseif $posting_user_id>0}
|
||||
{assign var=name value="<span class=\"registered_user\">$name</span>"}
|
||||
{assign var=name value="<span class=\"author-name registered_user\">$name</span>"}
|
||||
{else}
|
||||
{assign var=name value="$name"}
|
||||
{assign var=name value="<span class=\"author-name\">$name</span>"}
|
||||
{/if}
|
||||
{if (($settings.user_area_access == 0 and ($admin or $mod)) or ($settings.user_area_access == 1 and $user) or $settings.user_area_access == 2) && $posting_user_id>0}
|
||||
{assign var=name value="<a href=\"index.php?mode=user&show_user=$posting_user_id\">$name</a>"}
|
||||
|
@ -28,8 +28,9 @@
|
|||
<header class="header">{if $spam}<p class="notice spam">{#spam_note#}</p>{/if}
|
||||
{if $avatar}<img class="avatar" src="{$avatar.image}" alt="{#avatar_img_alt#}" width="{$avatar.width}" height="{$avatar.height}" />{/if}
|
||||
<h1>{$subject}{if $category_name} <span class="category">({$category_name})</span>{/if}</h1>
|
||||
<p class="author">{*{assign var=formated_time value=$disp_time|date_format:#time_format_full#}*}{if $location}{#posted_by_location#|replace:"[name]":$name|replace:"[email_hp]":$email_hp|replace:"[location]":$location|replace:"[time]":$formated_time}{else}{#posted_by#|replace:"[name]":$name|replace:"[email_hp]":$email_hp|replace:"[time]":$formated_time}{/if} <span class="ago">({if $ago.days>1}{#posting_several_days_ago#|replace:"[days]":$ago.days_rounded}{else}{if $ago.days==0 && $ago.hours==0}{#posting_minutes_ago#|replace:"[minutes]":$ago.minutes}{elseif $ago.days==0 && $ago.hours!=0}{#posting_hours_ago#|replace:"[hours]":$ago.hours|replace:"[minutes]":$ago.minutes}{else}{#posting_one_day_ago#|replace:"[hours]":$ago.hours|replace:"[minutes]":$ago.minutes}{/if}{/if})</span>{if $admin && $ip} <span class="ip">({$ip})</span>{/if}{if $pid!=0} <span class="op-link"><a href="index.php?id={$pid}" title="{#original_posting_linktitle#|replace:"[name]":$data.$pid.name}">@ {$data.$pid.name}</a></span>{/if}{if $edited}{*{assign var=formated_edit_time value=$edit_time|date_format:#time_format_full#}*}<br />
|
||||
<span class="edited">{#edited_by#|replace:"[name]":$edited_by|replace:"[time]":$formated_edit_time}</span>{/if}</p>
|
||||
<p class="author">{if $location}{#posted_by_location#|replace:"[name]":$name|replace:"[email_hp]":$email_hp|replace:"[location]":$location}{else}{#posted_by#|replace:"[name]":$name|replace:"[email_hp]":$email_hp}{/if} <time datetime="{$ISO_time}">{*{assign var=formated_time value=$disp_time|date_format:#time_format_full#}*}{$formated_time}</time> <span class="ago">({if $ago.days>1}{#posting_several_days_ago#|replace:"[days]":$ago.days_rounded}{else}{if $ago.days==0 && $ago.hours==0}{#posting_minutes_ago#|replace:"[minutes]":$ago.minutes}{elseif $ago.days==0 && $ago.hours!=0}{#posting_hours_ago#|replace:"[hours]":$ago.hours|replace:"[minutes]":$ago.minutes}{else}{#posting_one_day_ago#|replace:"[hours]":$ago.hours|replace:"[minutes]":$ago.minutes}{/if}{/if})</span>{if $admin && $ip} <span class="ip">({$ip})</span>{/if}{if $pid!=0} <span class="op-link"><a href="index.php?id={$pid}" title="{#original_posting_linktitle#|replace:"[name]":$data.$pid.name}">@ {$data.$pid.name}</a></span>{/if}
|
||||
{if $edited}{*{assign var=formated_edit_time value=$edit_time|date_format:#time_format_full#}*}<br />
|
||||
<span class="edited">{#edited_by#|replace:"[name]":$edited_by}, <time datetime="{$edit_ISO_time}">{$formated_edit_time}</time></span>{/if}</p>
|
||||
</header>
|
||||
<div class="wrapper">
|
||||
<div class="body">
|
||||
|
@ -76,19 +77,24 @@
|
|||
|
||||
<ul class="thread openthread">
|
||||
{function name=tree level=0}
|
||||
<li>{if $data.$element.id!=$id}<a class="{if $data.$element.pid==0&&$data.$element.new}threadnew{elseif $data.$element.pid==0}thread{elseif $data.$element.pid!=0&&$data.$element.new}replynew{else}reply{/if}{if $data.$element.is_read} read{/if}" href="index.php?id={$data.$element.id}">{$data.$element.subject}</a>{else}<span class="{if $data.$element.pid==0}{if $data.$element.new}currentthreadnew{else}currentthread{/if}{else}{if $data.$element.new}currentreplynew{else}currentreply{/if}{/if}">{$data.$element.subject}</span>{/if}{if $data.$element.no_text} <img class="no-text" src="{$THEMES_DIR}/{$theme}/images/no_text.png" title="{#no_text_title#}" alt="[ {#no_text_alt#} ]" width="11" height="9" />{/if} -
|
||||
<li>{if $data.$element.id!=$id}<a class="subject {if $data.$element.pid==0&&$data.$element.new}threadnew{elseif $data.$element.pid==0}thread{elseif $data.$element.pid!=0&&$data.$element.new}replynew{else}reply{/if}{if $data.$element.is_read} read{/if}" href="index.php?id={$data.$element.id}">{$data.$element.subject}</a>{else}<span class="{if $data.$element.pid==0}{if $data.$element.new}currentthreadnew{else}currentthread{/if}{else}{if $data.$element.new}currentreplynew{else}currentreply{/if}{/if}">{$data.$element.subject}</span>{/if}
|
||||
|
||||
<span class="metadata">
|
||||
{if $data.$element.user_type==2}
|
||||
<strong class="admin registered_user">{$data.$element.name}</strong>,
|
||||
<span class="author-name admin registered_user" title="{#administrator_title#}">{$data.$element.name}</span>
|
||||
{elseif $data.$element.user_type==1}
|
||||
<strong class="mod registered_user">{$data.$element.name}</strong>,
|
||||
<span class="author-name mod registered_user" title="{#moderator_title#}">{$data.$element.name}</span>
|
||||
{elseif $data.$element.user_id>0}
|
||||
<strong class="registered_user">{$data.$element.name}</strong>,
|
||||
<span class="author-name registered_user">{$data.$element.name}</span>
|
||||
{else}
|
||||
<strong>{$data.$element.name}</strong>,
|
||||
<span class="author-name">{$data.$element.name}</span>
|
||||
{/if}
|
||||
|
||||
<span id="p{$data.$element.id}" class="tail">{$data.$element.formated_time}{if $data.$element.pid==0} <a href="index.php?mode=thread&id={$data.$element.id}" title="{#open_whole_thread#}"><img src="{$THEMES_DIR}/{$theme}/images/complete_thread.png" title="{#open_whole_thread#}" alt="[*]" width="11" height="11" /></a>{/if}{if $admin || $mod} {if $data.$element.not_classified_spam_ham==1}<a><img src="{$THEMES_DIR}/{$theme}/images/keep_eye_on.png" title="{#unclassified_linktitle#}" alt="[!]" width="14" height="11" /></a>{/if} <a id="marklink_{$data.$element.id}" href="index.php?mode=posting&mark={$data.$element.id}&back={$id}" title="{#mark_linktitle#}" onclick="mark({$data.$element.id},'{$THEMES_DIR}/{$theme}/images/marked.png','{$THEMES_DIR}/{$theme}/images/unmarked.png','{$THEMES_DIR}/{$theme}/images/mark_process.png','{#mark_linktitle#}','{#unmark_linktitle#}'); return false">{if $data.$element.marked==0}<img id="markimg_{$data.$element.id}" src="{$THEMES_DIR}/{$theme}/images/unmarked.png" title="{#mark_linktitle#}" alt="[○]" width="11" height="11" />{else}<img id="markimg_{$data.$element.id}" src="{$THEMES_DIR}/{$theme}/images/marked.png" title="{#unmark_linktitle#}" alt="[●]" width="11" height="11" title="{#unmark_linktitle#}" />{/if}</a> <a href="index.php?mode=posting&delete_posting={$data.$element.id}&csrf_token={$CSRF_TOKEN}&back=entry" title="{#delete_posting_title#}" onclick="return delete_posting_confirm(this, '{$smarty.config.delete_posting_confirm|escape:"url"}')"><img src="{$THEMES_DIR}/{$theme}/images/delete_posting.png" alt="[x]" width="9" height="9" /></a>{/if}</span>
|
||||
<span id="p{$data.$element.id}" class="tail">
|
||||
<time datetime="{$data.$element.ISO_time}">{$data.$element.formated_time}</time>
|
||||
{if $data.$element.no_text} <img class="no-text" src="{$THEMES_DIR}/{$theme}/images/no_text.png" title="{#no_text_title#}" alt="[ {#no_text_alt#} ]" width="11" height="9" />{/if}{if $data.$element.pid==0} <a href="index.php?mode=thread&id={$data.$element.id}" title="{#open_whole_thread#}"><img src="{$THEMES_DIR}/{$theme}/images/complete_thread.png" title="{#open_whole_thread#}" alt="[*]" width="11" height="11" /></a>{/if}{if $admin || $mod} {if $data.$element.not_classified_spam_ham==1}<a><img src="{$THEMES_DIR}/{$theme}/images/keep_eye_on.png" title="{#unclassified_linktitle#}" alt="[!]" width="14" height="11" /></a>{/if} <a id="marklink_{$data.$element.id}" href="index.php?mode=posting&mark={$data.$element.id}&back={$id}" title="{#mark_linktitle#}" onclick="mark({$data.$element.id},'{$THEMES_DIR}/{$theme}/images/marked.png','{$THEMES_DIR}/{$theme}/images/unmarked.png','{$THEMES_DIR}/{$theme}/images/mark_process.png','{#mark_linktitle#}','{#unmark_linktitle#}'); return false">{if $data.$element.marked==0}<img id="markimg_{$data.$element.id}" src="{$THEMES_DIR}/{$theme}/images/unmarked.png" title="{#mark_linktitle#}" alt="[○]" width="11" height="11" />{else}<img id="markimg_{$data.$element.id}" src="{$THEMES_DIR}/{$theme}/images/marked.png" title="{#unmark_linktitle#}" alt="[●]" width="11" height="11" title="{#unmark_linktitle#}" />{/if}</a> <a href="index.php?mode=posting&delete_posting={$data.$element.id}&csrf_token={$CSRF_TOKEN}&back=entry" title="{#delete_posting_title#}" onclick="return delete_posting_confirm(this, '{$smarty.config.delete_posting_confirm|escape:"url"}')"><img src="{$THEMES_DIR}/{$theme}/images/delete_posting.png" alt="[x]" width="9" height="9" /></a>{/if}
|
||||
</span>
|
||||
</span>
|
||||
{if is_array($child_array[$element])}
|
||||
<ul class="{if $level<$settings.deep_reply}reply{elseif $level>=$settings.deep_reply&&$level<$settings.very_deep_reply}deep-reply{else}very-deep-reply{/if}">{foreach from=$child_array[$element] item=child}{tree element=$child level=$level+1}{/foreach}</ul>{/if}</li>
|
||||
{/function}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<p class="notice caution">{#error_headline#}</p>
|
||||
<ul>
|
||||
<p class="notice caution">{#error_headline#}</p>
|
||||
<ul>
|
||||
{section name=mysec loop=$errors}
|
||||
{assign var="error" value=$errors[mysec]}
|
||||
<li>{$smarty.config.$error}</li>
|
||||
<li>{$smarty.config.$error}</li>
|
||||
{/section}
|
||||
</ul>
|
||||
</ul>
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
{if $tag_cloud || $latest_postings || $admin || $mod}
|
||||
<div id="main-grid" class="threaded">
|
||||
<div id="sidebar"{if $usersettings.sidebar==0} class="js-display-fold"{/if}>
|
||||
<a href="index.php?toggle_sidebar=true"><img id="sidebartoggle" class="{if $usersettings.sidebar==0}show-sidebar{else}hide-sidebar{/if}" src="{$THEMES_DIR}/{$theme}/images/plain.png" title="{#toggle_sidebar#}" alt="[+/-]" width="9" height="9" /></a>
|
||||
<h2 class="sidebar"><a href="index.php?toggle_sidebar=true" title="{#toggle_sidebar#}">{#sidebar#}</a></h2>
|
||||
<div id="sidebarcontent">
|
||||
{if $latest_postings}
|
||||
|
@ -43,8 +42,25 @@
|
|||
{foreach from=$threads item=thread}
|
||||
<ul id="thread-{$thread}" class="thread {if $fold_threads==1}folded{else}expanded{/if}">
|
||||
{function name=tree level=0}
|
||||
<li><a class="{if $data.$element.pid==0 && $data.$element.new}{if $data.$element.sticky>0 && $data.$element.locked==1}threadnew-sticky-locked{elseif $data.$element.sticky>0}threadnew-sticky{elseif $data.$element.locked==1}threadnew-locked{else}threadnew{/if}{elseif $data.$element.pid==0}{if $data.$element.sticky>0 && $data.$element.locked==1}thread-sticky-locked{elseif $data.$element.sticky>0}thread-sticky{elseif $data.$element.locked==1}thread-locked{else}thread{/if}{elseif $data.$element.pid!=0 && $data.$element.new}replynew{else}reply{/if}{if $data.$element.is_read} read{/if}" href="index.php?id={$data.$element.id}"{if $data.$element.spam==1} title="{#spam#}"{/if}>{if $data.$element.spam==1}<span class="spam">{$data.$element.subject}</span>{else}{$data.$element.subject}{/if}</a>{if $data.$element.no_text} <img class="no-text" src="{$THEMES_DIR}/{$theme}/images/no_text.png" title="{#no_text_title#}" alt="{#no_text_alt#}" width="11" height="9" />{/if} - <strong>{if $data.$element.user_type==2}<span class="admin registered_user" title="{#administrator_title#}">{$data.$element.name}</span>{elseif $data.$element.user_type==1}<span class="mod registered_user" title="{#moderator_title#}">{$data.$element.name}</span>{elseif $data.$element.user_id>0}<span class="registered_user">{$data.$element.name}</span>{else}{$data.$element.name}{/if}</strong>, <span id="p{$data.$element.id}" class="tail">{$data.$element.formated_time}{if $data.$element.pid==0} <a href="index.php?mode=thread&id={$data.$element.id}" title="{#open_whole_thread#}"><img src="{$THEMES_DIR}/{$theme}/images/complete_thread.png" title="{#open_whole_thread#}" alt="[*]" width="11" height="11" /></a>{/if}{if $admin || $mod} {if $data.$element.not_classified_spam_ham==1}<a><img src="{$THEMES_DIR}/{$theme}/images/keep_eye_on.png" title="{#unclassified_linktitle#}" alt="[!]" width="14" height="11" /></a>{/if} <a id="marklink_{$data.$element.id}" href="index.php?mode=posting&mark={$data.$element.id}" title="{#mark_linktitle#}">{if $data.$element.marked==0}<img id="markimg_{$data.$element.id}" src="{$THEMES_DIR}/{$theme}/images/unmarked.png" title="{#mark_linktitle#}" alt="[○]" width="11" height="11" />{else}<img id="markimg_{$data.$element.id}" src="{$THEMES_DIR}/{$theme}/images/marked.png" title="{#unmark_linktitle#}" alt="[●]" width="11" height="11" />{/if}</a> <a href="index.php?mode=posting&delete_posting={$data.$element.id}&csrf_token={$CSRF_TOKEN}&back=index" title="{#delete_posting_title#}"><img src="{$THEMES_DIR}/{$theme}/images/delete_posting.png" title="{#delete_posting_title#}" alt="[x]" width="9" height="9" /></a>{/if}
|
||||
{if $data.$element.category_name && $data.$element.pid==0 && $category<=0} <a href="index.php?mode=index&category={$data.$element.category}" title="{#change_category_link#|replace:"[category]":$data.$element.category_name|escape:"html"}"><span class="category">({$data.$element.category_name})</span></a>{/if}{if $fold_threads==1 && $data.$element.pid==0 && $replies.$thread>0} <span class="replies" title="{*{if $replies.$thread==0}{#no_replies#}*}{if $replies.$thread==1}{#one_reply#}{else}{$smarty.config.several_replies|replace:"[replies]":$replies.$thread}{/if}">({$replies.$thread})</span>{/if}</span>
|
||||
<li><a class="subject {if $data.$element.pid==0 && $data.$element.new}{if $data.$element.sticky>0 && $data.$element.locked==1}threadnew-sticky-locked{elseif $data.$element.sticky>0}threadnew-sticky{elseif $data.$element.locked==1}threadnew-locked{else}threadnew{/if}{elseif $data.$element.pid==0}{if $data.$element.sticky>0 && $data.$element.locked==1}thread-sticky-locked{elseif $data.$element.sticky>0}thread-sticky{elseif $data.$element.locked==1}thread-locked{else}thread{/if}{elseif $data.$element.pid!=0 && $data.$element.new}replynew{else}reply{/if}{if $data.$element.is_read} read{/if}" href="index.php?id={$data.$element.id}"{if $data.$element.spam==1} title="{#spam#}"{/if}>{if $data.$element.spam==1}<span class="spam">{$data.$element.subject}</span>{else}{$data.$element.subject}{/if}</a>
|
||||
|
||||
<span class="metadata">
|
||||
{if $data.$element.user_type==2}
|
||||
<span class="author-name admin registered_user" title="{#administrator_title#}">{$data.$element.name}</span>
|
||||
{elseif $data.$element.user_type==1}
|
||||
<span class="author-name mod registered_user" title="{#moderator_title#}">{$data.$element.name}</span>
|
||||
{elseif $data.$element.user_id>0}
|
||||
<span class="author-name registered_user">{$data.$element.name}</span>
|
||||
{else}
|
||||
<span class="author-name">{$data.$element.name}</span>
|
||||
{/if}
|
||||
|
||||
<span id="p{$data.$element.id}" class="tail">
|
||||
<time datetime="{$data.$element.ISO_time}">{$data.$element.formated_time}</time>
|
||||
{if $data.$element.no_text} <img class="no-text" src="{$THEMES_DIR}/{$theme}/images/no_text.png" title="{#no_text_title#}" alt="{#no_text_alt#}" width="11" height="9" />{/if}{if $data.$element.pid==0} <a href="index.php?mode=thread&id={$data.$element.id}" title="{#open_whole_thread#}"><img src="{$THEMES_DIR}/{$theme}/images/complete_thread.png" title="{#open_whole_thread#}" alt="[*]" width="11" height="11" /></a>{/if}{if $admin || $mod} {if $data.$element.not_classified_spam_ham==1}<a><img src="{$THEMES_DIR}/{$theme}/images/keep_eye_on.png" title="{#unclassified_linktitle#}" alt="[!]" width="14" height="11" /></a>{/if} <a id="marklink_{$data.$element.id}" href="index.php?mode=posting&mark={$data.$element.id}" title="{#mark_linktitle#}">{if $data.$element.marked==0}<img id="markimg_{$data.$element.id}" src="{$THEMES_DIR}/{$theme}/images/unmarked.png" title="{#mark_linktitle#}" alt="[○]" width="11" height="11" />{else}<img id="markimg_{$data.$element.id}" src="{$THEMES_DIR}/{$theme}/images/marked.png" title="{#unmark_linktitle#}" alt="[●]" width="11" height="11" />{/if}</a> <a href="index.php?mode=posting&delete_posting={$data.$element.id}&csrf_token={$CSRF_TOKEN}&back=index" title="{#delete_posting_title#}"><img src="{$THEMES_DIR}/{$theme}/images/delete_posting.png" title="{#delete_posting_title#}" alt="[x]" width="9" height="9" /></a>{/if}
|
||||
{if $data.$element.category_name && $data.$element.pid==0 && $category<=0} <a href="index.php?mode=index&category={$data.$element.category}" title="{#change_category_link#|replace:"[category]":$data.$element.category_name|escape:"html"}"><span class="category">({$data.$element.category_name})</span></a>{/if}{if $fold_threads==1 && $data.$element.pid==0 && $replies.$thread>0} <span class="replies" title="{*{if $replies.$thread==0}{#no_replies#}*}{if $replies.$thread==1}{#one_reply#}{else}{$smarty.config.several_replies|replace:"[replies]":$replies.$thread}{/if}">({$replies.$thread})</span>{/if}
|
||||
</span>
|
||||
</span>
|
||||
{if is_array($child_array[$element])}
|
||||
<ul class="{if $level<$settings.deep_reply}reply{elseif $level>=$settings.deep_reply&&$level<$settings.very_deep_reply}deep-reply{else}very-deep-reply{/if}{if $fold_threads==1} js-display-none{/if}">{foreach from=$child_array[$element] item=child}{tree element=$child level=$level+1}{/foreach}</ul>{/if}</li>{/function}
|
||||
{tree element=$thread}
|
||||
|
|
|
@ -20,15 +20,20 @@
|
|||
<td class="subject">
|
||||
<ul id="thread-{$thread}" class="thread {if $fold_threads==1}folded{else}expanded{/if}">
|
||||
{function name=tree level=0}
|
||||
<li><a class="{if $data.$element.pid==0 && $data.$element.new}{if $data.$element.sticky>0 && $data.$element.locked==1}threadnew-sticky-locked{elseif $data.$element.sticky>0}threadnew-sticky{elseif $data.$element.locked==1}threadnew-locked{else}threadnew{/if}{elseif $data.$element.pid==0}{if $data.$element.sticky>0 && $data.$element.locked==1}thread-sticky-locked{elseif $data.$element.sticky>0}thread-sticky{elseif $data.$element.locked==1}thread-locked{else}thread{/if}{elseif $data.$element.pid!=0 && $data.$element.new}replynew{else}reply{/if}{if $data.$element.is_read} read{/if}" href="index.php?mode=thread&id={$data.$element.tid}{if $data.$element.pid!=0}#p{$data.$element.id}{/if}" title="{$data.$element.name}, {$data.$element.formated_time}">{if $data.$element.spam==1}<span class="spam">{$data.$element.subject}</span>{else}{$data.$element.subject}{/if}</a>{if $data.$element.no_text} <img class="no-text" src="{$THEMES_DIR}/{$theme}/images/no_text.png" title="{#no_text_title#}" alt="[ {#no_text_alt#} ]" width="11" height="9" />{/if}<span id="p{$data.$element.id}" class="tail">{if $admin || $mod} {if $data.$element.not_classified_spam_ham==1}<a><img src="{$THEMES_DIR}/{$theme}/images/keep_eye_on.png" title="{#unclassified_linktitle#}" alt="[!]" width="14" height="11" /></a>{/if} <a id="marklink_{$data.$element.id}" href="index.php?mode=posting&mark={$data.$element.id}" title="{#mark_linktitle#}">{if $data.$element.marked==0}<img id="markimg_{$data.$element.id}" src="{$THEMES_DIR}/{$theme}/images/unmarked.png" title="{#mark_linktitle#}" alt="[○]" width="11" height="11" />{else}<img id="markimg_{$data.$element.id}" src="{$THEMES_DIR}/{$theme}/images/marked.png" title="{#unmark_linktitle#}" alt="[●]" width="11" height="11" />{/if}</a> <a href="index.php?mode=posting&delete_posting={$data.$element.id}&csrf_token={$CSRF_TOKEN}&back=index" title="{#delete_posting_title#}"><img src="{$THEMES_DIR}/{$theme}/images/delete_posting.png" title="{#delete_posting_title#}" alt="[x]" width="9" height="9" /></a>{/if}</span>
|
||||
<li><a class="subject {if $data.$element.pid==0 && $data.$element.new}{if $data.$element.sticky>0 && $data.$element.locked==1}threadnew-sticky-locked{elseif $data.$element.sticky>0}threadnew-sticky{elseif $data.$element.locked==1}threadnew-locked{else}threadnew{/if}{elseif $data.$element.pid==0}{if $data.$element.sticky>0 && $data.$element.locked==1}thread-sticky-locked{elseif $data.$element.sticky>0}thread-sticky{elseif $data.$element.locked==1}thread-locked{else}thread{/if}{elseif $data.$element.pid!=0 && $data.$element.new}replynew{else}reply{/if}{if $data.$element.is_read} read{/if}" href="index.php?mode=thread&id={$data.$element.tid}{if $data.$element.pid!=0}#p{$data.$element.id}{/if}" title="{$data.$element.name}, {$data.$element.formated_time}">{if $data.$element.spam==1}<span class="spam">{$data.$element.subject}</span>{else}{$data.$element.subject}{/if}</a>
|
||||
|
||||
<span class="metadata">
|
||||
<span id="p{$data.$element.id}" class="tail">
|
||||
{if $data.$element.no_text}<a><img class="no-text" src="{$THEMES_DIR}/{$theme}/images/no_text.png" title="{#no_text_title#}" alt="[ {#no_text_alt#} ]" width="11" height="9" /></a>{/if}{if $admin || $mod} {if $data.$element.not_classified_spam_ham==1}<a><img src="{$THEMES_DIR}/{$theme}/images/keep_eye_on.png" title="{#unclassified_linktitle#}" alt="[!]" width="14" height="11" /></a>{/if} <a id="marklink_{$data.$element.id}" href="index.php?mode=posting&mark={$data.$element.id}" title="{#mark_linktitle#}">{if $data.$element.marked==0}<img id="markimg_{$data.$element.id}" src="{$THEMES_DIR}/{$theme}/images/unmarked.png" title="{#mark_linktitle#}" alt="[○]" width="11" height="11" />{else}<img id="markimg_{$data.$element.id}" src="{$THEMES_DIR}/{$theme}/images/marked.png" title="{#unmark_linktitle#}" alt="[●]" width="11" height="11" />{/if}</a> <a href="index.php?mode=posting&delete_posting={$data.$element.id}&csrf_token={$CSRF_TOKEN}&back=index" title="{#delete_posting_title#}"><img src="{$THEMES_DIR}/{$theme}/images/delete_posting.png" title="{#delete_posting_title#}" alt="[x]" width="9" height="9" /></a>{/if}</span>
|
||||
</span>
|
||||
{if is_array($child_array[$element])}
|
||||
<ul class="{if $level<$settings.deep_reply}reply{elseif $level>=$settings.deep_reply&&$level<$settings.very_deep_reply}deep-reply{else}very-deep-reply{/if}{if $fold_threads==1} js-display-none{/if}">{foreach from=$child_array[$element] item=child}{tree element=$child level=$level+1}{/foreach}</ul>{/if}</li>
|
||||
{/function}
|
||||
{tree element=$thread}
|
||||
</ul>
|
||||
</td>
|
||||
<td><span class="small nowrap">{if $data.$thread.user_type==2}<span class="admin registered_user" title="{#administrator_title#}">{$data.$thread.name}</span>{elseif $data.$thread.user_type==1}<span class="mod registered_user" title="{#moderator_title#}">{$data.$thread.name}</span>{elseif $data.$thread.user_id>0}<span class="registered_user">{$data.$thread.name}</span>{else}{$data.$thread.name}{/if}</span></td>
|
||||
<td><span class="small nowrap">{$data.$thread.formated_time}</span></td>
|
||||
<td><span class="small nowrap">{if $data.$thread.user_type==2}<span class="author-name admin registered_user" title="{#administrator_title#}">{$data.$thread.name}</span>{elseif $data.$thread.user_type==1}<span class="author-name mod registered_user" title="{#moderator_title#}">{$data.$thread.name}</span>{elseif $data.$thread.user_id>0}<span class="author-name registered_user">{$data.$thread.name}</span>{else}<span class="author-name">{$data.$thread.name}</span>{/if}</span></td>
|
||||
<td><span class="small nowrap"><time datetime="{$data.$thread.ISO_time}">{$data.$thread.formated_time}</time></span></td>
|
||||
{if $settings.count_views}<td><span class="small">{$total_views.$thread}</span></td>{/if}
|
||||
<td><span class="small">{$replies.$thread}</span></td>
|
||||
{if $categories && $category<=0}<td>{if $data.$thread.category_name}<a href="index.php?mode=index&category={$data.$thread.category}" title="{#change_category_link#|replace:"[category]":$data.$thread.category_name|escape:"html"}"><span class="category nowrap">{$data.$thread.category_name}</span></a>{else} {/if}</td>{/if}
|
||||
|
@ -50,7 +55,6 @@
|
|||
|
||||
{if $tag_cloud || $latest_postings || $admin || $mod}
|
||||
<div id="sidebar"{if $usersettings.sidebar==0} class="js-display-fold"{/if}>
|
||||
<a href="index.php?toggle_sidebar=true"><img id="sidebartoggle" class="{if $usersettings.sidebar==0}show-sidebar{else}hide-sidebar{/if}" src="{$THEMES_DIR}/{$theme}/images/plain.png" title="{#toggle_sidebar#}" alt="[+/-]" width="9" height="9" /></a>
|
||||
<h2 class="sidebar"><a href="index.php?toggle_sidebar=true" title="{#toggle_sidebar#}">{#sidebar#}</a></h2>
|
||||
<div id="sidebarcontent">
|
||||
{if $latest_postings}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{if $lang_section}{config_load file=$language_file section=$lang_section}{/if}
|
||||
{if $custom_message}
|
||||
<p>{$custom_message}</p>
|
||||
<p>{$custom_message}</p>
|
||||
{elseif $message}
|
||||
<p>{$smarty.config.$message|replace:"[var]":$var}</p>
|
||||
<p>{$smarty.config.$message|replace:"[var]":$var}</p>
|
||||
{/if}
|
||||
|
|
|
@ -1,24 +1,34 @@
|
|||
{config_load file=$language_file section="login"}
|
||||
{if $ip_temporarily_blocked}
|
||||
{#login_message#}
|
||||
<p class="notice caution">{#login_ip_temp_blocked#}</p>
|
||||
<p class="notice caution">{#login_ip_temp_blocked#}</p>
|
||||
{else}
|
||||
{if $login_message && $smarty.config.$login_message}
|
||||
<p class="notice {if $login_message=='account_activated' || $login_message=='mail_sent' || $login_message=='pw_sent'}ok{else}caution{/if}">{$smarty.config.$login_message}</p>
|
||||
<p class="notice {if $login_message=='account_activated' || $login_message=='mail_sent' || $login_message=='pw_sent'}ok{else}caution{/if}">{$smarty.config.$login_message}</p>
|
||||
{/if}
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<div>
|
||||
<input type="hidden" name="mode" value="{$mode}" />
|
||||
{if $back}<input type="hidden" name="back" value="{$back}" />{/if}
|
||||
{if $id}<input type="hidden" name="id" value="{$id}" />{/if}
|
||||
<p><label for="login" class="main">{#login_username#}</label><br /><input id="login" class="login" type="text" name="username" size="25" /></p>
|
||||
<p><label for="password" class="main">{#login_password#}</label><br /><input id="password" class="login" type="password" name="userpw" spellcheck="false" autocomplete="off" size="25" /></p>
|
||||
<div id="card">
|
||||
<p>{#login_advice#}</p>
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<input type="hidden" name="mode" value="{$mode}" />
|
||||
{if $back} <input type="hidden" name="back" value="{$back}" />{/if}
|
||||
{if $id} <input type="hidden" name="id" value="{$id}" />{/if}
|
||||
<div>
|
||||
<label for="login" class="main">{#login_username#}</label>
|
||||
<input id="login" class="login" type="text" name="username" size="25" required />
|
||||
</div>
|
||||
<div>
|
||||
<label for="password" class="main">{#login_password#}</label>
|
||||
<input id="password" class="login" type="password" name="userpw" spellcheck="false" autocomplete="off" writingsuggestions="false" size="25" required />
|
||||
</div>
|
||||
{if $settings.autologin==1}
|
||||
<p class="small"><input id="autologin" type="checkbox" name="autologin_checked" value="true" /> <label for="autologin">{#login_auto#}</label></p>
|
||||
<div class="normalform">
|
||||
<input id="autologin" type="checkbox" name="autologin_checked" value="true" /><label for="autologin">{#login_auto#}</label>
|
||||
</div>
|
||||
{/if}
|
||||
<p><input type="submit" value="{#login_submit#}" /></p>
|
||||
</div>
|
||||
</form>
|
||||
<p class="small">{#login_advice#}</p>
|
||||
<p class="small"><a href="index.php?mode=login&action=pw_forgotten">{#pw_forgotten_link#}</a></p>
|
||||
<div class="buttonbar">
|
||||
<button value="{#login_submit#}">{#login_submit#}</button>
|
||||
<p><a href="index.php?mode=login&action=pw_forgotten">{#pw_forgotten_link#}</a></p>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
{/if}
|
||||
|
|
|
@ -1,9 +1,14 @@
|
|||
{config_load file=$language_file section="pw_forgotten"}
|
||||
<p>{#pw_forgotten_exp#}</p>
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<div>
|
||||
<input type="hidden" name="mode" value="login" />
|
||||
<p><label for="pwf_email" class="main">{#pwf_email#}</label><br />
|
||||
<input id="pwf_email" type="text" name="pwf_email" size="30" /> <input type="submit" name="pwf_submit" value="{#submit_button_ok#}" /></p>
|
||||
</div>
|
||||
</form>
|
||||
<div id="card">
|
||||
<p>{#pw_forgotten_exp#}</p>
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<input type="hidden" name="mode" value="login" />
|
||||
<div>
|
||||
<label for="pwf_email" class="main">{#pwf_email#}</label>
|
||||
<input id="pwf_email" type="email" name="pwf_email" size="30" autofocus required />
|
||||
</div>
|
||||
<div class="buttonbar">
|
||||
<button name="pwf_submit" value="{#submit_button_ok#}">{#submit_button_ok#}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{config_load file=$language_file section="posting"}
|
||||
{config_load file=$language_file section="thread_entry"}
|
||||
{config_load file=$language_file section="user"}
|
||||
{if $captcha}{config_load file=$language_file section="captcha"}{/if}
|
||||
{if $no_authorisation}
|
||||
<p class="notice caution">{$smarty.config.$no_authorisation|replace:"[minutes]":$settings.edit_period}</p>
|
||||
|
@ -16,7 +16,7 @@
|
|||
<p class="notice caution">{#error_headline#}</p>
|
||||
<ul style="margin-bottom:25px;">
|
||||
{section name=mysec loop=$errors}
|
||||
<li>{assign var="error" value=$errors[mysec]}{$smarty.config.$error|replace:"[text_length]":$text_length|replace:"[text_maxlength]":$settings.text_maxlength|replace:"[word]":$word|replace:"[minutes]":$minutes|replace:"[not_accepted_word]":$not_accepted_word|replace:"[not_accepted_words]":$not_accepted_words}</li>
|
||||
<li>{assign var="error" value=$errors[mysec]}{$smarty.config.$error|replace:"[text_length]":$text_length|replace:"[text_maxlength]":$settings.text_maxlength|replace:"[word]":$word|replace:"[minutes]":$minutes|replace:"[not_accepted_word]":$not_accepted_word|replace:"[not_accepted_words]":$not_accepted_words}</li>
|
||||
{/section}
|
||||
</ul>
|
||||
{elseif isset($minutes_left_to_edit)}
|
||||
|
@ -25,11 +25,11 @@
|
|||
|
||||
{if $preview}
|
||||
{if $preview_hp && !$email}
|
||||
{assign var=email_hp value=" <a href=\"$preview_hp\"><img src=\"$THEMES_DIR/$theme/images/homepage.png\" alt=\"$homepage_alt\" width=\"13\" height=\"13\" /></a>"}
|
||||
{assign var=email_hp value=" <a href=\"$preview_hp\"><img src=\"$THEMES_DIR/$theme/images/homepage.png\" alt=\"{#homepage#}\" width=\"13\" height=\"13\" /></a>"}
|
||||
{elseif !$preview_hp && $email}
|
||||
{assign var=email_hp value=" <a href=\"index.php?mode=contact&id=$id\"><img src=\"$THEMES_DIR/$theme/images/email.png\" alt=\"$email_alt\" width=\"13\" height=\"10\" /></a>"}
|
||||
{assign var=email_hp value=" <a href=\"index.php?mode=contact&id=$id\"><img src=\"$THEMES_DIR/$theme/images/email.png\" alt=\"{#email#}\" width=\"13\" height=\"10\" /></a>"}
|
||||
{elseif $preview_hp && $email}
|
||||
{assign var=email_hp value=" <a href=\"$preview_hp\"><img src=\"$THEMES_DIR/$theme/images/homepage.png\" alt=\"$homepage_alt\" width=\"13\" height=\"13\" /></a> <a href=\"index.php?mode=contact&id=$id\"><img src=\"$THEMES_DIR/$theme/images/email.png\" alt=\"$email_alt\" width=\"13\" height=\"10\" /></a>"}
|
||||
{assign var=email_hp value=" <a href=\"$preview_hp\"><img src=\"$THEMES_DIR/$theme/images/homepage.png\" alt=\"{#homepage#}\" width=\"13\" height=\"13\" /></a> <a href=\"index.php?mode=contact&id=$id\"><img src=\"$THEMES_DIR/$theme/images/email.png\" alt=\"{#email#}\" width=\"13\" height=\"10\" /></a>"}
|
||||
{else}
|
||||
{assign var=email_hp value=""}
|
||||
{/if}
|
||||
|
@ -38,9 +38,9 @@
|
|||
<div class="posting">
|
||||
<div class="header">
|
||||
<h1 class="postingheadline">{$preview_subject}{if $category_name} <span class="category">({$category_name})</span>{/if}</h1>
|
||||
<p class="author">{if $preview_location}{#posted_by_location#|replace:"[name]":$preview_name|replace:"[email_hp]":$email_hp|replace:"[location]":$preview_location|replace:"[time]":$preview_formated_time}{else}{#posted_by#|replace:"[name]":$preview_name|replace:"[email_hp]":$email_hp|replace:"[time]":$preview_formated_time}{/if}</p>
|
||||
<p class="author">{if $preview_location}{#posted_by_location#|replace:"[name]":$preview_name|replace:"[email_hp]":$email_hp|replace:"[location]":$preview_location}{else}{#posted_by#|replace:"[name]":$preview_name|replace:"[email_hp]":$email_hp}{/if}<time datetime="{$preview_ISO_time}">{$preview_formated_time}</time></p>
|
||||
</div>
|
||||
<div class=""wrapper">
|
||||
<div class="wrapper">
|
||||
<div class="body">{if $preview_text}{$preview_text}{else}<p>{#no_text#}</p>{/if}</div>
|
||||
{if $preview_signature && $show_signature==1}
|
||||
<div class="signature"><p>---<br />
|
||||
|
@ -52,91 +52,82 @@
|
|||
</div>
|
||||
{/if}
|
||||
<form action="index.php" method="post" id="postingform" accept-charset="{#charset#}">
|
||||
<div>
|
||||
<input type="hidden" name="csrf_token" value="{$CSRF_TOKEN}" />
|
||||
<input type="hidden" name="back" value="{$back}" />
|
||||
<input type="hidden" name="mode" value="{$mode}" />
|
||||
<input type="hidden" name="id" value="{$id}" />
|
||||
<input type="hidden" name="uniqid" value="{$uniqid}" />
|
||||
<input type="hidden" name="posting_mode" value="{$posting_mode}" />
|
||||
{if $session}
|
||||
<input type="hidden" name="{$session.name}" value="{$session.id}" />
|
||||
{/if}
|
||||
<input type="hidden" name="csrf_token" value="{$CSRF_TOKEN}" />
|
||||
<input type="hidden" name="back" value="{$back}" />
|
||||
<input type="hidden" name="mode" value="{$mode}" />
|
||||
<input type="hidden" name="id" value="{$id}" />
|
||||
<input type="hidden" name="uniqid" value="{$uniqid}" />
|
||||
<input type="hidden" name="posting_mode" value="{$posting_mode}" />
|
||||
{if $session} <input type="hidden" name="{$session.name}" value="{$session.id}" />{/if}
|
||||
|
||||
{if $quote}
|
||||
<input type="hidden" id="quote" value="true" />
|
||||
{/if}
|
||||
{if $form_type==0}
|
||||
<input type="hidden" id="name_required" value="true" />
|
||||
{/if}
|
||||
{if !$settings.empty_postings_possible}
|
||||
<input type="hidden" id="text_required" value="true" />
|
||||
{/if}
|
||||
{if $terms_of_use_agreement}
|
||||
<input type="hidden" id="terms_of_use_required" value="true" />
|
||||
{/if}
|
||||
{if $data_privacy_agreement}
|
||||
<input type="hidden" id="data_privacy_agreement_required" value="true" />
|
||||
{/if}
|
||||
{if $quote} <input type="hidden" id="quote" value="true" />{/if}
|
||||
{if $form_type==0} <input type="hidden" id="name_required" value="true" />{/if}
|
||||
{if !$settings.empty_postings_possible} <input type="hidden" id="text_required" value="true" />{/if}
|
||||
{if $terms_of_use_agreement} <input type="hidden" id="terms_of_use_required" value="true" />{/if}
|
||||
{if $data_privacy_agreement} <input type="hidden" id="data_privacy_agreement_required" value="true" />{/if}
|
||||
|
||||
{if $form_type==0}
|
||||
<fieldset>
|
||||
<fieldset>
|
||||
|
||||
<p>
|
||||
<label for="name" class="input">{#name_marking#}</label>
|
||||
<input id="name" type="text" size="40" name="{$fld_user_name}" value="{if $name}{$name}{/if}" maxlength="{$settings.username_maxlength}" tabindex="1" />
|
||||
</p>
|
||||
<div>
|
||||
<label for="name" class="input">{#name_marking#}</label>
|
||||
<input id="name" type="text" size="40" name="{$fld_user_name}" value="{if $name}{$name}{/if}" maxlength="{$settings.username_maxlength}" required />
|
||||
</div>
|
||||
|
||||
<p>
|
||||
<label for="email" class="input">{#email_marking#}</label>
|
||||
<input id="email" type="text" size="40" name="{$fld_user_email}" value="{if $email}{$email}{/if}" maxlength="{$settings.email_maxlength}" tabindex="2" /> <span class="xsmall">{#optional_email#}</span>
|
||||
</p>
|
||||
<div>
|
||||
<label for="email" class="input">{#email_marking#} <span class="xsmall">{#optional_email#}</span></label>
|
||||
<input id="email" type="email" size="40" name="{$fld_user_email}" value="{if $email}{$email}{/if}" maxlength="{$settings.email_maxlength}" />
|
||||
</div>
|
||||
|
||||
<p class="hp">
|
||||
<label for="repeat_email" class="main">{#honeypot_field_marking#}</label>
|
||||
<input id="repeat_email" type="text" size="40" name="{$fld_repeat_email}" value="{if $honey_pot_email}{$honey_pot_email}{/if}" maxlength="{$settings.email_maxlength}" tabindex="-1" />
|
||||
</p>
|
||||
<div class="hp">
|
||||
<label for="repeat_email" class="main">{#honeypot_field_marking#}</label>
|
||||
<input id="repeat_email" type="email" size="40" name="{$fld_repeat_email}" value="{if $honey_pot_email}{$honey_pot_email}{/if}" maxlength="{$settings.email_maxlength}" tabindex="-1" />
|
||||
</div>
|
||||
|
||||
<p>
|
||||
<label for="hp" class="input">{#hp_marking#}</label>
|
||||
<input id="hp" type="text" size="40" name="{$fld_hp}" value="{if $hp}{$hp}{/if}" maxlength="{$settings.hp_maxlength}" tabindex="3" /> <span class="xsmall">{#optional#}</span>
|
||||
</p>
|
||||
<div>
|
||||
<label for="hp" class="input">{#hp_marking#} <span class="xsmall">{#optional#}</span></label>
|
||||
<input id="hp" type="url" size="40" name="{$fld_hp}" value="{if $hp}{$hp}{/if}" maxlength="{$settings.hp_maxlength}" />
|
||||
</div>
|
||||
|
||||
<p class="hp">
|
||||
<label for="phone" class="main">{#honeypot_field_marking#}</label>
|
||||
<input id="phone" class="login" type="text" size="30" name="{$fld_phone}" value="{if $honey_pot_phone}{$honey_pot_phone}{/if}" maxlength="35" tabindex="-1" />
|
||||
</p>
|
||||
<div class="hp">
|
||||
<label for="phone" class="main">{#honeypot_field_marking#}</label>
|
||||
<input id="phone" class="login" type="tel" size="30" name="{$fld_phone}" value="{if $honey_pot_phone}{$honey_pot_phone}{/if}" maxlength="35" />
|
||||
</div>
|
||||
|
||||
<p>
|
||||
<label for="location" class="input">{#location_marking#}</label>
|
||||
<input id="location" type="text" size="40" name="{$fld_location}" value="{if $location}{$location}{/if}" maxlength="{$settings.location_maxlength}" tabindex="4" /> <span class="xsmall">{#optional#}</span>
|
||||
</p>
|
||||
<div>
|
||||
<label for="location" class="input">{#location_marking#} <span class="xsmall">{#optional#}</span></label>
|
||||
<input id="location" type="text" size="40" name="{$fld_location}" value="{if $location}{$location}{/if}" maxlength="{$settings.location_maxlength}" />
|
||||
</div>
|
||||
|
||||
{if $settings.remember_userdata == 1 && $posting_mode==0 && !$user}
|
||||
<p>
|
||||
<input id="setcookie" class="checkbox" type="checkbox" name="setcookie" value="1"{if $setcookie} checked="checked"{/if} /> <label for="setcookie">{#remember_userdata_marking#}</label>{if $cookie} <span id="delete_cookie"><a href="index.php?mode=delete_cookie">{#delete_cookie_linkname#}</a></span>{/if}
|
||||
</p>
|
||||
<div>
|
||||
<input id="setcookie" type="checkbox" name="setcookie" value="1"{if $setcookie} checked="checked"{/if} /><label for="setcookie">{#remember_userdata_marking#}</label>{if $cookie} <span id="delete_cookie"><a href="index.php?mode=delete_cookie">{#delete_cookie_linkname#}</a></span>{/if}
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
</fieldset>
|
||||
</fieldset>
|
||||
{/if}
|
||||
|
||||
<fieldset>
|
||||
<fieldset>
|
||||
{if $categories}
|
||||
<p><label for="p_category" class="input">{#category_marking#}</label>
|
||||
<select id="p_category" size="1" name="p_category" tabindex="5"{if $posting_mode==0 && $id>0 || $posting_mode==1 && $pid>0} disabled="disabled"{/if}>
|
||||
{foreach key=key item=val from=$categories}
|
||||
{if $key!=0}<option value="{$key}"{if $key==$p_category} selected="selected"{/if}>{$val}</option>{/if}
|
||||
{/foreach}
|
||||
</select></p>
|
||||
{if $posting_mode==0 && $id>0 || $posting_mode==1 && $pid>0}
|
||||
<input type="hidden" name="p_category" value="{$p_category}" />
|
||||
{/if}
|
||||
<div>
|
||||
<label for="p_category" class="input">{#category_marking#}</label>
|
||||
<select id="p_category" size="1" name="p_category" {if $posting_mode==0 && $id>0 || $posting_mode==1 && $pid>0} disabled="disabled"{/if}>
|
||||
{foreach key=key item=val from=$categories}
|
||||
{if $key!=0} <option value="{$key}"{if $key==$p_category} selected="selected"{/if}>{$val}</option>
|
||||
{/if}
|
||||
{/foreach}
|
||||
</select>
|
||||
</div>
|
||||
{if $posting_mode==0 && $id>0 || $posting_mode==1 && $pid>0}
|
||||
<input type="hidden" name="p_category" value="{$p_category}" />
|
||||
{/if}
|
||||
{/if}
|
||||
|
||||
<p><label for="subject" class="input">{#subject_marking#}</label>
|
||||
<input id="subject" type="text" size="50" name="{$fld_subject}" value="{if $subject}{$subject}{/if}" maxlength="{$settings.subject_maxlength}" tabindex="6" />
|
||||
</p>
|
||||
<div>
|
||||
<label for="subject" class="input">{#subject_marking#}</label>
|
||||
<input id="subject" type="text" size="50" name="{$fld_subject}" value="{if $subject}{$subject}{/if}" maxlength="{$settings.subject_maxlength}" required />
|
||||
</div>
|
||||
|
||||
{* Tags
|
||||
0 == Off
|
||||
|
@ -145,158 +136,196 @@
|
|||
3 == everyone
|
||||
*}
|
||||
{if $settings.tags > 0 && ( ($settings.tags == 1 && ($admin || $mod)) || ($settings.tags == 2 && ($user_type === 0 || $admin || $mod)) || $settings.tags > 2 )}
|
||||
<p>
|
||||
<label for="tags" class="input">{#tags_marking#}</label>
|
||||
<input id="tags" type="text" size="50" name="tags" value="{$tags|default:""}" maxlength="253" tabindex="-1" /> <span class="xsmall">{#tags_note#}</span>
|
||||
</p>
|
||||
<div>
|
||||
<label for="tags" class="input">{#tags_marking#} <span class="xsmall">{#tags_note#}</span></label>
|
||||
<input id="tags" type="text" size="50" name="tags" value="{$tags|default:""}" maxlength="253" tabindex="-1" />
|
||||
</div>
|
||||
{/if}
|
||||
</fieldset>
|
||||
</fieldset>
|
||||
|
||||
<fieldset id="message">
|
||||
<label for="text" class="textarea">{#message_marking#}</label><br />
|
||||
<fieldset id="message">
|
||||
|
||||
<textarea id="text" cols="80" rows="21" name="text" tabindex="7">{if $text}{$text}{/if}</textarea>
|
||||
<div id="formatting-help">
|
||||
<h3>{#bbcode_help_heading#}</h3>
|
||||
<p><a href="#entry-input">{#bbcode_help_skip_link#}</a></p>
|
||||
{*<!--
|
||||
This list is read out to generte the default BBCode buttons or displayed if
|
||||
JavaScript isn't available.
|
||||
-->*}
|
||||
<dl id="bbcode-instructions">
|
||||
<div>
|
||||
<dt id="b" title="{#bbcode_bold_label#}">{#bbcode_bold_title#}</dt>
|
||||
<dd>{#bbcode_bold_instruction#}</dd>
|
||||
</div>
|
||||
<div>
|
||||
<dt id="i" title="{#bbcode_italic_label#}">{#bbcode_italic_title#}</dt>
|
||||
<dd>{#bbcode_italic_instruction#}</dd>
|
||||
</div>
|
||||
<div>
|
||||
<dt id="link" title="{#bbcode_link_label#}">{#bbcode_link_title#}</dt>
|
||||
<dd>{#bbcode_link_instruction#}</dd>
|
||||
</div>
|
||||
{if $settings.bbcode_color}
|
||||
<div>
|
||||
<dt id="color" title="{#bbcode_color_label#}">{#bbcode_color_title#}</dt>
|
||||
<dd>{#bbcode_color_instruction#}</dd>
|
||||
</div>
|
||||
{/if}
|
||||
{if $settings.bbcode_size}
|
||||
<div>
|
||||
<dt id="size" title="{#bbcode_size_label#}">{#bbcode_size_title#}</dt>
|
||||
<dd id="small" title="{#bbcode_size_label_small#}">{#bbcode_size_instruction_small#}</dd>
|
||||
<dd id="large" title="{#bbcode_size_label_large#}">{#bbcode_size_instruction_large#}</dd>
|
||||
</div>
|
||||
{/if}
|
||||
<div>
|
||||
<dt id="list" title="{#bbcode_list_label#}">{#bbcode_list_title#}</dt>
|
||||
<dd>{#bbcode_list_instruction#}</dd>
|
||||
</div>
|
||||
{if $settings.bbcode_img}
|
||||
<div>
|
||||
<dt id="img" title="{#bbcode_image_label#}">{#bbcode_image_title#}</dt>
|
||||
<dd title="{#bbcode_image_label_default#}">{#bbcode_image_instr_default#}</dd>
|
||||
<dd id="left" title="{#bbcode_image_label_left#}">{#bbcode_image_instr_left#}</dd>
|
||||
<dd id="right" title="{#bbcode_image_label_right#}">{#bbcode_image_instr_right#}</dd>
|
||||
<dd id="thumbnail" title="{#bbcode_image_label_thumb#}">{#bbcode_image_instr_thumb#}</dd>
|
||||
<dd id="thumbnail-left" title="{#bbcode_image_label_thumb_left#}">{#bbcode_image_instr_thumb_left#}</dd>
|
||||
<dd id="thumbnail-right" title="{#bbcode_image_label_thumb_right#}">{#bbcode_image_instr_thumb_right#}</dd>
|
||||
</div>
|
||||
{/if}
|
||||
{if $upload_images}
|
||||
<div>
|
||||
<dt id="upload" title="{#bbcode_upload_label#}">{#bbcode_upload_title#}</dt>
|
||||
<dd><a href="index.php?mode=upload_image">{#bbcode_upload_instruction#}</a></dd>
|
||||
</div>
|
||||
{/if}
|
||||
{if $settings.bbcode_latex && $settings.bbcode_latex_uri}
|
||||
<div>
|
||||
<dt id="tex" title="{#bbcode_tex_label#}">{#bbcode_tex_title#}</dt>
|
||||
<dd>{#bbcode_tex_instruction#}</dd>
|
||||
</div>
|
||||
{/if}
|
||||
{if $settings.bbcode_code}
|
||||
<div>
|
||||
<dt id="code" title="{#bbcode_code_label#}">{#bbcode_code_title#}</dt>
|
||||
<dd id="inlinecode" title="{#bbcode_code_label_inline#}">{#bbcode_code_instruction_inline#}</dd>
|
||||
<dd title="{#bbcode_code_label_general#}">{#bbcode_code_instruction_general#}</dd>
|
||||
{if $code_languages}
|
||||
{foreach from=$code_languages item=code_language}
|
||||
<dd id="{$code_language}" title="{#bbcode_code_label_specific#|replace:"[language]":$code_language}">{#bbcode_code_instruction_spec#|replace:"[language]":$code_language}</dd>
|
||||
{/foreach}
|
||||
{/if}
|
||||
</div>
|
||||
{/if}
|
||||
</dl>
|
||||
{/if}
|
||||
|
||||
<div id="format-bar">
|
||||
{if $settings.smilies && $smilies}
|
||||
<dl id="smiley-instructions">
|
||||
{foreach name="smilies" from=$smilies item=smiley}
|
||||
<div>
|
||||
<dt class="{if $smarty.foreach.smilies.index<6}default{else}additional{/if}" title="{#insert_smiley_title#}">{$smiley.code}</dt>
|
||||
<dd><img src="images/smilies/{$smiley.file}" alt="{$smiley.code}" /></dd>
|
||||
</div>
|
||||
{/foreach}
|
||||
</dl>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
<div id="entry-input">
|
||||
<label for="text" class="textarea">{#message_marking#}</label>
|
||||
|
||||
<div>
|
||||
|
||||
<div id="format-bar">
|
||||
{if $settings.bbcode}
|
||||
<div id="bbcode-bar">
|
||||
<div id="bbcode-bar">
|
||||
{*<!--
|
||||
Here you can insert custom BBCode buttons. If you leave this div empty
|
||||
the default buttons will be inserted. Example button:
|
||||
<button title="Foo bar!" name="foo">Foo</button>
|
||||
-->*}
|
||||
</div>
|
||||
</div>
|
||||
{if $settings.smilies && $smilies}
|
||||
<div id="smiley-bar">
|
||||
<div id="smiley-bar">
|
||||
{*<!--
|
||||
Like custom BBCode buttons, example:
|
||||
<button title="Insert smiley" name=":-)"><img src="..." /></button>
|
||||
-->*}
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
{*<!--
|
||||
This list is read out to generte the default BBCode buttons or displayed if
|
||||
JavaScript isn't available.
|
||||
-->*}
|
||||
<dl id="bbcode-instructions">
|
||||
<dt id="b" title="{#bbcode_bold_label#}">{#bbcode_bold_title#}</dt>
|
||||
<dd>{#bbcode_bold_instruction#}</dd>
|
||||
<dt id="i" title="{#bbcode_italic_label#}">{#bbcode_italic_title#}</dt>
|
||||
<dd>{#bbcode_italic_instruction#}</dd>
|
||||
<dt id="link" title="{#bbcode_link_label#}">{#bbcode_link_title#}</dt>
|
||||
<dd>{#bbcode_link_instruction#}</dd>
|
||||
{if $settings.bbcode_color}
|
||||
<dt id="color" title="{#bbcode_color_label#}">{#bbcode_color_title#}</dt>
|
||||
<dd>{#bbcode_color_instruction#}</dd>
|
||||
{/if}
|
||||
{if $settings.bbcode_size}
|
||||
<dt id="size" title="{#bbcode_size_label#}">{#bbcode_size_title#}</dt>
|
||||
<dd id="small" title="{#bbcode_size_label_small#}">{#bbcode_size_instruction_small#}</dd>
|
||||
<dd id="large" title="{#bbcode_size_label_large#}">{#bbcode_size_instruction_large#}</dd>
|
||||
{/if}
|
||||
<dt id="list" title="{#bbcode_list_label#}">{#bbcode_list_title#}</dt>
|
||||
<dd>{#bbcode_list_instruction#}</dd>
|
||||
{if $settings.bbcode_img}
|
||||
<dt id="img" title="{#bbcode_image_label#}">{#bbcode_image_title#}</dt>
|
||||
<dd title="{#bbcode_image_label_default#}">{#bbcode_image_instr_default#}</dd>
|
||||
<dd id="left" title="{#bbcode_image_label_left#}">{#bbcode_image_instr_left#}</dd>
|
||||
<dd id="right" title="{#bbcode_image_label_right#}">{#bbcode_image_instr_right#}</dd>
|
||||
<dd id="thumbnail" title="{#bbcode_image_label_thumb#}">{#bbcode_image_instr_thumb#}</dd>
|
||||
<dd id="thumbnail-left" title="{#bbcode_image_label_thumb_left#}">{#bbcode_image_instr_thumb_left#}</dd>
|
||||
<dd id="thumbnail-right" title="{#bbcode_image_label_thumb_right#}">{#bbcode_image_instr_thumb_right#}</dd>
|
||||
{/if}
|
||||
{if $upload_images}
|
||||
<dt id="upload" title="{#bbcode_upload_label#}">{#bbcode_upload_title#}</dt>
|
||||
<dd><a href="index.php?mode=upload_image">{#bbcode_upload_instruction#}</a></dd>
|
||||
{/if}
|
||||
{if $settings.bbcode_latex && $settings.bbcode_latex_uri}
|
||||
<dt id="tex" title="{#bbcode_tex_label#}">{#bbcode_tex_title#}</dt>
|
||||
<dd>{#bbcode_tex_instruction#}</dd>
|
||||
{/if}
|
||||
{if $settings.bbcode_code}
|
||||
<dt id="code" title="{#bbcode_code_label#}">{#bbcode_code_title#}</dt>
|
||||
<dd id="inlinecode" title="{#bbcode_code_label_inline#}">{#bbcode_code_instruction_inline#}</dd>
|
||||
<dd title="{#bbcode_code_label_general#}">{#bbcode_code_instruction_general#}</dd>
|
||||
{if $code_languages}
|
||||
{foreach from=$code_languages item=code_language}
|
||||
<dd id="{$code_language}" title="{#bbcode_code_label_specific#|replace:"[language]":$code_language}">{#bbcode_code_instruction_spec#|replace:"[language]":$code_language}</dd>
|
||||
{/foreach}
|
||||
{/if}
|
||||
{/if}
|
||||
</dl>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
{if $settings.smilies && $smilies}
|
||||
<dl id="smiley-instructions">
|
||||
{foreach name="smilies" from=$smilies item=smiley}
|
||||
<dt class="{if $smarty.foreach.smilies.index<6}default{else}additional{/if}" title="{#insert_smiley_title#}">{$smiley.code}</dt>
|
||||
<dd><img src="images/smilies/{$smiley.file}" alt="{$smiley.code}" /></dd>
|
||||
{/foreach}
|
||||
</dl>
|
||||
{/if}
|
||||
<textarea id="text" cols="80" rows="21" name="text">{if $text}{$text}{/if}</textarea>
|
||||
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
{if $signature || $provide_email_notification || $provide_sticky || $terms_of_use_agreement || $data_privacy_agreement}
|
||||
<fieldset>
|
||||
<fieldset>
|
||||
{if $signature}
|
||||
<p>
|
||||
<input id="show_signature" type="checkbox" name="show_signature" value="1"{if $show_signature && $show_signature==1} checked="checked"{/if} /> <label for="show_signature">{#show_signature_marking#}</label>
|
||||
</p>
|
||||
<div>
|
||||
<input id="show_signature" type="checkbox" name="show_signature" value="1"{if $show_signature && $show_signature==1} checked="checked"{/if} /> <label for="show_signature">{#show_signature_marking#}</label>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
{if $provide_email_notification}
|
||||
<p>
|
||||
<input id="email_notification" type="checkbox" name="email_notification" value="1"{if $email_notification && $email_notification==1} checked="checked"{/if} /> <label for="email_notification">{if $id==0}{#email_notific_reply_thread#}{else}{#email_notific_reply_post#}{/if}</label>
|
||||
</p>
|
||||
<div>
|
||||
<input id="email_notification" type="checkbox" name="email_notification" value="1"{if $email_notification && $email_notification==1} checked="checked"{/if} /> <label for="email_notification">{if $id==0}{#email_notific_reply_thread#}{else}{#email_notific_reply_post#}{/if}</label>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
{if $provide_sticky}
|
||||
<ul>
|
||||
<li><input id="sticky_none" type="radio" name="sticky" value="0"{if !$sticky or ($sticky && $sticky==0)} checked="checked"{/if} /> <label for="sticky_none">{#sticky_none#}</label></li>
|
||||
<ul id="sticky-selection">
|
||||
<li><input id="sticky_none" type="radio" name="sticky" value="0"{if !$sticky or ($sticky && $sticky==0)} checked="checked"{/if} /><label for="sticky_none">{#sticky_none#}</label></li>
|
||||
{if $categories}
|
||||
<li><input id="sticky_cat" type="radio" name="sticky" value="1"{if $sticky && $sticky==1} checked="checked"{/if} /> <label for="sticky_cat">{#sticky_single_cat#}</label></li>
|
||||
<li><input id="sticky_all" type="radio" name="sticky" value="2"{if $sticky && $sticky==2} checked="checked"{/if} /> <label for="sticky_all">{#sticky_all_cats#}</label></li>
|
||||
<li><input id="sticky_cat" type="radio" name="sticky" value="1"{if $sticky && $sticky==1} checked="checked"{/if} /><label for="sticky_cat">{#sticky_single_cat#}</label></li>
|
||||
<li><input id="sticky_all" type="radio" name="sticky" value="2"{if $sticky && $sticky==2} checked="checked"{/if} /><label for="sticky_all">{#sticky_all_cats#}</label></li>
|
||||
{else}
|
||||
<li><input id="sticky_nocat" type="radio" name="sticky" value="1"{if $sticky && $sticky==1} checked="checked"{/if} /> <label for="sticky_nocat">{#sticky_thread#}</label></li>
|
||||
<li><input id="sticky_nocat" type="radio" name="sticky" value="1"{if $sticky && $sticky==1} checked="checked"{/if} /><label for="sticky_nocat">{#sticky_thread#}</label></li>
|
||||
{/if}
|
||||
</ul>
|
||||
</ul>
|
||||
{/if}
|
||||
|
||||
{if $terms_of_use_agreement}
|
||||
{assign var=terms_of_use_url value=$settings.terms_of_use_url}
|
||||
<p>
|
||||
<input id="terms_of_use_agree" tabindex="8" type="checkbox" name="terms_of_use_agree" value="1"{if $terms_of_use_agree && $terms_of_use_agree==1} checked="checked"{/if} /> <label for="terms_of_use_agree">{if $terms_of_use_url}{#terms_of_use_agreement#|replace:"[[":"<a id=\"terms_of_use\" href=\"$terms_of_use_url\">"|replace:"]]":"</a>"}{else}{#terms_of_use_agreement#|replace:"[[":""|replace:"]]":""}{/if}</label>
|
||||
</p>
|
||||
<div>
|
||||
<input id="terms_of_use_agree" type="checkbox" name="terms_of_use_agree" value="1"{if $terms_of_use_agree && $terms_of_use_agree==1} checked="checked"{/if} /> <label for="terms_of_use_agree">{if $terms_of_use_url}{#terms_of_use_agreement#|replace:"[[":"<a id=\"terms_of_use\" href=\"$terms_of_use_url\">"|replace:"]]":"</a>"}{else}{#terms_of_use_agreement#|replace:"[[":""|replace:"]]":""}{/if}</label>
|
||||
</div>
|
||||
{/if}
|
||||
{if $data_privacy_agreement}
|
||||
{assign var=data_privacy_statement_url value=$settings.data_privacy_statement_url}
|
||||
<p>
|
||||
<input id="data_privacy_statement_agree" tabindex="9" type="checkbox" name="data_privacy_statement_agree" value="1"{if $data_privacy_statement_agree && $data_privacy_statement_agree==1} checked="checked"{/if} /> <label for="data_privacy_statement_agree">{if $data_privacy_statement_url}{#data_privacy_agreement#|replace:"[[":"<a id=\"data_privacy_statement\" href=\"$data_privacy_statement_url\">"|replace:"]]":"</a>"}{else}{#data_privacy_agreement#|replace:"[[":""|replace:"]]":""}{/if}</label>
|
||||
</p>
|
||||
<div>
|
||||
<input id="data_privacy_statement_agree" type="checkbox" name="data_privacy_statement_agree" value="1"{if $data_privacy_statement_agree && $data_privacy_statement_agree==1} checked="checked"{/if} /> <label for="data_privacy_statement_agree">{if $data_privacy_statement_url}{#data_privacy_agreement#|replace:"[[":"<a id=\"data_privacy_statement\" href=\"$data_privacy_statement_url\">"|replace:"]]":"</a>"}{else}{#data_privacy_agreement#|replace:"[[":""|replace:"]]":""}{/if}</label>
|
||||
</div>
|
||||
{/if}
|
||||
</fieldset>
|
||||
</fieldset>
|
||||
{/if}
|
||||
|
||||
{if $captcha}
|
||||
<fieldset>
|
||||
<legend>{#captcha_marking#}</legend>
|
||||
<fieldset>
|
||||
<legend>{#captcha_marking#}</legend>
|
||||
{if $captcha.type==2}
|
||||
<p><img class="captcha" src="modules/captcha/captcha_image.php?{$session.name}={$session.id}" alt="{#captcha_image_alt#}" width="180" height="40" /><br />
|
||||
<label for="captcha_code">{#captcha_expl_image#}</label><br />
|
||||
<input id="captcha_code" type="text" name="captcha_code" value="" size="10" tabindex="9" /></p>
|
||||
<p><img class="captcha" src="modules/captcha/captcha_image.php?{$session.name}={$session.id}" alt="{#captcha_image_alt#}" width="180" height="40" /><br />
|
||||
<label for="captcha_code">{#captcha_expl_image#}</label><br />
|
||||
<input id="captcha_code" type="text" name="captcha_code" value="" size="10" /></p>
|
||||
{else}
|
||||
<p><label for="captcha_code">{#captcha_expl_math#} {$captcha.number_1} + {$captcha.number_2} = </label><input id="captcha_code" type="text" name="captcha_code" value="" size="5" maxlength="5" tabindex="10" /></p>
|
||||
<div>
|
||||
<label for="captcha_code">{#captcha_expl_math#} {$captcha.number_1} + {$captcha.number_2} = </label>
|
||||
<input id="captcha_code" type="text" name="captcha_code" value="" size="5" maxlength="5" />
|
||||
</div>
|
||||
{/if}
|
||||
</fieldset>
|
||||
</fieldset>
|
||||
{/if}
|
||||
|
||||
<fieldset>
|
||||
<p><input type="submit" name="save_entry" value="{#message_submit_button#}" title="{#message_submit_title#}" tabindex="11" /> <input type="submit" name="preview" value="{#message_preview_button#}" title="{#message_preview_title#}" tabindex="11" /> <img id="throbber-submit" class="js-visibility-hidden" src="{$THEMES_DIR}/{$theme}/images/throbber_submit.gif" alt="" width="16" height="16" /></p>
|
||||
</fieldset>
|
||||
|
||||
</div>
|
||||
<fieldset>
|
||||
<div>
|
||||
<button name="save_entry" value="{#message_submit_button#}" title="{#message_submit_title#}">{#message_submit_button#}</button>
|
||||
<button name="preview" value="{#message_preview_button#}" title="{#message_preview_title#}">{#message_preview_button#}</button>
|
||||
<img id="throbber-submit" class="js-visibility-hidden" src="{$THEMES_DIR}/{$theme}/images/throbber_submit.gif" alt="" width="16" height="16" />
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
{/if}
|
||||
|
|
|
@ -1,20 +1,20 @@
|
|||
{config_load file=$language_file section="delete_posting"}
|
||||
{if $no_authorisation}
|
||||
<p class="notice caution">{$smarty.config.$no_authorisation}</p>
|
||||
<p class="notice caution">{$smarty.config.$no_authorisation}</p>
|
||||
{else}
|
||||
<h1>{#delete_postings_hl#}</h1>
|
||||
<p class="notice caution">{#caution#}</p>
|
||||
<p>{if $admin||$mod}{#delete_posting_replies_confirm#}{else}{#delete_posting_confirm#}{/if}</p>
|
||||
<p><strong>{$subject}</strong> - <strong>{$name}</strong>, {$formated_time}</p>
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<div>
|
||||
<input type="hidden" name="mode" value="posting" />
|
||||
<input type="hidden" name="delete_posting" value="{$id}" />
|
||||
<input type="hidden" name="csrf_token" value="{$CSRF_TOKEN}" />
|
||||
{if $back}<input type="hidden" name="back" value="{$back}" />{/if}
|
||||
{if $page}<input type="hidden" name="page" value="{$page}" />{/if}
|
||||
{if $category}<input type="hidden" name="category" value="{$category}" />{/if}
|
||||
<input type="submit" name="delete_posting_confirm" value="{#delete_posting_submit#}" />
|
||||
</div>
|
||||
</form>
|
||||
<h1>{#delete_postings_hl#}</h1>
|
||||
<p class="notice caution">{#caution#}</p>
|
||||
<p>{if $admin||$mod}{#delete_posting_replies_confirm#}{else}{#delete_posting_confirm#}{/if}</p>
|
||||
<p><strong>{$subject}</strong> - <strong>{$name}</strong>, {$formated_time}</p>
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<input type="hidden" name="mode" value="posting" />
|
||||
<input type="hidden" name="delete_posting" value="{$id}" />
|
||||
<input type="hidden" name="csrf_token" value="{$CSRF_TOKEN}" />
|
||||
{if $back} <input type="hidden" name="back" value="{$back}" />{/if}
|
||||
{if $page} <input type="hidden" name="page" value="{$page}" />{/if}
|
||||
{if $category} <input type="hidden" name="category" value="{$category}" />{/if}
|
||||
<div>
|
||||
<button name="delete_posting_confirm" value="{#delete_posting_submit#}">{#delete_posting_submit#}</button>
|
||||
</div>
|
||||
</form>
|
||||
{/if}
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
{config_load file=$language_file section="delete_posting"}
|
||||
{if $no_authorisation}
|
||||
<p class="notice caution">{$smarty.config.$no_authorisation}</p>
|
||||
<p class="notice caution">{$smarty.config.$no_authorisation}</p>
|
||||
{else}
|
||||
<h1>{#delete_marked_hl#}</h1>
|
||||
<p class="notice caution">{#caution#}</p>
|
||||
<p>{#delete_marked_confirm#}</p>
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<div>
|
||||
<input type="hidden" name="mode" value="posting" />
|
||||
<input type="hidden" name="csrf_token" value="{$CSRF_TOKEN}" />
|
||||
<input type="submit" name="delete_marked_submit" value="{#delete_posting_submit#}" />
|
||||
</div>
|
||||
</form>
|
||||
<h1>{#delete_marked_hl#}</h1>
|
||||
<p class="notice caution">{#caution#}</p>
|
||||
<p>{#delete_marked_confirm#}</p>
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<input type="hidden" name="mode" value="posting" />
|
||||
<input type="hidden" name="csrf_token" value="{$CSRF_TOKEN}" />
|
||||
<div>
|
||||
<button name="delete_marked_submit" value="{#delete_posting_submit#}">{#delete_posting_submit#}</button>
|
||||
</div>
|
||||
</form>
|
||||
{/if}
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
{config_load file=$language_file section="delete_posting"}
|
||||
{if $no_authorisation}
|
||||
<p class="notice caution">{#no_authorisation#}</p>
|
||||
<p class="notice caution">{#no_authorisation#}</p>
|
||||
{else}
|
||||
<h1>{#delete_spam_hl#}</h1>
|
||||
<p class="notice caution">{#caution#}</p>
|
||||
<p>{#delete_spam_confirm#}</p>
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<div>
|
||||
<input type="hidden" name="mode" value="posting" />
|
||||
<input type="hidden" name="csrf_token" value="{$CSRF_TOKEN}" />
|
||||
<input type="submit" name="delete_spam_submit" value="{#delete_posting_submit#}" />
|
||||
</div>
|
||||
</form>
|
||||
<h1>{#delete_spam_hl#}</h1>
|
||||
<p class="notice caution">{#caution#}</p>
|
||||
<p>{#delete_spam_confirm#}</p>
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<input type="hidden" name="mode" value="posting" />
|
||||
<input type="hidden" name="csrf_token" value="{$CSRF_TOKEN}" />
|
||||
<div>
|
||||
<button name="delete_spam_submit" value="{#delete_posting_submit#}">{#delete_posting_submit#}</button>
|
||||
</div>
|
||||
</form>
|
||||
{/if}
|
||||
|
|
|
@ -1,24 +1,24 @@
|
|||
{config_load file=$language_file section="delete_posting"}
|
||||
{if $no_authorisation}
|
||||
<p class="notice caution">{#no_authorisation#}</p>
|
||||
<p class="notice caution">{#no_authorisation#}</p>
|
||||
{else}
|
||||
<h1>{#flag_ham_hl#}</h1>
|
||||
{if !$id}
|
||||
{#postings_doesnt_exist#}
|
||||
{elseif $akismet_spam == 0 && $akismet_spam_check_status == 1 && $b8_spam == 0 && $b8_training_type == 1}
|
||||
{#posting_not_flagged_as_spam#}
|
||||
{else}
|
||||
<p class="notice caution">{#caution#}</p>
|
||||
<p>{#flag_ham_warning#}</p>
|
||||
<p><strong>{$subject}</strong> - <strong>{$name}</strong>, {$formated_time}</p>
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<input type="hidden" name="mode" value="posting" />
|
||||
<input type="hidden" name="id" value="{$id}" />
|
||||
<input type="hidden" name="csrf_token" value="{$CSRF_TOKEN}" />
|
||||
<div class="buttonbar">
|
||||
<button name="report_flag_ham_submit" value="{#report_flag_ham_submit#}">{#report_flag_ham_submit#}</button>
|
||||
<button name="flag_ham_submit" value="{#flag_ham_submit#}">{#flag_ham_submit#}</button>
|
||||
</div>
|
||||
</form>
|
||||
{/if}
|
||||
<h1>{#flag_ham_hl#}</h1>
|
||||
{if !$id}
|
||||
{#postings_doesnt_exist#}
|
||||
{elseif $akismet_spam == 0 && $akismet_spam_check_status == 1 && $b8_spam == 0 && $b8_training_type == 1}
|
||||
{#posting_not_flagged_as_spam#}
|
||||
{else}
|
||||
<p class="notice caution">{#caution#}</p>
|
||||
<p>{#flag_ham_warning#}</p>
|
||||
<p><span class="subject">{$subject}</span> - <span class="metadata"><span class="author-name">{$name}</span>, <span class="tail"><time datetime="{$ISO_time}">{$formated_time}</time></span></span></p>
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<input type="hidden" name="mode" value="posting" />
|
||||
<input type="hidden" name="id" value="{$id}" />
|
||||
<input type="hidden" name="csrf_token" value="{$CSRF_TOKEN}" />
|
||||
<div class="buttonbar">
|
||||
<button name="report_flag_ham_submit" value="{#report_flag_ham_submit#}">{#report_flag_ham_submit#}</button>
|
||||
<button name="flag_ham_submit" value="{#flag_ham_submit#}">{#flag_ham_submit#}</button>
|
||||
</div>
|
||||
</form>
|
||||
{/if}
|
||||
{/if}
|
||||
|
|
|
@ -1,29 +1,37 @@
|
|||
{config_load file=$language_file section="manage_postings"}
|
||||
{if $no_authorisation}
|
||||
<p class="notice caution">{$smarty.config.$no_authorisation}</p>
|
||||
<p class="notice caution">{$smarty.config.$no_authorisation}</p>
|
||||
{else}
|
||||
{assign var='input_days' value='</label><input type="text" name="days" value="" size="5" />'}
|
||||
<h1>{#manage_postings_hl#}</h1>
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<fieldset class="manage-postings">
|
||||
<legend><img src="{$THEMES_DIR}/{$theme}/images/marked.png" width="11" height="11" alt="" /> {#mark_postings#}</legend>
|
||||
<input type="hidden" name="mode" value="posting" />
|
||||
<p><input id="mark_mode_1" type="radio" name="mark_mode" value="1" /><label for="mark_mode_1">{$smarty.config.mark_old_threads|replace:"[days]":$input_days}<br />
|
||||
<input id="mark_mode_2" type="radio" name="mark_mode" value="2" /><label for="mark_mode_2">{#mark_all_postings#}</label><br />
|
||||
<input id="mark_mode_3" type="radio" name="mark_mode" value="3" /><label for="mark_mode_3">{#unmark_all_postings#}</label></p>
|
||||
<p><input type="submit" name="mark_submit" value="{#submit_button_ok#}" /></p>
|
||||
</fieldset>
|
||||
</form>
|
||||
<h1>{#manage_postings_hl#}</h1>
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<input type="hidden" name="mode" value="posting" />
|
||||
<fieldset class="manage-postings">
|
||||
<legend><img src="{$THEMES_DIR}/{$theme}/images/marked.png" width="11" height="11" alt="" /> {#mark_postings#}</legend>
|
||||
<ul>
|
||||
<li><input id="mark_mode_1" type="radio" name="mark_mode" value="1" /><label for="mark_mode_1">{$smarty.config.mark_old_threads|replace:"[days]":$input_days}</li>
|
||||
<li><input id="mark_mode_2" type="radio" name="mark_mode" value="2" /><label for="mark_mode_2">{#mark_all_postings#}</label></li>
|
||||
<li><input id="mark_mode_3" type="radio" name="mark_mode" value="3" /><label for="mark_mode_3">{#unmark_all_postings#}</label></li>
|
||||
</ul>
|
||||
<div>
|
||||
<button name="mark_submit" value="{#submit_button_ok#}">{#submit_button_ok#}</button>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<fieldset class="manage-postings">
|
||||
<legend><img src="{$THEMES_DIR}/{$theme}/images/locked.png" width="14" height="12" alt="" /> {#lock_postings#}</legend>
|
||||
<input type="hidden" name="mode" value="posting" />
|
||||
<input type="hidden" name="csrf_token" value="{$CSRF_TOKEN}" />
|
||||
<p><input id="lock_mode_1" type="radio" name="lock_mode" value="1" /><label for="lock_mode_1">{$smarty.config.lock_old_threads|replace:"[days]":$input_days}<br />
|
||||
<input id="lock_mode_2" type="radio" name="lock_mode" value="2" /><label for="lock_mode_2">{#lock_all_postings#}</label><br />
|
||||
<input id="lock_mode_3" type="radio" name="lock_mode" value="3" /><label for="lock_mode_3">{#unlock_all_postings#}</label></p>
|
||||
<p><input type="submit" name="lock_submit" value="{#submit_button_ok#}" /></p>
|
||||
</fieldset>
|
||||
</form>
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<input type="hidden" name="mode" value="posting" />
|
||||
<input type="hidden" name="csrf_token" value="{$CSRF_TOKEN}" />
|
||||
<fieldset class="manage-postings">
|
||||
<legend><img src="{$THEMES_DIR}/{$theme}/images/locked.png" width="14" height="12" alt="" /> {#lock_postings#}</legend>
|
||||
<ul>
|
||||
<li><input id="lock_mode_1" type="radio" name="lock_mode" value="1" /><label for="lock_mode_1">{$smarty.config.lock_old_threads|replace:"[days]":$input_days}</li>
|
||||
<li><input id="lock_mode_2" type="radio" name="lock_mode" value="2" /><label for="lock_mode_2">{#lock_all_postings#}</label></li>
|
||||
<li><input id="lock_mode_3" type="radio" name="lock_mode" value="3" /><label for="lock_mode_3">{#unlock_all_postings#}</label></li>
|
||||
</ul>
|
||||
<div>
|
||||
<button name="lock_submit" value="{#submit_button_ok#}">{#submit_button_ok#}</button>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
{/if}
|
||||
|
|
|
@ -1,27 +1,29 @@
|
|||
{config_load file=$language_file section="move_posting"}
|
||||
{if $no_authorisation}
|
||||
<p class="notice caution">{$smarty.config.$no_authorisation}</p>
|
||||
<p class="notice caution">{$smarty.config.$no_authorisation}</p>
|
||||
{else}
|
||||
{assign var="input_move_to" value="<input type=\"text\" name=\"move_to\" value=\"\" size=\"5\" onclick=\"document.getElementById('move_mode_1').checked=false; document.getElementById('move_mode_1').checked='checked'; \" />"}
|
||||
<h1>{#move_posting_hl#}</h1>
|
||||
{assign var="input_move_to" value="<input type=\"number\" inputmode=\"decimal\" name=\"move_to\" value=\"\" size=\"5\" onclick=\"document.getElementById('move_mode_1').checked=false; document.getElementById('move_mode_1').checked='checked'; \" />"}
|
||||
<h1>{#move_posting_hl#}</h1>
|
||||
{if $errors}{include file="$theme/subtemplates/errors.inc.tpl"}{/if}
|
||||
<p><strong>{$subject}</strong> - <strong>{$name}</strong>, {$formated_time}</p>
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<div>
|
||||
<input type="hidden" name="mode" value="posting" />
|
||||
<input type="hidden" name="move_posting" value="{$move_posting}" />
|
||||
<input type="hidden" name="back" value="{$back}" />
|
||||
<input type="hidden" name="csrf_token" value="{$CSRF_TOKEN}" />
|
||||
<p><span class="subject">{$subject}</span> - <span class="metadata"><span class="author-name">{$name}</span>, <span class="tail"><time datetime="">{$formated_time}</time></span></span></p>
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<input type="hidden" name="mode" value="posting" />
|
||||
<input type="hidden" name="move_posting" value="{$move_posting}" />
|
||||
<input type="hidden" name="back" value="{$back}" />
|
||||
<input type="hidden" name="csrf_token" value="{$CSRF_TOKEN}" />
|
||||
{if $posting_type==0}
|
||||
{assign var="input_move_to" value="<input type=\"text\" name=\"move_to\" value=\"\" size=\"5\" />"}
|
||||
<input type="hidden" name="move_mode" value="1" />
|
||||
<p>{#move_posting#|replace:"[number]":$input_move_to}</p>
|
||||
{assign var="input_move_to" value="<input type=\"number\" inputmode=\"decimal\" name=\"move_to\" value=\"\" size=\"5\" />"}
|
||||
<input type="hidden" name="move_mode" value="1" />
|
||||
<p>{#move_posting#|replace:"[number]":$input_move_to}</p>
|
||||
{else}
|
||||
{assign var="input_move_to" value="<input type=\"text\" name=\"move_to\" value=\"\" size=\"5\" onclick=\"document.getElementById('move_mode_1').checked=false; document.getElementById('move_mode_1').checked='checked'; \" />"}
|
||||
<p><input id="move_mode_0" type="radio" name="move_mode" value="0" checked="checked" /> <!--<label for="move_mode_0">-->{#move_posting_new_thread#}<!--</label>--><br />
|
||||
<input id="move_mode_1" type="radio" name="move_mode" value="1" /> <!--<label for="move_mode_1">-->{#move_posting#|replace:"[number]":$input_move_to}<!--</label>--></p>
|
||||
{assign var="input_move_to" value="<input type=\"number\" inputmode=\"decimal\" name=\"move_to\" value=\"\" size=\"5\" onclick=\"document.getElementById('move_mode_0').checked=false; document.getElementById('move_mode_1').checked='checked'; \" />"}
|
||||
<ul>
|
||||
<li><input id="move_mode_0" type="radio" name="move_mode" value="0" checked="checked" /> <label for="move_mode_0">{#move_posting_new_thread#}</label></li>
|
||||
<li><input id="move_mode_1" type="radio" name="move_mode" value="1" /> <label for="move_mode_1">{#move_posting#|replace:"[number]":$input_move_to}</label></li>
|
||||
</ul>
|
||||
{/if}
|
||||
<p><input type="submit" name="move_posting_submit" value="{#move_posting_submit#}" /></p>
|
||||
</div>
|
||||
</form>
|
||||
<div>
|
||||
<button name="move_posting_submit" value="{#move_posting_submit#}">{#move_posting_submit#}</button>
|
||||
</div>
|
||||
</form>
|
||||
{/if}
|
||||
|
|
|
@ -1,33 +1,33 @@
|
|||
{config_load file=$language_file section="delete_posting"}
|
||||
{if $no_authorisation}
|
||||
<p class="notice caution">{#no_authorisation#}</p>
|
||||
<p class="notice caution">{#no_authorisation#}</p>
|
||||
{else}
|
||||
<h1>{#report_spam_hl#}</h1>
|
||||
{if !$id}
|
||||
{#postings_doesnt_exist#}
|
||||
{elseif $akismet_spam == 1 && $akismet_spam_check_status == 1 && $b8_spam == 1 && $b8_training_type == 2}
|
||||
{#posting_already_spam#}
|
||||
{else}
|
||||
<p class="notice caution">{#caution#}</p>
|
||||
<p>{#report_spam_warning#}</p>
|
||||
<p>{if $akismet_spam_check_status==2}{#spamcheck_akismet_timeout_error#}{/if}</p>
|
||||
<p>{if $akismet_spam_check_status==3}{#spamcheck_akismet_api_error#}{/if}</p>
|
||||
|
||||
<p><strong>{$subject}</strong> - <strong>{$name}</strong>, {$formated_time}</p>
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<input type="hidden" name="mode" value="posting" />
|
||||
<input type="hidden" name="id" value="{$id}" />
|
||||
<input type="hidden" name="csrf_token" value="{$CSRF_TOKEN}" />
|
||||
{if $back}<input type="hidden" name="back" value="{$back}" />{/if}
|
||||
{if $page}<input type="hidden" name="page" value="{$page}" />{/if}
|
||||
{if $order}<input type="hidden" name="order" value="{$order}" />{/if}
|
||||
{if $descasc}<input type="hidden" name="descasc" value="{$descasc}" />{/if}
|
||||
{if $category}<input type="hidden" name="category" value="{$category}" />{/if}
|
||||
<div class="buttonbar">
|
||||
<button name="report_spam_delete_submit" value="{#report_spam_delete_submit#}">{#report_spam_delete_submit#}</button>
|
||||
<button name="report_spam_submit" value="{#report_spam_submit#}">{#report_spam_submit#}</button>
|
||||
<button name="delete_submit" value="{#delete_only_submit#}">{#delete_only_submit#}</button>
|
||||
</div>
|
||||
</form>
|
||||
{/if}
|
||||
<h1>{#report_spam_hl#}</h1>
|
||||
{if !$id}
|
||||
{#postings_doesnt_exist#}
|
||||
{elseif $akismet_spam == 1 && $akismet_spam_check_status == 1 && $b8_spam == 1 && $b8_training_type == 2}
|
||||
{#posting_already_spam#}
|
||||
{else}
|
||||
<p class="notice caution">{#caution#}</p>
|
||||
<p>{#report_spam_warning#}</p>
|
||||
{if $akismet_spam_check_status==2} <p>{#spamcheck_akismet_timeout_error#}</p>{/if}
|
||||
{if $akismet_spam_check_status==3} <p>{#spamcheck_akismet_api_error#}</p>{/if}
|
||||
|
||||
<p><span class="subject">{$subject}</span> - <span class="metadata"><span class="author-name">{$name}</span>, <span class="tail"><time datetime="{$ISO_time}">{$formated_time}</time></span></span></p>
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<input type="hidden" name="mode" value="posting" />
|
||||
<input type="hidden" name="id" value="{$id}" />
|
||||
<input type="hidden" name="csrf_token" value="{$CSRF_TOKEN}" />
|
||||
{if $back} <input type="hidden" name="back" value="{$back}" />{/if}
|
||||
{if $page} <input type="hidden" name="page" value="{$page}" />{/if}
|
||||
{if $order} <input type="hidden" name="order" value="{$order}" />{/if}
|
||||
{if $descasc} <input type="hidden" name="descasc" value="{$descasc}" />{/if}
|
||||
{if $category} <input type="hidden" name="category" value="{$category}" />{/if}
|
||||
<div class="buttonbar">
|
||||
<button name="report_spam_delete_submit" value="{#report_spam_delete_submit#}">{#report_spam_delete_submit#}</button>
|
||||
<button name="report_spam_submit" value="{#report_spam_submit#}">{#report_spam_submit#}</button>
|
||||
<button name="delete_submit" value="{#delete_only_submit#}">{#delete_only_submit#}</button>
|
||||
</div>
|
||||
</form>
|
||||
{/if}
|
||||
{/if}
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
{config_load file=$language_file section="register"}
|
||||
{if $captcha}{config_load file=$language_file section="captcha"}{/if}
|
||||
<p class="normal">{#register_exp#}</p>
|
||||
{if $errors}
|
||||
<p class="notice caution">{#error_headline#}</p>
|
||||
<ul>
|
||||
|
@ -10,46 +9,69 @@
|
|||
{/section}
|
||||
</ul>
|
||||
{/if}
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<div>
|
||||
<input type="hidden" name="mode" value="register" />
|
||||
<input type="hidden" name="csrf_token" value="{$CSRF_TOKEN}" />
|
||||
{if $captcha}<input type="hidden" name="{$captcha.session_name}" value="{$captcha.session_id}" />{/if}
|
||||
<div id="card">
|
||||
<p>{#register_exp#}</p>
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<input type="hidden" name="mode" value="register" />
|
||||
<input type="hidden" name="csrf_token" value="{$CSRF_TOKEN}" />
|
||||
{if $captcha} <input type="hidden" name="{$captcha.session_name}" value="{$captcha.session_id}" />{/if}
|
||||
|
||||
<p><label for="new_user_name" class="main">{#register_username#}</label><br />
|
||||
<input id="new_user_name" class="login" type="text" size="30" name="{$fld_user_name}" value="{$new_user_name|default:''}" maxlength="{$settings.username_maxlength}" tabindex="1" /></p>
|
||||
<div>
|
||||
<label for="new_user_name" class="main">{#register_username#}</label>
|
||||
<input id="new_user_name" class="login" type="text" size="30" name="{$fld_user_name}" value="{$new_user_name|default:''}" maxlength="{$settings.username_maxlength}" autofocus required />
|
||||
</div>
|
||||
|
||||
<p><label for="reg_pw" class="main">{#register_pw#}</label><br />
|
||||
<input id="reg_pw" class="login" type="password" spellcheck="false" autocomplete="off" size="30" name="{$fld_pword}" maxlength="255" tabindex="2" /></p>
|
||||
<div>
|
||||
<label for="reg_pw" class="main">{#register_pw#}</label>
|
||||
<input id="reg_pw" class="login" type="password" spellcheck="false" autocomplete="off" writingsuggestions="false" size="30" name="{$fld_pword}" maxlength="255" required />
|
||||
</div>
|
||||
|
||||
<p class="hp"><label for="phone" class="main">{#register_honeypot_field#}</label><br />
|
||||
<input id="phone" class="login" type="text" size="30" name="{$fld_phone}" value="{$honey_pot_phone|default:''}" maxlength="35" tabindex="-1" /></p>
|
||||
<div class="hp">
|
||||
<label for="phone" class="main">{#register_honeypot_field#}</label>
|
||||
<input id="phone" class="login" type="tel" size="30" name="{$fld_phone}" value="{$honey_pot_phone|default:''}" maxlength="35" tabindex="-1" />
|
||||
</div>
|
||||
|
||||
<p><label for="new_user_email" class="main">{#register_user_email#}</label><br />
|
||||
<input id="new_user_email" class="login" type="text" size="30" name="{$fld_user_email}" value="{$new_user_email|default:''}" maxlength="{$settings.email_maxlength}" tabindex="3" /></p>
|
||||
<div>
|
||||
<label for="new_user_email" class="main">{#register_user_email#}</label>
|
||||
<input id="new_user_email" class="login" type="email" size="30" name="{$fld_user_email}" value="{$new_user_email|default:''}" maxlength="{$settings.email_maxlength}" required />
|
||||
</div>
|
||||
|
||||
<p class="hp"><label for="repeat_email" class="main">{#register_honeypot_field#}</label><br />
|
||||
<input id="repeat_email" class="login" type="text" size="30" name="{$fld_repeat_email}" value="{$honey_pot_email|default:''}" maxlength="{$settings.email_maxlength}" tabindex="-1" /></p>
|
||||
<div class="hp">
|
||||
<label for="repeat_email" class="main">{#register_honeypot_field#}</label>
|
||||
<input id="repeat_email" class="login" type="email" size="30" name="{$fld_repeat_email}" value="{$honey_pot_email|default:''}" maxlength="{$settings.email_maxlength}" tabindex="-1" />
|
||||
</div>
|
||||
|
||||
{if $terms_of_use_agreement}
|
||||
{assign var=terms_of_use_url value=$settings.terms_of_use_url}
|
||||
<p><input tabindex="4" id="terms_of_use_agree" type="checkbox" name="terms_of_use_agree" value="1"{if $terms_of_use_agree && $terms_of_use_agree==1} checked="checked"{/if} /> <label for="terms_of_use_agree">{if $terms_of_use_url}{#terms_of_use_agreement#|replace:"[[":"<a id=\"terms_of_use\" href=\"$terms_of_use_url\">"|replace:"]]":"</a>"}{else}{#terms_of_use_agreement#|replace:"[[":""|replace:"]]":""}{/if}</label></p>
|
||||
<div>
|
||||
<input id="terms_of_use_agree" type="checkbox" name="terms_of_use_agree" value="1"{if $terms_of_use_agree && $terms_of_use_agree==1} checked="checked"{/if} /> <label for="terms_of_use_agree">{if $terms_of_use_url}{#terms_of_use_agreement#|replace:"[[":"<a id=\"terms_of_use\" href=\"$terms_of_use_url\">"|replace:"]]":"</a>"}{else}{#terms_of_use_agreement#|replace:"[[":""|replace:"]]":""}{/if}</label>
|
||||
</div>
|
||||
{/if}
|
||||
{if $data_privacy_agreement}
|
||||
{assign var=data_privacy_statement_url value=$settings.data_privacy_statement_url}
|
||||
<p><input tabindex="5" id="data_privacy_statement_agree" type="checkbox" name="data_privacy_statement_agree" value="1"{if $data_privacy_statement_agree && $data_privacy_statement_agree==1} checked="checked"{/if} /> <label for="data_privacy_statement_agree">{if $data_privacy_statement_url}{#data_privacy_agreement#|replace:"[[":"<a id=\"data_priv_declaration\" href=\"$data_privacy_statement_url\">"|replace:"]]":"</a>"}{else}{#data_privacy_agreement#|replace:"[[":""|replace:"]]":""}{/if}</label></p>
|
||||
<div>
|
||||
<input id="data_privacy_statement_agree" type="checkbox" name="data_privacy_statement_agree" value="1"{if $data_privacy_statement_agree && $data_privacy_statement_agree==1} checked="checked"{/if} /> <label for="data_privacy_statement_agree">{if $data_privacy_statement_url}{#data_privacy_agreement#|replace:"[[":"<a id=\"data_priv_declaration\" href=\"$data_privacy_statement_url\">"|replace:"]]":"</a>"}{else}{#data_privacy_agreement#|replace:"[[":""|replace:"]]":""}{/if}</label>
|
||||
</div>
|
||||
{/if}
|
||||
{if $captcha}
|
||||
{if $captcha.type==2}
|
||||
<p><strong>{#captcha_marking#}</strong><br />
|
||||
<img class="captcha" src="modules/captcha/captcha_image.php?{$captcha.session_name}={$captcha.session_id}" alt="{#captcha_image_alt_reg#}" width="180" height="40" /><br />
|
||||
<label for="captcha_code">{#captcha_expl_image#}</label><br />
|
||||
<input id="captcha_code" type="text" name="captcha_code" value="" size="10" tabindex="6" /></p>
|
||||
<div>
|
||||
<strong class="label-like">{#captcha_marking#}</span><br />
|
||||
<img class="captcha" src="modules/captcha/captcha_image.php?{$captcha.session_name}={$captcha.session_id}" alt="{#captcha_image_alt_reg#}" width="180" height="40" /><br />
|
||||
<label for="captcha_code">{#captcha_expl_image#}</label>
|
||||
<input id="captcha_code" type="text" name="captcha_code" value="" size="10" required />
|
||||
</div>
|
||||
{else}
|
||||
<p><strong>{#captcha_marking#}</strong><br />
|
||||
<label for="captcha_code">{#captcha_expl_math#} {$captcha.number_1} + {$captcha.number_2} = </label><input id="captcha_code" type="text" name="captcha_code" value="" size="5" tabindex="7" /></p>
|
||||
<div>
|
||||
<strong>{#captcha_marking#}</strong><br />
|
||||
<label for="captcha_code">{#captcha_expl_math#} {$captcha.number_1} + {$captcha.number_2} = </label>
|
||||
<input id="captcha_code" type="text" name="captcha_code" value="" size="5" required />
|
||||
</div>
|
||||
{/if}
|
||||
{/if}
|
||||
<p><input type="submit" name="register_submit" value="{#submit_button_ok#}" tabindex="8" /></p>
|
||||
</div>
|
||||
</form>
|
||||
<div class="buttonbar">
|
||||
<button name="register_submit" value="{#submit_button_ok#}">{#submit_button_ok#}</button>
|
||||
<p><a href="index.php?mode=login">{#register_link_to_login#}</a></p>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
|
@ -1,26 +1,46 @@
|
|||
{if !$list_spam}
|
||||
<form action="index.php" method="get" accept-charset="{#charset#}">
|
||||
<div style="margin-bottom:20px;">
|
||||
<input type="hidden" name="mode" value="search" />
|
||||
<input type="text" name="search" value="{$search|default:""}" size="30" />
|
||||
<input type="hidden" name="mode" value="search" />
|
||||
<div>
|
||||
<label for="search_term">{#search_term#}</label>
|
||||
<input type="search" name="search" id="searchterm" value="{$search|default:""}" size="30" />
|
||||
</div>
|
||||
{if $categories}
|
||||
<select size="1" name="p_category">
|
||||
<option value="0"{if $category==0} selected="selected"{/if}>{#all_categories#}</option>
|
||||
<div>
|
||||
<label for="search-category">{#search_category#}</label>
|
||||
<select size="1" name="p_category" id="search-category">
|
||||
<option value="0"{if $category==0} selected="selected"{/if}>{#all_categories#}</option>
|
||||
{foreach key=key item=val from=$categories}
|
||||
{if $key!=0}<option value="{$key}"{if $key==$p_category} selected="selected"{/if}>{$val}</option>{/if}
|
||||
{if $key!=0} <option value="{$key}"{if $key==$p_category} selected="selected"{/if}>{$val}</option>{/if}
|
||||
{/foreach}
|
||||
</select>
|
||||
{/if}
|
||||
<input type="submit" name="search_submit" value="{#search_submit_button#}" />{if $settings.tags>0}<br />
|
||||
<span class="small"><input id="searchfulltext" type="radio" name="method" value="0"{if $method == 'fulltext'} checked="checked"{/if} /><label for="searchfulltext">{#search_fulltext#}</label> <input id="searchtags" type="radio" class="search-radio" name="method" value="tags"{if $method == 'tags'} checked="checked"{/if} /><label for="searchtags">{#search_tags#}</label></span>{/if}
|
||||
</div></form>
|
||||
</select>
|
||||
</div>{/if}
|
||||
{if $settings.tags>0}
|
||||
<ul>
|
||||
<li><input id="searchfulltext" type="radio" name="method" value="0"{if $method == 'fulltext'} checked="checked"{/if} /><label for="searchfulltext">{#search_fulltext#}</label></li>
|
||||
<li><input id="searchtags" type="radio" class="search-radio" name="method" value="tags"{if $method == 'tags'} checked="checked"{/if} /><label for="searchtags">{#search_tags#}</label></li>
|
||||
</ul>{/if}
|
||||
<div>
|
||||
<button name="search_submit" value="{#search_submit_button#}">{#search_submit_button#}</button>
|
||||
</div>
|
||||
</form>
|
||||
{/if}
|
||||
{if $search || $list_spam}
|
||||
{if $search_results}
|
||||
<p>{if $search_results_count>1}{$smarty.config.several_postings_found|replace:"[number]":$search_results_count}{else}{#one_posting_found#}{/if}</p>
|
||||
<ul class="searchresults">
|
||||
{section name=result loop=$search_results}
|
||||
<li><a class="{if $search_results[result].pid==0}thread-search{else}reply-search{/if}{if $search_results[result].is_read} read{/if}" href="index.php?id={$search_results[result].id}">{$search_results[result].subject}</a>{if $search_results[result].no_text} <img class="no-text" src="{$THEMES_DIR}/{$theme}/images/no_text.png" title="{#no_text_title#}" alt="{#no_text_alt#}" width="11" height="9" />{/if} - <strong>{$search_results[result].name}</strong>, <span id="p{$search_results[result].id}" class="tail">{$search_results[result].formated_time} <a href="index.php?mode=thread&id={$search_results[result].id}" title="{#open_whole_thread#}"><img src="{$THEMES_DIR}/{$theme}/images/complete_thread.png" alt="{#open_whole_thread#}" width="11" height="11" /></a> {if $search_results[result].category}<a href="index.php?mode=index&category={$search_results[result].category}"><span class="category">({$search_results[result].category_name})</span></a>{/if}</span></li>
|
||||
<li><a class="subject {if $search_results[result].pid==0}thread-search{else}reply-search{/if}{if $search_results[result].is_read} read{/if}" href="index.php?id={$search_results[result].id}">{$search_results[result].subject}</a>
|
||||
<span class="metadata">
|
||||
<span class="author-name">{$search_results[result].name}</span>
|
||||
<span id="p{$search_results[result].id}" class="tail">
|
||||
{$search_results[result].formated_time}
|
||||
{if $search_results[result].no_text}<img class="no-text" src="{$THEMES_DIR}/{$theme}/images/no_text.png" title="{#no_text_title#}" alt="{#no_text_alt#}" width="11" height="9" />{/if}
|
||||
<a href="index.php?mode=thread&id={$search_results[result].id}" title="{#open_whole_thread#}"><img src="{$THEMES_DIR}/{$theme}/images/complete_thread.png" alt="{#open_whole_thread#}" width="11" height="11" /></a>
|
||||
{if $search_results[result].category}<a href="index.php?mode=index&category={$search_results[result].category}"><span class="category">({$search_results[result].category_name})</span></a>{/if}
|
||||
</span>
|
||||
</span>
|
||||
</li>
|
||||
{/section}
|
||||
</ul>
|
||||
{if $page_browse && $page_browse.total_items > $page_browse.items_per_page}
|
||||
|
|
|
@ -20,16 +20,17 @@
|
|||
{if $data.$element.user_type==2}
|
||||
{assign var=admin_name value=$data.$element.name}
|
||||
{assign var=admin_title value=$smarty.config.administrator_title}
|
||||
{assign var=name value="<span class=\"admin registered_user\" title=\"$admin_title\">$admin_name</span>"}
|
||||
{assign var=name value="<span class=\"author-name admin registered_user\" title=\"$admin_title\">$admin_name</span>"}
|
||||
{elseif $data.$element.user_type==1}
|
||||
{assign var=mod_name value=$data.$element.name}
|
||||
{assign var=mod_title value=$smarty.config.moderator_title}
|
||||
{assign var=name value="<span class=\"mod registered_user\" title=\"$mod_title\">$mod_name</span>"}
|
||||
{assign var=name value="<span class=\"author-name mod registered_user\" title=\"$mod_title\">$mod_name</span>"}
|
||||
{elseif $data.$element.user_id>0}
|
||||
{assign var=user_name value=$data.$element.name}
|
||||
{assign var=name value="<span class=\"registered_user\">$user_name</span>"}
|
||||
{assign var=name value="<span class=\"author-name registered_user\">$user_name</span>"}
|
||||
{else}
|
||||
{assign var=name value=$data.$element.name}
|
||||
{assign var=visitor_name value=$data.$element.name}
|
||||
{assign var=name value="<span class=\"author-name\">$visitor_name</span>"}
|
||||
{/if}
|
||||
|
||||
{if (($settings.user_area_access == 0 and ($admin or $mod)) or ($settings.user_area_access == 1 and $user) or $settings.user_area_access == 2) && $data.$element.user_id>0}
|
||||
|
@ -40,8 +41,8 @@
|
|||
<header class="header">
|
||||
{if $data.$element.avatar}<img id="avatar-{$data.$element.id}" class="avatar" src="{$data.$element.avatar.image}" alt="{#avatar_img_alt#}" width="{$data.$element.avatar.width}" height="{$data.$element.avatar.height}" />{/if}
|
||||
<h{if $data.$element.pid==0}1{else}2{/if} id="headline-{$data.$element.id}">{$data.$element.subject}{if $data.$element.pid==0 && $category_name} <span class="category">({$category_name})</span>{/if}</h{if $data.$element.pid==0}1{else}2{/if}>
|
||||
<p class="author">{if $data.$element.location}{#posted_by_location#|replace:"[name]":$name|replace:"[email_hp]":$email_hp|replace:"[location]":$data.$element.location|replace:"[time]":$data.$element.formated_time}{else}{#posted_by#|replace:"[name]":$name|replace:"[email_hp]":$email_hp|replace:"[time]":$data.$element.formated_time}{/if} <span class="ago">({if $data.$element.ago.days>1}{#posting_several_days_ago#|replace:"[days]":$data.$element.ago.days_rounded}{else}{if $data.$element.ago.days==0 && $data.$element.ago.hours==0}{#posting_minutes_ago#|replace:"[minutes]":$data.$element.ago.minutes}{elseif $data.$element.ago.days==0 && $data.$element.ago.hours!=0}{#posting_hours_ago#|replace:"[hours]":$data.$element.ago.hours|replace:"[minutes]":$data.$element.ago.minutes}{else}{#posting_one_day_ago#|replace:"[hours]":$data.$element.ago.hours|replace:"[minutes]":$data.$element.ago.minutes}{/if}{/if})</span>{if $admin && $data.$element.ip} <span class="ip">({$data.$element.ip})</span>{/if}{if $data.$element.pid!=0}{assign var="parent_posting" value=$data.$element.pid} <span class="op-link"><a href="#p{$data.$element.pid}" title="{#original_posting_linktitle#|replace:"[name]":$data.$parent_posting.name}">@ {$data.$parent_posting.name}</a></span>{/if}{if $data.$element.edited}<br />
|
||||
<span class="edited">{#edited_by#|replace:"[name]":$data.$element.edited_by|replace:"[time]":$data.$element.formated_edit_time}</span>{/if}</p>
|
||||
<p class="author">{if $data.$element.location}{#posted_by_location#|replace:"[name]":$name|replace:"[email_hp]":$email_hp|replace:"[location]":$data.$element.location}{else}{#posted_by#|replace:"[name]":$name|replace:"[email_hp]":$email_hp}{/if}<time datetime="{$data.$element.ISO_time}">{$data.$element.formated_time}</time> <span class="ago">({if $data.$element.ago.days>1}{#posting_several_days_ago#|replace:"[days]":$data.$element.ago.days_rounded}{else}{if $data.$element.ago.days==0 && $data.$element.ago.hours==0}{#posting_minutes_ago#|replace:"[minutes]":$data.$element.ago.minutes}{elseif $data.$element.ago.days==0 && $data.$element.ago.hours!=0}{#posting_hours_ago#|replace:"[hours]":$data.$element.ago.hours|replace:"[minutes]":$data.$element.ago.minutes}{else}{#posting_one_day_ago#|replace:"[hours]":$data.$element.ago.hours|replace:"[minutes]":$data.$element.ago.minutes}{/if}{/if})</span>{if $admin && $data.$element.ip} <span class="ip">({$data.$element.ip})</span>{/if}{if $data.$element.pid!=0}{assign var="parent_posting" value=$data.$element.pid} <span class="op-link"><a href="#p{$data.$element.pid}" title="{#original_posting_linktitle#|replace:"[name]":$data.$parent_posting.name}">@ {$data.$parent_posting.name}</a></span>{/if}
|
||||
{if $data.$element.edited}<br /><span class="edited">{#edited_by#|replace:"[name]":$data.$element.edited_by}<time datetime="{$data.$element.ISO_edit_time}">{$data.$element.formated_edit_time}</time></span>{/if}</p>
|
||||
</header>
|
||||
<div class="wrapper" id="posting-{$data.$element.id}">
|
||||
<div class="body">
|
||||
|
|
|
@ -20,16 +20,17 @@
|
|||
{if $element.user_type==2}
|
||||
{assign var=admin_name value=$element.name}
|
||||
{assign var=admin_title value=$smarty.config.administrator_title}
|
||||
{assign var=name value="<span class=\"admin registered_user\" title=\"$admin_title\">$admin_name</span>"}
|
||||
{assign var=name value="<span class=\"author-name admin registered_user\" title=\"$admin_title\">$admin_name</span>"}
|
||||
{elseif $element.user_type==1}
|
||||
{assign var=mod_name value=$element.name}
|
||||
{assign var=mod_title value=$smarty.config.moderator_title}
|
||||
{assign var=name value="<span class=\"mod registered_user\" title=\"$mod_title\">$mod_name</span>"}
|
||||
{assign var=name value="<span class=\"author-name mod registered_user\" title=\"$mod_title\">$mod_name</span>"}
|
||||
{elseif $element.user_id>0}
|
||||
{assign var=user_name value=$element.name}
|
||||
{assign var=name value="<span class=\"registered_user\">$user_name</span>"}
|
||||
{assign var=name value="<span class=\"author-name registered_user\">$user_name</span>"}
|
||||
{else}
|
||||
{assign var=name value=$element.name}
|
||||
{assign var=visitor_name value=$element.name}
|
||||
{assign var=name value="<span class=\"author-name\">$visitor_name</span>"}
|
||||
{/if}
|
||||
|
||||
{if (($settings.user_area_access == 0 and ($admin or $mod)) or ($settings.user_area_access == 1 and $user) or $settings.user_area_access == 2) &&$element.user_id>0}
|
||||
|
@ -40,8 +41,8 @@
|
|||
<header class="header">
|
||||
{if $element.avatar}<img id="avatar-{$element.id}" class="avatar" src="{$element.avatar.image}" alt="{#avatar_img_alt#}" width="{$element.avatar.width}" height="{$element.avatar.height}" />{/if}
|
||||
<h{if $element.pid==0}1{else}2{/if} id="headline-{$element.id}">{$element.subject}{if $element.pid==0 && $category_name} <span class="category">({$category_name})</span>{/if}</h{if $element.pid==0}1{else}2{/if}>
|
||||
<p class="author">{if $element.location}{#posted_by_location#|replace:"[name]":$name|replace:"[email_hp]":$email_hp|replace:"[location]":$element.location|replace:"[time]":$element.formated_time}{else}{#posted_by#|replace:"[name]":$name|replace:"[email_hp]":$email_hp|replace:"[time]":$element.formated_time}{/if} <span class="ago">({if $element.ago.days>1}{#posting_several_days_ago#|replace:"[days]":$element.ago.days_rounded}{else}{if $element.ago.days==0 && $element.ago.hours==0}{#posting_minutes_ago#|replace:"[minutes]":$element.ago.minutes}{elseif $element.ago.days==0 && $element.ago.hours!=0}{#posting_hours_ago#|replace:"[hours]":$element.ago.hours|replace:"[minutes]":$element.ago.minutes}{else}{#posting_one_day_ago#|replace:"[hours]":$element.ago.hours|replace:"[minutes]":$element.ago.minutes}{/if}{/if})</span>{if $admin && $element.ip} <span class="ip">({$element.ip})</span>{/if}{if $element.pid!=0}{assign var="parent_posting" value=$element.pid} <span class="op-link"><a href="#p{$element.pid}" title="{#original_posting_linktitle#|replace:"[name]":$data.$parent_posting.name}">@ {$data.$parent_posting.name}</a></span>{/if}{if $element.edited}<br />
|
||||
<span class="edited">{#edited_by#|replace:"[name]":$element.edited_by|replace:"[time]":$element.formated_edit_time}</span>{/if}</p>
|
||||
<p class="author">{if $element.location}{#posted_by_location#|replace:"[name]":$name|replace:"[email_hp]":$email_hp|replace:"[location]":$element.location}{else}{#posted_by#|replace:"[name]":$name|replace:"[email_hp]":$email_hp}{/if}<time datetime="{$element.ISO_time}">{$element.formated_time}</time> <span class="ago">({if $element.ago.days>1}{#posting_several_days_ago#|replace:"[days]":$element.ago.days_rounded}{else}{if $element.ago.days==0 && $element.ago.hours==0}{#posting_minutes_ago#|replace:"[minutes]":$element.ago.minutes}{elseif $element.ago.days==0 && $element.ago.hours!=0}{#posting_hours_ago#|replace:"[hours]":$element.ago.hours|replace:"[minutes]":$element.ago.minutes}{else}{#posting_one_day_ago#|replace:"[hours]":$element.ago.hours|replace:"[minutes]":$element.ago.minutes}{/if}{/if})</span>{if $admin && $element.ip} <span class="ip">({$element.ip})</span>{/if}{if $element.pid!=0}{assign var="parent_posting" value=$element.pid} <span class="op-link"><a href="#p{$element.pid}" title="{#original_posting_linktitle#|replace:"[name]":$data.$parent_posting.name}">@ {$data.$parent_posting.name}</a></span>{/if}
|
||||
{if $element.edited}<br /><span class="edited">{#edited_by#|replace:"[name]":$element.edited_by}<time datetime="{$element.ISO_edit_time}">{$element.formated_edit_time}</time></span>{/if}</p>
|
||||
</header>
|
||||
<div class="wrapper" id="posting-{$element.id}">
|
||||
<div class="body">
|
||||
|
|
|
@ -37,7 +37,7 @@
|
|||
{foreach from=$userdata item=row}
|
||||
{cycle values="a,b" assign=c}
|
||||
<tr class="{$c}">
|
||||
<td><a href="index.php?mode=user&show_user={$row.user_id}" title="{#show_userdata_linktitle#|replace:"[user]":$row.user_name}"><strong>{$row.user_name}</strong></a></td>
|
||||
<td><a href="index.php?mode=user&show_user={$row.user_id}" title="{#show_userdata_linktitle#|replace:"[user]":$row.user_name}"><span class="author-name">{$row.user_name}</span></a></td>
|
||||
<td><span class="small">{if $row.user_type==2}{#admin#}{elseif $row.user_type==1}{#mod#}{else}{#user#}{/if}</span></td>
|
||||
<td><span class="small">{if $row.user_hp!=''}<a href="{$row.user_hp}" title="{$row.user_hp}"><img src="{$THEMES_DIR}/{$theme}/images/homepage.png" alt="{#homepage#}" width="13" height="13" /></a>{else} {/if}</span></td>
|
||||
<td><span class="small">{if $row.user_email}<a href="index.php?mode=contact&recipient_user_id={$row.user_id}" title="{#mailto_user#|replace:"[user]":$row.user_name}"><img src="{$THEMES_DIR}/{$theme}/images/email.png" alt="{#email#}" width="13" height="10" /></a>{else} {/if}</span></td>
|
||||
|
|
|
@ -44,7 +44,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="c"><label for="user_hp"><strong>{#edit_user_hp#}</strong></label></td>
|
||||
<td class="d"><input id="user_hp" type="text" size="40" name="user_hp" value="{$user_hp}" maxlength="{$settings.hp_maxlength}" /></td>
|
||||
<td class="d"><input id="user_hp" type="url" size="40" name="user_hp" value="{$user_hp}" maxlength="{$settings.hp_maxlength}" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="c"><label for="user_real_name"><strong>{#edit_user_real_name#}</strong></label></td>
|
||||
|
@ -59,7 +59,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="c"><label for="user_birthday"><strong>{#edit_user_birthday#}</strong></label></td>
|
||||
<td class="d"><input id="user_birthday" type="text" size="40" name="user_birthday" value="{$user_birthday}" /> <span class="small">({#birthday_format#})</span></td>
|
||||
<td class="d"><input id="user_birthday" type="date" size="40" name="user_birthday" value="{$user_birthday}" /> <span class="small">({#birthday_format#})</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="c"><label for="user_location"><strong>{#edit_user_location#}</strong></label></td>
|
||||
|
@ -77,11 +77,6 @@
|
|||
<tr>
|
||||
<td class="c"><strong>{#edit_user_cat_selection#}</strong></td>
|
||||
<td class="d">
|
||||
{*<select id="category_selection" name="category_selection[]" multiple="multiple" size="{if $number_of_categories>10}10{else}{$number_of_categories}{/if}">
|
||||
{foreach key=key item=val from=$categories}
|
||||
{if $key!=0}<option value="{$key}"{if isset($category_selection) && in_array($key,$category_selection)} selected="selected"{/if}>{$val}</option>{/if}
|
||||
{/foreach}
|
||||
</select>*}
|
||||
<ul class="checkboxlist">
|
||||
{foreach key=key item=val from=$categories}
|
||||
{if $key!=0}<li><input id="category_{$key}" type="checkbox" name="category_selection[]" value="{$key}"{if isset($category_selection) && in_array($key,$category_selection)} checked="checked"{/if} /><label for="category_{$key}">{$val}</label></li>{/if}
|
||||
|
|
|
@ -6,20 +6,26 @@
|
|||
<ul>
|
||||
{section name=mysec loop=$errors}
|
||||
{assign var="error" value=$errors[mysec]}
|
||||
<li>{$smarty.config.$error}</li>
|
||||
<li>{$smarty.config.$error}</li>
|
||||
{/section}
|
||||
</ul>
|
||||
{/if}
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<div>
|
||||
<input type="hidden" name="csrf_token" value="{$CSRF_TOKEN}" />
|
||||
<input type="hidden" name="mode" value="user" />
|
||||
<p><label for="new_email" class="main">{#edit_email_new#}</label><br />
|
||||
<input id="new_email" type="text" size="25" name="new_email" value="{$new_user_email|default:''}" maxlength="{$settings.email_maxlength}" /></p>
|
||||
<p><label for="new_email_confirm" class="main">{#edit_email_new_confirm#}</label><br />
|
||||
<input id="new_email_confirm" type="text" size="25" name="new_email_confirm" value="" maxlength="{$settings.email_maxlength}" /></p>
|
||||
<p><label for="pw_new_email" class="main">{#edit_email_pw#}</label><br />
|
||||
<input id="pw_new_email" type="password" spellcheck="false" autocomplete="off" size="25" name="pw_new_email" /></p>
|
||||
<p><input type="submit" name="edit_email_submit" value="{#submit_button_ok#}" /></p>
|
||||
</div>
|
||||
<input type="hidden" name="csrf_token" value="{$CSRF_TOKEN}" />
|
||||
<input type="hidden" name="mode" value="user" />
|
||||
<div>
|
||||
<label for="new_email" class="main">{#edit_email_new#}</label>
|
||||
<input id="new_email" type="email" size="25" name="new_email" value="{$new_user_email|default:''}" maxlength="{$settings.email_maxlength}" autofocus required />
|
||||
</div>
|
||||
<div>
|
||||
<label for="new_email_confirm" class="main">{#edit_email_new_confirm#}</label>
|
||||
<input id="new_email_confirm" type="email" size="25" name="new_email_confirm" value="" maxlength="{$settings.email_maxlength}" required />
|
||||
</div>
|
||||
<div>
|
||||
<label for="pw_new_email" class="main">{#edit_email_pw#}</label>
|
||||
<input id="pw_new_email" type="password" spellcheck="false" autocomplete="off" writingsuggestions="false" size="25" name="pw_new_email" required />
|
||||
</div>
|
||||
<div>
|
||||
<button name="edit_email_submit" value="{#submit_button_ok#}">{#submit_button_ok#}</button>
|
||||
</div>
|
||||
</form>
|
||||
|
|
|
@ -4,18 +4,22 @@
|
|||
<ul>
|
||||
{section name=mysec loop=$errors}
|
||||
{assign var="error" value=$errors[mysec]}
|
||||
<li>{$smarty.config.$error|replace:"[characters]":$settings.min_pw_length|replace:"[digits]":$settings.min_pw_digits|replace:"[lowercase_letters]":$settings.min_pw_lowercase_letters|replace:"[uppercase_letters]":$settings.min_pw_uppercase_letters|replace:"[special_characters]":$settings.min_pw_special_characters}</li>
|
||||
<li>{$smarty.config.$error|replace:"[characters]":$settings.min_pw_length|replace:"[digits]":$settings.min_pw_digits|replace:"[lowercase_letters]":$settings.min_pw_lowercase_letters|replace:"[uppercase_letters]":$settings.min_pw_uppercase_letters|replace:"[special_characters]":$settings.min_pw_special_characters}</li>
|
||||
{/section}
|
||||
</ul>
|
||||
{/if}
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<div>
|
||||
<input type="hidden" name="csrf_token" value="{$CSRF_TOKEN}" />
|
||||
<input type="hidden" name="mode" value="user" />
|
||||
<p><strong>{#edit_pw_old#}</strong><br />
|
||||
<input type="password" spellcheck="false" autocomplete="off" size="25" name="old_pw" /></p>
|
||||
<p><strong>{#edit_pw_new#}</strong><br />
|
||||
<input type="password" spellcheck="false" autocomplete="off" size="25" name="new_pw" maxlength="255" /></p>
|
||||
<p><input type="submit" name="edit_pw_submit" value="{#submit_button_ok#}" /></p>
|
||||
</div>
|
||||
<input type="hidden" name="csrf_token" value="{$CSRF_TOKEN}" />
|
||||
<input type="hidden" name="mode" value="user" />
|
||||
<div>
|
||||
<label for="old-pw">{#edit_pw_old#}</label>
|
||||
<input type="password" spellcheck="false" autocomplete="off" writingsuggestions="false" size="25" name="old_pw" id="old-pw" autofocus required />
|
||||
</div>
|
||||
<div>
|
||||
<label for="new-pw">{#edit_pw_new#}</label>
|
||||
<input type="password" spellcheck="false" autocomplete="off" writingsuggestions="false" size="25" name="new_pw" id="new-pw" maxlength="255" required />
|
||||
</div>
|
||||
<div>
|
||||
<button name="edit_pw_submit" value="{#submit_button_ok#}">{#submit_button_ok#}</button>
|
||||
</div>
|
||||
</form>
|
||||
|
|
|
@ -13,7 +13,17 @@
|
|||
<p>{if $user_postings_count>1}{$smarty.config.several_postings_by_user|replace:"[number]":$user_postings_count}{else}{#one_posting_by_user#}{/if}</p>
|
||||
<ul class="searchresults">
|
||||
{section name=ix loop=$user_postings_data}
|
||||
<li><a class="{if $user_postings_data[ix].pid==0}thread-search{else}reply-search{/if} {if $visited && in_array($user_postings_data[ix].id,$visited)} visited{/if}" href="index.php?mode=entry&id={$user_postings_data[ix].id}">{$user_postings_data[ix].subject}</a> - <strong>{$user_postings_data[ix].name}</strong>, <span id="p{$user_postings_data[ix].id}" class="tail"><time>{$user_postings_data[ix].disp_time}</time> <a href="index.php?mode=thread&id={$user_postings_data[ix].id}" title="{#open_whole_thread#}"><img src="{$THEMES_DIR}/{$theme}/images/complete_thread.png" alt="{#open_whole_thread#}" width="11" height="11" /></a> {if $user_postings_data[ix].category}<a href="index.php?mode=index&category={$user_postings_data[ix].category}"><span class="category">({$user_postings_data[ix].category_name})</span></a>{/if}</span></li>
|
||||
<li>
|
||||
<a class="subject {if $user_postings_data[ix].pid==0}thread-search{else}reply-search{/if} {if $visited && in_array($user_postings_data[ix].id,$visited)} visited{/if}" href="index.php?mode=entry&id={$user_postings_data[ix].id}">{$user_postings_data[ix].subject}</a>
|
||||
<span class="metadata">
|
||||
<span class="author-name">{$user_postings_data[ix].name}</span>
|
||||
<span id="p{$user_postings_data[ix].id}" class="tail">
|
||||
{$user_postings_data[ix].disp_time}
|
||||
<a href="index.php?mode=thread&id={$user_postings_data[ix].id}" title="{#open_whole_thread#}"><img src="{$THEMES_DIR}/{$theme}/images/complete_thread.png" alt="{#open_whole_thread#}" width="11" height="11" /></a>
|
||||
{if $user_postings_data[ix].category}<a href="index.php?mode=index&category={$user_postings_data[ix].category}"><span class="category">({$user_postings_data[ix].category_name})</span></a>{/if}
|
||||
</span>
|
||||
</span>
|
||||
</li>
|
||||
{/section}
|
||||
</ul>
|
||||
|
||||
|
|
|
@ -5,18 +5,21 @@
|
|||
<p class="notice caution">{#error_headline#}</p>
|
||||
<ul>
|
||||
{section name=mysec loop=$errors}
|
||||
{assign var="error" value=$errors[mysec]}
|
||||
<li>{$smarty.config.$error}</li>
|
||||
{assign var="error" value=$errors[mysec]}
|
||||
<li>{$smarty.config.$error}</li>
|
||||
{/section}
|
||||
</ul>
|
||||
{/if}
|
||||
<div>
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<input type="hidden" name="csrf_token" value="{$CSRF_TOKEN}" />
|
||||
<input type="hidden" name="mode" value="user" />
|
||||
<input type="hidden" name="action" value="edit_profile" />
|
||||
<p><strong><label for="password">{#remove_user_confirm_password#}</label></strong><br /><input id="password" type="password" name="user_password" spellcheck="false" autocomplete="off" size="25" /></p>
|
||||
<input type="submit" name="remove_account_submit" value="{#submit_button_ok#}" />
|
||||
<input type="submit" value="{#submit_button_cancel#}">
|
||||
</form>
|
||||
</div>
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<input type="hidden" name="csrf_token" value="{$CSRF_TOKEN}" />
|
||||
<input type="hidden" name="mode" value="user" />
|
||||
<input type="hidden" name="action" value="edit_profile" />
|
||||
<div>
|
||||
<label for="password">{#remove_user_confirm_password#}</label>
|
||||
<input id="password" type="password" name="user_password" spellcheck="false" autocomplete="off" writingsuggestions="false" size="25" autofocus required />
|
||||
</div>
|
||||
<div>
|
||||
<button name="remove_account_submit" value="{#submit_button_ok#}">{#submit_button_ok#}</button>
|
||||
<button type="reset" value="{#submit_button_cancel#}">{#submit_button_cancel#}</button>
|
||||
</div>
|
||||
</form>
|
||||
|
|
|
@ -1,139 +1,318 @@
|
|||
{config_load file=$language_file section="general"}{config_load file=$language_file section="upload_image"}<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="{#language#}">
|
||||
<head>
|
||||
<title>{$settings.forum_name}{if $page_title} - {$page_title}{elseif $subnav_location} - {$subnav_location}{/if}</title>
|
||||
<meta http-equiv="content-type" content="text/html; charset={#charset#}" />
|
||||
<style type="text/css">
|
||||
{config_load file=$language_file section="general"}{config_load file=$language_file section="upload_image"}<!DOCTYPE html>
|
||||
<html lang="{#language#}">
|
||||
<head>
|
||||
<meta charset="{#charset#}" />
|
||||
<title>{$settings.forum_name}{if $page_title} - {$page_title}{elseif $subnav_location} - {$subnav_location}{/if}</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<style type="text/css">
|
||||
{literal}
|
||||
<!--
|
||||
body { color: #000000; background: #ffffff; margin:0; padding:0; font-family: verdana, arial, sans-serif; font-size: 13px; }
|
||||
img { border:none; }
|
||||
#header { margin:0; padding:0; background:#f9f9f9; border-bottom: 1px solid #bacbdf; height:24px; font-size:13px; line-height:22px; }
|
||||
#nav-1 { margin:0; padding:0 0 0 5px; float:left; }
|
||||
#nav-2 { margin:0; padding:0 5px 0 0; float:right; }
|
||||
#wrapper { margin:0; padding:20px; }
|
||||
h1 { font-family: verdana, arial, sans-serif; font-size: 18px; font-weight: bold; }
|
||||
p { font-family: verdana, arial, sans-serif; font-size: 13px; line-height: 19px; }
|
||||
.caution { padding: 0px 0px 0px 20px; color: red; font-weight: bold; background-image:url({/literal}{$THEMES_DIR}/{$settings.theme}{literal}/images/caution.png); background-repeat:no-repeat; background-position: left; }
|
||||
.ok { padding: 0px 0px 0px 20px; font-weight:bold; color:red; background-image:url({/literal}{$THEMES_DIR}/{$settings.theme}{literal}/images/tick.png); background-repeat:no-repeat; background-position: left; }
|
||||
img.delete { max-width:300px; max-height:150px; }
|
||||
img.uploaded { max-width:300px; max-height:110px; /*cursor:pointer;*/ }
|
||||
img.browse { max-width:320px; cursor:pointer; }
|
||||
.deletelink { font-size:11px; padding-left:13px; background:url({/literal}{$THEMES_DIR}/{$settings.theme}{literal}/images/bg_sprite_3.png) no-repeat 0 -47px; }
|
||||
.small { font-size:11px; line-height:16px; }
|
||||
code { font-family:"courier new", courier; color:#000080; }
|
||||
a:link { color:#0000cc; text-decoration: none; }
|
||||
a:visited { color:#0000cc; text-decoration: none; }
|
||||
a:hover { color:#0000ff; text-decoration: underline; }
|
||||
a:active { color:#ff0000; text-decoration: none; }
|
||||
table { width:100%; margin:5px 0 0 0; padding:0; }
|
||||
td { text-align:center; }
|
||||
-->
|
||||
{/literal}
|
||||
</style>
|
||||
<script type="text/javascript">{literal}/* <![CDATA[ */
|
||||
function insertCode(image_url) {
|
||||
if (opener && opener.mlfBBCodeButton) {
|
||||
var bbcodeButton = opener.mlfBBCodeButton;
|
||||
if (!bbcodeButton.canInsert())
|
||||
return;
|
||||
var buttonGroup = bbcodeButton.getButtonGroup();
|
||||
var txtarea = buttonGroup.getTextArea();
|
||||
txtarea.insertTextRange( txtarea.getSelection() + "[img]" + image_url + "[/img]" );
|
||||
}
|
||||
//self.close();
|
||||
*,
|
||||
::before,
|
||||
::after {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
/* ]]> */{/literal}</script>
|
||||
{if $browse_images}
|
||||
<script type="text/javascript">{literal}/* <![CDATA[ */
|
||||
function getMaxWidth()
|
||||
{
|
||||
if(document.getElementById('imgtab'))
|
||||
{
|
||||
var maxWidth = document.getElementById('imgtab').offsetWidth-20;
|
||||
var obj=getElementsByClassName('browse');
|
||||
for(i=0;i<obj.length;i++)
|
||||
{
|
||||
obj[i].style.maxWidth=maxWidth+'px';
|
||||
}
|
||||
}
|
||||
}
|
||||
window.onload = getMaxWidth;
|
||||
window.onresize = getMaxWidth;
|
||||
/* ]]> */{/literal}</script>
|
||||
{/if}
|
||||
</head>
|
||||
<body>
|
||||
body {
|
||||
color: #000;
|
||||
background: #fff;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
font-family: verdana, arial, sans-serif;
|
||||
font-size: 1em;
|
||||
font-size: 1rem;
|
||||
line-height: 1.5;
|
||||
}
|
||||
body > * {
|
||||
padding-block: 0;
|
||||
padding-inline: 0.5em;
|
||||
}
|
||||
header {
|
||||
margin: 0;
|
||||
background: #f9f9f9;
|
||||
border-bottom: 1px solid #bacbdf;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
position: sticky;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
}
|
||||
header > * {
|
||||
margin:0;
|
||||
padding:0;
|
||||
}
|
||||
main {
|
||||
margin-inline: 0;
|
||||
margin-block: 0.5em;
|
||||
}
|
||||
h1 {
|
||||
font-size: 1em;
|
||||
font-weight: bold;
|
||||
}
|
||||
.caution,
|
||||
.ok {
|
||||
margin-block: 0.5em;
|
||||
padding: 0 0 0 24px;
|
||||
background-repeat:no-repeat;
|
||||
background-position: 2px 3px;
|
||||
}
|
||||
.caution h2,
|
||||
.ok h2 {
|
||||
font-size: 1em;
|
||||
margin: 0 0 0.5em 0;
|
||||
}
|
||||
.caution {
|
||||
color: #cc0000;
|
||||
background-image:url({/literal}{$THEMES_DIR}/{$settings.theme}{literal}/images/caution.png);
|
||||
}
|
||||
.ok {
|
||||
color:green;
|
||||
background-image:url({/literal}{$THEMES_DIR}/{$settings.theme}{literal}/images/tick.png);
|
||||
}
|
||||
.deletelink {
|
||||
padding-left:13px;
|
||||
background:url({/literal}{$THEMES_DIR}/{$settings.theme}{literal}/images/bg_sprite_3.png) no-repeat 1px -45px;
|
||||
}
|
||||
.insert-desc,
|
||||
.deletelink,
|
||||
.small {
|
||||
font-size: 0.82em;
|
||||
}
|
||||
code {
|
||||
font-family:"courier new", courier, monospace;
|
||||
color:#000080;
|
||||
}
|
||||
.insert-desc > * {
|
||||
margin-block: 0 0.25em;
|
||||
}
|
||||
.insert-desc > *:last-child {
|
||||
margin-block: 0;
|
||||
}
|
||||
a {
|
||||
color:#00c;
|
||||
text-decoration: none;
|
||||
}
|
||||
a:focus,
|
||||
a:hover {
|
||||
color:#00f;
|
||||
text-decoration: underline dotted 9% #45f;
|
||||
}
|
||||
a:active {
|
||||
color:#f00;
|
||||
text-decoration: underline solid 7% #d00;
|
||||
}
|
||||
form > div:not(:last-child) {
|
||||
margin-block-end: .75em;
|
||||
}
|
||||
ul {
|
||||
list-style:none;
|
||||
margin-block:0.5em;
|
||||
padding: 0;
|
||||
}
|
||||
#imgtab {
|
||||
display:flex;
|
||||
flex-direction:column;
|
||||
gap:0.75em;
|
||||
min-width: 20em;
|
||||
max-width: 40em;
|
||||
margin-inline: auto;
|
||||
}
|
||||
#del-upload-form {
|
||||
text-align:center;
|
||||
}
|
||||
#imgtab li {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 0.5em;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
}
|
||||
li > *:last-child {
|
||||
align-content:center;
|
||||
}
|
||||
img {
|
||||
border:none;
|
||||
display: block;
|
||||
}
|
||||
#imgtab img {
|
||||
max-width: 100%;
|
||||
margin-inline: auto;
|
||||
}
|
||||
#imgtab:not(.shrinked) img {
|
||||
cursor: pointer;
|
||||
}
|
||||
#imgtab.shrinked img {
|
||||
max-width: 50%;
|
||||
height: auto;
|
||||
}
|
||||
.buttonbar {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 0.3em;
|
||||
}
|
||||
button {
|
||||
cursor: pointer;
|
||||
}
|
||||
#imgtab li button:has(> img) {
|
||||
background: transparent;
|
||||
border: none;
|
||||
padding: 0;
|
||||
}
|
||||
.invisible {
|
||||
visibility: hidden;
|
||||
}
|
||||
{/literal}
|
||||
</style>
|
||||
<script>{literal}
|
||||
/**
|
||||
* function for inserting uploaded images into
|
||||
* a posting from the uploaded images gallery
|
||||
*/
|
||||
function insertCode() {
|
||||
const clickedButton = event.target.closest('button');
|
||||
if (clickedButton === null)
|
||||
return false;
|
||||
const imagePath = clickedButton.querySelector('img').getAttribute('src');
|
||||
if (opener && opener.mlfBBCodeButton) {
|
||||
const bbcodeButton = opener.mlfBBCodeButton;
|
||||
if (!bbcodeButton.canInsert())
|
||||
return false;
|
||||
const buttonGroup = bbcodeButton.getButtonGroup();
|
||||
const txtarea = buttonGroup.getTextArea();
|
||||
txtarea.insertTextRange( txtarea.getSelection() + "[img]" + imagePath + "[/img]" );
|
||||
}
|
||||
//self.close();
|
||||
}
|
||||
window.addEventListener('DOMContentLoaded', function() {
|
||||
if (document.querySelector('#imgtab button')) {
|
||||
document.querySelector('#imgtab').addEventListener('click', insertCode);
|
||||
}
|
||||
if (document.querySelector('button[name="upload_img"]')) {
|
||||
document.querySelector('button[name="upload_img"]').addEventListener('click', function() {
|
||||
const throbber = document.getElementById('throbber-submit');
|
||||
if (throbber.classList.contains('invisible')) {
|
||||
throbber.classList.remove('invisible');
|
||||
}
|
||||
});
|
||||
}
|
||||
if (document.querySelector('div.insert-desc')) {
|
||||
const descriptors = document.querySelectorAll('div.insert-desc');
|
||||
descriptors.forEach(function (descriptor) {
|
||||
const description = document.createElement('p');
|
||||
description.textContent = '{/literal}{#insert_image_exp#|escape:quotes}{literal}';
|
||||
descriptor.replaceChildren(description);
|
||||
});
|
||||
}
|
||||
});
|
||||
{/literal}</script>
|
||||
</head>
|
||||
<body>
|
||||
{if $form}
|
||||
<div id="wrapper">
|
||||
<h1>{#upload_image_hl#}</h1>
|
||||
<header>
|
||||
<h1>{#upload_image_hl#}</h1>
|
||||
</header>
|
||||
<main>
|
||||
{if $errors}
|
||||
<p class="caution">{#error_headline#}</p>
|
||||
<ul>
|
||||
<div class="caution">
|
||||
<h2>{#error_headline#}</h2>
|
||||
<ul>
|
||||
{section name=mysec loop=$errors}
|
||||
<li>{assign var="error" value=$errors[mysec]}{$smarty.config.$error|replace:"[width]":$width|replace:"[height]":$height|replace:"[filesize]":$filesize|replace:"[max_width]":$max_width|replace:"[max_height]":$max_height|replace:"[max_filesize]":$max_filesize|replace:"[server_max_filesize]":$server_max_filesize}</li>
|
||||
<li>{assign var="error" value=$errors[mysec]}{$smarty.config.$error|replace:"[width]":$width|replace:"[height]":$height|replace:"[filesize]":$filesize|replace:"[max_width]":$max_width|replace:"[max_height]":$max_height|replace:"[max_filesize]":$max_filesize|replace:"[server_max_filesize]":$server_max_filesize}</li>
|
||||
{/section}
|
||||
</ul>
|
||||
</ul>
|
||||
</div>
|
||||
{/if}
|
||||
<form id="uploadform" action="index.php" method="post" enctype="multipart/form-data" accept-charset="{#charset#}">
|
||||
<div>
|
||||
<input type="hidden" name="mode" value="upload_image" />
|
||||
<p><input type="file" name="probe" size="17" /></p>
|
||||
<p><input type="submit" name="" value="{#upload_image_button#}" onclick="document.getElementById('throbber-submit').style.visibility='visible'" /> <img id="throbber-submit" style="visibility:hidden;" src="{$THEMES_DIR}/{$theme}/images/throbber_submit.gif" alt="" width="16" height="16" /></p>
|
||||
</div>
|
||||
</form>
|
||||
<p class="small"><a href="index.php?mode=upload_image&browse_images=1">{#browse_uploaded_images#}</a></p>
|
||||
</div>
|
||||
<form id="upload-form" action="index.php" method="post" enctype="multipart/form-data" accept-charset="{#charset#}">
|
||||
<input type="hidden" name="mode" value="upload_image" />
|
||||
<div>
|
||||
<input type="file" name="probe" size="17" />
|
||||
</div>
|
||||
<div class="buttonbar">
|
||||
<button name="upload_img" value="{#upload_image_button#}">{#upload_image_button#}</button>
|
||||
<img id="throbber-submit" class="invisible" src="{$THEMES_DIR}/{$theme}/images/throbber_submit.gif" alt="" width="16" height="16" />
|
||||
</div>
|
||||
</form>
|
||||
<p class="small"><a href="index.php?mode=upload_image&browse_images=1">{#browse_uploaded_images#}</a></p>
|
||||
</main>
|
||||
{elseif $uploaded_file}
|
||||
<div id="wrapper">
|
||||
<h1>{#upload_image_hl#}</h1>
|
||||
<p class="ok">{#upload_successful#}</p>
|
||||
{*<script type="text/javascript">/* <![CDATA[ */document.write('<p>{#insert_image_exp#|escape:quotes}<\/p>'); /* ]]> */</script>*}
|
||||
<noscript><p>{#insert_image_exp_no_js#}</p>
|
||||
<p><code>[img]images/uploaded/{$uploaded_file}[/img]</code></p></noscript>
|
||||
<img class="uploaded" src="images/uploaded/{$uploaded_file}" title="{#insert_image#}" {*onclick="insertCode('images/uploaded/{$uploaded_file}'); return false;" *}alt="{#insert_image#}" />
|
||||
{if $image_downsized}<p class="small">{$smarty.config.image_downsized|replace:"[width]":$new_width|replace:"[height]":$new_height|replace:"[filesize]":$new_filesize}</p>{/if}
|
||||
</div>
|
||||
<script type="text/javascript">/* <![CDATA[ */ insertCode('images/uploaded/{$uploaded_file}'); /* ]]> */</script>
|
||||
<header>
|
||||
<h1>{#upload_image_hl#}</h1>
|
||||
</header>
|
||||
<main>
|
||||
<div class="ok">
|
||||
<h2>{#upload_successful#}</h2>
|
||||
</div>
|
||||
<ul id="imgtab" class="shrinked">
|
||||
<li>
|
||||
<div>
|
||||
<button type="button">
|
||||
<img src="images/uploaded/{$uploaded_file}" title="{#insert_image#}" alt="{#insert_image#}" />
|
||||
</button>
|
||||
</div>
|
||||
<div class="insert-desc">
|
||||
<p>{#insert_image_exp_no_js#}</p>
|
||||
<p><code>[img]images/uploaded/{$uploaded_file}[/img]</code></p>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
{if $image_downsized} <p class="small">{$smarty.config.image_downsized|replace:"[width]":$new_width|replace:"[height]":$new_height|replace:"[filesize]":$new_filesize}</p>{/if}
|
||||
<p class="small"><a href="index.php?mode=upload_image&browse_images=1">{#browse_uploaded_images#}</a></p>
|
||||
</main>
|
||||
{elseif $browse_images}
|
||||
<div id="header">
|
||||
<div id="nav-1"><a href="index.php?mode=upload_image">{#back#}</a></div>
|
||||
<div id="nav-2">{if $previous}[ <a href="index.php?mode=upload_image&browse_images={$previous}" title="{#previous_page_link_title#}">«</a> ]{/if}{if $previous && next} {/if}{if $next}[ <a href="index.php?mode=upload_image&browse_images={$next}" title="{#next_page_link_title#}">»</a> ]{/if}</div>
|
||||
</div>
|
||||
<header>
|
||||
<div id="nav-1"><a href="index.php?mode=upload_image">{#back#}</a></div>
|
||||
<div id="nav-2">{if $previous}[ <a href="index.php?mode=upload_image&browse_images={$previous}" title="{#previous_page_link_title#}">«</a> ]{/if}{if $previous && next} {/if}{if $next}[ <a href="index.php?mode=upload_image&browse_images={$next}" title="{#next_page_link_title#}">»</a> ]{/if}</div>
|
||||
</header>
|
||||
{if $images}
|
||||
<table id="imgtab" border="0" cellpadding="5" cellspacing="1">
|
||||
<main>
|
||||
<ul id="imgtab">
|
||||
{section name=nr loop=$images start=$start max=$images_per_page}
|
||||
{cycle values="odd,even" assign=c}
|
||||
<tr class="{$c}">
|
||||
<td><img class="browse" src="images/uploaded/{$images[nr]}" title="{#insert_image#}" onclick="insertCode('images/uploaded/{$images[nr]}'); self.close();" alt="{#insert_image#}" />{if $admin || $mod}<br /><a class="deletelink" href="index.php?mode=upload_image&delete={$images[nr]}&current={$current}">{#delete#}</a>{/if}</td>
|
||||
</tr>
|
||||
<li>
|
||||
<div>
|
||||
<button type="button">
|
||||
<img src="images/uploaded/{$images[nr]}" title="{#insert_image#}" alt="{#insert_image#}" />
|
||||
</button>
|
||||
</div>
|
||||
<div class="insert-desc">
|
||||
<p>{#insert_image_exp_no_js#}</p>
|
||||
<p><code>[img]images/uploaded/{$images[nr]}[/img]</code></p>
|
||||
</div>
|
||||
{if $admin || $mod} <div><a class="deletelink" href="index.php?mode=upload_image&delete={$images[nr]}&current={$current}">{#delete#}</a></div>
|
||||
{/if}
|
||||
</li>
|
||||
{/section}
|
||||
</table>
|
||||
</ul>
|
||||
</main>
|
||||
{else}
|
||||
<div id="wrapper">
|
||||
<p>{#no_images#}</p>
|
||||
</div>
|
||||
<main>
|
||||
<p>{#no_images#}</p>
|
||||
</main>
|
||||
{/if}
|
||||
{elseif $delete_confirm}
|
||||
<div id="header">
|
||||
<div id="nav-1"><a href="index.php?mode=upload_image&browse_images={$current|default:'1'}">{#back#}</a></div>
|
||||
</div>
|
||||
<div id="wrapper">
|
||||
<p class="caution">{#delete_image_confirm#}</p>
|
||||
<p><img class="delete" src="images/uploaded/{$delete}" alt="{$delete}" /></p>
|
||||
<form id="uploadform" action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<div>
|
||||
<input type="hidden" name="mode" value="upload_image" />
|
||||
<input type="hidden" name="delete" value="{$delete}" />
|
||||
{if $current}<input type="hidden" name="current" value="{$current}" />{/if}
|
||||
<input type="submit" name="delete_confirm" value="{#delete_image_button#}" />
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<header>
|
||||
<div id="nav-1"><a href="index.php?mode=upload_image&browse_images={$current|default:'1'}">{#back#}</a></div>
|
||||
</header>
|
||||
<main>
|
||||
<div class="caution">
|
||||
<h2>{#delete_image_confirm#}</h2>
|
||||
</div>
|
||||
<ul id="imgtab" class="shrinked">
|
||||
<li><img src="images/uploaded/{$delete}" alt="{$delete}" /></li>
|
||||
</ul>
|
||||
<form id="del-upload-form" action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<input type="hidden" name="mode" value="upload_image" />
|
||||
<input type="hidden" name="delete" value="{$delete}" />
|
||||
{if $current} <input type="hidden" name="current" value="{$current}" />{/if}
|
||||
<div>
|
||||
<button name="delete_confirm" value="{#delete_image_button#}">{#delete_image_button#}</button>
|
||||
</div>
|
||||
</form>
|
||||
</main>
|
||||
{else}
|
||||
<div id="wrapper">
|
||||
<p class="caution">{#image_upload_not_enabled#}</p>
|
||||
</div>
|
||||
<main>
|
||||
<div class="caution">
|
||||
<h2>{#image_upload_not_enabled#}</h2>
|
||||
</div>
|
||||
</main>
|
||||
{/if}
|
||||
</body>
|
||||
</html>
|
||||
|
|
File diff suppressed because it is too large
Load diff
Loading…
Add table
Reference in a new issue