mirror of
https://github.com/Sarjuuk/aowow.git
synced 2025-11-29 15:58:16 +08:00
* make preview area of class: text so styles are applied as expected * fix evaluation of Markup h2/h3 attribute toc=false, so headings are excluded from TOC as expected
308 lines
16 KiB
PHP
308 lines
16 KiB
PHP
<?php
|
|
namespace Aowow\Template;
|
|
|
|
use \Aowow\Lang;
|
|
|
|
$this->brick('header');
|
|
?>
|
|
<div class="main" id="main">
|
|
<div class="main-precontents" id="main-precontents"></div>
|
|
<div class="main-contents" id="main-contents">
|
|
|
|
<?php
|
|
$this->brick('announcement');
|
|
|
|
$this->brick('pageTemplate');
|
|
?>
|
|
<div class="text">
|
|
<h1><?=$this->h1; ?></h1>
|
|
<?php
|
|
$this->brick('markup', ['markup' => $this->article]);
|
|
?>
|
|
</div>
|
|
<div class="pad"></div>
|
|
<!-- start insert -->
|
|
<div class="adjacent-preview">
|
|
<div class="adjacent-preview-edit">
|
|
<form id="guide-form" method="post" action="?guide=edit&id=<?=$this->typeId;?>" onsubmit="leavePage(1)">
|
|
<table class="responsive-collapse guide-form-main">
|
|
<tr class="guide-form-guide-link">
|
|
<td colspan="2"><h2 style="margin:0" class="heading-size-2"><a href="?guide=<?=$this->typeId;?>" target="_blank"><?=$this->editTitle;?></a></h2></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<th><label for="title"><dfn title="<?=Lang::guide('editor', 'fullTitleTip');?>"><?=Lang::guide('editor', 'fullTitle');?></dfn></label></th>
|
|
<td>
|
|
<input required="required" type="text" maxlength="100" name="title" id="title"
|
|
value="<?=$this->editTitle;?>"
|
|
placeholder="<?=Lang::guide('editor', 'fullTitleTip');?>"
|
|
data-charwarning="title-char-warning">
|
|
<small id="title-char-warning" class="char-warning"></small>
|
|
</td>
|
|
</tr>
|
|
|
|
|
|
<tr>
|
|
<th><label for="name"><dfn title="<?=Lang::guide('editor', 'nameTip');?>"><?=Lang::guide('editor', 'name');?></dfn></label></th>
|
|
<td>
|
|
<input required="required" type="text" maxlength="100" name="name" id="name"
|
|
value="<?=$this->editName;?>"
|
|
placeholder="<?=Lang::guide('editor', 'nameTip');?>"
|
|
data-charwarning="name-char-warning">
|
|
<small id="name-char-warning" class="char-warning"></small>
|
|
</td>
|
|
</tr>
|
|
|
|
|
|
<tr>
|
|
<th><label for="locale"><?=Lang::main('language');?></label></th>
|
|
<td><select name="locale" id="locale" required="required" size="1">
|
|
<?=$this->makeOptionsList(Lang::getLocale()::cases(), $this->editLocale, 24, function(&$v, &$k) { $k = $v->value; return $v = $v->validate()?->title(); }); ?>
|
|
</select></td>
|
|
</tr>
|
|
|
|
|
|
<tr>
|
|
<th><label for="category"><?=Lang::guide('editor', 'category');?></label></th>
|
|
<td>
|
|
<select id="category" name="category" required="required"><option></option>
|
|
<?=$this->makeOptionsList(Lang::guide('category'), $this->editCategory, 24); ?>
|
|
</select>
|
|
<script>
|
|
(function() {
|
|
var specCategoryIds = [1];
|
|
var setCategoryId = function() {
|
|
var $this = $(this);
|
|
$this.closest('form').attr('data-category', $this.val())
|
|
.attr('data-spec-category', $WH.in_array(specCategoryIds, $this.val()) >= 0 ? 'true' : 'false');
|
|
};
|
|
var $categorySelect = $('#category');
|
|
$categorySelect.change(setCategoryId);
|
|
setCategoryId.call($categorySelect.get(0));
|
|
setTimeout(setCategoryId.bind($categorySelect.get(0)), 500);
|
|
})();
|
|
</script>
|
|
</td>
|
|
</tr>
|
|
|
|
|
|
<tr id="class-guide-specialization-options">
|
|
<th><label for="specId"><?=Lang::guide('editor', 'class-spec');?></label></th>
|
|
<td>
|
|
<input name="specId" id="specId" type="hidden" value="<?=$this->editSpecId;?>">
|
|
<input name="classId" id="classId" type="hidden" value="<?=$this->editClassId;?>">
|
|
<script>
|
|
setTimeout(function() {
|
|
// const PC = WH.Wow.PlayerClass;
|
|
// const Spec = WH.Wow.PlayerClass.Specialization;
|
|
|
|
let classes = [];
|
|
$.each(g_chr_classes, function (classId, className) {
|
|
classes.push({id: classId, name: className});
|
|
});
|
|
|
|
let specOptionsMenu = [
|
|
[0, LANG.finone, setClassSpec.bind(null, 0, -1), {
|
|
isChecked: function() {
|
|
return $WH.ge('specId').value == -1;
|
|
}
|
|
}]
|
|
];
|
|
|
|
/**
|
|
* Set the guide as being for the given class and spec.
|
|
*
|
|
* @param {number} classId
|
|
* @param {number} [specId]
|
|
* @param {boolean} [initialSetup]
|
|
*/
|
|
function setClassSpec(classId, specId, initialSetup) {
|
|
if (typeof specId !== 'number') {
|
|
specId = -1;
|
|
}
|
|
|
|
$WH.ge('specId').value = specId;
|
|
$WH.ge('classId').value = classId;
|
|
|
|
// Update the widget text.
|
|
let widget = $WH.ge('options-menu-widget-spec-id');
|
|
$WH.ee(widget);
|
|
$WH.st(
|
|
widget,
|
|
(
|
|
specId > -1 && g_chr_specs[classId][specId] ||
|
|
classId && g_chr_classes[classId] ||
|
|
LANG.finone
|
|
) + ' '
|
|
);
|
|
$WH.ae(widget, $WH.ce('i', {className: 'q0'}));
|
|
widget.className = 'options-menu-widget options-menu-widget-spec-id c' + classId;
|
|
|
|
// Add the spec/class icon.
|
|
let iconName = specId > -1 ? g_file_specs[classId][specId] : (classId ? 'class_' + g_file_classes[classId] : 'inv_misc_questionmark');
|
|
$WH.aef(widget, $WH.ce('span', { style: { display: 'inline-block', marginRight: '3px', verticalAlign: 'middle' }
|
|
}, Icon.create(iconName, 0, null, null, null, null, null, null, true)));
|
|
}
|
|
|
|
for (var y = 0, classs; classs = classes[y]; y++) {
|
|
var specMenu = [];
|
|
|
|
var specIds = [];
|
|
$.each(g_chr_specs[classs.id], function (classSpecId, classSpecName) {
|
|
specIds.push(classSpecId);
|
|
specMenu.push([classSpecId, classSpecName, setClassSpec.bind(null, classs.id, classSpecId), null, {
|
|
tinyIcon: g_file_specs[classs.id][classSpecId],
|
|
checkedFunc: (function(specId) {
|
|
return $WH.ge('specId').value == specId;
|
|
}).bind(null, classSpecId)
|
|
}]);
|
|
});
|
|
|
|
specOptionsMenu.push([classs.id, classs.name, setClassSpec.bind(null, classs.id), {
|
|
tinyIcon: 'class_' + g_file_classes[classs.id],
|
|
className: 'c' + classs.id,
|
|
menu: specMenu,
|
|
isChecked: (function(specIds) {
|
|
return specIds.indexOf($WH.ge('specId').value) > -1;
|
|
}).bind(null, specIds)
|
|
}]);
|
|
}
|
|
|
|
$WH.createOptionsMenuWidget('spec-id', "None", {
|
|
target: $('#class-guide-specialization-options td:last-child'),
|
|
options: specOptionsMenu,
|
|
noChevron: true
|
|
});
|
|
|
|
setTimeout(function() {
|
|
let specId = parseInt($WH.ge('specId').value) || 0;
|
|
let classId = parseInt($WH.ge('classId').value) || 0;
|
|
if (specId) {
|
|
// classId = PC.getBySpec(specId);
|
|
}
|
|
if (classId) {
|
|
setClassSpec(classId, specId, true);
|
|
}
|
|
}, 500);
|
|
}, 5);
|
|
</script>
|
|
</td>
|
|
</tr>
|
|
|
|
|
|
<tr>
|
|
<th><label for="description">
|
|
<dfn title="<?=Lang::guide('editor', 'descriptionTip');?>"><?=Lang::guide('editor', 'description');?></dfn></label></th>
|
|
<td colspan="3">
|
|
<textarea rows="1" name="description" cols="100" id="description" style="height:69px"
|
|
placeholder="<?=Lang::guide('editor', 'descriptionTip');?>"
|
|
><?=$this->editDescription;?></textarea>
|
|
<script>g_enhanceTextarea('#description')</script>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td colspan="3"><span id="desc-info"></span></td>
|
|
</tr>
|
|
<?php
|
|
/*
|
|
<tr>
|
|
<th>
|
|
<label for="comment-emails">
|
|
<dfn title="<?=Lang::guide('editor', 'commentEmailTip');?>"><?=Lang::guide('editor', 'commentEmail');?></dfn>
|
|
</label>
|
|
</th>
|
|
<td colspan="3">
|
|
<input type="radio" name="comment-emails" value="0" checked> <?=Lang::main('no');?><input type="radio" name="comment-emails" value="1"> <?=Lang::main('yes');?></td>
|
|
</tr>
|
|
*/
|
|
?>
|
|
<tr>
|
|
<th><?=Lang::main('status');?></th>
|
|
<td colspan="3"><dfn title="<?=Lang::guide('editor', 'statusTip', $this->editStatus);?>" style="color:<?=$this->editStatusColor;?>"><?=Lang::guide('status', $this->editStatus);?></dfn>
|
|
<?php
|
|
if ($this->isDraft && $this->typeId):
|
|
echo ' <small>(<a href="?guide='.$this->typeId.'&rev='.$this->editRev.'" target="_blank" class="q1">'.Lang::guide('editor', 'testGuide')."</a>)</small>\n";
|
|
endif;
|
|
?>
|
|
</td>
|
|
</tr>
|
|
|
|
|
|
<tr>
|
|
<th><?=Lang::guide('editor', 'images');?></th>
|
|
<td colspan="3"><div id="image-upload"></div><div id="upload-progress" style="width:110px"></div><div id="upload-result"></div></td>
|
|
</tr>
|
|
|
|
</table>
|
|
|
|
<div class="adjacent-preview-controls">
|
|
<label><input class="adjacent-preview-checkbox" type="checkbox"> <?=Lang::guide('editor', 'showAdjPrev');?></label>
|
|
</div>
|
|
|
|
<div class="guide-edit-section">
|
|
|
|
<textarea
|
|
name="body"
|
|
id="editBox"
|
|
class="guide-edit-box"
|
|
onclick="leavePage()"
|
|
onkeydown="updatePreview(false, this)"
|
|
onkeyup="updatePreview(false, this)"
|
|
onchange="updatePreview(false, this)"
|
|
rows="8"
|
|
cols="40"
|
|
style="width:95%"><?=$this->editText;?></textarea>
|
|
<script>
|
|
g_enhanceTextarea('#editBox', {
|
|
markup: true,
|
|
scrollingMarkup: true,
|
|
dynamicSizing: false,
|
|
dynamicResizeOption: true
|
|
});
|
|
</script>
|
|
</div>
|
|
|
|
<?php if ($this->error): ?>
|
|
<div class="box msg-failure">
|
|
<?=$this->error . PHP_EOL;?>
|
|
</div>
|
|
|
|
<?php endif; ?>
|
|
<div class="guide-submission">
|
|
<div class="guide-submission-options">
|
|
<button type="button" class="btn btn-site" data-type="save" onclick="$('.guide-submission').attr('data-type', 'save'); $('#changelog').focus();"><?=Lang::guide('editor', 'save');?></button>
|
|
<button type="button" class="btn btn-site" data-type="submit" onclick="$('.guide-submission').attr('data-type', 'submit'); $('#changelog').focus();"><?=Lang::guide('editor', 'submit');?></button>
|
|
</div>
|
|
<div class="guide-submission-changelog">
|
|
<h2 class="heading-size-4"><?=Lang::guide('editor', 'changelog');?></h2>
|
|
<textarea name="changelog" id="changelog" onclick="leavePage()" onkeydown="updatePreview(false, this)" onkeyup="updatePreview(false, this)" onchange="updatePreview(false, this)" rows="6" cols="40" style="min-height:52px; width:95%" placeholder="<?=Lang::guide('editor', 'changelogTip');?>" required></textarea>
|
|
<script>g_enhanceTextarea('#changelog');</script>
|
|
<button type="submit" name="save" class="guide-submission-changelog-save"><?=Lang::guide('editor', 'save');?></button>
|
|
<button type="submit" name="submit" class="guide-submission-changelog-submit"><?=Lang::guide('editor', 'submit');?></button>
|
|
</div>
|
|
</div>
|
|
|
|
<img src="<?=$this->gStaticUrl;?>/images/icons/ajax.gif" style="display:none" class="spinning-circle">
|
|
<span id="save-status"></span>
|
|
</form>
|
|
</div>
|
|
|
|
<div class="adjacent-preview-preview">
|
|
<h2 class="heading-size-2"><?=Lang::guide('editor', 'preview');?> <label style="font-size:75%"><input id="previewupdate" type="checkbox" checked="checked" onchange="setTimeout((function() {
|
|
if (this.checked) {
|
|
updatePreview(true);
|
|
}
|
|
updateQfPreview();
|
|
}).bind(this), 50)"><?=Lang::guide('editor', 'autoupdate');?></label></h2>
|
|
<div id="guide-body" class="text"><div id="livePreview" style="margin-right:10px"></div></div>
|
|
<script>updatePreview(true);</script>
|
|
</div>
|
|
</div>
|
|
<script>$WH.AdjacentPreview.init()</script>
|
|
<!-- end insert -->
|
|
</div><!-- main-contents -->
|
|
</div><!-- main -->
|
|
|
|
<?php $this->brick('footer'); ?>
|