mirror of
https://github.com/Sarjuuk/aowow.git
synced 2025-11-29 15:58:16 +08:00
implemented pages:
- Achievement / Achievements (filtrable) - Classes - Currencies - Itemsets (filtrable) - Races - Title / Titles - Events
This commit is contained in:
@@ -13,9 +13,9 @@ class AchievementList extends BaseType
|
||||
protected $setupQuery = 'SELECT *, id AS ARRAY_KEY FROM ?_achievement WHERE [filter] [cond] GROUP BY Id ORDER BY `orderInGroup` ASC';
|
||||
protected $matchQuery = 'SELECT COUNT(1) FROM ?_achievement WHERE [filter] [cond]';
|
||||
|
||||
public function __construct($conditions)
|
||||
public function __construct($conditions, $applyFilter = false)
|
||||
{
|
||||
parent::__construct($conditions);
|
||||
parent::__construct($conditions, $applyFilter);
|
||||
|
||||
// post processing
|
||||
while ($this->iterate())
|
||||
|
||||
@@ -251,4 +251,157 @@ abstract class Filter
|
||||
abstract protected function createSQLForValues($vl);
|
||||
}
|
||||
|
||||
|
||||
class AchievementListFilter extends Filter
|
||||
{
|
||||
protected function createSQLForCriterium($cr)
|
||||
{
|
||||
if ($r = $this->createSQLForCommunity($cr))
|
||||
return $r;
|
||||
|
||||
switch ($cr[0])
|
||||
{
|
||||
case 2: // gives a reward [y|n]
|
||||
return 'reward_loc0 '.($this->int2Bool($cr[1]) ? '<>' : '=').' \'\'';
|
||||
case 3: // reward text [str]
|
||||
return 'reward_loc'.User::$localeId.' LIKE \'%'.Util::sqlEscape($cr[2]).'%\'';
|
||||
// case 4: // location [int]
|
||||
// return ''; // no plausible locations parsed yet
|
||||
case 5: // first in series [y|n]
|
||||
return $this->int2Bool($cr[1]) ? '(series <> 0 AND (series & 0xFFFF0000) = 0)' : '(series & 0xFFFF0000) <> 0';
|
||||
case 6: // last in series [y|n]
|
||||
return $this->int2Bool($cr[1]) ? '(series <> 0 AND (series & 0xFFFF) = 0)' : '(series & 0xFFFF) <> 0';
|
||||
case 7: // part of series [y|n]
|
||||
return 'series '.($this->int2Bool($cr[1]) ? '<>' : '=').' 0';
|
||||
case 9: // Id [op] [int]
|
||||
return 'id '.$this->int2Op($cr[1]).' '.intVal($cr[2]);
|
||||
case 10: // Icon [str]
|
||||
return 'iconString LIKE \'%'.Util::sqlEscape($cr[2]).'%\'';
|
||||
// case 11: // Related Event [int]
|
||||
// return ''; // >0:holidayId; -2323:any; -2324:none
|
||||
case 18: // flags (staff only)
|
||||
if (User::isInGroup(U_GROUP_STAFF))
|
||||
return 'flags &'.(1 << max($cr[1] - 1, 0)) ;
|
||||
default:
|
||||
return '1';
|
||||
}
|
||||
}
|
||||
|
||||
protected function createSQLForValues($vl)
|
||||
{
|
||||
$parts = [];
|
||||
|
||||
// name ex: +description, +rewards
|
||||
if (isset($vl['na']))
|
||||
{
|
||||
if (isset($vl['ex']) && $vl['ex'] == 'on')
|
||||
$parts[] = '(name_loc'.User::$localeId.' LIKE "%'.Util::sqlEscape($vl['na']).'%" OR description_loc'.User::$localeId.' LIKE "%'.Util::sqlEscape($vl['na']).'%" OR reward_loc'.User::$localeId.' LIKE "%'.Util::sqlEscape($vl['na']).'%")';
|
||||
else
|
||||
$parts[] = 'name_loc'.User::$localeId.' LIKE "%'.Util::sqlEscape($vl['na']).'%"';
|
||||
}
|
||||
|
||||
// points min
|
||||
if (isset($vl['minpt']))
|
||||
$parts[] = 'points >= '.intVal($vl['minpt']);
|
||||
|
||||
// points max
|
||||
if (isset($vl['maxpt']))
|
||||
$parts[] = 'points <= '.intVal($vl['maxpt']);
|
||||
|
||||
// faction (side)
|
||||
if (isset($vl['si']))
|
||||
{
|
||||
if ($vl['si'] == 3) // both
|
||||
$parts[] = 'faction = '.intVal($vl['si']);
|
||||
else if ($vl['si'] > 0) // faction, inclusive both
|
||||
$parts[] = '(faction = 3 OR faction = '.intVal($vl['si']).')';
|
||||
else if ($vl['si'] < 0) // faction, exclusive both
|
||||
$parts[] = 'faction = '.intVal(-$vl['si']);
|
||||
|
||||
}
|
||||
|
||||
return $parts;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// missing filter: "Available to Players"
|
||||
class ItemsetListFilter extends Filter
|
||||
{
|
||||
protected function createSQLForCriterium($cr)
|
||||
{
|
||||
if ($r = $this->createSQLForCommunity($cr))
|
||||
return $r;
|
||||
|
||||
switch ($cr[0])
|
||||
{
|
||||
case 2: // Id
|
||||
return 'id '.$this->int2Op($cr[1]).' '.intVal($cr[2]);
|
||||
case 3: // pieces [int]
|
||||
return '(IF(item1 > 0, 1, 0) + IF(item2 > 0, 1, 0) + IF(item3 > 0, 1, 0) + IF(item4 > 0, 1, 0) + IF(item5 > 0, 1, 0) +
|
||||
IF(item6 > 0, 1, 0) + IF(item7 > 0, 1, 0) + IF(item8 > 0, 1, 0) + IF(item9 > 0, 1, 0) + IF(item10 > 0, 1, 0)) ' .$this->int2Op($cr[1]).' '.intVal($cr[2]);
|
||||
case 4: // bonustext [str]
|
||||
return 'bonusText_loc'.User::$localeId.' LIKE \'%'.Util::sqlEscape($cr[2]).'%\'';
|
||||
case 5: // heroic [y|n]
|
||||
return 'heroic = '.($cr[1] == 1 ? '1' : '0');
|
||||
case 6: // related event [int]
|
||||
$hId = intVal($cr[1]); // >0:holidayId; -2323:any; -2324:none
|
||||
if ($hId == -2323)
|
||||
return 'holidayId <> 0';
|
||||
|
||||
if ($hId == -2324)
|
||||
$hId = 0;
|
||||
|
||||
return 'holidayId = '.$hId;
|
||||
// case 12: // available to players [y|n]
|
||||
// return ''; // ugh .. scan loot, quest and vendor templates and write to ?_itemset
|
||||
default:
|
||||
return '1';
|
||||
}
|
||||
}
|
||||
|
||||
protected function createSQLForValues($vl)
|
||||
{
|
||||
$parts = [];
|
||||
|
||||
//string (extended)
|
||||
if (isset($vl['na']))
|
||||
$parts[] = 'name_loc'.User::$localeId.' LIKE "%'.Util::sqlEscape($vl['na']).'%"';
|
||||
|
||||
// quality [list]
|
||||
if (isset($vl['qu']))
|
||||
$parts[] = 'quality IN ('.implode(', ', (array)$vl['qu']).')';
|
||||
|
||||
// type
|
||||
if (isset($vl['ty']))
|
||||
$parts[] = 'type IN ('.implode(', ', (array)$vl['ty']).')';
|
||||
|
||||
// itemLevel min
|
||||
if (isset($vl['minle']))
|
||||
$parts[] = 'minLevel >= '.intVal($vl['minle']);
|
||||
|
||||
// itemLevel max
|
||||
if (isset($vl['maxle']))
|
||||
$parts[] = 'maxLevel <= '.intVal($vl['maxle']);
|
||||
|
||||
// reqLevel min
|
||||
if (isset($vl['minrl']))
|
||||
$parts[] = 'i.reqLevel <= '.intVal($vl['minle']);
|
||||
|
||||
// reqLevel max
|
||||
if (isset($vl['maxrl']))
|
||||
$parts[] = 'i.reqLevel <= '.intVal($vl['maxle']);
|
||||
|
||||
// class
|
||||
if (isset($vl['cl']))
|
||||
$parts[] = 'classMask & '.$this->list2Mask($vl['cl'] - 1);
|
||||
|
||||
// tag
|
||||
if (isset($vl['ta']))
|
||||
$parts[] = 'contentGroup = '.$vl['ta'];
|
||||
|
||||
return $parts;
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
@@ -93,7 +93,7 @@ class QuestList extends BaseType
|
||||
|
||||
while ($this->iterate())
|
||||
{
|
||||
$set = array(
|
||||
$data[$this->id] = array(
|
||||
'category' => $this->cat1,
|
||||
'category2' => $this->cat2,
|
||||
'id' => $this->id,
|
||||
@@ -114,13 +114,13 @@ class QuestList extends BaseType
|
||||
$choices[] = [$this->curTpl['RewardChoiceItemId'.$i], $this->curTpl['RewardChoiceItemCount'.$i]];
|
||||
|
||||
if ($rewards)
|
||||
$set['itemrewards'] = $rewards;
|
||||
$data[$this->id]['itemrewards'] = $rewards;
|
||||
|
||||
if ($choices)
|
||||
$set['itemchoices'] = $choices;
|
||||
$data[$this->id]['itemchoices'] = $choices;
|
||||
|
||||
if ($this->curTpl['RewardTitleId'])
|
||||
$set['titlereward'] = $this->curTpl['RewardTitleId'];
|
||||
$data[$this->id]['titlereward'] = $this->curTpl['RewardTitleId'];
|
||||
|
||||
// todo reprewards .. accesses QuestFactionReward.dbc
|
||||
}
|
||||
|
||||
@@ -56,7 +56,7 @@ if (!$smarty->loadCache($cacheKeyPage, $pageData))
|
||||
if ($acv->error)
|
||||
$smarty->notFound(Lang::$achievement['achievement']);
|
||||
|
||||
$pageData['path'] = [];
|
||||
$pageData['path'] = [];
|
||||
$pageData['title'] = [ucfirst(Lang::$achievement['achievement'])];
|
||||
|
||||
// create page title and path
|
||||
@@ -75,17 +75,18 @@ if (!$smarty->loadCache($cacheKeyPage, $pageData))
|
||||
$acv->addRewardsToJscript($pageData);
|
||||
$pageData['page'] = $acv->getDetailedData()[$id];
|
||||
$acv->reset();
|
||||
|
||||
// infobox content
|
||||
switch ($acv->getField('faction'))
|
||||
{
|
||||
case 0:
|
||||
$pageData['page']['infoBox'][] = Lang::$main['side'].': <span class="alliance-icon">'.Lang::$game['alliance'].'</span>';
|
||||
$pageData['page']['infoBox'][] = Lang::$main['side'].': <span class="alliance-icon">'.Lang::$game['si'][SIDE_ALLIANCE].'</span>';
|
||||
break;
|
||||
case 1:
|
||||
$pageData['page']['infoBox'][] = Lang::$main['side'].': <span class="horde-icon">'.Lang::$game['horde'].'</span>';
|
||||
$pageData['page']['infoBox'][] = Lang::$main['side'].': <span class="horde-icon">'.Lang::$game['si'][SIDE_HORDE].'</span>';
|
||||
break;
|
||||
default: // case 3
|
||||
$pageData['page']['infoBox'][] = Lang::$main['side'].': '.Lang::$main['both'];
|
||||
$pageData['page']['infoBox'][] = Lang::$main['side'].': '.Lang::$game['si'][SIDE_BOTH];
|
||||
}
|
||||
|
||||
// todo: crosslink with charactersDB to check if realmFirsts are still available
|
||||
@@ -98,7 +99,7 @@ if (!$smarty->loadCache($cacheKeyPage, $pageData))
|
||||
['id', $id, '!']
|
||||
);
|
||||
$saList = new AchievementList($conditions);
|
||||
$pageData['page']['saData'] = $saList->getListviewData();
|
||||
$pageData['page']['saData'] = $saList->getListviewData();
|
||||
$pageData['page']['saParams'] = array(
|
||||
'id' => 'see-also',
|
||||
'name' => '$LANG.tab_seealso',
|
||||
@@ -116,7 +117,7 @@ if (!$smarty->loadCache($cacheKeyPage, $pageData))
|
||||
if (!empty($refs))
|
||||
{
|
||||
$coList = new AchievementList(array(['id', $refs]));
|
||||
$pageData['page']['coData'] = $coList->getListviewData();
|
||||
$pageData['page']['coData'] = $coList->getListviewData();
|
||||
$pageData['page']['coParams'] = array(
|
||||
'id' => 'criteria-of',
|
||||
'name' => '$LANG.tab_criteriaof',
|
||||
@@ -149,7 +150,7 @@ if (!$smarty->loadCache($cacheKeyPage, $pageData))
|
||||
{
|
||||
// hide hidden criteria for regular users (really do..?)
|
||||
// if (($crt['complete_flags'] & ACHIEVEMENT_CRITERIA_FLAG_HIDDEN) && User::$perms > 0)
|
||||
// continue;
|
||||
// continue;
|
||||
|
||||
// alternative display option
|
||||
$displayMoney = $crt['complete_flags'] & ACHIEVEMENT_CRITERIA_FLAG_MONEY_COUNTER;
|
||||
@@ -328,10 +329,10 @@ if (!$smarty->loadCache($cacheKeyPage, $pageData))
|
||||
if ($acv->getField('series'))
|
||||
{
|
||||
$pageData['page']['series'] = array(
|
||||
array(
|
||||
'id' => $id,
|
||||
'name' => $acv->names[$id],
|
||||
'parent' => $acv->getField('series') >> 16,
|
||||
array(
|
||||
'id' => $id,
|
||||
'name' => $acv->names[$id],
|
||||
'parent' => $acv->getField('series') >> 16,
|
||||
)
|
||||
);
|
||||
$tmp = $pageData['page']['series'][0];
|
||||
|
||||
136
pages/achievements.php
Normal file
136
pages/achievements.php
Normal file
@@ -0,0 +1,136 @@
|
||||
<?php
|
||||
|
||||
if (!defined('AOWOW_REVISION'))
|
||||
die('illegal access');
|
||||
|
||||
|
||||
require 'includes/class.filter.php';
|
||||
|
||||
$cats = Util::extractURLParams($pageParam);
|
||||
$path = [0, 9];
|
||||
$title = [];
|
||||
$filter = [];
|
||||
$filterHash = !empty($_GET['filter']) ? '#'.sha1(serialize($_GET['filter'])) : null;
|
||||
$cacheKey = implode('_', [CACHETYPE_PAGE, TYPE_ACHIEVEMENT, -1, implode('.', $cats).$filterHash, User::$localeId]);
|
||||
$validCats = array(
|
||||
92 => true,
|
||||
96 => [14861, 14862, 14863],
|
||||
97 => [14777, 14778, 14779, 14780],
|
||||
95 => [165, 14801, 14802, 14803, 14804, 14881, 14901, 15003],
|
||||
168 => [14808, 14805, 14806, 14921, 14922, 14923, 14961, 14962, 15001, 15002, 15041, 15042],
|
||||
169 => [170, 171, 172],
|
||||
201 => [14864, 14865, 14866],
|
||||
155 => [160, 187, 159, 163, 161, 162, 158, 14981, 156, 14941],
|
||||
81 => true,
|
||||
1 => array (
|
||||
130 => [140, 145, 147, 191],
|
||||
141 => true,
|
||||
128 => [135, 136, 137],
|
||||
122 => [123, 124, 125, 126, 127],
|
||||
133 => true,
|
||||
14807 => [14821, 14822, 14823, 14963, 15021, 15062],
|
||||
132 => [178, 173],
|
||||
134 => true,
|
||||
131 => true,
|
||||
21 => [152, 153, 154]
|
||||
)
|
||||
);
|
||||
|
||||
$valid = false;
|
||||
switch (count($cats))
|
||||
{
|
||||
case 0:
|
||||
$valid = true;
|
||||
case 1:
|
||||
$valid = !$cats[0] || isset($validCats[$cats[0]]);
|
||||
break;
|
||||
case 2:
|
||||
$valid = $cats[0] == 1 ? isset($validCats[$cats[0]][$cats[1]]) : isset($validCats[$cats[0]]) && in_array($cats[1], $validCats[$cats[0]]);
|
||||
break;
|
||||
case 3:
|
||||
$valid = $cats[0] == 1 ? isset($validCats[$cats[0]][$cats[1]]) && in_array($cats[2], $validCats[$cats[0]][$cats[1]]) : false;
|
||||
break;
|
||||
}
|
||||
if (!$valid)
|
||||
$smarty->error();
|
||||
|
||||
if (!$smarty->loadCache($cacheKey, $pageData))
|
||||
{
|
||||
// include child categories if current category is empty
|
||||
$condition = !$cats[0] ? null : (int)end($cats);
|
||||
$acvList = new AchievementList($condition ? [['category', $condition]] : [], true);
|
||||
if (!$acvList->matches)
|
||||
{
|
||||
$curCats = $catList = [$condition];
|
||||
while ($curCats)
|
||||
{
|
||||
$curCats = DB::Aowow()->SelectCol('SELECT Id FROM ?_achievementCategory WHERE parentCategory IN (?a)', $curCats);
|
||||
$catList = array_merge($catList, $curCats);
|
||||
}
|
||||
$acvList = new AchievementList($catList ? [['category', $catList]] : [], true);
|
||||
}
|
||||
|
||||
// recreate form selection
|
||||
$filter['query'] = isset($_GET['filter']) ? $_GET['filter'] : NULL;
|
||||
$filter['setCr'] = $acvList->filterGetSetCriteria();
|
||||
$filter = array_merge($acvList->filterGetForm(), $filter);
|
||||
|
||||
// create page title and path
|
||||
if (is_array($cats))
|
||||
{
|
||||
$catrows = DB::Aowow()->Select('SELECT * FROM ?_achievementcategory WHERE id IN (?a)',
|
||||
$cats
|
||||
);
|
||||
|
||||
foreach ($catrows as $cat)
|
||||
{
|
||||
$path[] = $cat['id'];
|
||||
$title[] = Util::localizedString($cat, 'name');
|
||||
}
|
||||
array_unshift($title, ucFirst(Lang::$achievement['achievements']));
|
||||
}
|
||||
|
||||
// fill g_items, g_titles, g_achievements
|
||||
$acvList->addGlobalsToJscript($pageData);
|
||||
$acvList->addRewardsToJScript($pageData);
|
||||
|
||||
// listview content
|
||||
$pageData['data'] = $acvList->getListviewData();
|
||||
$pageData['params'] = ['tabs' => false];
|
||||
|
||||
// if we are have different cats display field
|
||||
if ($acvList->hasDiffCategories())
|
||||
$pageData['params']['visibleCols'] = "$['category']";
|
||||
|
||||
// create note if search limit was exceeded
|
||||
if ($acvList->matches > $AoWoWconf['sqlLimit'])
|
||||
$pageData['params']['note'] = '$'.sprintf(Util::$filterResultString, 'LANG.lvnote_achievementsfound', $acvList->matches, $AoWoWconf['sqlLimit']);
|
||||
|
||||
if ($acvList->filterGetError())
|
||||
$pageData['params']['_errors'] = '$1';
|
||||
|
||||
$smarty->saveCache($cacheKey, $pageData);
|
||||
}
|
||||
|
||||
|
||||
$page = array(
|
||||
'tab' => 0, // for g_initHeader($tab)
|
||||
'subCat' => $pageParam ? '='.$pageParam : '',
|
||||
'title' => implode(" - ", $title),
|
||||
'path' => "[".implode(", ", $path)."]",
|
||||
'reqJS' => array(
|
||||
array('path' => 'template/js/filters.js', 'conditional' => false),
|
||||
),
|
||||
);
|
||||
|
||||
// sort for dropdown-menus
|
||||
asort(Lang::$game['si']);
|
||||
|
||||
$smarty->updatePageVars($page);
|
||||
$smarty->assign('filter', $filter);
|
||||
$smarty->assign('lang', array_merge(Lang::$main, Lang::$game, Lang::$achievement));
|
||||
$smarty->assign('mysql', DB::Aowow()->getStatistics());
|
||||
$smarty->assign('lvData', $pageData);
|
||||
$smarty->display('achievements.tpl');
|
||||
|
||||
?>
|
||||
37
pages/classes.php
Normal file
37
pages/classes.php
Normal file
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
if (!defined('AOWOW_REVISION'))
|
||||
die('illegal access');
|
||||
|
||||
|
||||
$cacheKey = implode('_', [CACHETYPE_PAGE, TYPE_CLASS, -1, -1, User::$localeId]);
|
||||
|
||||
if (!$smarty->loadCache($cacheKey, $pageData))
|
||||
{
|
||||
$classes = new CharClassList();
|
||||
|
||||
$pageData = array(
|
||||
'file' => 'class',
|
||||
'data' => $classes->getListviewData(),
|
||||
'params' => array(
|
||||
'tabs' => false
|
||||
)
|
||||
);
|
||||
|
||||
$smarty->saveCache($cacheKey, $pageData);
|
||||
}
|
||||
|
||||
|
||||
$page = array(
|
||||
'tab' => 0, // for g_initHeader($tab)
|
||||
'title' => ucFirst(Lang::$game['classes']),
|
||||
'path' => "[0, 12]",
|
||||
);
|
||||
|
||||
$smarty->updatePageVars($page);
|
||||
$smarty->assign('lang', Lang::$main);
|
||||
$smarty->assign('mysql', DB::Aowow()->getStatistics());
|
||||
$smarty->assign('lvData', $pageData);
|
||||
$smarty->display('generic-no-filter.tpl');
|
||||
|
||||
?>
|
||||
52
pages/currencies.php
Normal file
52
pages/currencies.php
Normal file
@@ -0,0 +1,52 @@
|
||||
<?php
|
||||
|
||||
if (!defined('AOWOW_REVISION'))
|
||||
die('illegal access');
|
||||
|
||||
|
||||
$cat = Util::extractURLParams($pageParam)[0];
|
||||
$path = [0, 15];
|
||||
$validCats = [1, 2, 3, 22];
|
||||
$title = [ucFirst(Lang::$game['currencies'])];
|
||||
$cacheKey = implode('_', [CACHETYPE_PAGE, TYPE_CURRENCY, -1, isset($cat) ? $cat : -1, User::$localeId]);
|
||||
|
||||
if ($cat !== null && !in_array($cat, $validCats))
|
||||
$smarty->error();
|
||||
|
||||
if (isset($cat))
|
||||
{
|
||||
$path[] = $cat; // should be only one parameter anyway
|
||||
array_unshift($title, Lang::$currency['cat'][$cat]);
|
||||
}
|
||||
|
||||
if (!$smarty->loadCache($cacheKey, $pageData))
|
||||
{
|
||||
$money = new CurrencyList(isset($cat) ? array(['category', (int)$cat]) : []);
|
||||
|
||||
$pageData = array(
|
||||
'file' => 'currency',
|
||||
'data' => $money->getListviewData(),
|
||||
'params' => array(
|
||||
'tabs' => false
|
||||
)
|
||||
);
|
||||
|
||||
$money->addGlobalsToJscript($pageData);
|
||||
|
||||
$smarty->saveCache($cacheKey, $pageData);
|
||||
}
|
||||
|
||||
|
||||
$page = array(
|
||||
'tab' => 0, // for g_initHeader($tab)
|
||||
'title' => implode(" - ", $title),
|
||||
'path' => "[".implode(", ", $path)."]"
|
||||
);
|
||||
|
||||
$smarty->updatePageVars($page);
|
||||
$smarty->assign('lang', Lang::$main);
|
||||
$smarty->assign('mysql', DB::Aowow()->getStatistics());
|
||||
$smarty->assign('lvData', $pageData);
|
||||
$smarty->display('generic-no-filter.tpl');
|
||||
|
||||
?>
|
||||
@@ -49,10 +49,10 @@ if (!$smarty->loadCache($cacheKey, $pageData))
|
||||
|
||||
$pageData = array(
|
||||
'file' => 'event',
|
||||
'data' => $events->getListviewData(),
|
||||
'deps' => $deps,
|
||||
'data' => $events->getListviewData(),
|
||||
'deps' => $deps,
|
||||
'calendar' => false, // todo: fix it Felix!
|
||||
'params' => array(
|
||||
'params' => array(
|
||||
'tabs' => '$myTabs'
|
||||
)
|
||||
);
|
||||
|
||||
65
pages/itemsets.php
Normal file
65
pages/itemsets.php
Normal file
@@ -0,0 +1,65 @@
|
||||
<?php
|
||||
|
||||
if (!defined('AOWOW_REVISION'))
|
||||
die('illegal access');
|
||||
|
||||
|
||||
require 'includes/class.filter.php';
|
||||
|
||||
$filter = [];
|
||||
$path = [0, 2];
|
||||
$filterHash = !empty($_GET['filter']) ? sha1(serialize($_GET['filter'])) : -1;
|
||||
$cacheKey = implode('_', [CACHETYPE_PAGE, TYPE_ITEMSET, -1, $filterHash, User::$localeId]);
|
||||
|
||||
if (!$smarty->loadCache($cacheKey, $pageData))
|
||||
{
|
||||
$itemsets = new ItemsetList([], true); // class selection is via filter, nothing applies here
|
||||
|
||||
$itemsets->addGlobalsToJscript($pageData);
|
||||
|
||||
// recreate form selection
|
||||
$filter['query'] = isset($_GET['filter']) ? $_GET['filter'] : NULL;
|
||||
$filter['setCr'] = $itemsets->filterGetSetCriteria();
|
||||
$filter = array_merge($itemsets->filterGetForm(), $filter);
|
||||
|
||||
if (isset($filter['cl']))
|
||||
$path[] = $filter['cl'];
|
||||
|
||||
// listview content
|
||||
$pageData['data'] = $itemsets->getListviewData();
|
||||
$pageData['params'] = ['tabs' => false];
|
||||
|
||||
// create note if search limit was exceeded
|
||||
if ($itemsets->matches > $AoWoWconf['sqlLimit'])
|
||||
$pageData['params']['note'] = '$'.sprintf(Util::$filterResultString, 'LANG.lvnote_itemsetsfound', $itemsets->matches, $AoWoWconf['sqlLimit']);
|
||||
|
||||
if ($itemsets->filterGetError())
|
||||
$pageData['params']['_errors'] = '$1';
|
||||
|
||||
$smarty->saveCache($cacheKey, $pageData);
|
||||
}
|
||||
|
||||
|
||||
$page = array(
|
||||
'tab' => 0, // for g_initHeader($tab)
|
||||
'subCat' => $pageParam ? '='.$pageParam : '',
|
||||
'title' => ucFirst(Lang::$game['itemsets']),
|
||||
'path' => json_encode($path, JSON_NUMERIC_CHECK),
|
||||
'reqJS' => array(
|
||||
array('path' => 'template/js/filters.js', 'conditional' => false),
|
||||
array('path' => '?data=weight-presets', 'conditional' => false),
|
||||
)
|
||||
);
|
||||
|
||||
// sort for dropdown-menus
|
||||
asort(Lang::$itemset['notes'], SORT_NATURAL);
|
||||
asort(Lang::$game['cl']);
|
||||
|
||||
$smarty->updatePageVars($page);
|
||||
$smarty->assign('filter', $filter);
|
||||
$smarty->assign('lang', array_merge(Lang::$main, Lang::$game, Lang::$itemset, Lang::$item));
|
||||
$smarty->assign('mysql', DB::Aowow()->getStatistics());
|
||||
$smarty->assign('lvData', $pageData);
|
||||
$smarty->display('itemsets.tpl');
|
||||
|
||||
?>
|
||||
37
pages/races.php
Normal file
37
pages/races.php
Normal file
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
if (!defined('AOWOW_REVISION'))
|
||||
die('illegal access');
|
||||
|
||||
|
||||
$cacheKey = implode('_', [CACHETYPE_PAGE, TYPE_RACE, -1, -1, User::$localeId]);
|
||||
|
||||
if (!$smarty->loadCache($cacheKey, $pageData))
|
||||
{
|
||||
$races = new CharRaceList(array(['side', 0, '!'])); // only playable
|
||||
|
||||
$pageData = array(
|
||||
'file' => 'race',
|
||||
'data' => $races->getListviewData(),
|
||||
'params' => array(
|
||||
'tabs' => false
|
||||
)
|
||||
);
|
||||
|
||||
$smarty->saveCache($cacheKey, $pageData);
|
||||
}
|
||||
|
||||
|
||||
$page = array(
|
||||
'tab' => 0, // for g_initHeader($tab)
|
||||
'title' => ucFirst(Lang::$game['races']),
|
||||
'path' => "[0, 13]",
|
||||
);
|
||||
|
||||
$smarty->updatePageVars($page);
|
||||
$smarty->assign('lang', Lang::$main);
|
||||
$smarty->assign('mysql', DB::Aowow()->getStatistics());
|
||||
$smarty->assign('lvData', $pageData);
|
||||
$smarty->display('generic-no-filter.tpl');
|
||||
|
||||
?>
|
||||
@@ -58,7 +58,7 @@ if (!$smarty->loadCache($cacheKeyPage, $pageData))
|
||||
$pageData['page']['questParams'] = array(
|
||||
'id' => 'reward-from-quest',
|
||||
'name' => '$LANG.tab_rewardfrom',
|
||||
'hiddenCols' => "$['side']",
|
||||
'hiddenCols' => "$['experience', 'money']",
|
||||
'visibleCols' => "$['category']"
|
||||
);
|
||||
break;
|
||||
|
||||
167
template/achievement.tpl
Normal file
167
template/achievement.tpl
Normal file
@@ -0,0 +1,167 @@
|
||||
{include file='header.tpl'}
|
||||
|
||||
<div class="main" id="main">
|
||||
<div class="main-precontents" id="main-precontents"></div>
|
||||
<div class="main-contents" id="main-contents">
|
||||
{if !empty($announcements)}
|
||||
{foreach from=$announcements item=item}
|
||||
{include file='bricks/announcement.tpl' an=$item}
|
||||
{/foreach}
|
||||
{/if}
|
||||
<script type="text/javascript">
|
||||
{include file='bricks/community.tpl'}
|
||||
var g_pageInfo = {ldelim}type: {$page.type}, typeId: {$page.typeId}, name: '{$lvData.page.name|escape:"quotes"}'{rdelim}; // username:XXX in profiles
|
||||
g_initPath({$page.path});
|
||||
</script>
|
||||
|
||||
<table class="infobox">
|
||||
<tr><th>{$lang.quickFacts}</th></tr>
|
||||
<tr><td><div class="infobox-spacer"></div>
|
||||
<ul>
|
||||
{if $lvData.page.points}<li><div>{$lang.points}: <span class="moneyachievement tip" onmouseover="Listview.funcBox.moneyAchievementOver(event)" onmousemove="Tooltip.cursorUpdate(event)" onmouseout="Tooltip.hide()">{$lvData.page.points}</span></div></li>{/if}
|
||||
{foreach from=$lvData.page.infoBox item=info}
|
||||
<li><div>{$info}</div></li>
|
||||
{/foreach}
|
||||
{*<li><div>Location: {$lvData.page.location}</div></li> todo: need to be parsed first *}
|
||||
</ul>
|
||||
</td></tr>
|
||||
{strip}{*************** CHAIN OF ACHIEVEMENTS ***************}
|
||||
{if isset($lvData.page.series)}
|
||||
<tr><th>{$lang.series}</th></tr>
|
||||
<tr><td><div class="infobox-spacer"></div>
|
||||
<table class="series">
|
||||
{section name=i loop=$lvData.page.series}
|
||||
<tr>
|
||||
<th>{$smarty.section.i.index+1}.</th>
|
||||
<td>
|
||||
{if ($lvData.page.series[i].id == $lvData.page.id)}
|
||||
<b>{$lvData.page.series[i].name}</b>
|
||||
{else}
|
||||
<div><a href="?achievement={$lvData.page.series[i].id}">{$lvData.page.series[i].name}</a></div>
|
||||
{/if}
|
||||
</td>
|
||||
</tr>
|
||||
{/section}
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
{/if}
|
||||
{/strip}{*************** / CHAIN OF ACHIEVEMENTS ***************}
|
||||
<tr><th id="infobox-screenshots">{$lang.screenshots}</th></tr>
|
||||
<tr><td><div class="infobox-spacer"></div><div id="infobox-sticky-ss"></div></td></tr>
|
||||
<tr><th id="infobox-videos">{$lang.videos}</th></tr>
|
||||
<tr><td><div class="infobox-spacer"></div><div id="infobox-sticky-vi"></div></td></tr>
|
||||
</table>
|
||||
<script type="text/javascript">ss_appendSticky()</script>
|
||||
<script type="text/javascript">vi_appendSticky()</script>
|
||||
|
||||
<div class="text">
|
||||
|
||||
<div id="h1-icon-generic" class="h1-icon"></div>
|
||||
|
||||
<script type="text/javascript">
|
||||
ge('h1-icon-generic').appendChild(Icon.create('{$lvData.page.iconname|escape:"javascript"}', 1));
|
||||
</script>
|
||||
|
||||
<a href="javascript:;" id="open-links-button" class="button-red" onclick="this.blur();
|
||||
Links.show({ldelim} type: 10, typeId: {$lvData.page.id}, linkColor: 'ffffff00', linkId: '{$lvData.page.id}:"..UnitGUID("player")..":0:0:0:0:0:0:0:0', linkName: '{$lvData.page.name|escape:'javascript'}' {rdelim});">
|
||||
<em><b><i>{$lang.link}</i></b><span>{$lang.link}</span></em></a>
|
||||
<a href="http://old.wowhead.com/?{$query[0]}={$query[1]}" class="button-red"><em><b><i>Wowhead</i></b><span>Wowhead</span></em></a>
|
||||
<h1 class="h1-icon">{$lvData.page.name}</h1>
|
||||
|
||||
{$lvData.page.description}
|
||||
|
||||
{if !empty($lvData.page.criteria)}<h3>{$lang.criteria}{if $lvData.page.count} – <small><b>{$lang.requires} {$lvData.page.count} {$lang.outOf} {$lvData.page.total_criteria}</b></small>{/if}</h3>{/if}
|
||||
|
||||
<div style="float: left; margin-right: 25px">
|
||||
<table class="iconlist">
|
||||
{strip}
|
||||
{foreach from=$lvData.page.criteria item=cr name=criteria}
|
||||
<tr>
|
||||
<th{if isset($cr.icon)} align="right" id="iconlist-icon{$cr.icon}"{/if}>
|
||||
{* for reference and standard entries *}
|
||||
{if !isset($cr.icon) && (isset($cr.link) || $cr.standard)}
|
||||
<ul><li><var> </var></li></ul>
|
||||
{/if}
|
||||
</th>
|
||||
<td>
|
||||
{if isset($cr.link)}<a href="{$cr.link.href}"{if isset($cr.link.quality)} class="q{$cr.link.quality}"{/if}>{$cr.link.text|escape:"html"}</a>{if isset($cr.link.count) && $cr.link.count > 1} ({$cr.link.count}){/if}{/if}
|
||||
|
||||
{* STANDARD TEXT *}
|
||||
{if isset($cr.extra_text)} {$cr.extra_text}{/if}
|
||||
{if $user.roles > 0} <small title="{$lang.criteriaType} {$cr.type}" class="q0">[{$cr.id}]</small>{/if}
|
||||
</td>
|
||||
</tr>
|
||||
{* If the first column is over (it may be a greater element) *}
|
||||
{if $smarty.foreach.criteria.index+1 == round(count($lvData.page.criteria) / 2)}
|
||||
</table>
|
||||
</div>
|
||||
<div style="float: left">
|
||||
<table class="iconlist">
|
||||
{/if}
|
||||
{/foreach}
|
||||
{/strip}
|
||||
</table>
|
||||
</div>
|
||||
|
||||
{strip}
|
||||
<script type="text/javascript">
|
||||
{foreach from=$lvData.page.icons item=ic}
|
||||
ge('iconlist-icon{$ic.itr}').appendChild({$ic.type}.createIcon({$ic.id}, 0, {if isset($ic.count) && $ic.count > 0}{$ic.count}{else}0{/if}));
|
||||
{/foreach}
|
||||
</script>
|
||||
{/strip}
|
||||
|
||||
|
||||
<div style="clear: left"></div>
|
||||
|
||||
{* for items *}
|
||||
{if $lvData.page.itemReward}
|
||||
<h3>{$lang.rewards}</h3>
|
||||
{$lang.itemReward}<table class="icontab">
|
||||
<tr>
|
||||
{foreach from=$lvData.page.itemReward item=i name=item key=id}
|
||||
<th id="icontab-icon{$smarty.foreach.item.index}"></th><td><span class="q{$i.quality}"><a href="?item={$id}">{$i.name}</a></span></td>
|
||||
{/foreach}
|
||||
<script type="text/javascript">
|
||||
{foreach from=$lvData.page.itemReward item=i name=item key=id}
|
||||
ge('icontab-icon{$smarty.foreach.item.index}').appendChild(g_items.createIcon({$id}, 1, 1));
|
||||
{/foreach}
|
||||
</script>
|
||||
</tr>
|
||||
</table>
|
||||
{/if}
|
||||
|
||||
{* for titles *}
|
||||
{if $lvData.page.titleReward}
|
||||
<h3>{$lang.gains}</h3>
|
||||
<ul>
|
||||
{foreach from=$lvData.page.titleReward item=i}
|
||||
<li><div>{$i}</div></li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
{/if}
|
||||
|
||||
<h2>{$lang.related}</h2>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="tabs-generic"></div>
|
||||
<div id="listview-generic" class="listview"></div>
|
||||
<script type="text/javascript">
|
||||
var tabsRelated = new Tabs({ldelim}parent: ge('tabs-generic'){rdelim});
|
||||
{if $lvData.page.saData} {include file='bricks/listviews/achievement.tpl' data=$lvData.page.saData params=$lvData.page.saParams}{/if}
|
||||
{if isset($lvData.page.coData)} {include file='bricks/listviews/achievement.tpl' data=$lvData.page.coData params=$lvData.page.coParams}{/if}
|
||||
new Listview({ldelim}template: 'comment', id: 'comments', name: LANG.tab_comments, tabs: tabsRelated, parent: 'listview-generic', data: lv_comments{rdelim});
|
||||
new Listview({ldelim}template: 'screenshot', id: 'screenshots', name: LANG.tab_screenshots, tabs: tabsRelated, parent: 'listview-generic', data: lv_screenshots{rdelim});
|
||||
if (lv_videos.length || (g_user && g_user.roles & (U_GROUP_ADMIN | U_GROUP_BUREAU | U_GROUP_VIDEO)))
|
||||
new Listview({ldelim}template: 'video', id: 'videos', name: LANG.tab_videos, tabs: tabsRelated, parent: 'listview-generic', data: lv_videos{rdelim});
|
||||
tabsRelated.flush();
|
||||
</script>
|
||||
|
||||
{include file='bricks/contribute.tpl'}
|
||||
|
||||
</div><!-- main-contents -->
|
||||
</div><!-- main -->
|
||||
|
||||
{include file='footer.tpl'}
|
||||
74
template/achievements.tpl
Normal file
74
template/achievements.tpl
Normal file
@@ -0,0 +1,74 @@
|
||||
{include file='header.tpl'}
|
||||
|
||||
<div id="main">
|
||||
<div id="main-precontents"></div>
|
||||
<div id="main-contents" class="main-contents">
|
||||
|
||||
{if !empty($announcements)}
|
||||
{foreach from=$announcements item=item}
|
||||
{include file='bricks/announcement.tpl' an=$item}
|
||||
{/foreach}
|
||||
{/if}
|
||||
|
||||
<script type="text/javascript">
|
||||
g_initPath({$page.path}, {if empty($filter.query)} 0 {else} 1 {/if});
|
||||
{if isset($filter.query)}Menu.append(mn_database[1], '&filter={$filter.query}'); // todo: menu order varies per locale{/if}
|
||||
</script>
|
||||
|
||||
<div id="fi" style="display:{if empty($filter.query)}none{else}block{/if};">
|
||||
<form action="?achievements{$page.subCat}&filter" method="post" name="fi" onsubmit="return fi_submit(this)" onreset="return fi_reset(this)">
|
||||
<table>
|
||||
<tr>
|
||||
<td>{$lang.name}: </td>
|
||||
<td colspan="3">
|
||||
<table><tr>
|
||||
<td> <input type="text" name="na" size="30" {if isset($filter.na)}value="{$filter.na}"{/if}/></td>
|
||||
<td> <input type="checkbox" name="ex" value="on" id="achievement-ex" {if isset($filter.ex)}checked="checked"{/if}/></td>
|
||||
<td><label for="achievement-ex"><span class="tip" onmouseover="Tooltip.showAtCursor(event, LANG.tooltip_extendedachievementsearch, 0, 0, 'q')" onmousemove="Tooltip.cursorUpdate(event)" onmouseout="Tooltip.hide()">{$lang.extSearch}</span></label></td>
|
||||
</tr></table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="padded">{$lang.side}: </td>
|
||||
<td class="padded"> <select name="si">
|
||||
<option></option>
|
||||
{foreach from=$lang.si key=i item=str}{if $str}
|
||||
<option value="{$i}" {if isset($filter.si) && $filter.si == $i}selected{/if}>{$str}</option>
|
||||
{/if}{/foreach}
|
||||
</select>
|
||||
</td>
|
||||
<td class="padded"><table><tr>
|
||||
<td> {$lang.points}: </td>
|
||||
<td> <input type="text" name="minpt" maxlength="2" class="smalltextbox" {if isset($filter.minpt)}value="{$filter.minpt}"{/if}/> - <input type="text" name="maxpt" maxlength="2" class="smalltextbox" {if isset($filter.maxpt)}value="{$filter.maxpt}"{/if}/></td>
|
||||
</tr></table></td>
|
||||
</tr>
|
||||
</table>
|
||||
<div id="fi_criteria" class="padded criteria"><div></div></div>
|
||||
<div><a href="javascript:;" id="fi_addcriteria" onclick="fi_addCriterion(this); return false">{$lang.addFilter}</a></div>
|
||||
<div class="padded2">{$lang.match}: <input type="radio" name="ma" value="" id="ma-0" {if !isset($filter.ma)}checked="checked"{/if} /><label for="ma-0">{$lang.allFilter}</label><input type="radio" name="ma" value="1" id="ma-1" {if isset($filter.ma)}checked="checked"{/if} /><label for="ma-1">{$lang.oneFilter}</label></div>
|
||||
|
||||
<div class="clear"></div>
|
||||
|
||||
<div class="padded"></div>
|
||||
<input type="submit" value="{$lang.applyFilter}" />
|
||||
<input type="reset" value="{$lang.resetForm}" />
|
||||
<div style="float: right">{$lang.refineSearch}</div>
|
||||
</form>
|
||||
<div class="pad"></div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">//<![CDATA[
|
||||
fi_init('achievements');
|
||||
{if isset($filter.setCr)}{$filter.setCr}{/if}
|
||||
//]]></script>
|
||||
|
||||
<div id="listview-generic" class="listview"></div>
|
||||
<script type="text/javascript">
|
||||
{include file='bricks/listviews/achievement.tpl' data=$lvData.data params=$lvData.params}
|
||||
</script>
|
||||
|
||||
<div class="clear"></div>
|
||||
</div><!-- main-contents -->
|
||||
</div><!-- main -->
|
||||
|
||||
{include file='footer.tpl'}
|
||||
120
template/bricks/contrib_0.tpl
Normal file
120
template/bricks/contrib_0.tpl
Normal file
@@ -0,0 +1,120 @@
|
||||
{if $user.id > 0}
|
||||
<div id="tab-add-your-comment" style="display: none">
|
||||
|
||||
Please keep the following in mind when posting a comment:
|
||||
|
||||
<ul>
|
||||
<li><div>Your comment must be in English or it will be removed.</div></li>
|
||||
<li><div>Unsure how to post? Check out our <a href="?help=commenting-and-you" target="_blank">handy guide</a>!</div></li>
|
||||
<li><div>Please post questions on our <a href="?forums">forums</a> for quicker reply.</div></li>
|
||||
<li><div>You might want to proof-read your comments before posting them.</div></li>
|
||||
</ul>
|
||||
|
||||
<form name="addcomment" action="?comment=add&type={$page.type}&typeid={$page.typeId}" method="post" onsubmit="return co_validateForm(this)">
|
||||
<div id="replybox-generic" style="display: none">
|
||||
The answer to a comment from <span></span>. <a href="javascript:;" onclick="co_cancelReply()">Cancel</a>
|
||||
<div class="pad"></div>
|
||||
</div>
|
||||
<div id="funcbox-generic"></div>
|
||||
<script type="text/javascript">Listview.funcBox.coEditAppend(ge('funcbox-generic'), {ldelim}body: ''{rdelim}, 1)</script>
|
||||
<div class="pad"></div>
|
||||
<input type="submit" value="Submit"></input>
|
||||
<input type="hidden" name="replyto" value=""></input>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
<div id="tab-submit-a-screenshot" style="display: none">
|
||||
|
||||
Simply browse for your screenshot using the form below.
|
||||
|
||||
<ul>
|
||||
<li><div>In-game screenshots are preferred over model-viewer-generated ones.</div></li>
|
||||
<li><div>The higher the quality the better!</div></li>
|
||||
<li><div>Be sure to read the <a href="?help=screenshots-tips-tricks" target="_blank">tips & tricks</a> if you haven't before.</div></li>
|
||||
</ul>
|
||||
|
||||
<form action="?screenshot=add&{$page.type}.{$page.typeId}" method="post" enctype="multipart/form-data" onsubmit="return ss_validateForm(this)">
|
||||
|
||||
File: <input type="file" name="screenshotfile" style="width: 35%"/><br />
|
||||
<div class="pad2"></div>
|
||||
Caption: <input type="text" name="screenshotcaption" maxlength="200" /> <small>Optional, up to 200 characters</small><br />
|
||||
<div class="pad2"></div>
|
||||
<input type="submit" value="Submit" />
|
||||
|
||||
<div class="pad3"></div>
|
||||
<small class="q0">Note: Your Screenshot will need to be approved before appearing on the site.</small>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
<div id="tab-suggest-a-video" style="display: none">
|
||||
|
||||
Simply type the URL of the video in the form below.
|
||||
|
||||
<div class="pad2"></div>
|
||||
<form action="?video=add&{$page.type}.{$page.typeId}" method="post" enctype="multipart/form-data" onsubmit="return vi_validateForm(this)">
|
||||
|
||||
URL: <input type="text" name="videourl" style="width: 35%" /> <small>Supported: YouTube only</small>
|
||||
<div class="pad2"></div>
|
||||
Title: <input type="text" name="videotitle" maxlength="200" /> <small>Optional, up to 200 characters</small><br />
|
||||
<div class="pad"></div>
|
||||
<input type="submit" value="Submit" />
|
||||
|
||||
<div class="pad3"></div>
|
||||
<small class="q0">Note: Your video will need to be approved before appearing on the site.</small>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
{else}
|
||||
<div id="tab-add-your-comment" style="display: none">
|
||||
|
||||
Please keep the following in mind when posting a comment:
|
||||
|
||||
<ul>
|
||||
<li><div>Your comment must be in English or it will be removed.</div></li>
|
||||
<li><div>Unsure how to post? Check out our <a href="?help=commenting-and-you" target="_blank">handy guide</a>!</div></li>
|
||||
<li><div>Please post questions on our <a href="?forums">forums</a> for quicker reply.</div></li>
|
||||
<li><div>You might want to proof-read your comments before posting them.</div></li>
|
||||
</ul>
|
||||
|
||||
<form action="/" method="post">
|
||||
|
||||
<div class="comment-edit-body"><textarea class="comment-editbox" rows="10" cols="40" name="commentbody" disabled="disabled"></textarea></div>
|
||||
<small>You are not logged in. Please <a href="?account=signin">log in</a> or <a href="?account=signup">register an account</a> to add your comment.</small>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
<div id="tab-submit-a-screenshot" style="display: none">
|
||||
|
||||
Simply browse for your screenshot using the form below.
|
||||
|
||||
<ul>
|
||||
<li><div>In-game screenshots are preferred over model-viewer-generated ones.</div></li>
|
||||
<li><div>The higher the quality the better!</div></li>
|
||||
<li><div>Be sure to read the <a href="?help=screenshots-tips-tricks" target="_blank">tips & tricks</a> if you haven't before.</div></li>
|
||||
</ul>
|
||||
|
||||
<form action="/" method="post">
|
||||
|
||||
<input type="file" name="screenshotfile" disabled="disabled" /><br />
|
||||
<small>You are not signed in. Please <a href="?account=signin">sign in</a> to submit a screenshot.</small>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
<div id="tab-suggest-a-video" style="display: none">
|
||||
|
||||
Simply type the URL of the video in the form below.
|
||||
|
||||
<div class="pad2"></div>
|
||||
<form action="/" method="post">
|
||||
|
||||
<input type="text" name="videourl" disabled="disabled" /><br />
|
||||
<small>You are not signed in. Please <a href="?account=signin">sign in</a> to submit a video.</small>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
{/if}
|
||||
120
template/bricks/contrib_2.tpl
Normal file
120
template/bricks/contrib_2.tpl
Normal file
@@ -0,0 +1,120 @@
|
||||
{if $user.id > 0}
|
||||
<div id="tab-add-your-comment" style="display: none">
|
||||
|
||||
Gardez à l'esprit les points suivant avant de poster un commentaire :
|
||||
|
||||
<ul>
|
||||
<li><div>Votre commentaire doit être en Français ou il sera supprimé.</div></li>
|
||||
<li><div>Pas certain de savoir comment écrire un commentaire ? Consultez notre <a href="?help=commenting-and-you" target="_blank">guide pratique</a> !</div></li>
|
||||
<li><div>Posez vos questions sur le <a href="?forums">forum</a> afin d'avoir une réponse plus rapide.</div></li>
|
||||
<li><div>Il serait avisé de corriger vos fautes avant de soumettre vos commentaires.</div></li>
|
||||
</ul>
|
||||
|
||||
<form name="addcomment" action="?comment=add&type={$page.type}&typeid={$page.typeId}" method="post" onsubmit="return co_validateForm(this)">
|
||||
<div id="replybox-generic" style="display: none">
|
||||
The answer to a comment from <span></span>. <a href="javascript:;" onclick="co_cancelReply()">Cancel</a>
|
||||
<div class="pad"></div>
|
||||
</div>
|
||||
<div id="funcbox-generic"></div>
|
||||
<script type="text/javascript">Listview.funcBox.coEditAppend(ge('funcbox-generic'), {ldelim}body: ''{rdelim}, 1)</script>
|
||||
<div class="pad"></div>
|
||||
<input type="submit" value="Submit"></input>
|
||||
<input type="hidden" name="replyto" value=""></input>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
<div id="tab-submit-a-screenshot" style="display: none">
|
||||
|
||||
Sélectionez votre capture en utilisant le formulaire ci-dessous.
|
||||
|
||||
<ul>
|
||||
<li><div>Les captures prises dans le jeu sont préférées à celles générées avec un logiciel.</div></li>
|
||||
<li><div>Plus la qualité est haute, mieux c'est !</div></li>
|
||||
<li><div>Assurez-vous de lire les <a href="?help=screenshots-tips-tricks" target="_blank">trucs et astuces</a> si ce n'est pas déjà fait.</div></li>
|
||||
</ul>
|
||||
|
||||
<form action="?screenshot=add&{$page.type}.{$page.typeId}" method="post" enctype="multipart/form-data" onsubmit="return ss_validateForm(this)">
|
||||
|
||||
File: <input type="file" name="screenshotfile" style="width: 35%"/><br />
|
||||
<div class="pad2"></div>
|
||||
Caption: <input type="text" name="screenshotcaption" maxlength="200" /> <small>Optional, up to 200 characters</small><br />
|
||||
<div class="pad2"></div>
|
||||
<input type="submit" value="Submit" />
|
||||
|
||||
<div class="pad3"></div>
|
||||
<small class="q0">Note: Votre capture d'écran devra être approuvé avant d'apparaitre sur le site.</small>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
<div id="tab-suggest-a-video" style="display: none">
|
||||
|
||||
Entrez simplement l'URL du vidéo dans le formulaire ci-dessous.
|
||||
|
||||
<div class="pad2"></div>
|
||||
<form action="?video=add&{$page.type}.{$page.typeId}" method="post" enctype="multipart/form-data" onsubmit="return vi_validateForm(this)">
|
||||
|
||||
URL: <input type="text" name="videourl" style="width: 35%" /> <small>Supporté: Youtube seulement</small>
|
||||
<div class="pad2"></div>
|
||||
Title: <input type="text" name="videotitle" maxlength="200" /> <small>Optional, up to 200 characters</small><br />
|
||||
<div class="pad"></div>
|
||||
<input type="submit" value="Submit" />
|
||||
|
||||
<div class="pad3"></div>
|
||||
<small class="q0">Note: Votre vidéo devra être approuvé avant d'apparaitre sur le site.</small>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
{else}
|
||||
<div id="tab-add-your-comment" style="display: none">
|
||||
|
||||
Gardez à l'esprit les points suivant avant de poster un commentaire :
|
||||
|
||||
<ul>
|
||||
<li><div>Votre commentaire doit être en Français ou il sera supprimé.</div></li>
|
||||
<li><div>Pas certain de savoir comment écrire un commentaire ? Consultez notre <a href="?help=commenting-and-you" target="_blank">guide pratique</a> !</div></li>
|
||||
<li><div>Posez vos questions sur le <a href="?forums">forum</a> afin d'avoir une réponse plus rapide.</div></li>
|
||||
<li><div>Il serait avisé de corriger vos fautes avant de soumettre vos commentaires.</div></li>
|
||||
</ul>
|
||||
|
||||
<form action="/" method="post">
|
||||
|
||||
<div class="comment-edit-body"><textarea class="comment-editbox" rows="10" cols="40" name="commentbody" disabled="disabled"></textarea></div>
|
||||
<small>Vous n'êtes pas connecté(e). Veuillez vous <a href="?account=signin">connecter</a> ou vous <a href="?account=signup">inscrire</a> pour ajouter votre commentaire.</small>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
<div id="tab-submit-a-screenshot" style="display: none">
|
||||
|
||||
Sélectionez votre capture en utilisant le formulaire ci-dessous.
|
||||
|
||||
<ul>
|
||||
<li><div>Les captures prises dans le jeu sont préférées à celles générées avec un logiciel.</div></li>
|
||||
<li><div>Plus la qualité est haute, mieux c'est !</div></li>
|
||||
<li><div>Assurez-vous de lire les <a href="?help=screenshots-tips-tricks" target="_blank">trucs et astuces</a> si ce n'est pas déjà fait.</div></li>
|
||||
</ul>
|
||||
|
||||
<form action="/" method="post">
|
||||
|
||||
<input type="file" name="screenshotfile" disabled="disabled" /><br />
|
||||
<small>Vous n'êtes pas connecté(e). Veuillez vous <a href="?account=siginin">connecter</a> pour envoyer une capture d'écran.</small>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
<div id="tab-suggest-a-video" style="display: none">
|
||||
|
||||
Entrez simplement l'URL du vidéo dans le formulaire ci-dessous.
|
||||
|
||||
<div class="pad2"></div>
|
||||
<form action="/" method="post">
|
||||
|
||||
<input type="text" name="videourl" disabled="disabled" /><br />
|
||||
<small>Vous n'êtes pas connecté(e). Veuillez vous <a href="?account=siginin">connecter</a> pour envoyer une vidéo.</small>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
{/if}
|
||||
128
template/bricks/contrib_3.tpl
Normal file
128
template/bricks/contrib_3.tpl
Normal file
@@ -0,0 +1,128 @@
|
||||
{if $user.id > 0}
|
||||
<div id="tab-add-your-comment" style="display: none">
|
||||
|
||||
Denkt bitte an Folgendes, wenn Ihr einen Kommentar schreibt:
|
||||
|
||||
<ul>
|
||||
<li><div>Euer Kommentar muss in Deutsch sein, oder er wird entfernt.</div></li>
|
||||
<li><div>Nicht sicher, wie Ihr schreiben sollt? Werft einen Blick auf unsere <a href="?help=commenting-and-you" target="_blank">praktische Anleitung</a>!</div></li>
|
||||
<li><div>Es ist ratsam, den Kommentar vor dem Einsenden noch einmal auf Richtigkeit zu überprüfen.</div></li>
|
||||
<li><div>Stellt Eure Fragen bitte in unseren <a href="?forums">Foren</a>, wenn Ihr eine schnellere Antwort wünscht.</div></li>
|
||||
</ul>
|
||||
|
||||
<form name="addcomment" action="?comment=add&type={$page.type}&typeid={$page.typeId}" method="post" onsubmit="return co_validateForm(this)">
|
||||
<div id="replybox-generic" style="display: none">
|
||||
Antwort zu einem Kommentar von <span></span>. <a href="javascript:;" onclick="co_cancelReply()">Abbrechen</a>
|
||||
<div class="pad"></div>
|
||||
</div>
|
||||
<div id="funcbox-generic"></div>
|
||||
<script type="text/javascript">Listview.funcBox.coEditAppend(ge('funcbox-generic'), {ldelim}body: ''{rdelim}, 1)</script>
|
||||
<div class="pad"></div>
|
||||
<input type="submit" value="Absenden"></input>
|
||||
<input type="hidden" name="replyto" value=""></input>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="tab-submit-a-screenshot" style="display: none">
|
||||
|
||||
Wählt einfach Euren Screenshot mit dem folgenden Formular aus.
|
||||
|
||||
<ul>
|
||||
<li><div>Screenshots aus dem Spiel werden gegenüber Bildern aus dem Modellviewer bevorzugt.</div></li>
|
||||
<li><div>Je höher die Qualität, desto besser!</div></li>
|
||||
<li><div>Lest Euch unbedingt die <a href="?help=screenshots-tips-tricks" target="_blank">Tipps & Tricks</a> durch, wenn nicht bereits geschehen.</div></li>
|
||||
</ul>
|
||||
|
||||
<form action="?screenshot=add&{$page.type}.{$page.typeId}" method="post" enctype="multipart/form-data" onsubmit="return ss_validateForm(this)">
|
||||
|
||||
Datei: <input type="file" name="screenshotfile" style="width: 35%"/><br />
|
||||
<div class="pad2"></div>
|
||||
Titel: <input type="text" name="screenshotcaption" maxlength="200" /> <small>Optional, bis zu 200 Zeichen</small><br />
|
||||
<div class="pad2"></div>
|
||||
<input type="submit" value="Senden" />
|
||||
|
||||
<div class="pad3"></div>
|
||||
<small class="q0">Hinweis: Euer Screenshot muss zunächst zugelassen werden, bevor er auf der Seite erscheint.</small>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="tab-suggest-a-video" style="display: none">
|
||||
|
||||
Gebt einfach die URL des Videos im folgenden Formular ein.
|
||||
|
||||
<div class="pad2"></div>
|
||||
<form action="?video=add&{$page.type}.{$page.typeId}" method="post" enctype="multipart/form-data" onsubmit="return vi_validateForm(this)">
|
||||
|
||||
URL: <input type="text" name="videourl" style="width: 35%" /> <small>Unterstützt: nur YouTube</small>
|
||||
<div class="pad2"></div>
|
||||
Titel: <input type="text" name="videotitle" maxlength="200" /> <small>Optional, bis zu 200 Zeichen</small><br />
|
||||
<div class="pad"></div>
|
||||
<input type="submit" value="Senden" />
|
||||
|
||||
<div class="pad3"></div>
|
||||
<small class="q0">Hinweis: Euer Video muss zunächst zugelassen werden, bevor es auf der Seite erscheint.</small>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
{else}
|
||||
<div id="tab-add-your-comment" style="display: none">
|
||||
|
||||
Denkt bitte an Folgendes, wenn Ihr einen Kommentar schreibt:
|
||||
|
||||
<ul>
|
||||
<li><div>Euer Kommentar muss in Deutsch sein, oder er wird entfernt.</div></li>
|
||||
<li><div>Nicht sicher, wie Ihr schreiben sollt? Werft einen Blick auf unsere <a href="?help=commenting-and-you" target="_blank">praktische Anleitung</a>!</div></li>
|
||||
<li><div>Es ist ratsam, den Kommentar vor dem Einsenden noch einmal auf Richtigkeit zu überprüfen.</div></li>
|
||||
<li><div>Stellt Eure Fragen bitte in unseren <a href="?forums">Foren</a>, wenn Ihr eine schnellere Antwort wünscht.</div></li>
|
||||
</ul>
|
||||
|
||||
<form action="/" method="post">
|
||||
|
||||
<div class="comment-edit-body"><textarea class="comment-editbox" rows="10" cols="40" name="commentbody" disabled="disabled"></textarea></div>
|
||||
<small>Ihr seid nicht angemeldet. Bitte <a href="?account=signin">meldet Euch an</a>, oder <a href="?account=signup">registriert Euch</a>, um einen Kommentar einzusenden.</small>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="tab-submit-a-screenshot" style="display: none">
|
||||
|
||||
Wählt einfach Euren Screenshot mit dem folgenden Formular aus.
|
||||
|
||||
<ul>
|
||||
<li><div>Screenshots aus dem Spiel werden gegenüber Bildern aus dem Modellviewer bevorzugt.</div></li>
|
||||
<li><div>Je höher die Qualität, desto besser!</div></li>
|
||||
<li><div>Lest Euch unbedingt die <a href="?help=screenshots-tips-tricks" target="_blank">Tipps & Tricks</a> durch, wenn nicht bereits geschehen.</div></li>
|
||||
</ul>
|
||||
|
||||
<form action="/" method="post">
|
||||
|
||||
<input type="file" name="screenshotfile" disabled="disabled" /><br />
|
||||
<small>Ihr seid nicht angemeldet. Bitte <a href="?account=signin">meldet Euch an</a>, um einen Screenshot einzusenden.</small>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="tab-suggest-a-video" style="display: none">
|
||||
|
||||
Gebt einfach die URL des Videos im folgenden Formular ein.
|
||||
|
||||
<div class="pad2"></div>
|
||||
<form action="/video=add&13.7" method="post" enctype="multipart/form-data" onsubmit="return vi_validateForm(this)">
|
||||
|
||||
URL: <input type="text" name="videourl" style="width: 35%" /> <small>Unterstützt: nur YouTube</small>
|
||||
<div class="pad"></div>
|
||||
<input type="submit" value="Senden" />
|
||||
|
||||
<div class="pad3"></div>
|
||||
<small class="q0">Hinweis: Euer Video muss zunächst zugelassen werden, bevor es auf der Seite erscheint.</small>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
{/if}
|
||||
120
template/bricks/contrib_6.tpl
Normal file
120
template/bricks/contrib_6.tpl
Normal file
@@ -0,0 +1,120 @@
|
||||
{if $user.id > 0}
|
||||
<div id="tab-add-your-comment" style="display: none">
|
||||
|
||||
Ten en cuenta lo siguiente cuando escribas un comentario:
|
||||
|
||||
<ul>
|
||||
<li><div>Tu comentario debe ser en español, o será eliminado.</div></li>
|
||||
<li><div>¿No estás seguro de cómo escribir? ¡Échale un vistazo a <a href="?help=commenting-and-you" target="_blank">nuestra guía</a>!</div></li>
|
||||
<li><div>Por favor, pon tus preguntas en nuestro <a href="?forums">foro</a> para obtener una respuesta más rápida.</div></li>
|
||||
<li><div>Deberías corregir tus comentarios antes de enviarlos.</div></li>
|
||||
</ul>
|
||||
|
||||
<form name="addcomment" action="?comment=add&type={$page.type}&typeid={$page.typeId}" method="post" onsubmit="return co_validateForm(this)">
|
||||
<div id="replybox-generic" style="display: none">
|
||||
The answer to a comment from <span></span>. <a href="javascript:;" onclick="co_cancelReply()">Cancel</a>
|
||||
<div class="pad"></div>
|
||||
</div>
|
||||
<div id="funcbox-generic"></div>
|
||||
<script type="text/javascript">Listview.funcBox.coEditAppend(ge('funcbox-generic'), {ldelim}body: ''{rdelim}, 1)</script>
|
||||
<div class="pad"></div>
|
||||
<input type="submit" value="Submit"></input>
|
||||
<input type="hidden" name="replyto" value=""></input>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
<div id="tab-submit-a-screenshot" style="display: none">
|
||||
|
||||
Simplemente busca tu captura de imagen usando el formulario que aparece abajo.
|
||||
|
||||
<ul>
|
||||
<li><div>Preferimos imágenes sacadas del juego a capturas de visualizadores de modelos.</div></li>
|
||||
<li><div>¡Mientras más calidad mejor!</div></li>
|
||||
<li><div>Asegurate de leer las <a href="?help=screenshots-tips-tricks" target="_blank">sugerencias y trucos</a> si no lo has hecho antes.</div></li>
|
||||
</ul>
|
||||
|
||||
<form action="?screenshot=add&{$page.type}.{$page.typeId}" method="post" enctype="multipart/form-data" onsubmit="return ss_validateForm(this)">
|
||||
|
||||
File: <input type="file" name="screenshotfile" style="width: 35%"/><br />
|
||||
<div class="pad2"></div>
|
||||
Caption: <input type="text" name="screenshotcaption" maxlength="200" /> <small>Optional, up to 200 characters</small><br />
|
||||
<div class="pad2"></div>
|
||||
<input type="submit" value="Submit" />
|
||||
|
||||
<div class="pad3"></div>
|
||||
<small class="q0">Nota: Su captura de imagen deberá ser aprobado antes de aparecer en el sitio.</small>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
<div id="tab-suggest-a-video" style="display: none">
|
||||
|
||||
Símplemente, escribe la URL del vídeo en el formulario.
|
||||
|
||||
<div class="pad2"></div>
|
||||
<form action="?video=add&{$page.type}.{$page.typeId}" method="post" enctype="multipart/form-data" onsubmit="return vi_validateForm(this)">
|
||||
|
||||
URL: <input type="text" name="videourl" style="width: 35%" /> <small>Soportado: Sólo YouTube</small>
|
||||
<div class="pad2"></div>
|
||||
Title: <input type="text" name="videotitle" maxlength="200" /> <small>Optional, up to 200 characters</small><br />
|
||||
<div class="pad"></div>
|
||||
<input type="submit" value="Submit" />
|
||||
|
||||
<div class="pad3"></div>
|
||||
<small class="q0">Nota: Tu vídeo deberá ser aprobado antes de aparecer en el sitio.</small>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
{else}
|
||||
<div id="tab-add-your-comment" style="display: none">
|
||||
|
||||
Ten en cuenta lo siguiente cuando escribas un comentario:
|
||||
|
||||
<ul>
|
||||
<li><div>Tu comentario debe ser en español, o será eliminado.</div></li>
|
||||
<li><div>¿No estás seguro de cómo escribir? ¡Échale un vistazo a <a href="?help=commenting-and-you" target="_blank">nuestra guía</a>!</div></li>
|
||||
<li><div>Por favor, pon tus preguntas en nuestro <a href="?forums">foro</a> para obtener una respuesta más rápida.</div></li>
|
||||
<li><div>Deberías corregir tus comentarios antes de enviarlos.</div></li>
|
||||
</ul>
|
||||
|
||||
<form action="/" method="post">
|
||||
|
||||
<div class="comment-edit-body"><textarea class="comment-editbox" rows="10" cols="40" name="commentbody" disabled="disabled"></textarea></div>
|
||||
<small>No has iniciado sesión. Por favor <a href="?account=signin">entra a tu cuenta</a> o <a href="?account=signup">registra una cuenta</a> para añadir tu comentario.</small>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
<div id="tab-submit-a-screenshot" style="display: none">
|
||||
|
||||
Simplemente busca tu captura de imagen usando el formulario que aparece abajo.
|
||||
|
||||
<ul>
|
||||
<li><div>Preferimos imágenes sacadas del juego a capturas de visualizadores de modelos.</div></li>
|
||||
<li><div>¡Mientras más calidad mejor!</div></li>
|
||||
<li><div>Asegurate de leer las <a href="?help=screenshots-tips-tricks" target="_blank">sugerencias y trucos</a> si no lo has hecho antes.</div></li>
|
||||
</ul>
|
||||
|
||||
<form action="/" method="post">
|
||||
|
||||
<input type="file" name="screenshotfile" disabled="disabled" /><br />
|
||||
<small>No has iniciado sesión. <a href="?account=signin">Inicia sesión</a> para enviar una captura de pantalla.</small>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
<div id="tab-suggest-a-video" style="display: none">
|
||||
|
||||
Símplemente, escribe la URL del vídeo en el formulario.
|
||||
|
||||
<div class="pad2"></div>
|
||||
<form action="/" method="post">
|
||||
|
||||
<input type="text" name="videourl" disabled="disabled" /><br />
|
||||
<small>No has iniciado sesión. <a href="?account=signin">Inicia sesión</a> para enviar un vídeo.</small>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
{/if}
|
||||
120
template/bricks/contrib_8.tpl
Normal file
120
template/bricks/contrib_8.tpl
Normal file
@@ -0,0 +1,120 @@
|
||||
{if $user.id > 0}
|
||||
<div id="tab-add-your-comment" style="display: none">
|
||||
|
||||
При написании комментария, просим вас не забывать про следующее:
|
||||
|
||||
<ul>
|
||||
<li><div>Ваш комментарий должен быть на русском языке, иначе он будет удален.</div></li>
|
||||
<li><div>Не уверены как правильно составить комментарий? Тогда прочтите наше <a href="?help=commenting-and-you" target="_blank">замечательное руководство</a>!</div></li>
|
||||
<li><div>Задавайте вопросы на наших <a href="?forums">форумах</a>, чтобы получить гарантированный ответ.</div></li>
|
||||
<li><div>У вас может возникнуть желание проверить написание своего комментария перед тем, как поместить его на сайт.</div></li>
|
||||
</ul>
|
||||
|
||||
<form name="addcomment" action="?comment=add&type={$page.type}&typeid={$page.typeId}" method="post" onsubmit="return co_validateForm(this)">
|
||||
<div id="replybox-generic" style="display: none">
|
||||
The answer to a comment from <span></span>. <a href="javascript:;" onclick="co_cancelReply()">Cancel</a>
|
||||
<div class="pad"></div>
|
||||
</div>
|
||||
<div id="funcbox-generic"></div>
|
||||
<script type="text/javascript">Listview.funcBox.coEditAppend(ge('funcbox-generic'), {ldelim}body: ''{rdelim}, 1)</script>
|
||||
<div class="pad"></div>
|
||||
<input type="submit" value="Submit"></input>
|
||||
<input type="hidden" name="replyto" value=""></input>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
<div id="tab-submit-a-screenshot" style="display: none">
|
||||
|
||||
Просмотрите изображение, используя форму ниже.
|
||||
|
||||
<ul>
|
||||
<li><div>Внутриигровые изображения предпочтительнее изображений, полученных в программах просмотра 3D моделей.</div></li>
|
||||
<li><div>Чем выше качество, тем лучше!</div></li>
|
||||
<li><div>Если вы ещё не читали, то настоятельно рекомендуем вам прочесть <a href="?help=screenshots-tips-tricks" target="_blank">советы и особенности</a> получения изображений при помощи снимков экрана.</div></li>
|
||||
</ul>
|
||||
|
||||
<form action="?screenshot=add&{$page.type}.{$page.typeId}" method="post" enctype="multipart/form-data" onsubmit="return ss_validateForm(this)">
|
||||
|
||||
File: <input type="file" name="screenshotfile" style="width: 35%"/><br />
|
||||
<div class="pad2"></div>
|
||||
Caption: <input type="text" name="screenshotcaption" maxlength="200" /> <small>Optional, up to 200 characters</small><br />
|
||||
<div class="pad2"></div>
|
||||
<input type="submit" value="Submit" />
|
||||
|
||||
<div class="pad3"></div>
|
||||
<small class="q0">Примечание: перед тем как появиться на сайте, ваше Скриншот должны быть утверждены.</small>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
<div id="tab-suggest-a-video" style="display: none">
|
||||
|
||||
Введите URL видео на YouTube в форму ниже.
|
||||
|
||||
<div class="pad2"></div>
|
||||
<form action="?video=add&{$page.type}.{$page.typeId}" method="post" enctype="multipart/form-data" onsubmit="return vi_validateForm(this)">
|
||||
|
||||
URL: <input type="text" name="videourl" style="width: 35%" /> <small>Поддерживается: только YouTube</small>
|
||||
<div class="pad2"></div>
|
||||
Title: <input type="text" name="videotitle" maxlength="200" /> <small>Optional, up to 200 characters</small><br />
|
||||
<div class="pad"></div>
|
||||
<input type="submit" value="Submit" />
|
||||
|
||||
<div class="pad3"></div>
|
||||
<small class="q0">Примечание: перед тем как появиться на сайте, ваше видео должно быть одобрено.</small>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
{else}
|
||||
<div id="tab-add-your-comment" style="display: none">
|
||||
|
||||
При написании комментария, просим вас не забывать про следующее:
|
||||
|
||||
<ul>
|
||||
<li><div>Ваш комментарий должен быть на русском языке, иначе он будет удален.</div></li>
|
||||
<li><div>Не уверены как правильно составить комментарий? Тогда прочтите наше <a href="?help=commenting-and-you" target="_blank">замечательное руководство</a>!</div></li>
|
||||
<li><div>Задавайте вопросы на наших <a href="?forums">форумах</a>, чтобы получить гарантированный ответ.</div></li>
|
||||
<li><div>У вас может возникнуть желание проверить написание своего комментария перед тем, как поместить его на сайт.</div></li>
|
||||
</ul>
|
||||
|
||||
<form action="/" method="post">
|
||||
|
||||
<div class="comment-edit-body"><textarea class="comment-editbox" rows="10" cols="40" name="commentbody" disabled="disabled"></textarea></div>
|
||||
<small>YВы не вошли на сайт. Пожалуйста <a href="?account=signin">войдите</a> или <a href="?account=signup">зарегистрируйтесь</a>, чтобы добавлять комментарии.</small>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
<div id="tab-submit-a-screenshot" style="display: none">
|
||||
|
||||
Просмотрите изображение, используя форму ниже.
|
||||
|
||||
<ul>
|
||||
<li><div>Внутриигровые изображения предпочтительнее изображений, полученных в программах просмотра 3D моделей.</div></li>
|
||||
<li><div>Чем выше качество, тем лучше!</div></li>
|
||||
<li><div>Если вы ещё не читали, то настоятельно рекомендуем вам прочесть <a href="?help=screenshots-tips-tricks" target="_blank">советы и особенности</a> получения изображений при помощи снимков экрана.</div></li>
|
||||
</ul>
|
||||
|
||||
<form action="/" method="post">
|
||||
|
||||
<input type="file" name="screenshotfile" disabled="disabled" /><br />
|
||||
<small>Вы не вошли на сайт. Пожалуйста <a href="?account=signin">войдите</a>, чтобы отправить скриншот.</small>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
<div id="tab-suggest-a-video" style="display: none">
|
||||
|
||||
Введите URL видео на YouTube в форму ниже.
|
||||
|
||||
<div class="pad2"></div>
|
||||
<form action="/" method="post">
|
||||
|
||||
<input type="text" name="videourl" disabled="disabled" /><br />
|
||||
<small>Вы не вошли на сайт. Пожалуйста <a href="?account=signin">войдите</a>, чтобы отправить видео.</small>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
{/if}
|
||||
18
template/bricks/contribute.tpl
Normal file
18
template/bricks/contribute.tpl
Normal file
@@ -0,0 +1,18 @@
|
||||
<div class="text">
|
||||
<h2>{$lang.contribute}</h2>
|
||||
</div>
|
||||
<div id="tabs-contribute-generic" style="width: 50%"></div>
|
||||
<div class="text" style="margin-right: 310px">
|
||||
<div class="tabbed-contents" style="clear: none">
|
||||
{include file="bricks\contrib_`$user.locale`.tpl"}
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
var tabsContribute = new Tabs({ldelim}parent: ge('tabs-contribute-generic'){rdelim});
|
||||
tabsContribute.add(LANG.tab_addyourcomment, {ldelim}id: 'add-your-comment'{rdelim});
|
||||
tabsContribute.add(LANG.tab_submitascreenshot, {ldelim}id: 'submit-a-screenshot'{rdelim});
|
||||
if(g_user && g_user.roles & (U_GROUP_ADMIN | U_GROUP_BUREAU | U_GROUP_VIDEO))
|
||||
tabsContribute.add(LANG.tab_suggestavideo, {ldelim}id: 'suggest-a-video'{rdelim});
|
||||
tabsContribute.flush();
|
||||
</script>
|
||||
<div class="clear"></div>
|
||||
105
template/itemsets.tpl
Normal file
105
template/itemsets.tpl
Normal file
@@ -0,0 +1,105 @@
|
||||
{include file='header.tpl'}
|
||||
|
||||
<div id="main">
|
||||
<div id="main-precontents"></div>
|
||||
<div id="main-contents" class="main-contents">
|
||||
|
||||
{if !empty($announcements)}
|
||||
{foreach from=$announcements item=item}
|
||||
{include file='bricks/announcement.tpl' an=$item}
|
||||
{/foreach}
|
||||
{/if}
|
||||
|
||||
<script type="text/javascript">
|
||||
g_initPath({$page.path}, {if empty($filter.query)} 0 {else} 1 {/if});
|
||||
{if isset($filter.query)}Menu.append(mn_database[6], '&filter={$filter.query}'); // todo: menu order varies per locale{/if}
|
||||
</script>
|
||||
|
||||
<div id="fi" style="display:{if empty($filter.query)}none{else}block{/if};">
|
||||
<form action="?itemsets&filter" method="post" name="fi" onsubmit="return fi_submit(this)" onreset="return fi_reset(this)">
|
||||
<div class="rightpanel">
|
||||
<div style="float: left">Quality: </div><small><a href="javascript:;" onclick="document.forms['fi'].elements['qu[]'].selectedIndex = -1; return false" onmousedown="return false">clear</a></small>
|
||||
<div class="clear"></div>
|
||||
<select name="qu[]" size="7" multiple="multiple" class="rightselect" style="background-color: #181818">
|
||||
{foreach from=$lang.quality key=i item=str}{if $str}
|
||||
<option value="{$i}" class="q{$i}" {if isset($filter.qu) && in_array($i, (array)$filter.qu)}selected{/if}>{$str}</option>
|
||||
{/if}{/foreach}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="rightpanel2">
|
||||
<div style="float: left">Type: </div><small><a href="javascript:;" onclick="document.forms['fi'].elements['ty[]'].selectedIndex = -1; return false" onmousedown="return false">clear</a></small>
|
||||
<div class="clear"></div>
|
||||
<select name="ty[]" size="7" multiple="multiple" class="rightselect">
|
||||
{foreach from=$lang.types key=i item=str}{if $str}
|
||||
<option value="{$i}" {if isset($filter.ty) && in_array($i, (array)$filter.ty)}selected{/if}>{$str}</option>
|
||||
{/if}{/foreach}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td>{$lang.name}: </td>
|
||||
<td colspan="3"> <input type="text" name="na" size="30" {if isset($filter.na)}value="{$filter.na}" {/if}/></td>
|
||||
</tr><tr>
|
||||
<td class="padded">Level: </td>
|
||||
<td class="padded"> <input type="text" name="minle" maxlength="3" class="smalltextbox2"{if isset($filter.minle)} value="{$filter.minle}"{/if} /> - <input type="text" name="maxle" maxlength="3" class="smalltextbox2"{if isset($filter.maxle)} value="{$filter.maxle}"{/if} /></td>
|
||||
<td class="padded" width="100%">
|
||||
<table><tr>
|
||||
<td> Required level: </td>
|
||||
<td> <input type="text" name="minrl" maxlength="2" class="smalltextbox" /> - <input type="text" name="maxrl" maxlength="2" class="smalltextbox" /></td>
|
||||
</tr></table>
|
||||
</td>
|
||||
</tr><tr>
|
||||
<td class="padded">Class: </td>
|
||||
<td class="padded">
|
||||
<select name="cl">
|
||||
<option></option>
|
||||
{foreach from=$lang.cl key=i item=str}{if $str}
|
||||
<option value="{$i}" {if isset($filter.cl) && $filter.cl == $i}selected{/if}>{$str}</option>
|
||||
{/if}{/foreach}
|
||||
</select>
|
||||
</td>
|
||||
<td class="padded">
|
||||
<table><tr>
|
||||
<td> Tag: </td>
|
||||
<td> <select name="ta">
|
||||
<option></option>
|
||||
{foreach from=$lang.notes key=i item=str}{if $str}
|
||||
<option value="{$i}" {if isset($filter.ta) && $filter.ta == $i}selected{/if}>{$str}</option>
|
||||
{/if}{/foreach}
|
||||
</select>
|
||||
</td>
|
||||
</tr></table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<div id="fi_criteria" class="padded criteria"><div></div></div>
|
||||
<div><a href="javascript:;" id="fi_addcriteria" onclick="fi_addCriterion(this); return false">{$lang.addFilter}</a></div>
|
||||
<div class="padded2">{$lang.match}: <input type="radio" name="ma" value="" id="ma-0" {if !isset($filter.ma)}checked="checked"{/if} /><label for="ma-0">{$lang.allFilter}</label><input type="radio" name="ma" value="1" id="ma-1" {if isset($filter.ma)}checked="checked"{/if} /><label for="ma-1">{$lang.oneFilter}</label></div>
|
||||
|
||||
<div class="clear"></div>
|
||||
|
||||
<div class="padded"></div>
|
||||
<input type="submit" value="{$lang.applyFilter}" /><input type="reset" value="{$lang.resetForm}" /><div style="float: right">{$lang.refineSearch}</div>
|
||||
|
||||
</form>
|
||||
<div class="pad"></div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">//<![CDATA[
|
||||
fi_init('itemsets');
|
||||
{if isset($filter.setCr)}{$filter.setCr}{/if}
|
||||
//]]></script>
|
||||
|
||||
<div id="listview-generic" class="listview"></div>
|
||||
<script type="text/javascript">
|
||||
{include file='bricks/listviews/itemset.tpl' data=$lvData.data params=$lvData.params}
|
||||
</script>
|
||||
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{include file='footer.tpl'}
|
||||
Reference in New Issue
Block a user