Package actions now have a separate box on the package details page. Add
a package merge link in that box.

Link leads to a new page (pkgmerge.php) that can be used to confirm package
merging. A separate page with confirmation is used to avoid CSRFs.

Signed-off-by: canyonknight <canyonkni...@gmail.com>
---
 web/html/index.php           |  3 +++
 web/html/pkgmerge.php        | 48 ++++++++++++++++++++++++++++++++++++++++++++
 web/template/pkg_details.php |  1 +
 3 files changed, 52 insertions(+)
 create mode 100644 web/html/pkgmerge.php

diff --git a/web/html/index.php b/web/html/index.php
index 3fe6338..12f79cb 100644
--- a/web/html/index.php
+++ b/web/html/index.php
@@ -46,6 +46,9 @@ if (isset($tokens[1]) && '/' . $tokens[1] == get_pkg_route()) 
{
                        case "delete":
                                include('pkgdel.php');
                                return;
+                       case "merge":
+                               include('pkgmerge.php');
+                               return;
                        }
 
                        if (isset($_COOKIE['AURSID'])) {
diff --git a/web/html/pkgmerge.php b/web/html/pkgmerge.php
new file mode 100644
index 0000000..687982e
--- /dev/null
+++ b/web/html/pkgmerge.php
@@ -0,0 +1,48 @@
+<?php
+
+set_include_path(get_include_path() . PATH_SEPARATOR . '../lib');
+
+include_once("aur.inc.php");
+include_once("pkgfuncs.inc.php");
+
+set_lang();
+check_sid();
+
+html_header(__("Package Merging"));
+
+$atype = "";
+
+if (isset($_COOKIE["AURSID"])) {
+       $atype = account_from_sid($_COOKIE["AURSID"]);
+}
+
+if ($atype == "Trusted User" || $atype == "Developer"): ?>
+<div class="box">
+       <h2><?php echo __('Merge Package: %s', htmlspecialchars($pkgname)) 
?></h2>
+       <p>
+               <?php echo __('Use this form to merge the package (%s%s%s) into 
another package. ',
+                       '<strong>', htmlspecialchars($pkgname), '</strong>'
+               );
+               echo __('Once the package has been merged it cannot be 
reversed. ');
+               echo __('Enter the package name you wish to merge the package 
into. ');
+               echo __('Select the checkbox to confirm action.') ?>
+       </p>
+       <form action="<?php echo get_uri('/packages/'); ?>" method="post">
+               <fieldset>
+                       <input type="hidden" name="IDs[<?php echo $pkgid ?>]" 
value="1" />
+                       <input type="hidden" name="ID" value="<?php echo $pkgid 
?>" />
+                       <input type="hidden" name="token" value="<?php echo 
htmlspecialchars($_COOKIE['AURSID']) ?>" />
+                       <p><label for="merge_Into" ><?php echo __("Merge 
into:") ?></label>
+                       <input type="text" id="merge_Into" name="merge_Into" 
/></p>
+                       <p><input type="checkbox" name="confirm_Delete" 
value="1" />
+                       <?php echo __("Confirm package merge") ?></p>
+                       <p><input type="submit" class="button" name="do_Delete" 
value="<?php echo __("Merge") ?>" /></p>
+               </fieldset>
+       </form>
+</div>
+
+<?php else:
+       print __("Only Trusted Users and Developers can merge packages.");
+endif;
+
+html_footer(AUR_VERSION);
diff --git a/web/template/pkg_details.php b/web/template/pkg_details.php
index dcc086b..182722d 100644
--- a/web/template/pkg_details.php
+++ b/web/template/pkg_details.php
@@ -56,6 +56,7 @@ $sources = package_sources($row["ID"]);
                                <?php endif; ?>
                                <?php if ($atype == "Trusted User" || $atype == 
"Developer"): ?>
                                <li><a href="<?= get_pkg_uri($row['Name']) . 
'delete/'; ?>"><?= __('Delete Package'); ?></a></li>
+                               <li><a href="<?= get_pkg_uri($row['Name']) . 
'merge/'; ?>"><?= __('Merge Package'); ?></a></li>
                                <?php endif; ?>
                                <?php endif; ?>
                        </ul>
-- 
1.7.12.1

Reply via email to