webinterface: Add links to the configuration wiki

Message ID 20210919143444.1739-1-hofmann@leo-andres.de
State Superseded
Headers
Series webinterface: Add links to the configuration wiki |

Commit Message

Leo-Andres Hofmann Sept. 19, 2021, 2:34 p.m. UTC
  This patch adds a little "help" icon to the page header.
If a manual entry exists for a configuration page, the icon
appears and offers a quick way to access the wiki.
Wiki pages can be configured in the "manualpages" file.

Signed-off-by: Leo-Andres Hofmann <hofmann@leo-andres.de>
---

Hi all,

This patch is not yet complete, but I would like to present the idea.
What do you think, would this get more people to read the wiki?

To test this, move the new file "manualpages" to /var/ipfire/main/ and CTRL+F5 reload the webif to refresh the CSS cache.

Still -to do- and where I could use some help:
Add "manualpages" file to the updater/installer - how, and should this file be read-only?
Collect and match all wiki pages to the CGIs.

Kind regards
Leo

 config/cfgroot/general-functions.pl           | 18 +++++++++++++++++-
 config/cfgroot/manualpages                    |  3 +++
 html/html/themes/ipfire/include/css/style.css | 13 +++++++++++++
 html/html/themes/ipfire/include/functions.pl  | 17 ++++++++++++++++-
 4 files changed, 49 insertions(+), 2 deletions(-)
 create mode 100644 config/cfgroot/manualpages
  

Comments

Bernhard Bitsch Sept. 19, 2021, 4:33 p.m. UTC | #1
Good idea!
More comments, possibly, after review and test.

Acked-by: Bernhard Bitsch <bbitsch@ipfire.org>

Am 19.09.2021 um 16:34 schrieb Leo-Andres Hofmann:
> This patch adds a little "help" icon to the page header.
> If a manual entry exists for a configuration page, the icon
> appears and offers a quick way to access the wiki.
> Wiki pages can be configured in the "manualpages" file.
> 
> Signed-off-by: Leo-Andres Hofmann <hofmann@leo-andres.de>
> ---
> 
> Hi all,
> 
> This patch is not yet complete, but I would like to present the idea.
> What do you think, would this get more people to read the wiki?
> 
> To test this, move the new file "manualpages" to /var/ipfire/main/ and CTRL+F5 reload the webif to refresh the CSS cache.
> 
> Still -to do- and where I could use some help:
> Add "manualpages" file to the updater/installer - how, and should this file be read-only?
> Collect and match all wiki pages to the CGIs.
> 
> Kind regards
> Leo
> 
>   config/cfgroot/general-functions.pl           | 18 +++++++++++++++++-
>   config/cfgroot/manualpages                    |  3 +++
>   html/html/themes/ipfire/include/css/style.css | 13 +++++++++++++
>   html/html/themes/ipfire/include/functions.pl  | 17 ++++++++++++++++-
>   4 files changed, 49 insertions(+), 2 deletions(-)
>   create mode 100644 config/cfgroot/manualpages
> 
> diff --git a/config/cfgroot/general-functions.pl b/config/cfgroot/general-functions.pl
> index de608e38b..54e23a535 100644
> --- a/config/cfgroot/general-functions.pl
> +++ b/config/cfgroot/general-functions.pl
> @@ -24,7 +24,9 @@ $|=1; # line buffering
>   $General::version = 'VERSION';
>   $General::swroot = 'CONFIG_ROOT';
>   $General::noipprefix = 'noipg-';
> -$General::adminmanualurl = 'http://wiki.ipfire.org';
> +
> +# Base URL of the user manual
> +my $usermanual_base_url = 'https://wiki.ipfire.org';
>   
>   require "${General::swroot}/network-functions.pl";
>   
> @@ -1421,4 +1423,18 @@ sub running_on_gcp() {
>   	return 0;
>   }
>   
> +# Get user manual url for the specified configuration page, returns "" if no entry is configured
> +sub get_usermanual_url() {
> +	my ($config_page) = @_;
> +
> +	my %manual_pages = ();
> +	&readhash("${General::swroot}/main/manualpages", \%manual_pages);
> +
> +	if($config_page && defined($manual_pages{$config_page})) {
> +		return $usermanual_base_url . '/' . $manual_pages{$config_page};
> +	}
> +
> +	return "";
> +}
> +
>   1;
> diff --git a/config/cfgroot/manualpages b/config/cfgroot/manualpages
> new file mode 100644
> index 000000000..02dac5be6
> --- /dev/null
> +++ b/config/cfgroot/manualpages
> @@ -0,0 +1,3 @@
> +index=configuration/system/startpage
> +pppsetup=configuration/system/dial
> +qos=configuration/services/qos
> diff --git a/html/html/themes/ipfire/include/css/style.css b/html/html/themes/ipfire/include/css/style.css
> index b92f476c4..661773675 100644
> --- a/html/html/themes/ipfire/include/css/style.css
> +++ b/html/html/themes/ipfire/include/css/style.css
> @@ -169,6 +169,19 @@ iframe {
>   	margin-bottom: 1em;
>   }
>   
> +#main_header > * {
> +	display: inline-block;
> +	vertical-align: baseline;
> +}
> +
> +#main_header > span {
> +	margin-left: 0.8em;
> +}
> +
> +#main_header img {
> +	padding: 0;
> +}
> +
>   #footer {
>   	height: 2.5em;
>   	margin-bottom: 1em;
> diff --git a/html/html/themes/ipfire/include/functions.pl b/html/html/themes/ipfire/include/functions.pl
> index 9f12bbe59..d352a7d96 100644
> --- a/html/html/themes/ipfire/include/functions.pl
> +++ b/html/html/themes/ipfire/include/functions.pl
> @@ -170,7 +170,22 @@ END
>   print <<END
>   	<div class="bigbox fixed">
>   		<div id="main_inner" class="fixed">
> -			<h1>$title</h1>
> +			<div id="main_header">
> +				<h1>$title</h1>
> +END
> +;
> +
> +# Print user manual link
> +my $manual_url = &General::get_usermanual_url($scriptName);
> +if($manual_url ne "") {
> +	print <<END
> +				<span><a href="$manual_url" title="$Lang::tr{'online help en'}" target="_blank"><img src="/images/help-browser.png" alt="$Lang::tr{'online help en'}"></a></span>
> +END
> +;
> +}
> +
> +print <<END
> +			</div>
>   END
>   ;
>   }
>
  
Bernhard Bitsch Sept. 19, 2021, 5:35 p.m. UTC | #2
Reviewed-by: Bernhard Bitsch <bbitsch@ipfire.org>


Am 19.09.2021 um 16:34 schrieb Leo-Andres Hofmann:
> This patch adds a little "help" icon to the page header.
> If a manual entry exists for a configuration page, the icon
> appears and offers a quick way to access the wiki.
> Wiki pages can be configured in the "manualpages" file.
> 
> Signed-off-by: Leo-Andres Hofmann <hofmann@leo-andres.de>
> ---
> 
> Hi all,
> 
> This patch is not yet complete, but I would like to present the idea.
> What do you think, would this get more people to read the wiki?
> 
> To test this, move the new file "manualpages" to /var/ipfire/main/ and CTRL+F5 reload the webif to refresh the CSS cache.
> 
> Still -to do- and where I could use some help:
> Add "manualpages" file to the updater/installer - how, and should this file be read-only?
> Collect and match all wiki pages to the CGIs.
> 
> Kind regards
> Leo
> 
>   config/cfgroot/general-functions.pl           | 18 +++++++++++++++++-
>   config/cfgroot/manualpages                    |  3 +++
>   html/html/themes/ipfire/include/css/style.css | 13 +++++++++++++
>   html/html/themes/ipfire/include/functions.pl  | 17 ++++++++++++++++-
>   4 files changed, 49 insertions(+), 2 deletions(-)
>   create mode 100644 config/cfgroot/manualpages
> 
> diff --git a/config/cfgroot/general-functions.pl b/config/cfgroot/general-functions.pl
> index de608e38b..54e23a535 100644
> --- a/config/cfgroot/general-functions.pl
> +++ b/config/cfgroot/general-functions.pl
> @@ -24,7 +24,9 @@ $|=1; # line buffering
>   $General::version = 'VERSION';
>   $General::swroot = 'CONFIG_ROOT';
>   $General::noipprefix = 'noipg-';
> -$General::adminmanualurl = 'http://wiki.ipfire.org';

A quick search shows, that this object isn't used anymore. So it is 
okay, to delete it.

> +
> +# Base URL of the user manual
> +my $usermanual_base_url = 'https://wiki.ipfire.org';
>   
>   require "${General::swroot}/network-functions.pl";
>   
> @@ -1421,4 +1423,18 @@ sub running_on_gcp() {
>   	return 0;
>   }
>   
> +# Get user manual url for the specified configuration page, returns "" if no entry is configured
> +sub get_usermanual_url() {
> +	my ($config_page) = @_;
> +
> +	my %manual_pages = ();
> +	&readhash("${General::swroot}/main/manualpages", \%manual_pages);
> +
> +	if($config_page && defined($manual_pages{$config_page})) {
> +		return $usermanual_base_url . '/' . $manual_pages{$config_page};
> +	}
> +
> +	return "";
> +}
> +
>   1;
> diff --git a/config/cfgroot/manualpages b/config/cfgroot/manualpages
> new file mode 100644
> index 000000000..02dac5be6
> --- /dev/null
> +++ b/config/cfgroot/manualpages
> @@ -0,0 +1,3 @@
> +index=configuration/system/startpage
> +pppsetup=configuration/system/dial
> +qos=configuration/services/qos
> diff --git a/html/html/themes/ipfire/include/css/style.css b/html/html/themes/ipfire/include/css/style.css
> index b92f476c4..661773675 100644
> --- a/html/html/themes/ipfire/include/css/style.css
> +++ b/html/html/themes/ipfire/include/css/style.css
> @@ -169,6 +169,19 @@ iframe {
>   	margin-bottom: 1em;
>   }
>   
> +#main_header > * {
> +	display: inline-block;
> +	vertical-align: baseline;
> +}
> +
> +#main_header > span {
> +	margin-left: 0.8em;
> +}
> +
> +#main_header img {
> +	padding: 0;
> +}
> +
>   #footer {
>   	height: 2.5em;
>   	margin-bottom: 1em;
> diff --git a/html/html/themes/ipfire/include/functions.pl b/html/html/themes/ipfire/include/functions.pl
> index 9f12bbe59..d352a7d96 100644
> --- a/html/html/themes/ipfire/include/functions.pl
> +++ b/html/html/themes/ipfire/include/functions.pl
> @@ -170,7 +170,22 @@ END
>   print <<END
>   	<div class="bigbox fixed">
>   		<div id="main_inner" class="fixed">
> -			<h1>$title</h1>
> +			<div id="main_header">
> +				<h1>$title</h1>
> +END
> +;
> +
> +# Print user manual link
> +my $manual_url = &General::get_usermanual_url($scriptName);
> +if($manual_url ne "") {
> +	print <<END
> +				<span><a href="$manual_url" title="$Lang::tr{'online help en'}" target="_blank"><img src="/images/help-browser.png" alt="$Lang::tr{'online help en'}"></a></span>
> +END
> +;
> +}
> +
> +print <<END
> +			</div>
>   END
>   ;
>   }
>
  
Jon Murphy Sept. 19, 2021, 6:18 p.m. UTC | #3
Excellent!

> What do you think, would this get more people to read the wiki?

I think it would help!  Anything that pushes more eyeballs to the wiki is very helpful!

> Collect and match all wiki pages to the CGIs.


I’d be happy to help with this.  

Is the new file "manualpages" a link to the wiki?  Or a text file full of info? Or?

And how is a new "manualpages" file installed into a Core Update?


Jon


> On Sep 19, 2021, at 9:34 AM, Leo-Andres Hofmann <hofmann@leo-andres.de> wrote:
> 
> This patch adds a little "help" icon to the page header.
> If a manual entry exists for a configuration page, the icon
> appears and offers a quick way to access the wiki.
> Wiki pages can be configured in the "manualpages" file.
> 
> Signed-off-by: Leo-Andres Hofmann <hofmann@leo-andres.de>
> ---
> 
> Hi all,
> 
> This patch is not yet complete, but I would like to present the idea.
> What do you think, would this get more people to read the wiki?
> 
> To test this, move the new file "manualpages" to /var/ipfire/main/ and CTRL+F5 reload the webif to refresh the CSS cache.
> 
> Still -to do- and where I could use some help:
> Add "manualpages" file to the updater/installer - how, and should this file be read-only?
> Collect and match all wiki pages to the CGIs.
> 
> Kind regards
> Leo
> 
> config/cfgroot/general-functions.pl           | 18 +++++++++++++++++-
> config/cfgroot/manualpages                    |  3 +++
> html/html/themes/ipfire/include/css/style.css | 13 +++++++++++++
> html/html/themes/ipfire/include/functions.pl  | 17 ++++++++++++++++-
> 4 files changed, 49 insertions(+), 2 deletions(-)
> create mode 100644 config/cfgroot/manualpages
> 
> diff --git a/config/cfgroot/general-functions.pl b/config/cfgroot/general-functions.pl
> index de608e38b..54e23a535 100644
> --- a/config/cfgroot/general-functions.pl
> +++ b/config/cfgroot/general-functions.pl
> @@ -24,7 +24,9 @@ $|=1; # line buffering
> $General::version = 'VERSION';
> $General::swroot = 'CONFIG_ROOT';
> $General::noipprefix = 'noipg-';
> -$General::adminmanualurl = 'http://wiki.ipfire.org';
> +
> +# Base URL of the user manual
> +my $usermanual_base_url = 'https://wiki.ipfire.org';
> 
> require "${General::swroot}/network-functions.pl";
> 
> @@ -1421,4 +1423,18 @@ sub running_on_gcp() {
> 	return 0;
> }
> 
> +# Get user manual url for the specified configuration page, returns "" if no entry is configured
> +sub get_usermanual_url() {
> +	my ($config_page) = @_;
> +
> +	my %manual_pages = ();
> +	&readhash("${General::swroot}/main/manualpages", \%manual_pages);
> +
> +	if($config_page && defined($manual_pages{$config_page})) {
> +		return $usermanual_base_url . '/' . $manual_pages{$config_page};
> +	}
> +
> +	return "";
> +}
> +
> 1;
> diff --git a/config/cfgroot/manualpages b/config/cfgroot/manualpages
> new file mode 100644
> index 000000000..02dac5be6
> --- /dev/null
> +++ b/config/cfgroot/manualpages
> @@ -0,0 +1,3 @@
> +index=configuration/system/startpage
> +pppsetup=configuration/system/dial
> +qos=configuration/services/qos
> diff --git a/html/html/themes/ipfire/include/css/style.css b/html/html/themes/ipfire/include/css/style.css
> index b92f476c4..661773675 100644
> --- a/html/html/themes/ipfire/include/css/style.css
> +++ b/html/html/themes/ipfire/include/css/style.css
> @@ -169,6 +169,19 @@ iframe {
> 	margin-bottom: 1em;
> }
> 
> +#main_header > * {
> +	display: inline-block;
> +	vertical-align: baseline;
> +}
> +
> +#main_header > span {
> +	margin-left: 0.8em;
> +}
> +
> +#main_header img {
> +	padding: 0;
> +}
> +
> #footer {
> 	height: 2.5em;
> 	margin-bottom: 1em;
> diff --git a/html/html/themes/ipfire/include/functions.pl b/html/html/themes/ipfire/include/functions.pl
> index 9f12bbe59..d352a7d96 100644
> --- a/html/html/themes/ipfire/include/functions.pl
> +++ b/html/html/themes/ipfire/include/functions.pl
> @@ -170,7 +170,22 @@ END
> print <<END
> 	<div class="bigbox fixed">
> 		<div id="main_inner" class="fixed">
> -			<h1>$title</h1>
> +			<div id="main_header">
> +				<h1>$title</h1>
> +END
> +;
> +
> +# Print user manual link
> +my $manual_url = &General::get_usermanual_url($scriptName);
> +if($manual_url ne "") {
> +	print <<END
> +				<span><a href="$manual_url" title="$Lang::tr{'online help en'}" target="_blank"><img src="/images/help-browser.png" alt="$Lang::tr{'online help en'}"></a></span>
> +END
> +;
> +}
> +
> +print <<END
> +			</div>
> END
> ;
> }
> -- 
> 2.27.0.windows.1
>
  
Bernhard Bitsch Sept. 19, 2021, 7:30 p.m. UTC | #4
The enhancements function without problems for your examples.
Two additional thoughts:
- the manual_pages hash could be read global at the start of 
general-functions
- is it possible to check the existence of the page? Doing the test 
manually, I've copied the last line of manualpages with an error. So I 
landed on the oops page.

Tested-by: Bernhard Bitsch <bbitsch@ipfire.org>


Am 19.09.2021 um 16:34 schrieb Leo-Andres Hofmann:
> This patch adds a little "help" icon to the page header.
> If a manual entry exists for a configuration page, the icon
> appears and offers a quick way to access the wiki.
> Wiki pages can be configured in the "manualpages" file.
> 
> Signed-off-by: Leo-Andres Hofmann <hofmann@leo-andres.de>
> ---
> 
> Hi all,
> 
> This patch is not yet complete, but I would like to present the idea.
> What do you think, would this get more people to read the wiki?
> 
> To test this, move the new file "manualpages" to /var/ipfire/main/ and CTRL+F5 reload the webif to refresh the CSS cache.
> 
> Still -to do- and where I could use some help:
> Add "manualpages" file to the updater/installer - how, and should this file be read-only?
> Collect and match all wiki pages to the CGIs.
> 
> Kind regards
> Leo
> 
>   config/cfgroot/general-functions.pl           | 18 +++++++++++++++++-
>   config/cfgroot/manualpages                    |  3 +++
>   html/html/themes/ipfire/include/css/style.css | 13 +++++++++++++
>   html/html/themes/ipfire/include/functions.pl  | 17 ++++++++++++++++-
>   4 files changed, 49 insertions(+), 2 deletions(-)
>   create mode 100644 config/cfgroot/manualpages
> 
> diff --git a/config/cfgroot/general-functions.pl b/config/cfgroot/general-functions.pl
> index de608e38b..54e23a535 100644
> --- a/config/cfgroot/general-functions.pl
> +++ b/config/cfgroot/general-functions.pl
> @@ -24,7 +24,9 @@ $|=1; # line buffering
>   $General::version = 'VERSION';
>   $General::swroot = 'CONFIG_ROOT';
>   $General::noipprefix = 'noipg-';
> -$General::adminmanualurl = 'http://wiki.ipfire.org';
> +
> +# Base URL of the user manual
> +my $usermanual_base_url = 'https://wiki.ipfire.org';
>   
>   require "${General::swroot}/network-functions.pl";
>   
> @@ -1421,4 +1423,18 @@ sub running_on_gcp() {
>   	return 0;
>   }
>   
> +# Get user manual url for the specified configuration page, returns "" if no entry is configured
> +sub get_usermanual_url() {
> +	my ($config_page) = @_;
> +
> +	my %manual_pages = ();
> +	&readhash("${General::swroot}/main/manualpages", \%manual_pages);
> +
> +	if($config_page && defined($manual_pages{$config_page})) {
> +		return $usermanual_base_url . '/' . $manual_pages{$config_page};
> +	}
> +
> +	return "";
> +}
> +
>   1;
> diff --git a/config/cfgroot/manualpages b/config/cfgroot/manualpages
> new file mode 100644
> index 000000000..02dac5be6
> --- /dev/null
> +++ b/config/cfgroot/manualpages
> @@ -0,0 +1,3 @@
> +index=configuration/system/startpage
> +pppsetup=configuration/system/dial
> +qos=configuration/services/qos
> diff --git a/html/html/themes/ipfire/include/css/style.css b/html/html/themes/ipfire/include/css/style.css
> index b92f476c4..661773675 100644
> --- a/html/html/themes/ipfire/include/css/style.css
> +++ b/html/html/themes/ipfire/include/css/style.css
> @@ -169,6 +169,19 @@ iframe {
>   	margin-bottom: 1em;
>   }
>   
> +#main_header > * {
> +	display: inline-block;
> +	vertical-align: baseline;
> +}
> +
> +#main_header > span {
> +	margin-left: 0.8em;
> +}
> +
> +#main_header img {
> +	padding: 0;
> +}
> +
>   #footer {
>   	height: 2.5em;
>   	margin-bottom: 1em;
> diff --git a/html/html/themes/ipfire/include/functions.pl b/html/html/themes/ipfire/include/functions.pl
> index 9f12bbe59..d352a7d96 100644
> --- a/html/html/themes/ipfire/include/functions.pl
> +++ b/html/html/themes/ipfire/include/functions.pl
> @@ -170,7 +170,22 @@ END
>   print <<END
>   	<div class="bigbox fixed">
>   		<div id="main_inner" class="fixed">
> -			<h1>$title</h1>
> +			<div id="main_header">
> +				<h1>$title</h1>
> +END
> +;
> +
> +# Print user manual link
> +my $manual_url = &General::get_usermanual_url($scriptName);
> +if($manual_url ne "") {
> +	print <<END
> +				<span><a href="$manual_url" title="$Lang::tr{'online help en'}" target="_blank"><img src="/images/help-browser.png" alt="$Lang::tr{'online help en'}"></a></span>
> +END
> +;
> +}
> +
> +print <<END
> +			</div>
>   END
>   ;
>   }
>
  
Bernhard Bitsch Sept. 19, 2021, 7:43 p.m. UTC | #5
Just another problem (description inline):

Am 19.09.2021 um 16:34 schrieb Leo-Andres Hofmann:
> This patch adds a little "help" icon to the page header.
> If a manual entry exists for a configuration page, the icon
> appears and offers a quick way to access the wiki.
> Wiki pages can be configured in the "manualpages" file.
> 
> Signed-off-by: Leo-Andres Hofmann <hofmann@leo-andres.de>
> ---
> 
> Hi all,
> 
> This patch is not yet complete, but I would like to present the idea.
> What do you think, would this get more people to read the wiki?
> 
> To test this, move the new file "manualpages" to /var/ipfire/main/ and CTRL+F5 reload the webif to refresh the CSS cache.
> 
> Still -to do- and where I could use some help:
> Add "manualpages" file to the updater/installer - how, and should this file be read-only?
> Collect and match all wiki pages to the CGIs.
> 
> Kind regards
> Leo
> 
>   config/cfgroot/general-functions.pl           | 18 +++++++++++++++++-
>   config/cfgroot/manualpages                    |  3 +++
>   html/html/themes/ipfire/include/css/style.css | 13 +++++++++++++
>   html/html/themes/ipfire/include/functions.pl  | 17 ++++++++++++++++-
>   4 files changed, 49 insertions(+), 2 deletions(-)
>   create mode 100644 config/cfgroot/manualpages
> 
> diff --git a/config/cfgroot/general-functions.pl b/config/cfgroot/general-functions.pl
> index de608e38b..54e23a535 100644
> --- a/config/cfgroot/general-functions.pl
> +++ b/config/cfgroot/general-functions.pl
> @@ -24,7 +24,9 @@ $|=1; # line buffering
>   $General::version = 'VERSION';
>   $General::swroot = 'CONFIG_ROOT';
>   $General::noipprefix = 'noipg-';
> -$General::adminmanualurl = 'http://wiki.ipfire.org';
> +
> +# Base URL of the user manual
> +my $usermanual_base_url = 'https://wiki.ipfire.org';
>   
>   require "${General::swroot}/network-functions.pl";
>   
> @@ -1421,4 +1423,18 @@ sub running_on_gcp() {
>   	return 0;
>   }
>   
> +# Get user manual url for the specified configuration page, returns "" if no entry is configured
> +sub get_usermanual_url() {
> +	my ($config_page) = @_;
> +
> +	my %manual_pages = ();
> +	&readhash("${General::swroot}/main/manualpages", \%manual_pages);
> +
> +	if($config_page && defined($manual_pages{$config_page})) {
> +		return $usermanual_base_url . '/' . $manual_pages{$config_page};
> +	}
> +
> +	return "";
> +}
> +
>   1;
> diff --git a/config/cfgroot/manualpages b/config/cfgroot/manualpages
> new file mode 100644
> index 000000000..02dac5be6
> --- /dev/null
> +++ b/config/cfgroot/manualpages
> @@ -0,0 +1,3 @@
> +index=configuration/system/startpage
> +pppsetup=configuration/system/dial
> +qos=configuration/services/qos
> diff --git a/html/html/themes/ipfire/include/css/style.css b/html/html/themes/ipfire/include/css/style.css
> index b92f476c4..661773675 100644
> --- a/html/html/themes/ipfire/include/css/style.css
> +++ b/html/html/themes/ipfire/include/css/style.css
> @@ -169,6 +169,19 @@ iframe {
>   	margin-bottom: 1em;
>   }
>   
> +#main_header > * {
> +	display: inline-block;
> +	vertical-align: baseline;
> +}
> +
> +#main_header > span {
> +	margin-left: 0.8em;
> +}
> +
> +#main_header img {
> +	padding: 0;
> +}
> +
>   #footer {
>   	height: 2.5em;
>   	margin-bottom: 1em;
> diff --git a/html/html/themes/ipfire/include/functions.pl b/html/html/themes/ipfire/include/functions.pl
> index 9f12bbe59..d352a7d96 100644
> --- a/html/html/themes/ipfire/include/functions.pl
> +++ b/html/html/themes/ipfire/include/functions.pl
> @@ -170,7 +170,22 @@ END
>   print <<END
>   	<div class="bigbox fixed">
>   		<div id="main_inner" class="fixed">
> -			<h1>$title</h1>
> +			<div id="main_header">
> +				<h1>$title</h1>
> +END
> +;
> +
> +# Print user manual link
> +my $manual_url = &General::get_usermanual_url($scriptName);
> +if($manual_url ne "") {
> +	print <<END
> +				<span><a href="$manual_url" title="$Lang::tr{'online help en'}" target="_blank"><img src="/images/help-browser.png" alt="$Lang::tr{'online help en'}"></a></span>

$Lang::tr{'online help en'} translates to 'Onlinehilfe in Deutsch' for 
German WUI language. Other languages generate similiar texts, I suppose.
Because our wiki is in english only the hint should read 'Onlinehilfe' ( 
the adequate term in the WUI language ) only.

> +END
> +;
> +}
> +
> +print <<END
> +			</div>
>   END
>   ;
>   }
>
  
Leo-Andres Hofmann Sept. 20, 2021, 8:05 a.m. UTC | #6
Hi Bernhard,

Thanks for trying this out on such short notice!

19. September 2021 21:30, "Bernhard Bitsch" <bbitsch@ipfire.org> schrieb:

> The enhancements function without problems for your examples.
> Two additional thoughts:
> - the manual_pages hash could be read global at the start of general-functions

Would this improve the page load time?
The hash is only accessed once in the openpage() function.

> - is it possible to check the existence of the page? Doing the test manually, I've copied the last
> line of manualpages with an error. So I landed on the oops page.

Good idea! But I think this should only be checked once by the build script e.g. "make manualpages", to avoid excess http requests to the Wiki. 

> 
> Tested-by: Bernhard Bitsch <bbitsch@ipfire.org>
> 
> Am 19.09.2021 um 16:34 schrieb Leo-Andres Hofmann:
> 
>> This patch adds a little "help" icon to the page header.
>> If a manual entry exists for a configuration page, the icon
>> appears and offers a quick way to access the wiki.
>> Wiki pages can be configured in the "manualpages" file.
>> Signed-off-by: Leo-Andres Hofmann <hofmann@leo-andres.de>
>> ---
>> Hi all,
>> This patch is not yet complete, but I would like to present the idea.
>> What do you think, would this get more people to read the wiki?
>> To test this, move the new file "manualpages" to /var/ipfire/main/ and CTRL+F5 reload the webif to
>> refresh the CSS cache.
>> Still -to do- and where I could use some help:
>> Add "manualpages" file to the updater/installer - how, and should this file be read-only?
>> Collect and match all wiki pages to the CGIs.
>> Kind regards
>> Leo
>> config/cfgroot/general-functions.pl | 18 +++++++++++++++++-
>> config/cfgroot/manualpages | 3 +++
>> html/html/themes/ipfire/include/css/style.css | 13 +++++++++++++
>> html/html/themes/ipfire/include/functions.pl | 17 ++++++++++++++++-
>> 4 files changed, 49 insertions(+), 2 deletions(-)
>> create mode 100644 config/cfgroot/manualpages
>> diff --git a/config/cfgroot/general-functions.pl b/config/cfgroot/general-functions.pl
>> index de608e38b..54e23a535 100644
>> --- a/config/cfgroot/general-functions.pl
>> +++ b/config/cfgroot/general-functions.pl
>> @@ -24,7 +24,9 @@ $|=1; # line buffering
>> $General::version = 'VERSION';
>> $General::swroot = 'CONFIG_ROOT';
>> $General::noipprefix = 'noipg-';
>> -$General::adminmanualurl = 'http://wiki.ipfire.org';
>> +
>> +# Base URL of the user manual
>> +my $usermanual_base_url = 'https://wiki.ipfire.org';
>>> require "${General::swroot}/network-functions.pl";
>>> @@ -1421,4 +1423,18 @@ sub running_on_gcp() {
>> return 0;
>> }
>>> +# Get user manual url for the specified configuration page, returns "" if no entry is configured
>> +sub get_usermanual_url() {
>> + my ($config_page) = @_;
>> +
>> + my %manual_pages = ();
>> + &readhash("${General::swroot}/main/manualpages", \%manual_pages);
>> +
>> + if($config_page && defined($manual_pages{$config_page})) {
>> + return $usermanual_base_url . '/' . $manual_pages{$config_page};
>> + }
>> +
>> + return "";
>> +}
>> +
>> 1;
>> diff --git a/config/cfgroot/manualpages b/config/cfgroot/manualpages
>> new file mode 100644
>> index 000000000..02dac5be6
>> --- /dev/null
>> +++ b/config/cfgroot/manualpages
>> @@ -0,0 +1,3 @@
>> +index=configuration/system/startpage
>> +pppsetup=configuration/system/dial
>> +qos=configuration/services/qos
>> diff --git a/html/html/themes/ipfire/include/css/style.css
>> b/html/html/themes/ipfire/include/css/style.css
>> index b92f476c4..661773675 100644
>> --- a/html/html/themes/ipfire/include/css/style.css
>> +++ b/html/html/themes/ipfire/include/css/style.css
>> @@ -169,6 +169,19 @@ iframe {
>> margin-bottom: 1em;
>> }
>>> +#main_header > * {
>> + display: inline-block;
>> + vertical-align: baseline;
>> +}
>> +
>> +#main_header > span {
>> + margin-left: 0.8em;
>> +}
>> +
>> +#main_header img {
>> + padding: 0;
>> +}
>> +
>> #footer {
>> height: 2.5em;
>> margin-bottom: 1em;
>> diff --git a/html/html/themes/ipfire/include/functions.pl
>> b/html/html/themes/ipfire/include/functions.pl
>> index 9f12bbe59..d352a7d96 100644
>> --- a/html/html/themes/ipfire/include/functions.pl
>> +++ b/html/html/themes/ipfire/include/functions.pl
>> @@ -170,7 +170,22 @@ END
>> print <<END
>> <div class="bigbox fixed">
>> <div id="main_inner" class="fixed">
>> - <h1>$title</h1>
>> + <div id="main_header">
>> + <h1>$title</h1>
>> +END
>> +;
>> +
>> +# Print user manual link
>> +my $manual_url = &General::get_usermanual_url($scriptName);
>> +if($manual_url ne "") {
>> + print <<END
>> + <span><a href="$manual_url" title="$Lang::tr{'online help en'}" target="_blank"><img
>> src="/images/help-browser.png" alt="$Lang::tr{'online help en'}"></a></span>
>> +END
>> +;
>> +}
>> +
>> +print <<END
>> + </div>
>> END
>> ;
>> }
  
Bernhard Bitsch Sept. 20, 2021, 8:15 a.m. UTC | #7
Hi Leo,
hi *,

Am 20.09.2021 um 10:05 schrieb hofmann@leo-andres.de:
> Hi Bernhard,
> 
> Thanks for trying this out on such short notice!
> 
> 19. September 2021 21:30, "Bernhard Bitsch" <bbitsch@ipfire.org> schrieb:
> 
>> The enhancements function without problems for your examples.
>> Two additional thoughts:
>> - the manual_pages hash could be read global at the start of general-functions
> 
> Would this improve the page load time?
> The hash is only accessed once in the openpage() function.
> 

You're right ( for the moment? ). But the manualpages function could 
also be called at other places.

>> - is it possible to check the existence of the page? Doing the test manually, I've copied the last
>> line of manualpages with an error. So I landed on the oops page.
> 
> Good idea! But I think this should only be checked once by the build script e.g. "make manualpages", to avoid excess http requests to the Wiki.
> 

Agreed. There is also the problem, that wiki editing, building of IPFire 
and running of IPFire are independend processes. So the error can't be 
prevented, only minimized by the build time check.

>>
>> Tested-by: Bernhard Bitsch <bbitsch@ipfire.org>
>>
>> Am 19.09.2021 um 16:34 schrieb Leo-Andres Hofmann:
>>
>>> This patch adds a little "help" icon to the page header.
>>> If a manual entry exists for a configuration page, the icon
>>> appears and offers a quick way to access the wiki.
>>> Wiki pages can be configured in the "manualpages" file.
>>> Signed-off-by: Leo-Andres Hofmann <hofmann@leo-andres.de>
>>> ---
>>> Hi all,
>>> This patch is not yet complete, but I would like to present the idea.
>>> What do you think, would this get more people to read the wiki?
>>> To test this, move the new file "manualpages" to /var/ipfire/main/ and CTRL+F5 reload the webif to
>>> refresh the CSS cache.
>>> Still -to do- and where I could use some help:
>>> Add "manualpages" file to the updater/installer - how, and should this file be read-only?
>>> Collect and match all wiki pages to the CGIs.
>>> Kind regards
>>> Leo
>>> config/cfgroot/general-functions.pl | 18 +++++++++++++++++-
>>> config/cfgroot/manualpages | 3 +++
>>> html/html/themes/ipfire/include/css/style.css | 13 +++++++++++++
>>> html/html/themes/ipfire/include/functions.pl | 17 ++++++++++++++++-
>>> 4 files changed, 49 insertions(+), 2 deletions(-)
>>> create mode 100644 config/cfgroot/manualpages
>>> diff --git a/config/cfgroot/general-functions.pl b/config/cfgroot/general-functions.pl
>>> index de608e38b..54e23a535 100644
>>> --- a/config/cfgroot/general-functions.pl
>>> +++ b/config/cfgroot/general-functions.pl
>>> @@ -24,7 +24,9 @@ $|=1; # line buffering
>>> $General::version = 'VERSION';
>>> $General::swroot = 'CONFIG_ROOT';
>>> $General::noipprefix = 'noipg-';
>>> -$General::adminmanualurl = 'http://wiki.ipfire.org';
>>> +
>>> +# Base URL of the user manual
>>> +my $usermanual_base_url = 'https://wiki.ipfire.org';
>>>> require "${General::swroot}/network-functions.pl";
>>>> @@ -1421,4 +1423,18 @@ sub running_on_gcp() {
>>> return 0;
>>> }
>>>> +# Get user manual url for the specified configuration page, returns "" if no entry is configured
>>> +sub get_usermanual_url() {
>>> + my ($config_page) = @_;
>>> +
>>> + my %manual_pages = ();
>>> + &readhash("${General::swroot}/main/manualpages", \%manual_pages);
>>> +
>>> + if($config_page && defined($manual_pages{$config_page})) {
>>> + return $usermanual_base_url . '/' . $manual_pages{$config_page};
>>> + }
>>> +
>>> + return "";
>>> +}
>>> +
>>> 1;
>>> diff --git a/config/cfgroot/manualpages b/config/cfgroot/manualpages
>>> new file mode 100644
>>> index 000000000..02dac5be6
>>> --- /dev/null
>>> +++ b/config/cfgroot/manualpages
>>> @@ -0,0 +1,3 @@
>>> +index=configuration/system/startpage
>>> +pppsetup=configuration/system/dial
>>> +qos=configuration/services/qos
>>> diff --git a/html/html/themes/ipfire/include/css/style.css
>>> b/html/html/themes/ipfire/include/css/style.css
>>> index b92f476c4..661773675 100644
>>> --- a/html/html/themes/ipfire/include/css/style.css
>>> +++ b/html/html/themes/ipfire/include/css/style.css
>>> @@ -169,6 +169,19 @@ iframe {
>>> margin-bottom: 1em;
>>> }
>>>> +#main_header > * {
>>> + display: inline-block;
>>> + vertical-align: baseline;
>>> +}
>>> +
>>> +#main_header > span {
>>> + margin-left: 0.8em;
>>> +}
>>> +
>>> +#main_header img {
>>> + padding: 0;
>>> +}
>>> +
>>> #footer {
>>> height: 2.5em;
>>> margin-bottom: 1em;
>>> diff --git a/html/html/themes/ipfire/include/functions.pl
>>> b/html/html/themes/ipfire/include/functions.pl
>>> index 9f12bbe59..d352a7d96 100644
>>> --- a/html/html/themes/ipfire/include/functions.pl
>>> +++ b/html/html/themes/ipfire/include/functions.pl
>>> @@ -170,7 +170,22 @@ END
>>> print <<END
>>> <div class="bigbox fixed">
>>> <div id="main_inner" class="fixed">
>>> - <h1>$title</h1>
>>> + <div id="main_header">
>>> + <h1>$title</h1>
>>> +END
>>> +;
>>> +
>>> +# Print user manual link
>>> +my $manual_url = &General::get_usermanual_url($scriptName);
>>> +if($manual_url ne "") {
>>> + print <<END
>>> + <span><a href="$manual_url" title="$Lang::tr{'online help en'}" target="_blank"><img
>>> src="/images/help-browser.png" alt="$Lang::tr{'online help en'}"></a></span>
>>> +END
>>> +;
>>> +}
>>> +
>>> +print <<END
>>> + </div>
>>> END
>>> ;
>>> }
  
Adolf Belka Sept. 20, 2021, 1:06 p.m. UTC | #8
Hi Leo,

I tried it out on my testbed vm system and it is working fine.

I updated the manualpages file to include all the entries that are visible in my System menu - no wireless client option as I don't have that on my vm install. You just have to keep an eye out for changes in the url as I found for the fireinfo wiki page which is not under configuration/system so I got an oops couldn't find that page message but was able to quickly fix it.

My manualpages file now looks like:-

------------------------

index=configuration/system/startpage
pppsetup=configuration/system/dial
qos=configuration/services/qos
mail=configuration/system/mail_service
remote=configuration/system/ssh
backup=configuration/system/backup
gui=configuration/system/userinterface
fireinfo=fireinfo
vulnerabilities=configuration/system/vulnerabilities
shutdown=configuration/system/shutdown
credits=configuration/system/credits

------------------------

Regards,

Adolf.

On 19/09/2021 16:34, Leo-Andres Hofmann wrote:
> This patch adds a little "help" icon to the page header.
> If a manual entry exists for a configuration page, the icon
> appears and offers a quick way to access the wiki.
> Wiki pages can be configured in the "manualpages" file.
>
> Signed-off-by: Leo-Andres Hofmann <hofmann@leo-andres.de>------------------------
> ---
>
> Hi all,
>
> This patch is not yet complete, but I would like to present the idea.
> What do you think, would this get more people to read the wiki?
>
> To test this, move the new file "manualpages" to /var/ipfire/main/ and CTRL+F5 reload the webif to refresh the CSS cache.
>
> Still -to do- and where I could use some help:
> Add "manualpages" file to the updater/installer - how, and should this file be read-only?
> Collect and match all wiki pages to the CGIs.
>
> Kind regards
> Leo
>
>   config/cfgroot/general-functions.pl           | 18 +++++++++++++++++-
>   config/cfgroot/manualpages                    |  3 +++
>   html/html/themes/ipfire/include/css/style.css | 13 +++++++++++++
>   html/html/themes/ipfire/include/functions.pl  | 17 ++++++++++++++++-
>   4 files changed, 49 insertions(+), 2 deletions(-)
>   create mode 100644 config/cfgroot/manualpages
>
> diff --git a/config/cfgroot/general-functions.pl b/config/cfgroot/general-functions.pl
> index de608e38b..54e23a535 100644
> --- a/config/cfgroot/general-functions.pl
> +++ b/config/cfgroot/general-functions.pl
> @@ -24,7 +24,9 @@ $|=1; # line buffering
>   $General::version = 'VERSION';
>   $General::swroot = 'CONFIG_ROOT';
>   $General::noipprefix = 'noipg-';
> -$General::adminmanualurl = 'http://wiki.ipfire.org';
> +
> +# Base URL of the user manual
> +my $usermanual_base_url = 'https://wiki.ipfire.org';
>   
>   require "${General::swroot}/network-functions.pl";
>   
> @@ -1421,4 +1423,18 @@ sub running_on_gcp() {
>   	return 0;
>   }
>   
> +# Get user manual url for the specified configuration page, returns "" if no entry is configured
> +sub get_usermanual_url() {
> +	my ($config_page) = @_;
> +
> +	my %manual_pages = ();
> +	&readhash("${General::swroot}/main/manualpages", \%manual_pages);
> +
> +	if($config_page && defined($manual_pages{$config_page})) {
> +		return $usermanual_base_url . '/' . $manual_pages{$config_page};
> +	}
> +
> +	return "";
> +}
> +
>   1;
> diff --git a/config/cfgroot/manualpages b/config/cfgroot/manualpages
> new file mode 100644
> index 000000000..02dac5be6
> --- /dev/null
> +++ b/config/cfgroot/manualpages
> @@ -0,0 +1,3 @@
> +index=configuration/system/startpage
> +pppsetup=configuration/system/dial
> +qos=configuration/services/qos
> diff --git a/html/html/themes/ipfire/include/css/style.css b/html/html/themes/ipfire/include/css/style.css
> index b92f476c4..661773675 100644
> --- a/html/html/themes/ipfire/include/css/style.css
> +++ b/html/html/themes/ipfire/include/css/style.css
> @@ -169,6 +169,19 @@ iframe {
>   	margin-bottom: 1em;
>   }
>   
> +#main_header > * {
> +	display: inline-block;
> +	vertical-align: baseline;
> +}
> +
> +#main_header > span {
> +	margin-left: 0.8em;
> +}
> +
> +#main_header img {
> +	padding: 0;
> +}
> +
>   #footer {
>   	height: 2.5em;
>   	margin-bottom: 1em;
> diff --git a/html/html/themes/ipfire/include/functions.pl b/html/html/themes/ipfire/include/functions.pl
> index 9f12bbe59..d352a7d96 100644
> --- a/html/html/themes/ipfire/include/functions.pl
> +++ b/html/html/themes/ipfire/include/functions.pl
> @@ -170,7 +170,22 @@ END
>   print <<END
>   	<div class="bigbox fixed">
>   		<div id="main_inner" class="fixed">
> -			<h1>$title</h1>
> +			<div id="main_header">
> +				<h1>$title</h1>
> +END
> +;
> +
> +# Print user manual link
> +my $manual_url = &General::get_usermanual_url($scriptName);
> +if($manual_url ne "") {
> +	print <<END
> +				<span><a href="$manual_url" title="$Lang::tr{'online help en'}" target="_blank"><img src="/images/help-browser.png" alt="$Lang::tr{'online help en'}"></a></span>
> +END
> +;
> +}
> +
> +print <<END
> +			</div>
>   END
>   ;
>   }
  
Leo-Andres Hofmann Sept. 20, 2021, 1:15 p.m. UTC | #9
Hi Jon,

Am 19.09.2021 um 20:18 schrieb Jon Murphy:
> Excellent!
>
>> What do you think, would this get more people to read the wiki?
> I think it would help!  Anything that pushes more eyeballs to the wiki is very helpful!
I'm glad you like the idea too!
>
>> Collect and match all wiki pages to the CGIs.
>
> I’d be happy to help with this.
Thank you! I'll get in touch when the file format is finalized.
>
> Is the new file "manualpages" a link to the wiki?  Or a text file full of info? Or?

It is a configuration file which links a wiki page to a CGI page:

[name of the cgi]=/path/to/wikipage

I'll document this better.

>
> And how is a new "manualpages" file installed into a Core Update?
I don't know that either. So far I have only submitted code and let the maintainers do the rest :D
>
>
> Jon

Regards,
Leo

>
>> On Sep 19, 2021, at 9:34 AM, Leo-Andres Hofmann <hofmann@leo-andres.de> wrote:
>>
>> This patch adds a little "help" icon to the page header.
>> If a manual entry exists for a configuration page, the icon
>> appears and offers a quick way to access the wiki.
>> Wiki pages can be configured in the "manualpages" file.
>>
>> Signed-off-by: Leo-Andres Hofmann <hofmann@leo-andres.de>
>> ---
>>
>> Hi all,
>>
>> This patch is not yet complete, but I would like to present the idea.
>> What do you think, would this get more people to read the wiki?
>>
>> To test this, move the new file "manualpages" to /var/ipfire/main/ and CTRL+F5 reload the webif to refresh the CSS cache.
>>
>> Still -to do- and where I could use some help:
>> Add "manualpages" file to the updater/installer - how, and should this file be read-only?
>> Collect and match all wiki pages to the CGIs.
>>
>> Kind regards
>> Leo
>>
>> config/cfgroot/general-functions.pl           | 18 +++++++++++++++++-
>> config/cfgroot/manualpages                    |  3 +++
>> html/html/themes/ipfire/include/css/style.css | 13 +++++++++++++
>> html/html/themes/ipfire/include/functions.pl  | 17 ++++++++++++++++-
>> 4 files changed, 49 insertions(+), 2 deletions(-)
>> create mode 100644 config/cfgroot/manualpages
>>
>> diff --git a/config/cfgroot/general-functions.pl b/config/cfgroot/general-functions.pl
>> index de608e38b..54e23a535 100644
>> --- a/config/cfgroot/general-functions.pl
>> +++ b/config/cfgroot/general-functions.pl
>> @@ -24,7 +24,9 @@ $|=1; # line buffering
>> $General::version = 'VERSION';
>> $General::swroot = 'CONFIG_ROOT';
>> $General::noipprefix = 'noipg-';
>> -$General::adminmanualurl = 'http://wiki.ipfire.org';
>> +
>> +# Base URL of the user manual
>> +my $usermanual_base_url = 'https://wiki.ipfire.org';
>>
>> require "${General::swroot}/network-functions.pl";
>>
>> @@ -1421,4 +1423,18 @@ sub running_on_gcp() {
>> 	return 0;
>> }
>>
>> +# Get user manual url for the specified configuration page, returns "" if no entry is configured
>> +sub get_usermanual_url() {
>> +	my ($config_page) = @_;
>> +
>> +	my %manual_pages = ();
>> +	&readhash("${General::swroot}/main/manualpages", \%manual_pages);
>> +
>> +	if($config_page && defined($manual_pages{$config_page})) {
>> +		return $usermanual_base_url . '/' . $manual_pages{$config_page};
>> +	}
>> +
>> +	return "";
>> +}
>> +
>> 1;
>> diff --git a/config/cfgroot/manualpages b/config/cfgroot/manualpages
>> new file mode 100644
>> index 000000000..02dac5be6
>> --- /dev/null
>> +++ b/config/cfgroot/manualpages
>> @@ -0,0 +1,3 @@
>> +index=configuration/system/startpage
>> +pppsetup=configuration/system/dial
>> +qos=configuration/services/qos
>> diff --git a/html/html/themes/ipfire/include/css/style.css b/html/html/themes/ipfire/include/css/style.css
>> index b92f476c4..661773675 100644
>> --- a/html/html/themes/ipfire/include/css/style.css
>> +++ b/html/html/themes/ipfire/include/css/style.css
>> @@ -169,6 +169,19 @@ iframe {
>> 	margin-bottom: 1em;
>> }
>>
>> +#main_header > * {
>> +	display: inline-block;
>> +	vertical-align: baseline;
>> +}
>> +
>> +#main_header > span {
>> +	margin-left: 0.8em;
>> +}
>> +
>> +#main_header img {
>> +	padding: 0;
>> +}
>> +
>> #footer {
>> 	height: 2.5em;
>> 	margin-bottom: 1em;
>> diff --git a/html/html/themes/ipfire/include/functions.pl b/html/html/themes/ipfire/include/functions.pl
>> index 9f12bbe59..d352a7d96 100644
>> --- a/html/html/themes/ipfire/include/functions.pl
>> +++ b/html/html/themes/ipfire/include/functions.pl
>> @@ -170,7 +170,22 @@ END
>> print <<END
>> 	<div class="bigbox fixed">
>> 		<div id="main_inner" class="fixed">
>> -			<h1>$title</h1>
>> +			<div id="main_header">
>> +				<h1>$title</h1>
>> +END
>> +;
>> +
>> +# Print user manual link
>> +my $manual_url = &General::get_usermanual_url($scriptName);
>> +if($manual_url ne "") {
>> +	print <<END
>> +				<span><a href="$manual_url" title="$Lang::tr{'online help en'}" target="_blank"><img src="/images/help-browser.png" alt="$Lang::tr{'online help en'}"></a></span>
>> +END
>> +;
>> +}
>> +
>> +print <<END
>> +			</div>
>> END
>> ;
>> }
>> -- 
>> 2.27.0.windows.1
>>
  
Leo-Andres Hofmann Sept. 20, 2021, 1:30 p.m. UTC | #10
Hi Adolf,

thank you for trying this and providing a new configuration file! This is great!
Since you have also come across missing pages, I should realize Bernhard's idea and build a test script.

I'll implement all suggestions and submit again soon :)

Regards,
Leo

Am 20.09.2021 um 15:06 schrieb Adolf Belka:
> Hi Leo,
>
> I tried it out on my testbed vm system and it is working fine.
>
> I updated the manualpages file to include all the entries that are visible in my System menu - no wireless client option as I don't have that on my vm install. You just have to keep an eye out for changes in the url as I found for the fireinfo wiki page which is not under configuration/system so I got an oops couldn't find that page message but was able to quickly fix it.
>
> My manualpages file now looks like:-
>
> ------------------------
>
> index=configuration/system/startpage
> pppsetup=configuration/system/dial
> qos=configuration/services/qos
> mail=configuration/system/mail_service
> remote=configuration/system/ssh
> backup=configuration/system/backup
> gui=configuration/system/userinterface
> fireinfo=fireinfo
> vulnerabilities=configuration/system/vulnerabilities
> shutdown=configuration/system/shutdown
> credits=configuration/system/credits
>
> ------------------------
>
> Regards,
>
> Adolf.
>
> On 19/09/2021 16:34, Leo-Andres Hofmann wrote:
>> This patch adds a little "help" icon to the page header.
>> If a manual entry exists for a configuration page, the icon
>> appears and offers a quick way to access the wiki.
>> Wiki pages can be configured in the "manualpages" file.
>>
>> Signed-off-by: Leo-Andres Hofmann <hofmann@leo-andres.de>------------------------
>> ---
>>
>> Hi all,
>>
>> This patch is not yet complete, but I would like to present the idea.
>> What do you think, would this get more people to read the wiki?
>>
>> To test this, move the new file "manualpages" to /var/ipfire/main/ and CTRL+F5 reload the webif to refresh the CSS cache.
>>
>> Still -to do- and where I could use some help:
>> Add "manualpages" file to the updater/installer - how, and should this file be read-only?
>> Collect and match all wiki pages to the CGIs.
>>
>> Kind regards
>> Leo
>>
>>   config/cfgroot/general-functions.pl           | 18 +++++++++++++++++-
>>   config/cfgroot/manualpages                    |  3 +++
>>   html/html/themes/ipfire/include/css/style.css | 13 +++++++++++++
>>   html/html/themes/ipfire/include/functions.pl  | 17 ++++++++++++++++-
>>   4 files changed, 49 insertions(+), 2 deletions(-)
>>   create mode 100644 config/cfgroot/manualpages
>>
>> diff --git a/config/cfgroot/general-functions.pl b/config/cfgroot/general-functions.pl
>> index de608e38b..54e23a535 100644
>> --- a/config/cfgroot/general-functions.pl
>> +++ b/config/cfgroot/general-functions.pl
>> @@ -24,7 +24,9 @@ $|=1; # line buffering
>>   $General::version = 'VERSION';
>>   $General::swroot = 'CONFIG_ROOT';
>>   $General::noipprefix = 'noipg-';
>> -$General::adminmanualurl = 'http://wiki.ipfire.org';
>> +
>> +# Base URL of the user manual
>> +my $usermanual_base_url = 'https://wiki.ipfire.org';
>>     require "${General::swroot}/network-functions.pl";
>>   @@ -1421,4 +1423,18 @@ sub running_on_gcp() {
>>       return 0;
>>   }
>>   +# Get user manual url for the specified configuration page, returns "" if no entry is configured
>> +sub get_usermanual_url() {
>> +    my ($config_page) = @_;
>> +
>> +    my %manual_pages = ();
>> +    &readhash("${General::swroot}/main/manualpages", \%manual_pages);
>> +
>> +    if($config_page && defined($manual_pages{$config_page})) {
>> +        return $usermanual_base_url . '/' . $manual_pages{$config_page};
>> +    }
>> +
>> +    return "";
>> +}
>> +
>>   1;
>> diff --git a/config/cfgroot/manualpages b/config/cfgroot/manualpages
>> new file mode 100644
>> index 000000000..02dac5be6
>> --- /dev/null
>> +++ b/config/cfgroot/manualpages
>> @@ -0,0 +1,3 @@
>> +index=configuration/system/startpage
>> +pppsetup=configuration/system/dial
>> +qos=configuration/services/qos
>> diff --git a/html/html/themes/ipfire/include/css/style.css b/html/html/themes/ipfire/include/css/style.css
>> index b92f476c4..661773675 100644
>> --- a/html/html/themes/ipfire/include/css/style.css
>> +++ b/html/html/themes/ipfire/include/css/style.css
>> @@ -169,6 +169,19 @@ iframe {
>>       margin-bottom: 1em;
>>   }
>>   +#main_header > * {
>> +    display: inline-block;
>> +    vertical-align: baseline;
>> +}
>> +
>> +#main_header > span {
>> +    margin-left: 0.8em;
>> +}
>> +
>> +#main_header img {
>> +    padding: 0;
>> +}
>> +
>>   #footer {
>>       height: 2.5em;
>>       margin-bottom: 1em;
>> diff --git a/html/html/themes/ipfire/include/functions.pl b/html/html/themes/ipfire/include/functions.pl
>> index 9f12bbe59..d352a7d96 100644
>> --- a/html/html/themes/ipfire/include/functions.pl
>> +++ b/html/html/themes/ipfire/include/functions.pl
>> @@ -170,7 +170,22 @@ END
>>   print <<END
>>       <div class="bigbox fixed">
>>           <div id="main_inner" class="fixed">
>> -            <h1>$title</h1>
>> +            <div id="main_header">
>> +                <h1>$title</h1>
>> +END
>> +;
>> +
>> +# Print user manual link
>> +my $manual_url = &General::get_usermanual_url($scriptName);
>> +if($manual_url ne "") {
>> +    print <<END
>> +                <span><a href="$manual_url" title="$Lang::tr{'online help en'}" target="_blank"><img src="/images/help-browser.png" alt="$Lang::tr{'online help en'}"></a></span>
>> +END
>> +;
>> +}
>> +
>> +print <<END
>> +            </div>
>>   END
>>   ;
>>   }
  

Patch

diff --git a/config/cfgroot/general-functions.pl b/config/cfgroot/general-functions.pl
index de608e38b..54e23a535 100644
--- a/config/cfgroot/general-functions.pl
+++ b/config/cfgroot/general-functions.pl
@@ -24,7 +24,9 @@  $|=1; # line buffering
 $General::version = 'VERSION';
 $General::swroot = 'CONFIG_ROOT';
 $General::noipprefix = 'noipg-';
-$General::adminmanualurl = 'http://wiki.ipfire.org';
+
+# Base URL of the user manual
+my $usermanual_base_url = 'https://wiki.ipfire.org';
 
 require "${General::swroot}/network-functions.pl";
 
@@ -1421,4 +1423,18 @@  sub running_on_gcp() {
 	return 0;
 }
 
+# Get user manual url for the specified configuration page, returns "" if no entry is configured
+sub get_usermanual_url() {
+	my ($config_page) = @_;
+
+	my %manual_pages = ();
+	&readhash("${General::swroot}/main/manualpages", \%manual_pages);
+
+	if($config_page && defined($manual_pages{$config_page})) {
+		return $usermanual_base_url . '/' . $manual_pages{$config_page};
+	}
+
+	return "";
+}
+
 1;
diff --git a/config/cfgroot/manualpages b/config/cfgroot/manualpages
new file mode 100644
index 000000000..02dac5be6
--- /dev/null
+++ b/config/cfgroot/manualpages
@@ -0,0 +1,3 @@ 
+index=configuration/system/startpage
+pppsetup=configuration/system/dial
+qos=configuration/services/qos
diff --git a/html/html/themes/ipfire/include/css/style.css b/html/html/themes/ipfire/include/css/style.css
index b92f476c4..661773675 100644
--- a/html/html/themes/ipfire/include/css/style.css
+++ b/html/html/themes/ipfire/include/css/style.css
@@ -169,6 +169,19 @@  iframe {
 	margin-bottom: 1em;
 }
 
+#main_header > * {
+	display: inline-block;
+	vertical-align: baseline;
+}
+
+#main_header > span {
+	margin-left: 0.8em;
+}
+
+#main_header img {
+	padding: 0;
+}
+
 #footer {
 	height: 2.5em;
 	margin-bottom: 1em;
diff --git a/html/html/themes/ipfire/include/functions.pl b/html/html/themes/ipfire/include/functions.pl
index 9f12bbe59..d352a7d96 100644
--- a/html/html/themes/ipfire/include/functions.pl
+++ b/html/html/themes/ipfire/include/functions.pl
@@ -170,7 +170,22 @@  END
 print <<END
 	<div class="bigbox fixed">
 		<div id="main_inner" class="fixed">
-			<h1>$title</h1>
+			<div id="main_header">
+				<h1>$title</h1>
+END
+;
+
+# Print user manual link
+my $manual_url = &General::get_usermanual_url($scriptName);
+if($manual_url ne "") {
+	print <<END
+				<span><a href="$manual_url" title="$Lang::tr{'online help en'}" target="_blank"><img src="/images/help-browser.png" alt="$Lang::tr{'online help en'}"></a></span>
+END
+;
+}
+
+print <<END
+			</div>
 END
 ;
 }