aboutsummaryrefslogtreecommitdiffstats
path: root/extensions/Mageia
diff options
context:
space:
mode:
authorFrédéric Buclin <LpSolit@netscape.net>2016-02-24 00:43:00 +0100
committerFrédéric Buclin <LpSolit@netscape.net>2016-02-24 00:43:00 +0100
commit9f4329cfd4ccf1e3030e131299a028df4a6c30df (patch)
treedbf70060cd59dbe33685bb18e597ef0e23f7dca6 /extensions/Mageia
parentbb909eae7218de25805d80a442c6c59e89760df9 (diff)
downloadbugs-9f4329cfd4ccf1e3030e131299a028df4a6c30df.tar
bugs-9f4329cfd4ccf1e3030e131299a028df4a6c30df.tar.gz
bugs-9f4329cfd4ccf1e3030e131299a028df4a6c30df.tar.bz2
bugs-9f4329cfd4ccf1e3030e131299a028df4a6c30df.tar.xz
bugs-9f4329cfd4ccf1e3030e131299a028df4a6c30df.zip
Import Mageia extension - version 5.0
Diffstat (limited to 'extensions/Mageia')
-rw-r--r--extensions/Mageia/Config.pm22
-rw-r--r--extensions/Mageia/Extension.pm111
-rw-r--r--extensions/Mageia/lib/Util.pm24
-rw-r--r--extensions/Mageia/template/en/default/bug/create/comment-guided.txt.tmpl10
-rw-r--r--extensions/Mageia/template/en/default/bug/create/create-guided.html.tmpl321
-rw-r--r--extensions/Mageia/template/en/default/global/banner.html.tmpl11
-rw-r--r--extensions/Mageia/template/en/default/hook/README5
-rw-r--r--extensions/Mageia/template/en/default/hook/account/auth/login-small-additional_methods.html.tmpl23
-rw-r--r--extensions/Mageia/template/en/default/hook/global/header-start.html.tmpl10
-rw-r--r--extensions/Mageia/template/en/default/hook/global/variables-end.none.tmpl9
-rw-r--r--extensions/Mageia/template/en/default/hook/index-additional_links.html.tmpl14
-rw-r--r--extensions/Mageia/template/en/default/mageia/README16
-rw-r--r--extensions/Mageia/web/README7
-rw-r--r--extensions/Mageia/web/style.css31
14 files changed, 614 insertions, 0 deletions
diff --git a/extensions/Mageia/Config.pm b/extensions/Mageia/Config.pm
new file mode 100644
index 000000000..ce0eae39d
--- /dev/null
+++ b/extensions/Mageia/Config.pm
@@ -0,0 +1,22 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# This Source Code Form is "Incompatible With Secondary Licenses", as
+# defined by the Mozilla Public License, v. 2.0.
+
+package Bugzilla::Extension::Mageia;
+
+use 5.10.1;
+use strict;
+use warnings;
+
+use constant NAME => 'Mageia';
+
+use constant REQUIRED_MODULES => [
+];
+
+use constant OPTIONAL_MODULES => [
+];
+
+__PACKAGE__->NAME;
diff --git a/extensions/Mageia/Extension.pm b/extensions/Mageia/Extension.pm
new file mode 100644
index 000000000..5580e583a
--- /dev/null
+++ b/extensions/Mageia/Extension.pm
@@ -0,0 +1,111 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# This Source Code Form is "Incompatible With Secondary Licenses", as
+# defined by the Mozilla Public License, v. 2.0.
+
+package Bugzilla::Extension::Mageia;
+
+use 5.10.1;
+use strict;
+use warnings;
+
+use parent qw(Bugzilla::Extension);
+
+use Bugzilla::Bug qw(LogActivityEntry);
+use Bugzilla::Field qw(get_field_id);
+use Bugzilla::User qw();
+use Bugzilla::Extension::Mageia::Util;
+
+use Email::Address;
+use Encode qw(encode);
+
+# Let's match the Bugzilla version it's written for.
+our $VERSION = '5.0';
+
+# sysadmin-bugs@ml.mageia.org user ID = 175.
+use constant SYSADMIN_USER_ID => 175;
+
+sub bug_end_of_create_validators {
+ my ($self, $args) = @_;
+
+ # If a user enters 'validated_update' as keyword,
+ # automatically CC sysadmin-bugs@ml.mageia.org.
+ my $keywords = $args->{params}->{keywords};
+
+ if (grep { $_->name eq 'validated_update' } @$keywords) {
+ my $cc_list = $args->{params}->{cc};
+ if (!grep { $_ == SYSADMIN_USER_ID } @$cc_list) {
+ push(@$cc_list, SYSADMIN_USER_ID);
+ }
+ }
+}
+
+sub bug_end_of_update {
+ my ($self, $args) = @_;
+ my $bug = $args->{bug};
+ my $dbh = Bugzilla->dbh;
+ my $user = Bugzilla->user;
+
+ # If a user enters 'validated_update' as keyword,
+ # automatically CC sysadmin-bugs@ml.mageia.org.
+ my $new_keywords_str = $args->{changes}->{keywords}->[1];
+
+ if ($new_keywords_str) {
+ my @new_keywords = split(/[,\s]+/, $new_keywords_str);
+ if (grep { $_ eq 'validated_update' } @new_keywords
+ and !grep { $_->id == SYSADMIN_USER_ID } @{$bug->cc_users})
+ {
+ # Safer to clear the cache and let Bugzilla regenerate them if needed.
+ delete $bug->{cc_users};
+ delete $bug->{cc};
+ $dbh->do('INSERT INTO cc (bug_id, who) VALUES (?, ?)',
+ undef, ($bug->id, SYSADMIN_USER_ID));
+
+ # We also have to update the bug history to reflect this change.
+ my $changed_cc = $args->{changes}->{cc};
+ my $sysadmin_login = Bugzilla::User->new(SYSADMIN_USER_ID)->login;
+
+ if ($changed_cc->[1]) {
+ $changed_cc->[1] .= ", $sysadmin_login";
+ }
+ else {
+ $changed_cc->[1] = $sysadmin_login;
+ }
+
+ my $field_id = get_field_id('cc');
+ $dbh->do('DELETE FROM bugs_activity
+ WHERE bug_id = ? AND bug_when = ? AND fieldid = ?',
+ undef, ($bug->id, $args->{timestamp}, $field_id));
+
+ LogActivityEntry($bug->id, 'cc', $changed_cc->[0] // '', $changed_cc->[1],
+ $user->id, $args->{timestamp});
+ }
+ }
+}
+
+sub enter_bug_entrydefaultvars {
+ my ($self, $vars) = @_;
+ my $cgi = Bugzilla->cgi;
+
+ # By default, users should get the guided form when reporting a new bug.
+ # Pass &normal=1 to the URL to get the official bug form.
+ my $format = $cgi->param('normal') ? '' : 'guided';
+ $cgi->param('format', $format);
+}
+
+sub mailer_before_send {
+ my ($self, $args) = @_;
+ my $email = $args->{email};
+
+ # Include the changer's name in the "From:" field.
+ if (my $changer = $email->header('X-Bugzilla-Who')) {
+ $changer = Bugzilla::User->new({ name => $changer });
+ return unless $changer;
+ my $address = Email::Address->new($changer->name, $email->header('From'));
+ $email->header_set('From', encode('MIME-Header', $address->format));
+ }
+}
+
+__PACKAGE__->NAME;
diff --git a/extensions/Mageia/lib/Util.pm b/extensions/Mageia/lib/Util.pm
new file mode 100644
index 000000000..f13ee2091
--- /dev/null
+++ b/extensions/Mageia/lib/Util.pm
@@ -0,0 +1,24 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# This Source Code Form is "Incompatible With Secondary Licenses", as
+# defined by the Mozilla Public License, v. 2.0.
+
+package Bugzilla::Extension::Mageia::Util;
+
+use 5.10.1;
+use strict;
+use warnings;
+
+use parent qw(Exporter);
+
+our @EXPORT = qw(
+);
+
+# This file can be loaded by your extension via
+# "use Bugzilla::Extension::Mageia::Util". You can put functions
+# used by your extension in here. (Make sure you also list them in
+# @EXPORT.)
+
+1;
diff --git a/extensions/Mageia/template/en/default/bug/create/comment-guided.txt.tmpl b/extensions/Mageia/template/en/default/bug/create/comment-guided.txt.tmpl
new file mode 100644
index 000000000..7b5018e6d
--- /dev/null
+++ b/extensions/Mageia/template/en/default/bug/create/comment-guided.txt.tmpl
@@ -0,0 +1,10 @@
+[%# This Source Code Form is subject to the terms of the Mozilla Public
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ #
+ # This Source Code Form is "Incompatible With Secondary Licenses", as
+ # defined by the Mozilla Public License, v. 2.0.
+ #%]
+
+[% USE Bugzilla %]
+[% Bugzilla.cgi.param("comment") %]
diff --git a/extensions/Mageia/template/en/default/bug/create/create-guided.html.tmpl b/extensions/Mageia/template/en/default/bug/create/create-guided.html.tmpl
new file mode 100644
index 000000000..bc86513d1
--- /dev/null
+++ b/extensions/Mageia/template/en/default/bug/create/create-guided.html.tmpl
@@ -0,0 +1,321 @@
+[%# This Source Code Form is subject to the terms of the Mozilla Public
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ #
+ # This Source Code Form is "Incompatible With Secondary Licenses", as
+ # defined by the Mozilla Public License, v. 2.0.
+ #%]
+
+[%# INTERFACE:
+ # This template has the same interface as create.html.tmpl
+ #%]
+
+[% USE Bugzilla %]
+[% cgi = Bugzilla.cgi %]
+
+[% PROCESS global/header.html.tmpl
+ title = "Enter $terms.ABug"
+ onload = "PutDescription()"
+ style_urls = ['skins/standard/bug.css']
+ javascript_urls = ['js/util.js', 'js/field.js']
+ yui = ['autocomplete']
+ %]
+
+[% defaultcontent = "Description of problem:\n\n\n" _
+ "Version-Release number of selected component (if applicable):\n\n\n" _
+ "How reproducible:\n\n\nSteps to Reproduce:\n1.\n2.\n3.\n" %]
+
+[%# This script displays the descriptions for selected components. %]
+<script type="text/javascript">
+var descriptions = [
+[% FOREACH c = product.components %]
+ [% NEXT IF NOT c.is_active %]
+ '[% c.description FILTER js %]',
+[% END %]
+];
+
+function PutDescription() {
+ var description = document.getElementById('description');
+ var componentIndex = document.getElementById('component').selectedIndex;
+ YAHOO.util.Dom.removeClass("description", "bz_default_hidden");
+ if (componentIndex != -1) {
+ description.innerHTML = descriptions[componentIndex];
+ }
+}
+
+function CheckDetails(e) {
+ if (e.form.comment.value == '[% defaultcontent FILTER js FILTER html %]') {
+ alert('Please enter some details about this [% terms.bug %].');
+ e.form.comment.focus();
+ return false;
+ }
+ return true;
+}
+</script>
+
+<p>
+ Submit [% terms.abug %] using the
+ <a href="enter_bug.cgi?product=[% product.name FILTER html %]&amp;normal=1">expert [% terms.bug %] form</a>.
+</p>
+
+<form id="guided_form" method="post" action="post_bug.cgi">
+ <input type="hidden" name="format" value="guided">
+ <input type="hidden" name="priority" value="[% default.priority FILTER html %]">
+ <input type="hidden" name="token" value="[% token FILTER html %]">
+
+<table>
+ <tr>
+ [% INCLUDE "bug/field-label.html.tmpl" field = bug_fields.product %]
+ <td>
+ <input type="hidden" name="product" value="[% product.name FILTER html %]">
+ [% product.name FILTER html %]
+ </td>
+ </tr>
+
+ <tr>
+ [% INCLUDE "bug/field-label.html.tmpl" field = bug_fields.component editable = 1 %]
+ <td>
+ <select name="component" id="component" size="5" onchange="PutDescription()"
+ aria-required="true" class="required" required>
+ [% IF NOT default.component_ %]
+ [% default.component_ = "General" %]
+ [% END %]
+ [% FOREACH c = product.components %]
+ [% NEXT IF NOT c.is_active %]
+ <option value="[% c.name FILTER html %]"
+ [%+ 'selected="selected"' IF c.name == default.component_ %]>
+ [% c.name FILTER html %]
+ </option>
+ [% END %]
+ </select>
+
+ <div id="description" class="comment bz_default_hidden">
+ Select a component to see its description here.
+ </div>
+
+ <p>
+ The area where the problem occurs.
+ To pick the right component, you could use the same one as
+ similar [% terms.bugs %] you found in your search, or read the full list of
+ <a href="describecomponents.cgi?product=[% product.name FILTER uri %]"
+ target="_blank" >component descriptions</a> (opens in new window) if
+ you need more help.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ [% INCLUDE "bug/field-label.html.tmpl" field = bug_fields.version editable = 1 %]
+ <td>
+ <select name="version" id="version" size="5" aria-required="true" class="required" required>
+ [% FOREACH v = version %]
+ [% NEXT IF NOT v.is_active %]
+ <option value="[% v.name FILTER html %]"
+ [% ' selected="selected"' IF v.name == default.version %]>[% v.name FILTER html -%]
+ </option>
+ [% END %]
+ </select>
+
+ <p>
+ The version in which the problem occurs.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ [% INCLUDE bug/field.html.tmpl
+ bug = default, field = bug_fields.rep_platform, editable = 1,
+ value = default.rep_platform %]
+ </tr>
+
+ <tr>
+ [% INCLUDE "bug/field-label.html.tmpl" field = bug_fields.cf_rpmpkg editable = 1 %]
+ <td>
+ <input size="80" name="cf_rpmpkg" id="cf_rpmpkg" onchange="onChangePackage(this)">
+ <p>
+ This is where you can identify exactly which RPM package is involved in
+ this [% terms.bug %] report. For instance, if you know the problem you
+ are having is with the program <tt>mysqld</tt>, then execute
+ <tt>rpm -qif /usr/sbin/mysqld</tt>. This will tell you the name and version
+ of the RPM package (i.e. mariadb-core-10.0.23-1.mga5) as well as other
+ information. In particular, you are looking for the "Source RPM" field
+ (i.e. mariadb-10.0.23-1.mga5.src.rpm) -- this is the information you should
+ provide here. Alternatively, you may use
+ <tt>rpm -qf /usr/sbin/mysqld --qf '%{SOURCERPM}\n'</tt> to obtain the
+ information. If you do not know the location of the program in question,
+ use <tt>rpm -qf `which mysqld`</tt> to obtain it. Please enter that
+ information above.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ [% INCLUDE "bug/field-label.html.tmpl" field = bug_fields.bug_file_loc editable = 1 %]
+ <td>
+ <input size="80" name="bug_file_loc" placeholder="https://">
+ <p>
+ URL that demonstrates the problem you are submitting (optional).
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ [% INCLUDE "bug/field-label.html.tmpl" field = bug_fields.short_desc editable = 1 %]
+ <td>
+ <input size="80" name="short_desc" id="short_desc" maxlength="255"
+ spellcheck="true" aria-required="true" class="required" required>
+ <p>
+ A sentence which summarizes the problem.
+ Please be descriptive and use lots of keywords.
+ </p>
+ <p>
+ <kbd>
+ <span class="bad">Bad example</span>: mail crashed
+ </kbd>
+ <br>
+ <kbd>
+ <span class="good">Good example</span>:
+ crash in Evolution while checking for new POP mail
+ </kbd>
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <th id="field_label_details" class="field_label required">Details</th>
+ <td>
+ [% INCLUDE global/textarea.html.tmpl
+ id = 'comment'
+ name = 'comment'
+ minrows = 13
+ cols = constants.COMMENT_COLS
+ mandatory = 1
+ defaultcontent = defaultcontent
+ %]
+
+ [% IF user.is_insider %]
+ <br>
+ <input type="checkbox" id="comment_is_private" name="comment_is_private"
+ [% ' checked="checked"' IF comment_is_private %]
+ onClick="updateCommentTagControl(this, 'comment')">
+ <label for="comment_is_private">
+ Initial description is private (visible only to members
+ of the <strong>[% Param('insidergroup') FILTER html %]</strong> group)
+ </label>
+ <script>
+ updateCommentTagControl(document.getElementById('comment_is_private'), 'comment');
+ </script>
+ [% END %]
+ <p>
+ Expand on the Summary. Please be as specific as possible about what is wrong.
+ </p>
+ <p>
+ <kbd>
+ <span class="bad">Bad example</span>: I can't seem to login to the system. Please help!
+ </kbd>
+ <br>
+ <kbd>
+ <span class="good">Good example</span>: Description of problem:
+ <br><br>
+ I'm unable to login to the system via ssh. The /var/log/messages log
+ indicates there is a problem with the pam module pam_ldap, but the
+ /etc/pam.d/system-auth file doesn't contain that module and I'm not
+ using LDAP. I looked at /etc/pam.d/sshd and it does contain that module
+ but I'm not sure how it got there, unless it was due to the super-spiffy
+ super-ldap-mojo package I installed yesterday.
+ <br><br>
+ Version-Release number of selected component (if applicable):
+ <br><br>
+ openldap-2.4.40-3.1.mga5, pam-1.1.8-10.1.mga5
+ <br><br>
+ How reproducible:
+ <br><br>
+ Every time I attempt to login.
+ <br><br>
+ Steps to Reproduce:<br>
+ 1. ssh user@host<br>
+ 2. see the rejection
+ </kbd>
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ [% INCLUDE "bug/field-label.html.tmpl" field = bug_fields.bug_severity editable = 1 %]
+ <td>
+ <select name="bug_severity">
+ <option name="critical" value="critical">
+ Critical: The software crashes, hangs, or causes you to
+ lose data.
+ </option>
+ <option name="major" value="major">
+ Major: A major feature is broken.
+ </option>
+ <option name="normal" value="normal" selected="selected">
+ Normal: It's [% terms.abug %] that should be fixed.
+ </option>
+ <option name="minor" value="minor">
+ Minor: Minor loss of function, and there's an easy workaround.
+ </option>
+ <option name="enhancement" value="enhancement">
+ Enhancement: Request for new feature or enhancement.
+ </option>
+ </select>
+ <p>
+ Indicate how serious the problem is, or if your [% terms.bug %] is a
+ request for a new feature.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ [% INCLUDE "bug/field-label.html.tmpl" field = bug_fields.assigned_to editable = 1 %]
+ <td>
+ [% INCLUDE global/userselect.html.tmpl
+ id => "assigned_to"
+ name => "assigned_to"
+ value => assigned_to
+ disabled => assigned_to_disabled
+ size => 30
+ emptyok => 1
+ %]
+ <p>Leave blank to assign to the default component owner.</p>
+ </td>
+ </tr>
+
+ [% Hook.process('form') %]
+</table>
+
+<p>
+ <input type="submit" id="report" value="Submit [% terms.Bug %] Report"
+ onclick="var res = CheckDetails(this); return res">
+</p>
+
+<p>
+ That's it! Thanks very much. You'll be notified by email about any progress
+ that is made on fixing your [% terms.bug %]. Thank you for choosing Mageia!
+</p>
+
+</form>
+
+[% PROCESS global/footer.html.tmpl %]
+
+[%############################################################################%]
+[%# Block for SELECT fields #%]
+[%############################################################################%]
+
+[% BLOCK select %]
+ <select name="[% sel %]">
+ [%- IF default.$sel %]
+ <option value="[% default.$sel FILTER html %]" selected="selected">
+ [% default.$sel FILTER html -%]
+ </option>
+ [% END %]
+ [%- FOREACH x = $sel %]
+ [% NEXT IF x == default.$sel %]
+ <option value="[% x FILTER html %]">
+ [% x FILTER html -%]
+ </option>
+ [%- END %]
+ </select>
+[% END %]
diff --git a/extensions/Mageia/template/en/default/global/banner.html.tmpl b/extensions/Mageia/template/en/default/global/banner.html.tmpl
new file mode 100644
index 000000000..76f1d123e
--- /dev/null
+++ b/extensions/Mageia/template/en/default/global/banner.html.tmpl
@@ -0,0 +1,11 @@
+[%# This Source Code Form is subject to the terms of the Mozilla Public
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ #
+ # This Source Code Form is "Incompatible With Secondary Licenses", as
+ # defined by the Mozilla Public License, v. 2.0.
+ #%]
+
+<script src="https://nav.mageia.org/js/" type="text/javascript"></script>
+
+<div id="banner"></div>
diff --git a/extensions/Mageia/template/en/default/hook/README b/extensions/Mageia/template/en/default/hook/README
new file mode 100644
index 000000000..e6c4add58
--- /dev/null
+++ b/extensions/Mageia/template/en/default/hook/README
@@ -0,0 +1,5 @@
+Template hooks go in this directory. Template hooks are called in normal
+Bugzilla templates like [% Hook.process('some-hook') %].
+More information about them can be found in the documentation of
+Bugzilla::Extension. (Do "perldoc Bugzilla::Extension" from the main
+Bugzilla directory to see that documentation.) \ No newline at end of file
diff --git a/extensions/Mageia/template/en/default/hook/account/auth/login-small-additional_methods.html.tmpl b/extensions/Mageia/template/en/default/hook/account/auth/login-small-additional_methods.html.tmpl
new file mode 100644
index 000000000..675af49f1
--- /dev/null
+++ b/extensions/Mageia/template/en/default/hook/account/auth/login-small-additional_methods.html.tmpl
@@ -0,0 +1,23 @@
+[%# This Source Code Form is subject to the terms of the Mozilla Public
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ #
+ # This Source Code Form is "Incompatible With Secondary Licenses", as
+ # defined by the Mozilla Public License, v. 2.0.
+ #%]
+
+[% UNLESS user.id %]
+ [% UNLESS Param('createemailregexp') AND user.authorizer.user_can_create_account %]
+ <li id="new_account_container[% qs_suffix FILTER html %]">
+ <span class="separator">| </span>
+ <a href="https://identity.mageia.org/register">New&nbsp;Account</a>
+ </li>
+ [% END %]
+
+ [% UNLESS user.authorizer.can_change_password %]
+ <li id="forgot_container[% qs_suffix FILTER html %]">
+ <span class="separator">| </span>
+ <a href="https://identity.mageia.org/forgot_password">Forgot Password</a>
+ </li>
+ [% END %]
+[% END %]
diff --git a/extensions/Mageia/template/en/default/hook/global/header-start.html.tmpl b/extensions/Mageia/template/en/default/hook/global/header-start.html.tmpl
new file mode 100644
index 000000000..01fab7fab
--- /dev/null
+++ b/extensions/Mageia/template/en/default/hook/global/header-start.html.tmpl
@@ -0,0 +1,10 @@
+[%# This Source Code Form is subject to the terms of the Mozilla Public
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ #
+ # This Source Code Form is "Incompatible With Secondary Licenses", as
+ # defined by the Mozilla Public License, v. 2.0.
+ #%]
+
+[% favicon_url = "https://www.mageia.org/g/favicon.png" %]
+[% style_urls.push("extensions/Mageia/web/style.css") %]
diff --git a/extensions/Mageia/template/en/default/hook/global/variables-end.none.tmpl b/extensions/Mageia/template/en/default/hook/global/variables-end.none.tmpl
new file mode 100644
index 000000000..4f651a5ae
--- /dev/null
+++ b/extensions/Mageia/template/en/default/hook/global/variables-end.none.tmpl
@@ -0,0 +1,9 @@
+[%# This Source Code Form is subject to the terms of the Mozilla Public
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ #
+ # This Source Code Form is "Incompatible With Secondary Licenses", as
+ # defined by the Mozilla Public License, v. 2.0.
+ #%]
+
+[% terms.Bugzilla = "Mageia Bugzilla" %]
diff --git a/extensions/Mageia/template/en/default/hook/index-additional_links.html.tmpl b/extensions/Mageia/template/en/default/hook/index-additional_links.html.tmpl
new file mode 100644
index 000000000..3c2585887
--- /dev/null
+++ b/extensions/Mageia/template/en/default/hook/index-additional_links.html.tmpl
@@ -0,0 +1,14 @@
+[%# This Source Code Form is subject to the terms of the Mozilla Public
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ #
+ # This Source Code Form is "Incompatible With Secondary Licenses", as
+ # defined by the Mozilla Public License, v. 2.0.
+ #%]
+
+[% UNLESS user.id %]
+ <p id="create_account">
+ Don't have an account on [% terms.Bugzilla %]?
+ <a href="https://identity.mageia.org/register">Create one</a>.
+ </p>
+[% END %]
diff --git a/extensions/Mageia/template/en/default/mageia/README b/extensions/Mageia/template/en/default/mageia/README
new file mode 100644
index 000000000..099d1a41a
--- /dev/null
+++ b/extensions/Mageia/template/en/default/mageia/README
@@ -0,0 +1,16 @@
+Normal templates go in this directory. You can load them in your
+code like this:
+
+use Bugzilla::Error;
+my $template = Bugzilla->template;
+$template->process('mageia/some-template.html.tmpl')
+ or ThrowTemplateError($template->error());
+
+That would be how to load a file called some-template.html.tmpl that
+was in this directory.
+
+Note that you have to be careful that the full path of your template
+never conflicts with a template that exists in Bugzilla or in
+another extension, or your template might override that template. That's why
+we created this directory called 'mageia' for you, so you
+can put your templates in here to help avoid conflicts. \ No newline at end of file
diff --git a/extensions/Mageia/web/README b/extensions/Mageia/web/README
new file mode 100644
index 000000000..c3c41862f
--- /dev/null
+++ b/extensions/Mageia/web/README
@@ -0,0 +1,7 @@
+Web-accessible files, like JavaScript, CSS, and images go in this
+directory. You can reference them directly in your HTML. For example,
+if you have a file called "style.css" and your extension is called
+"Mageia", you would put it in "extensions/Mageia/web/style.css", and then
+you could link to it in HTML like:
+
+<link href="extensions/Mageia/web/style.css" rel="stylesheet" type="text/css">
diff --git a/extensions/Mageia/web/style.css b/extensions/Mageia/web/style.css
new file mode 100644
index 000000000..b43d174d8
--- /dev/null
+++ b/extensions/Mageia/web/style.css
@@ -0,0 +1,31 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This Source Code Form is "Incompatible With Secondary Licenses", as
+ * defined by the Mozilla Public License, v. 2.0.
+ */
+
+body {
+ margin: 0;
+ padding-top: 0;
+ background-color: #fff !important;
+}
+
+#create_account {
+ border: solid 1px;
+ background-color: #ffd386;
+ color: #9b1a1a;
+ padding: 1em;
+ text-align: center;
+ max-width: 30em;
+ margin: 1em auto;
+}
+
+#guided_form {
+ padding: 1em;
+}
+
+#guided_form .field_label {
+ white-space: nowrap;
+}