2be884edc1
Main Menu is now shown on the main menu in the menu list for extra clarity. Travis should now be able to run it's tests. Moved routeChangeTheme to the routes package. Moved routeShowAttachment to the routes package and partially refactored it. Moved routeLikeTopicSubmit to the routes package. Moved routeReplyLikeSubmit to the routes package and partially refactored it. Moved routeProfileReplyCreateSubmit to the routes package. Moved routeLogout to the routes package, now known as routes.AccountLogout. Moved the routeDynamic stub to the routes package, now known as routes.DynamicRoute. Moved the routeUploads stub to the routes package, now known as routes.UploadedFile. Moved the BadRoute stub to the routes package, now known as routes.BadRoute. All routes moved to the routes package have had the route prefix dropped from their name. Simplified the email token route to redirect back to the main email route instead of rendering the same template. Refactored the panel menus to use the new submenu system instead of the old one which had a lot of menu duplication. Added a stub directory for Nox, the next major theme after Cosora. Fixed a bug where the alerts wouldn't load outside of the index. Tweaked the CSS in the topic creation and reply forms on Shadow. Tweaked the padding on the stickies on Shadow. Improved the submenu CSS on every theme. Fixed the submitrow CSS on Shadow, Tempra Conflux. Fixed some double borders on Tempra Conflux. The frontend sidebar should no longer show up in the Control Panel in Tempra Conflux and Tempra Simple. Tweaked the title CSS on Cosora. Tweaked the user manager CSS on Cosora. Changed the primary text colour on Cosora. Fixed attachment images taking up too much space on Cosora. Run the patcher or update script for this commit.
140 lines
5.8 KiB
HTML
140 lines
5.8 KiB
HTML
{{template "header.html" . }}
|
|
<div class="colstack panel_stack">
|
|
{{template "panel-menu.html" . }}
|
|
<main class="colstack_right">
|
|
<div class="colstack_item colstack_head">
|
|
<div class="rowitem"><h1>{{lang "panel_themes_menus_head"}}</h1></div>
|
|
</div>
|
|
<div id="panel_menu_item_holder" class="colstack_item rowlist">
|
|
{{range .ItemList}}
|
|
<div class="panel_menu_item rowitem panel_compactrow editable_parent" data-miid="{{.ID}}">
|
|
<a href="/panel/themes/menus/item/edit/{{.ID}}" class="editable_block panel_upshift">{{.Name}}</a>
|
|
<span class="panel_buttons">
|
|
<a href="/panel/themes/menus/item/edit/{{.ID}}" class="panel_tag panel_right_button edit_button" aria-label="{{lang "panel_themes_menus_item_edit_button_aria"}}"></a>
|
|
<a href="/panel/themes/menus/item/delete/submit/{{.ID}}?session={{$.CurrentUser.Session}}" class="panel_tag panel_right_button delete_button" aria-label="{{lang "panel_themes_menus_item_delete_button_aria"}}"></a>
|
|
</span>
|
|
</div>{{end}}
|
|
</div>
|
|
<div class="colstack_item rowlist panel_submitrow">
|
|
<div class="rowitem"><button id="panel_menu_items_order_button" class="formbutton">Update</button></div>
|
|
</div>
|
|
<div class="colstack_item colstack_head">
|
|
<div class="rowitem"><h1>{{lang "panel_themes_menus_create_head"}}</h1></div>
|
|
</div>
|
|
<form action="/panel/themes/menus/item/create/submit/?session={{.CurrentUser.Session}}" method="post">
|
|
<input name="mid" value="{{.MenuID}}" type="hidden" />
|
|
<div id="panel_themes_menu_item_create" class="colstack_item">
|
|
{{/** TODO: Let an admin move a menu item from one menu to another? **/}}
|
|
<div class="formrow">
|
|
<div class="formitem formlabel"><a>{{lang "panel_themes_menus_name"}}</a></div>
|
|
<div class="formitem"><input name="item-name" type="text" placeholder="{{lang "panel_themes_menus_name_placeholder"}}" /></div>
|
|
</div>
|
|
<div class="formrow">
|
|
<div class="formitem formlabel"><a>{{lang "panel_themes_menus_htmlid"}}</a></div>
|
|
<div class="formitem"><input name="item-htmlid" type="text" /></div>
|
|
</div>
|
|
<div class="formrow">
|
|
<div class="formitem formlabel"><a>{{lang "panel_themes_menus_cssclass"}}</a></div>
|
|
<div class="formitem"><input name="item-cssclass" type="text" /></div>
|
|
</div>
|
|
<div class="formrow">
|
|
<div class="formitem formlabel"><a>{{lang "panel_themes_menus_position"}}</a></div>
|
|
<div class="formitem">
|
|
<select name="item-position">
|
|
<option selected value="left">left</option>
|
|
<option value="right">right</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<div class="formrow">
|
|
<div class="formitem formlabel"><a>{{lang "panel_themes_menus_path"}}</a></div>
|
|
<div class="formitem"><input name="item-path" type="text" value="/" /></div>
|
|
</div>
|
|
<div class="formrow">
|
|
<div class="formitem formlabel"><a>{{lang "panel_themes_menus_aria"}}</a></div>
|
|
<div class="formitem"><input name="item-aria" type="text" placeholder="{{lang "panel_themes_menus_aria_placeholder"}}" /></div>
|
|
</div>
|
|
<div class="formrow">
|
|
<div class="formitem formlabel"><a>{{lang "panel_themes_menus_tooltip"}}</a></div>
|
|
<div class="formitem"><input name="item-tooltip" type="text" placeholder="{{lang "panel_themes_menus_tooltip_placeholder"}}" /></div>
|
|
</div>
|
|
<div class="formrow">
|
|
<div class="formitem formlabel"><a>{{lang "panel_themes_menus_permissions"}}</a></div>
|
|
<div class="formitem"><select name="item-permissions">
|
|
<option selected value="everyone">{{lang "panel_themes_menus_everyone" }}</option>
|
|
<option value="guest-only">{{lang "panel_themes_menus_guestonly"}}</option>
|
|
<option value="member-only">{{lang "panel_themes_menus_memberonly"}}</option>
|
|
<option value="supermod-only">{{lang "panel_themes_menus_supermodonly"}}</option>
|
|
<option value="admin-only">{{lang "panel_themes_menus_adminonly"}}</option>
|
|
</select></div>
|
|
</div>
|
|
<div class="formrow">
|
|
<div class="formitem"><button name="panel-button" class="formbutton">{{lang "panel_themes_menus_create_button"}}</button></div>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</main>
|
|
</div>
|
|
<script type="text/javascript">
|
|
var menuItems = {};
|
|
let items = document.getElementsByClassName("panel_menu_item");
|
|
//console.log("items: ", items);
|
|
for(let i = 0; item = items[i];i++) {
|
|
let miid = item.getAttribute("data-miid");
|
|
//console.log("miid: ", miid);
|
|
menuItems[i] = miid;
|
|
}
|
|
Sortable.create(document.getElementById("panel_menu_item_holder"), {
|
|
sort: true,
|
|
onEnd: (evt) => {
|
|
console.log("pre menuItems: ", menuItems)
|
|
console.log("evt: ", evt)
|
|
let oldMiid = menuItems[evt.newIndex];
|
|
menuItems[evt.oldIndex] = oldMiid;
|
|
let newMiid = evt.item.getAttribute("data-miid");
|
|
console.log("newMiid: ", newMiid)
|
|
menuItems[evt.newIndex] = newMiid;
|
|
console.log("post menuItems: ", menuItems)
|
|
}
|
|
});
|
|
document.getElementById("panel_menu_items_order_button").addEventListener("click", () => {
|
|
let req = new XMLHttpRequest();
|
|
if(!req) {
|
|
console.log("Failed to create request");
|
|
return false;
|
|
}
|
|
req.onreadystatechange = () => {
|
|
try {
|
|
if(req.readyState!==XMLHttpRequest.DONE) {
|
|
return;
|
|
}
|
|
// TODO: Signal the error with a notice
|
|
if(req.status===200) {
|
|
let resp = JSON.parse(req.responseText);
|
|
console.log("resp: ", resp);
|
|
if(resp.success==1) {
|
|
// TODO: Have a successfully updated notice
|
|
console.log("success");
|
|
return;
|
|
}
|
|
}
|
|
} catch(ex) {
|
|
console.error("exception: ", ex)
|
|
}
|
|
console.trace();
|
|
}
|
|
// ? - Is encodeURIComponent the right function for this?
|
|
req.open("POST","/panel/themes/menus/item/order/edit/submit/{{.MenuID}}?session=" + encodeURIComponent(session));
|
|
req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
|
|
let items = "";
|
|
for(let i = 0; item = menuItems[i];i++) {
|
|
items += item+",";
|
|
}
|
|
if(items.length > 0) {
|
|
items = items.slice(0,-1);
|
|
}
|
|
req.send("js=1&items={"+items+"}");
|
|
});
|
|
</script>
|
|
{{template "footer.html" . }}
|