diff options
Diffstat (limited to 'src/application/templates/bootstrap-3/base.twig')
-rw-r--r-- | src/application/templates/bootstrap-3/base.twig | 250 |
1 files changed, 250 insertions, 0 deletions
diff --git a/src/application/templates/bootstrap-3/base.twig b/src/application/templates/bootstrap-3/base.twig new file mode 100644 index 0000000..5e003b9 --- /dev/null +++ b/src/application/templates/bootstrap-3/base.twig @@ -0,0 +1,250 @@ +{%- if title -%} + {%- set title = title ~ " | " -%} +{%- endif -%} +{%- set title = title ~ (g.env.MYSTIC_FORUM_TITLE|default("Forum")) -%} +{%- set nextParam = "" -%} +{%- if g.globals.action in ["login", "register"] -%} + {%- set nextParam = g.get.next|default("") -%} +{%- else -%} + {%- set nextParam = g.server.REQUEST_URI -%} +{%- endif -%} +<!DOCTYPE html> +<!--[if lt IE 7]> <html lang="de" class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]--> +<!--[if IE 7]> <html lang="de" class="no-js lt-ie9 lt-ie8"> <![endif]--> +<!--[if IE 8]> <html lang="de" class="no-js lt-ie9"> <![endif]--> +<!--[if gt IE 8]><!--> <html lang="de" class="no-js"> <!--<![endif]--> +<head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + <meta name="generator" content="mysticBB {{ constant("MYSTICBB_VERSION") }}"> + <title>{{ title }}</title> + <link rel="stylesheet" href="?_action=ctheme"> + <script src="/ui/jquery-1.12.4.min.js"></script> + <script src="/ui/dist/js/bootstrap.min.js"></script> + <script src="/ui/modernizr-2.6.2.min.js"></script> + <script src="?_action=ji18n"></script> + <!--[if lt IE 9]> + <script src="/ui/html5shiv.min.js"></script> + <script src="/ui/respond.min.js"></script> + <![endif]--> + {% block head_after %}{% endblock %} +</head> +<body> + +{% block nav %} +<nav class="navbar navbar-default navbar-static-top"> + <div class="container"> + <div class="navbar-header"> + <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#nav-collapse" aria-expanded="false"> + <span class="sr-only">Toggle navigation</span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + </button> + <a class="navbar-brand" href="."> + <span class="myb-icon mybblogo" aria-hidden="false"></span> + {{ g.env.MYSTIC_FORUM_TITLE|default("Forum") }} + </a> + </div> + <div class="collapse navbar-collapse" id="nav-collapse"> + {% block navbar %} + {% if currentUser %} + <ul class="nav navbar-nav navbar-right"> + <li><p class="navbar-text">{{ __("Welcome, %user%!", { + user: currentUser.id == constant("mystic\\forum\\orm\\User::SUPERUSER_ID") ? ('<strong class="text-danger">' ~ (currentUser.displayName|e("html")) ~ '</strong>')|raw : ('<strong>' ~ (currentUser.displayName|e("html")) ~ '</strong>')|raw + }) }} + </p></li> + <li{{ g.globals.action == "search" ? ' class="active"'|raw : '' }}><a href="?_action=search"><span class="fa fa-search" aria-hidden="true"></span><span class="sr-only">{{ __("Search") }}</span></a></li> + <li{{ (g.globals.action == "viewuser" and g.get.user == currentUser.id) ? ' class="active"'|raw : '' }}><a href="?_action=viewuser&user={{ currentUser.id|url_encode }}"><span class="fa fa-user" aria-hidden="true"></span><span class="sr-only">{{ __("View profile") }}</span></a></li> + <li><a href="?_action=logout&next={{ g.server.REQUEST_URI|url_encode }}"><span class="fa fa-sign-out" aria-hidden="true"></span><span class="sr-only">{{ __("Log out") }}</span></a></li> + </ul> + {% else %} + <ul class="nav navbar-nav navbar-right"> + <li{{ g.globals.action == "search" ? ' class="active"'|raw : '' }}><a href="?_action=search"><span class="fa fa-search" aria-hidden="true"></span><span class="sr-only">{{ __("Search") }}</span></a></li> + <li{{ g.globals.action == "auth" ? ' class="active"'|raw : '' }}><a href="?_action=auth&next={{ nextParam|url_encode }}">{{ __("Log in") }}</a></li> + {% if constant("REGISTRATION_ENABLED") %} + <li{{ g.globals.action == "register" ? ' class="active"'|raw : '' }}><a href="?_action=register&next={{ nextParam|url_encode }}">{{ __("Register") }}</a></li> + {% endif %} + </ul> + {% endif %} + {% endblock %} + </div> + </div> +</nav> +{% endblock %} + +{% block main %} +<div class="container"> + {% block content %}{% endblock %} +</div> +{% endblock %} + +{% block footer %} +<footer class="footer"> +<div class="container"> +<div class="panel panel-default"> +<div class="panel-body"> + <table style="border-collapse: collapse; width: 100%; background: none"> + <tbody> + <tr> + <td style="padding: 0; vertical-align: middle; text-align: left; width: 100%" class="text-normal"> + © {{ "now"|date("Y") }} {{ g.env.MYSTIC_FORUM_COPYRIGHT|default(g.env.MYSTIC_FORUM_TITLE)|default("Forum") }}. + Powered by <a href="https://git.jkohl.link/mystic-forum.git/tag/?h=v{{ constant("MYSTICBB_VERSION")|url_encode }}">mysticBB v{{ constant("MYSTICBB_VERSION") }}</a>. + </td> + <td style="padding: 0; vertical-align: middle; text-align: right; white-space: nowrap" class="text-normal"> + <form action="?_action=settheme" class="form-inline seamless-inline" method="post"> + <input type="hidden" name="next" value="{{ g.server.REQUEST_URI }}"> + <div class="form-group"> + <label for="theme-select">{{ __("Theme:") }}</label> + <select class="form-control input-sm auto-submit" id="theme-select" name="theme"> + {% for themeKey, themeInfo in availableThemes %} + <option value="{{ themeKey }}"{{ themeKey == currentTheme ? " selected" : "" }}>{{ themeInfo.name }}</option> + {% endfor %} + </select> + </div> + </form> + + <form action="?_action=setlang" class="form-inline seamless-inline" method="post"> + <input type="hidden" name="next" value="{{ g.server.REQUEST_URI }}"> + <div class="form-group"> + <label for="lang-select">{{ __("Language:") }}</label> + <select class="form-control input-sm auto-submit" id="lang-select" name="lang"> + {% for langKey, langName in availableLangs %} + <option value="{{ langKey }}"{{ langKey == currentLang ? " selected" : "" }}>{{ langName }}</option> + {% endfor %} + </select> + </div> + </form> + </td> + </tr> + </tbody> + </table> +</div> +</div> +</div> +</footer> +{% endblock %} + +{% block scripts %} +<script type="text/javascript"> + $(function() { + function insertAroundSelection(textarea, before, after) { + var start = textarea.selectionStart; + var end = textarea.selectionEnd; + var text = textarea.value; + var pre = text.substring(0, start); + var inner = text.substring(start, end); + var post = text.substring(end); + start += before.length; + end += before.length; + text = pre + before + inner + after + post; + textarea.value = text; + textarea.focus(); + textarea.selectionStart = start; + textarea.selectionEnd = end; + } + + function getTextarea(btn) { + return $($(btn).attr("data-area"))[0]; + } + + var commands = { + bold: function(textarea) { + insertAroundSelection(textarea, "[b]", "[/b]"); + }, + italic: function(textarea) { + insertAroundSelection(textarea, "[i]", "[/i]"); + }, + underline: function(textarea) { + insertAroundSelection(textarea, "[u]", "[/u]"); + }, + strikethrough: function(textarea) { + insertAroundSelection(textarea, "[s]", "[/s]"); + }, + sup: function(textarea) { + insertAroundSelection(textarea, "[^]", "[/^]"); + }, + sub: function(textarea) { + insertAroundSelection(textarea, "[_]", "[/_]"); + }, + quote: function(textarea) { + insertAroundSelection(textarea, "> ", ""); + }, + spoiler: function(textarea) { + insertAroundSelection(textarea, "[spoiler]", "[/spoiler]"); + } + } + + $("button[data-editor-command]").attr("data-toggle", "tooltip").attr("data-placement", "bottom").click(function() { + var command = $(this).attr("data-editor-command"); + var textarea = getTextarea(this); + commands[command](textarea); + }).tooltip(); + }); +</script> + +<script> +$(function() { + var _messages = {{ ({ + selectFiles: [ + ___("Select file", "Select files", 1), + ___("Select file", "Select files", 2), + ], + filesSelected: [ + ___("%n% file selected", "No files selected", 0), + ___("%n% file selected", "%n% files selected", 1), + ___("%n% file selected", "%n% files selected", 2), + ], + })|json_encode|raw }} + + $(".auto-submit").on("change", function() { + $(this)[0].form.submit(); + }); + + $("._time").each(function(i, e) { + var date = new Date($(e).text()); + $(e).text(date.toLocaleString()); + }); + $("._date").each(function(i, e) { + var date = new Date($(e).text()); + $(e).text(date.toLocaleDateString()); + }); + $("._time-only").each(function(i, e) { + var date = new Date($(e).text()); + $(e).text(date.toLocaleTimeString()); + }); + + $("input[type=file]").each(function(i, e) { + var isMultiple = !!$(e).prop("multiple"); + var isSmall = !!$(e).hasClass("small"); + var $input = $('<input type="text" readonly class="form-control" />').attr("placeholder", _messages.filesSelected[0]).css("text-overflow", "ellipsis"); + var $btn = $('<button class="btn btn-default" type="button"></button>'); + if (isSmall) { + $input.addClass("input-sm"); + $btn.addClass("btn-sm"); + } + $(e).after($('<div class="input-group file-input-group"></div>').append( + $input, + $('<span class="input-group-btn"></span>').append( + $btn.text(_messages.selectFiles[isMultiple ? 1 : 0]).click(function() { + $(e).click(); + }) + ) + )).addClass("sr-only"); + $(e).on("change", function() { + var files = $(e)[0].files; + if (files.length < 1) + $input.val(""); + else if (files.length === 1) + $input.val(files[0].name); + else + $input.val(_messages.filesSelected[2].replace("%n%", files.length)); + }); + }) +}); +</script> +{% endblock %} + +</body> +</html> |