Piggyback left menu generation off userbar code

They have so much in common there's little point in separating them
and having to generate the same URLs in both.
This commit is contained in:
Chris 2017-01-09 23:43:17 +00:00
parent 9b86529bd5
commit 26c5da2d5b
8 changed files with 134 additions and 48 deletions

View File

@ -47,33 +47,53 @@ sub block_display {
$self -> clear_error();
my $urls = { "signin" => $self -> build_url(block => "login",
fullurl => 1,
pathinfo => [],
params => {},
forcessl => 1),
"signout" => $self -> build_url(block => "login",
fullurl => 1,
pathinfo => [ "signout" ],
params => {},
forcessl => 1),
"signup" => $self -> build_url(block => "login",
fullurl => 1,
pathinfo => [ "signup" ],
params => {},
forcessl => 1),
"setpass" => $self -> build_url(block => "login",
fullurl => 1,
pathinfo => [ "passchange" ],
params => {},
forcessl => 1),
"front" => $self -> build_url(block => $self -> {"settings"} -> {"config"} -> {"default_block"},
fullurl => 1,
pathinfo => [],
params => {})
my $urls = { "%(url-signin)s" => $self -> build_url(block => "login",
fullurl => 1,
pathinfo => [],
params => {},
forcessl => 1),
"%(url-signout)s" => $self -> build_url(block => "login",
fullurl => 1,
pathinfo => [ "signout" ],
params => {},
forcessl => 1),
"%(url-signup)s" => $self -> build_url(block => "login",
fullurl => 1,
pathinfo => [ "signup" ],
params => {},
forcessl => 1),
"%(url-setpass)s" => $self -> build_url(block => "login",
fullurl => 1,
pathinfo => [ "passchange" ],
params => {},
forcessl => 1),
"%(url-front)s" => $self -> build_url(block => $self -> {"settings"} -> {"config"} -> {"default_block"},
fullurl => 1,
pathinfo => [],
params => {}),
"%(url-list)s" => $self -> build_url(block => "list",
fullurl => 1,
pathinfo => [ ],
params => {},
forcessl => 1),
"%(url-tags)s" => $self -> build_url(block => "tags",
fullurl => 1,
pathinfo => [ ],
params => {},
forcessl => 1),
"%(url-types)s" => $self -> build_url(block => "types",
fullurl => 1,
pathinfo => [ ],
params => {},
forcessl => 1),
"%(url-shop)s" => $self -> build_url(block => "shop",
fullurl => 1,
pathinfo => [ ],
params => {},
forcessl => 1),
};
my $userprofile;
my ($userprofile, $sidemenu);
# Is the user logged in?
if(!$self -> {"session"} -> anonymous_session()) {
@ -85,25 +105,36 @@ sub block_display {
{ "%(realname)s" => $user -> {"fullname"},
"%(username)s" => $user -> {"username"},
"%(gravhash)s" => $user -> {"gravatar_hash"},
"%(url-signout)s" => $urls -> {"signout"},
"%(url-setpass)s" => $urls -> {"setpass"},
});
$sidemenu = $self -> {"template"} -> load_template("sidemenu/signedin.tem",
{ "%(realname)s" => $user -> {"fullname"},
"%(username)s" => $user -> {"username"},
"%(gravhash)s" => $user -> {"gravatar_hash"},
});
} else {
my $signup = $self -> {"template"} -> load_template("userbar/profile_signup.tem")
if($self -> {"settings"} -> {"config"} -> {"Login:allow_self_register"});
my ($topsignup, $sidesignup) = ("", "");
if($self -> {"settings"} -> {"config"} -> {"Login:allow_self_register"}) {
$topsignup = $self -> {"template"} -> load_template("userbar/profile_signup.tem");
$sidesignup = $self -> {"template"} -> load_template("sidemenu/signup.tem");
}
$userprofile = $self -> {"template"} -> load_template("userbar/profile_signedout.tem",
{ "%(signup)s" => $signup,
"%(url-signin)s" => $urls -> {"signin"},
"%(url-signup)s" => $urls -> {"signup"},
});
{ "%(signup)s" => $topsignup });
$sidemenu = $self -> {"template"} -> load_template("sidemenu/signedout.tem",
{ "%(signup)s" => $sidesignup });
}
return $self -> {"template"} -> load_template("userbar/userbar.tem",
{ "%(pagename)s" => $title,
"%(url-front)s" => $urls -> {"front"},
"%(profile)s" => $userprofile});
return ( $self -> {"template"} -> load_template("userbar/userbar.tem",
{ "%(pagename)s" => $title,
"%(profile)s" => $userprofile,
%{ $urls }
}),
$self -> {"template"} -> process_template($sidemenu, $urls)
);
}

View File

@ -12,3 +12,14 @@ USERBAR_DOCLINK = Documentation (opens in new window)
USERBAR_FRONT = Aviary front page
USERBAR_IMPORT = Import schedule
SIDE_TITLE = Online Recipe Book
SIDE_SUMMARIES = Summaries
SIDE_RECIPES = Recipes
SIDE_TAGS = Tags
SIDE_TYPES = Types
SIDE_SHOPPING = Shopping
SIDE_SET_PASSWORD = Set password
SIDE_SIGN_IN = Sign in
SIDE_SIGN_UP = Sign up
SIDE_SIGN_OUT = Sign out

View File

@ -124,11 +124,12 @@ sub generate_orb_page {
my $userbar = $self -> {"module"} -> load_module("ORB::Userbar");
my ($topbar, $leftbar) = $userbar -> block_display($args -> {"title"}, $self -> {"block"}, $args -> {"doclink"});
return $self -> {"template"} -> load_template("page.tem", {"%(extrahead)s" => $args -> {"extrahead"} // "",
"%(extrajs)s" => $args -> {"extrajs"} // "",
"%(title)s" => $args -> {"title"} // "",
"%(leftmenu)s" => $args -> {"leftmenu"} // "",
"%(userbar)s" => ($userbar ? $userbar -> block_display($args -> {"title"}, $args -> {"leftmenu"}, $self -> {"block"}, $args -> {"doclink"}) : "<!-- Userbar load failed: ".$self -> {"module"} -> errstr()." -->"),
"%(leftmenu)s" => $leftbar,
"%(userbar)s" => $topbar,
"%(content)s" => $args -> {"content"}});
}
@ -300,15 +301,9 @@ sub check_login {
[ {"message" => $self -> {"template"} -> replace_langvar("SITE_CONTINUE"),
"colour" => "blue",
"action" => "location.href='{V_[scriptpath]}'"} ]);
my $userbar = $self -> {"module"} -> load_module("ORB::Userbar");
# Build the error page...
return $self -> {"template"} -> load_template("error/general.tem",
{"%(title)s" => "{L_PERMISSION_FAILED_TITLE}",
"%(message)s" => $message,
"%(extrahead)s" => "",
"%(userbar)s" => ($userbar ? $userbar -> block_display("{L_PERMISSION_FAILED_TITLE}") : "<!-- Userbar load failed: ".$self -> {"module"} -> errstr()." -->"),
});
return $self -> generate_orb_page(title => "{L_PERMISSION_FAILED_TITLE}",
content => $message);
}
return undef;

View File

@ -22,6 +22,11 @@ div.top-bar-title {
font-weight: bold;
}
/* fix menu button pad */
#menubtn {
margin-right: 0.5rem;
}
/* fix padding for menu text with image */
li.image {
padding: 0 0 0 0.25rem;
@ -32,6 +37,17 @@ li.image {
}
/* title for off-canvas menu */
div.off-canvas > h5 {
padding: 0.5rem 0 0 1rem;
}
/* off-canvas menu user */
div.off-canvas .user {
margin-left: 1rem;
margin-top: 0.5rem;
}
.pagemenu {
list-style-type: none;
border-bottom: 1px solid #bbb;

View File

@ -17,12 +17,12 @@
<!-- canvas wrapper -->
<div class="off-canvas-wrapper">
%(leftmenu)s
<!-- content wrapper -->
<div class="off-canvas-content" data-off-canvas-content>
<!-- Start top bar -->
%(userbar)s
<!-- End top bar -->
<br />
<!-- Start content -->
<div class="row" id="content">
%(content)s

View File

@ -0,0 +1,17 @@
<div class="off-canvas position-left" id="offCanvas" data-off-canvas>
<h5>{L_SIDE_TITLE}</h5>
<hr class="nomargin"/>
<ul class="vertical menu">
<li><a href="%(url-front)s">{L_SIDE_SUMMARIES}</a></li>
<li><a href="%(url-list)s" >{L_SIDE_RECIPES}</a></li>
<li><a href="%(url-tags)s" >{L_SIDE_TAGS}</a></li>
<li><a href="%(url-types)s">{L_SIDE_TYPES}</a></li>
</ul>
<hr class="nomargin"/>
<div class="user"><img alt="" src="https://gravatar.com/avatar/%(gravhash)s?s=32&amp;d=mm&amp;r=g" class="avatar avatar-32" height="32" width="32" /> %(realname)s</a></div>
<ul class="vertical menu">
<li><a href="%(url-shop)s">{L_SIDE_SHOPPING}</a></li>
<li><a href="%(url-setpass)s">{L_SIDE_SET_PASSWORD}</a></li>
<li><a href="%(url-signout)s">{L_SIDE_SIGN_OUT}</a></li>
</ul>
</div>

View File

@ -0,0 +1,15 @@
<div class="off-canvas position-left" id="offCanvas" data-off-canvas>
<h5>{L_SIDE_TITLE}</h5>
<hr class="nomargin"/>
<ul class="vertical menu">
<li><a href="%(url-front)s">{L_SIDE_SUMMARIES}</a></li>
<li><a href="%(url-list)s" >{L_SIDE_RECIPES}</a></li>
<li><a href="%(url-tags)s" >{L_SIDE_TAGS}</a></li>
<li><a href="%(url-types)s">{L_SIDE_TYPES}</a></li>
</ul>
<hr class="nomargin"/>
<ul class="vertical menu">
<li><a href="%(url-signin)s">{L_SIDE_SIGN_IN}</a></li>
%(signup)s
</ul>
</div>

View File

@ -0,0 +1 @@
<li><a href="%(url-signup)s">{L_SIDE_SIGN_UP}</a></li>