From 3e442a0f7d49fc8eed45002841d84d9080473cc9 Mon Sep 17 00:00:00 2001 From: Mark Weiman Date: Wed, 9 Nov 2016 18:54:37 -0500 Subject: Remove all usage of UNIX_TIMESTAMP in web interface UNIX_TIMESTAMP is not part of the SQL standard. Instead, all usage in the web interface is changed to use PHP's time() function. Signed-off-by: Mark Weiman Signed-off-by: Lukas Fleischer --- web/lib/acctfuncs.inc.php | 12 ++++++------ web/lib/aur.inc.php | 4 ++-- web/lib/pkgbasefuncs.inc.php | 14 +++++++------- web/lib/pkgreqfuncs.inc.php | 2 +- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/web/lib/acctfuncs.inc.php b/web/lib/acctfuncs.inc.php index 172b9621..6dcf91d1 100644 --- a/web/lib/acctfuncs.inc.php +++ b/web/lib/acctfuncs.inc.php @@ -543,7 +543,7 @@ function try_login() { $new_sid = new_sid(); $q = "INSERT INTO Sessions (UsersID, SessionID, LastUpdateTS)" - ." VALUES (" . $userID . ", '" . $new_sid . "', UNIX_TIMESTAMP())"; + ." VALUES (" . $userID . ", '" . $new_sid . "', " . strval(time()) . ")"; $result = $dbh->exec($q); /* Query will fail if $new_sid is not unique. */ @@ -560,7 +560,7 @@ function try_login() { return array('SID' => $new_sid, 'error' => $login_error); } - $q = "UPDATE Users SET LastLogin = UNIX_TIMESTAMP(), "; + $q = "UPDATE Users SET LastLogin = " . strval(time()) . ", "; $q.= "LastLoginIPAddress = " . $dbh->quote($_SERVER['REMOTE_ADDR']) . " "; $q.= "WHERE ID = $userID"; $dbh->exec($q); @@ -638,7 +638,7 @@ function valid_username($user) { function open_user_proposals($user) { $dbh = DB::connect(); $q = "SELECT * FROM TU_VoteInfo WHERE User = " . $dbh->quote($user) . " "; - $q.= "AND End > UNIX_TIMESTAMP()"; + $q.= "AND End > " . strval(time()); $result = $dbh->query($q); return ($result->fetchColumn() ? true : false); @@ -665,7 +665,7 @@ function add_tu_proposal($agenda, $user, $votelength, $quorum, $submitteruid) { $q = "INSERT INTO TU_VoteInfo (Agenda, User, Submitted, End, Quorum, "; $q.= "SubmitterID, ActiveTUs) VALUES "; $q.= "(" . $dbh->quote($agenda) . ", " . $dbh->quote($user) . ", "; - $q.= "UNIX_TIMESTAMP(), UNIX_TIMESTAMP() + " . $dbh->quote($votelength); + $q.= strval(time()) . ", " . strval(time()) . " + " . $dbh->quote($votelength); $q.= ", " . $dbh->quote($quorum) . ", " . $submitteruid . ", "; $q.= $active_tus . ")"; $result = $dbh->exec($q); @@ -978,7 +978,7 @@ function clear_expired_sessions() { $dbh = DB::connect(); $timeout = config_get_int('options', 'login_timeout'); - $q = "DELETE FROM Sessions WHERE LastUpdateTS < (UNIX_TIMESTAMP() - " . $timeout . ")"; + $q = "DELETE FROM Sessions WHERE LastUpdateTS < (" . strval(time()) . " - " . $timeout . ")"; $dbh->query($q); return; @@ -1086,7 +1086,7 @@ function last_votes_list() { $q = "SELECT UserID, MAX(VoteID) AS LastVote FROM TU_Votes, "; $q .= "TU_VoteInfo, Users WHERE TU_VoteInfo.ID = TU_Votes.VoteID AND "; - $q .= "TU_VoteInfo.End < UNIX_TIMESTAMP() AND "; + $q .= "TU_VoteInfo.End < " . strval(time()) . " AND "; $q .= "Users.ID = TU_Votes.UserID AND (Users.AccountTypeID = 2 OR Users.AccountTypeID = 4) "; $q .= "GROUP BY UserID ORDER BY LastVote DESC, UserName ASC"; $result = $dbh->query($q); diff --git a/web/lib/aur.inc.php b/web/lib/aur.inc.php index 9015ae8f..67dd1c14 100644 --- a/web/lib/aur.inc.php +++ b/web/lib/aur.inc.php @@ -38,7 +38,7 @@ function check_sid() { # the visitor is logged in, try and update the session # $dbh = DB::connect(); - $q = "SELECT LastUpdateTS, UNIX_TIMESTAMP() FROM Sessions "; + $q = "SELECT LastUpdateTS, " . strval(time()) . " FROM Sessions "; $q.= "WHERE SessionID = " . $dbh->quote($_COOKIE["AURSID"]); $result = $dbh->query($q); $row = $result->fetch(PDO::FETCH_NUM); @@ -77,7 +77,7 @@ function check_sid() { # This keeps 'remembered' sessions from being # overwritten. if ($last_update < time() + $timeout) { - $q = "UPDATE Sessions SET LastUpdateTS = UNIX_TIMESTAMP() "; + $q = "UPDATE Sessions SET LastUpdateTS = " . strval(time()) . " "; $q.= "WHERE SessionID = " . $dbh->quote($_COOKIE["AURSID"]); $dbh->exec($q); } diff --git a/web/lib/pkgbasefuncs.inc.php b/web/lib/pkgbasefuncs.inc.php index b0827844..4f102040 100644 --- a/web/lib/pkgbasefuncs.inc.php +++ b/web/lib/pkgbasefuncs.inc.php @@ -98,7 +98,7 @@ function pkgbase_add_comment($base_id, $uid, $comment) { $q = "INSERT INTO PackageComments "; $q.= "(PackageBaseID, UsersID, Comments, CommentTS) VALUES ("; $q.= intval($base_id) . ", " . $uid . ", "; - $q.= $dbh->quote($comment) . ", UNIX_TIMESTAMP())"; + $q.= $dbh->quote($comment) . ", " . strval(time()) . ")"; $dbh->exec($q); $comment_id = $dbh->lastInsertId(); @@ -144,7 +144,7 @@ function pkgbase_pin_comment($unpin=false) { $dbh = DB::connect(); $q = "UPDATE PackageComments "; if (!$unpin) { - $q.= "SET PinnedTS = UNIX_TIMESTAMP() "; + $q.= "SET PinnedTS = " . strval(time()) . " "; } else { $q.= "SET PinnedTS = 0 "; } @@ -395,7 +395,7 @@ function pkgbase_flag($base_ids, $comment) { $dbh = DB::connect(); $q = "UPDATE PackageBases SET "; - $q.= "OutOfDateTS = UNIX_TIMESTAMP(), FlaggerUID = " . $uid . ", "; + $q.= "OutOfDateTS = " . strval(time()) . ", FlaggerUID = " . $uid . ", "; $q.= "FlaggerComment = " . $dbh->quote($comment) . " "; $q.= "WHERE ID IN (" . implode(",", $base_ids) . ") "; $q.= "AND OutOfDateTS IS NULL"; @@ -749,12 +749,12 @@ function pkgbase_vote ($base_ids, $action=true) { $first = 0; $vote_ids = $pid; if ($action) { - $vote_clauses = "($uid, $pid, UNIX_TIMESTAMP())"; + $vote_clauses = "($uid, $pid, " . strval(time()) . ")"; } } else { $vote_ids .= ", $pid"; if ($action) { - $vote_clauses .= ", ($uid, $pid, UNIX_TIMESTAMP())"; + $vote_clauses .= ", ($uid, $pid, " . strval(time()) . ")"; } } } @@ -972,7 +972,7 @@ function pkgbase_delete_comment($undelete=false) { $q = "UPDATE PackageComments "; $q.= "SET DelUsersID = ".$uid.", "; - $q.= "DelTS = UNIX_TIMESTAMP() "; + $q.= "DelTS = " . strval(time()) . " "; $q.= "WHERE ID = ".intval($comment_id); $dbh->exec($q); return array(true, __("Comment has been deleted.")); @@ -1005,7 +1005,7 @@ function pkgbase_edit_comment($comment) { $q = "UPDATE PackageComments "; $q.= "SET EditedUsersID = ".$uid.", "; $q.= "Comments = ".$dbh->quote($comment).", "; - $q.= "EditedTS = UNIX_TIMESTAMP() "; + $q.= "EditedTS = " . strval(time()) . " "; $q.= "WHERE ID = ".intval($comment_id); $dbh->exec($q); return array(true, __("Comment has been edited.")); diff --git a/web/lib/pkgreqfuncs.inc.php b/web/lib/pkgreqfuncs.inc.php index 8ceac8df..e4556a3f 100644 --- a/web/lib/pkgreqfuncs.inc.php +++ b/web/lib/pkgreqfuncs.inc.php @@ -149,7 +149,7 @@ function pkgreq_file($ids, $type, $merge_into, $comments) { $q.= "UsersID, Comments, RequestTS) VALUES (" . $type_id . ", "; $q.= $base_id . ", " . $dbh->quote($pkgbase_name) . ", "; $q.= $dbh->quote($merge_into) . ", " . $uid . ", "; - $q.= $dbh->quote($comments) . ", UNIX_TIMESTAMP())"; + $q.= $dbh->quote($comments) . ", " . strval(time()) . ")"; $dbh->exec($q); $request_id = $dbh->lastInsertId(); -- cgit v1.2.3-24-g4f1b From 6502518d4e190b92ce771389d437a001687950d0 Mon Sep 17 00:00:00 2001 From: Mark Weiman Date: Wed, 9 Nov 2016 18:54:38 -0500 Subject: Fix DB.class.php to match config and include SQLite support In commit baf8a22 (git-interface: Support SQLite as database backend, 2016-08-03), conf/config.proto was changed so that dsn_prefix was changed to backend and this fixes this in web/lib/DB.class.php. Since SQLite's dsn is different, this adds a check of which backend is desired and will quit if MySQL or SQLite are not the backend selected. SQLite2 may be supported, but is untested and will trigger an error if used. Signed-off-by: Mark Weiman Signed-off-by: Lukas Fleischer --- web/lib/DB.class.php | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/web/lib/DB.class.php b/web/lib/DB.class.php index b538e0d3..dfdbbf96 100644 --- a/web/lib/DB.class.php +++ b/web/lib/DB.class.php @@ -17,20 +17,30 @@ class DB { public static function connect() { if (self::$dbh === null) { try { - $dsn_prefix = config_get('database', 'dsn_prefix'); + $backend = config_get('database', 'backend'); $host = config_get('database', 'host'); $socket = config_get('database', 'socket'); $name = config_get('database', 'name'); $user = config_get('database', 'user'); $password = config_get('database', 'password'); - $dsn = $dsn_prefix . - ':host=' . $host . - ';unix_socket=' . $socket . - ';dbname=' . $name; + if ($backend == "mysql") { + $dsn = $backend . + ':host=' . $host . + ';unix_socket=' . $socket . + ';dbname=' . $name; + + self::$dbh = new PDO($dsn, $user, $password); + self::$dbh->exec("SET NAMES 'utf8' COLLATE 'utf8_general_ci';"); + } else if ($backend == "sqlite") { + $dsn = $backend . + ":" . $name; + + self::$dbh = new PDO($dsn, null, null); + } else { + die("Error - " . $backend . " is not supported by aurweb"); + } - self::$dbh = new PDO($dsn, $user, $password); - self::$dbh->exec("SET NAMES 'utf8' COLLATE 'utf8_general_ci';"); } catch (PDOException $e) { die('Error - Could not connect to AUR database'); } -- cgit v1.2.3-24-g4f1b From ddbffcc4d57c5d27022e3f2a603c0b559bf6b05c Mon Sep 17 00:00:00 2001 From: Mark Weiman Date: Wed, 9 Nov 2016 21:48:30 -0500 Subject: Remove extraneous quote in translator.inc.php The quote is a leftover of legacy code and was meant to be removed by commit e171f6f (Migrate all DB code to use PDO, 2012-08-08). Signed-off-by: Mark Weiman Signed-off-by: Lukas Fleischer --- web/lib/translator.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/lib/translator.inc.php b/web/lib/translator.inc.php index d53bd530..58648c41 100644 --- a/web/lib/translator.inc.php +++ b/web/lib/translator.inc.php @@ -106,7 +106,7 @@ function set_lang() { $dbh = DB::connect(); $q = "SELECT LangPreference FROM Users, Sessions "; $q.= "WHERE Users.ID = Sessions.UsersID "; - $q.= "AND Sessions.SessionID = '"; + $q.= "AND Sessions.SessionID = "; $q.= $dbh->quote($_COOKIE["AURSID"]); $result = $dbh->query($q); -- cgit v1.2.3-24-g4f1b From d987d756b0cf9239425244b26b53d1756c384c4f Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Sun, 13 Nov 2016 15:33:02 +0100 Subject: test/setup.sh: Fix script paths The scripts were moved to aurweb/scripts/ in commit 3718860 (Make maintenance scripts installable, 2016-10-17). Update the paths in the test suite accordingly. Signed-off-by: Lukas Fleischer --- test/setup.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/test/setup.sh b/test/setup.sh index d02d2981..26873e8d 100644 --- a/test/setup.sh +++ b/test/setup.sh @@ -11,11 +11,11 @@ export PYTHONPATH GIT_AUTH="$TOPLEVEL/aurweb/git/auth.py" GIT_SERVE="$TOPLEVEL/aurweb/git/serve.py" GIT_UPDATE="$TOPLEVEL/aurweb/git/update.py" -MKPKGLISTS="$TOPLEVEL/scripts/mkpkglists.py" -TUVOTEREMINDER="$TOPLEVEL/scripts/tuvotereminder.py" -PKGMAINT="$TOPLEVEL/scripts/pkgmaint.py" -AURBLUP="$TOPLEVEL/scripts/aurblup.py" -NOTIFY="$TOPLEVEL/scripts/notify.py" +MKPKGLISTS="$TOPLEVEL/aurweb/scripts/mkpkglists.py" +TUVOTEREMINDER="$TOPLEVEL/aurweb/scripts/tuvotereminder.py" +PKGMAINT="$TOPLEVEL/aurweb/scripts/pkgmaint.py" +AURBLUP="$TOPLEVEL/aurweb/scripts/aurblup.py" +NOTIFY="$TOPLEVEL/aurweb/scripts/notify.py" # Create the configuration file and a dummy notification script. cat >config <<-EOF -- cgit v1.2.3-24-g4f1b From e9ac4b9b9ee797a1a0c09e9c3b14ae7d498ea8ea Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Sun, 13 Nov 2016 15:35:37 +0100 Subject: Send out-of-date notifications to co-maintainers Currently, only package maintainers receive out-of-date notifications for their packages. Add package base co-maintainers to the list of recipients for out-of-date notifications. Signed-off-by: Lukas Fleischer --- aurweb/scripts/notify.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/aurweb/scripts/notify.py b/aurweb/scripts/notify.py index ddd6e49b..8fdfeb9a 100755 --- a/aurweb/scripts/notify.py +++ b/aurweb/scripts/notify.py @@ -73,12 +73,15 @@ def get_user_email(conn, uid): return cur.fetchone()[0] -def get_maintainer_email(conn, pkgbase_id): - cur = conn.execute('SELECT Users.Email FROM Users ' + +def get_flag_recipients(conn, pkgbase_id): + cur = conn.execute('SELECT DISTINCT Users.Email FROM Users ' + + 'LEFT JOIN PackageComaintainers ' + + 'ON PackageComaintainers.UsersID = Users.ID ' + 'INNER JOIN PackageBases ' + - 'ON PackageBases.MaintainerUID = Users.ID WHERE ' + - 'PackageBases.ID = ?', [pkgbase_id]) - return cur.fetchone()[0] + 'ON PackageBases.MaintainerUID = Users.ID OR ' + + 'PackageBases.ID = PackageComaintainers.PackageBaseID ' + + 'WHERE PackageBases.ID = ?', [pkgbase_id]) + return [row[0] for row in cur.fetchall()] def get_recipients(conn, pkgbase_id, uid): @@ -247,7 +250,7 @@ def update(conn, uid, pkgbase_id): def flag(conn, uid, pkgbase_id): user = username_from_id(conn, uid) pkgbase = pkgbase_from_id(conn, pkgbase_id) - to = [get_maintainer_email(conn, pkgbase_id)] + to = get_flag_recipients(conn, pkgbase_id) text = get_flagger_comment(conn, pkgbase_id) user_uri = aur_location + '/account/' + user + '/' -- cgit v1.2.3-24-g4f1b From 9dd0d92d61462860089f479e0f0f6cd957a3ec04 Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Sun, 13 Nov 2016 15:39:55 +0100 Subject: Add tests for out-of-date notifications Make sure that out-of-date notifications are sent to package base maintainers as well as co-maintainers. Signed-off-by: Lukas Fleischer --- test/t2500-notify.sh | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100755 test/t2500-notify.sh diff --git a/test/t2500-notify.sh b/test/t2500-notify.sh new file mode 100755 index 00000000..1b209458 --- /dev/null +++ b/test/t2500-notify.sh @@ -0,0 +1,33 @@ +#!/bin/sh + +test_description='notify tests' + +. ./setup.sh + +test_expect_success 'Test out-of-date notifications.' ' + cat <<-EOD | sqlite3 aur.db && + INSERT INTO PackageBases (ID, Name, MaintainerUID, SubmittedTS, ModifiedTS) VALUES (1, "foobar", 1, 0, 0); + INSERT INTO PackageBases (ID, Name, MaintainerUID, SubmittedTS, ModifiedTS) VALUES (2, "foobar2", 2, 0, 0); + INSERT INTO PackageBases (ID, Name, MaintainerUID, SubmittedTS, ModifiedTS) VALUES (3, "foobar3", NULL, 0, 0); + INSERT INTO PackageBases (ID, Name, MaintainerUID, SubmittedTS, ModifiedTS) VALUES (4, "foobar4", 1, 0, 0); + INSERT INTO PackageComaintainers (PackageBaseID, UsersID, Priority) VALUES (1, 2, 1); + INSERT INTO PackageComaintainers (PackageBaseID, UsersID, Priority) VALUES (1, 4, 2); + INSERT INTO PackageComaintainers (PackageBaseID, UsersID, Priority) VALUES (2, 3, 1); + INSERT INTO PackageComaintainers (PackageBaseID, UsersID, Priority) VALUES (2, 5, 2); + INSERT INTO PackageComaintainers (PackageBaseID, UsersID, Priority) VALUES (3, 4, 1); + EOD + >sendmail.out && + "$NOTIFY" flag 1 1 && + cat <<-EOD >expected && + Subject: AUR Out-of-date Notification for foobar + To: tu@localhost + Subject: AUR Out-of-date Notification for foobar + To: user2@localhost + Subject: AUR Out-of-date Notification for foobar + To: user@localhost + EOD + grep "^\(Subject\|To\)" sendmail.out >sendmail.parts && + test_cmp sendmail.parts expected +' + +test_done -- cgit v1.2.3-24-g4f1b From fd36125a21ad6e4d665e1b2f4db784b073846d94 Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Mon, 12 Dec 2016 19:41:16 +0100 Subject: notify: Avoid EXCEPT in SQL statement Do not use the EXCEPT clause which is unsupported in MySQL. Instead, use a subquery which is standard-compliant and makes the query easier to read at the same time. Signed-off-by: Lukas Fleischer --- aurweb/scripts/notify.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/aurweb/scripts/notify.py b/aurweb/scripts/notify.py index 8fdfeb9a..69164fba 100755 --- a/aurweb/scripts/notify.py +++ b/aurweb/scripts/notify.py @@ -139,12 +139,10 @@ def get_request_recipients(conn, reqid): def get_tu_vote_reminder_recipients(conn, vote_id): - cur = conn.execute('SELECT Users.Email FROM Users ' + - 'WHERE AccountTypeID = 2 ' + - 'EXCEPT SELECT Users.Email FROM Users ' + - 'INNER JOIN TU_Votes ' + - 'ON TU_Votes.UserID = Users.ID ' + - 'WHERE TU_Votes.VoteID = ?', [vote_id]) + cur = conn.execute('SELECT Email FROM Users ' + + 'WHERE AccountTypeID = 2 AND ID NOT IN ' + + '(SELECT UserID FROM TU_Votes ' + + 'WHERE TU_Votes.VoteID = ?)', [vote_id]) return [row[0] for row in cur.fetchall()] -- cgit v1.2.3-24-g4f1b From ba89ad9b9f8b141683d7e661d951ae304cedf692 Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Tue, 20 Dec 2016 18:02:55 +0100 Subject: t1200: Test maintenance mode Add a test case to ensure that enabling the maintenance mode disables the SSH interface. Signed-off-by: Lukas Fleischer --- test/t1200-git-serve.sh | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/test/t1200-git-serve.sh b/test/t1200-git-serve.sh index 5054ce36..6fa6f957 100755 --- a/test/t1200-git-serve.sh +++ b/test/t1200-git-serve.sh @@ -20,6 +20,17 @@ test_expect_success 'Test help.' ' IFS=$save_IFS ' +test_expect_success 'Test maintenance mode.' ' + mv config config.old && + sed "s/^\(enable-maintenance = \)0$/\\11/" config.old >config && + SSH_ORIGINAL_COMMAND=help test_must_fail "$GIT_SERVE" 2>actual && + cat >expected <<-EOF && + The AUR is down due to maintenance. We will be back soon. + EOF + test_cmp expected actual && + mv config.old config +' + test_expect_success 'Test setup-repo and list-repos.' ' SSH_ORIGINAL_COMMAND="setup-repo foobar" AUR_USER=user \ "$GIT_SERVE" 2>&1 && -- cgit v1.2.3-24-g4f1b From e0d94f54c32f39f3709694b81f55a8ec46d11d5a Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Tue, 6 Dec 2016 20:20:26 +0100 Subject: git-serve: Add support for (un-)flagging packages Add support for flagging or unflagging packages from the SSH interface. The syntax is `flag ` resp. `unflag `. Signed-off-by: Lukas Fleischer --- aurweb/git/serve.py | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/aurweb/git/serve.py b/aurweb/git/serve.py index 476aea86..08c65417 100755 --- a/aurweb/git/serve.py +++ b/aurweb/git/serve.py @@ -269,6 +269,52 @@ def pkgbase_disown(pkgbase, user, privileged): conn.close() +def pkgbase_flag(pkgbase, user, comment): + pkgbase_id = pkgbase_from_name(pkgbase) + if not pkgbase_id: + die('{:s}: package base not found: {:s}'.format(action, pkgbase)) + + conn = aurweb.db.Connection() + + cur = conn.execute("SELECT ID FROM Users WHERE Username = ?", [user]) + userid = cur.fetchone()[0] + if userid == 0: + die('{:s}: unknown user: {:s}'.format(action, user)) + + now = int(time.time()) + conn.execute("UPDATE PackageBases SET " + + "OutOfDateTS = ?, FlaggerUID = ?, FlaggerComment = ? " + + "WHERE ID = ? AND OutOfDateTS IS NULL", + [now, userid, comment, pkgbase_id]) + + conn.commit() + + subprocess.Popen((notify_cmd, 'flag', str(userid), str(pkgbase_id))) + + +def pkgbase_unflag(pkgbase, user): + pkgbase_id = pkgbase_from_name(pkgbase) + if not pkgbase_id: + die('{:s}: package base not found: {:s}'.format(action, pkgbase)) + + conn = aurweb.db.Connection() + + cur = conn.execute("SELECT ID FROM Users WHERE Username = ?", [user]) + userid = cur.fetchone()[0] + if userid == 0: + die('{:s}: unknown user: {:s}'.format(action, user)) + + if user in pkgbase_get_comaintainers(pkgbase): + conn.execute("UPDATE PackageBases SET OutOfDateTS = NULL " + + "WHERE ID = ?", [pkgbase_id]) + else: + conn.execute("UPDATE PackageBases SET OutOfDateTS = NULL " + + "WHERE ID = ? AND (MaintainerUID = ? OR FlaggerUID = ?)", + [pkgbase_id, userid, userid]) + + conn.commit() + + def pkgbase_set_keywords(pkgbase, keywords): pkgbase_id = pkgbase_from_name(pkgbase) if not pkgbase_id: @@ -422,6 +468,28 @@ def main(): pkgbase = cmdargv[1] pkgbase_disown(pkgbase, user, privileged) + elif action == 'flag': + if len(cmdargv) < 2: + die_with_help("{:s}: missing repository name".format(action)) + if len(cmdargv) < 3: + die_with_help("{:s}: missing comment".format(action)) + if len(cmdargv) > 3: + die_with_help("{:s}: too many arguments".format(action)) + + pkgbase = cmdargv[1] + comment = cmdargv[2] + if len(comment) < 3: + die_with_help("{:s}: comment is too short".format(action)) + + pkgbase_flag(pkgbase, user, comment) + elif action == 'unflag': + if len(cmdargv) < 2: + die_with_help("{:s}: missing repository name".format(action)) + if len(cmdargv) > 2: + die_with_help("{:s}: too many arguments".format(action)) + + pkgbase = cmdargv[1] + pkgbase_unflag(pkgbase, user) elif action == 'set-comaintainers': if len(cmdargv) < 2: die_with_help("{:s}: missing repository name".format(action)) @@ -433,12 +501,14 @@ def main(): cmds = { "adopt ": "Adopt a package base.", "disown ": "Disown a package base.", + "flag ": "Flag a package base out-of-date.", "help": "Show this help message and exit.", "list-repos": "List all your repositories.", "restore ": "Restore a deleted package base.", "set-comaintainers [...]": "Set package base co-maintainers.", "set-keywords [...]": "Change package base keywords.", "setup-repo ": "Create a repository (deprecated).", + "unflag ": "Remove out-of-date flag from a package base.", "git-receive-pack": "Internal command used with Git.", "git-upload-pack": "Internal command used with Git.", } -- cgit v1.2.3-24-g4f1b From 6d8edafe778809698246019c165b7c20b1e0afdf Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Wed, 7 Dec 2016 08:58:34 +0100 Subject: t1200: Add tests for flag/unflag Signed-off-by: Lukas Fleischer --- test/t1200-git-serve.sh | 63 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/test/t1200-git-serve.sh b/test/t1200-git-serve.sh index 6fa6f957..d422c480 100755 --- a/test/t1200-git-serve.sh +++ b/test/t1200-git-serve.sh @@ -351,4 +351,67 @@ test_expect_success "Check whether package requests are closed when disowning." test_cmp actual expected ' +test_expect_success "Flag a package base out-of-date." ' + SSH_ORIGINAL_COMMAND="flag foobar Because." AUR_USER=user2 AUR_PRIVILEGED=0 \ + "$GIT_SERVE" 2>&1 && + cat >expected <<-EOF && + 1|Because. + EOF + echo "SELECT OutOfDateTS IS NOT NULL, FlaggerComment FROM PackageBases WHERE ID = 3;" | \ + sqlite3 aur.db >actual && + test_cmp expected actual +' + +test_expect_success "Unflag a package base as flagger." ' + SSH_ORIGINAL_COMMAND="unflag foobar" AUR_USER=user2 AUR_PRIVILEGED=0 \ + "$GIT_SERVE" 2>&1 && + cat >expected <<-EOF && + 0|Because. + EOF + echo "SELECT OutOfDateTS IS NOT NULL, FlaggerComment FROM PackageBases WHERE ID = 3;" | \ + sqlite3 aur.db >actual && + test_cmp expected actual +' + +test_expect_success "Unflag a package base as maintainer." ' + SSH_ORIGINAL_COMMAND="adopt foobar" AUR_USER=user AUR_PRIVILEGED=0 \ + "$GIT_SERVE" 2>&1 && + SSH_ORIGINAL_COMMAND="flag foobar Because." AUR_USER=user2 AUR_PRIVILEGED=0 \ + "$GIT_SERVE" 2>&1 && + SSH_ORIGINAL_COMMAND="unflag foobar" AUR_USER=user AUR_PRIVILEGED=0 \ + "$GIT_SERVE" 2>&1 && + cat >expected <<-EOF && + 0|Because. + EOF + echo "SELECT OutOfDateTS IS NOT NULL, FlaggerComment FROM PackageBases WHERE ID = 3;" | \ + sqlite3 aur.db >actual && + test_cmp expected actual +' + +test_expect_success "Unflag a package base as random user." ' + SSH_ORIGINAL_COMMAND="flag foobar Because." AUR_USER=user2 AUR_PRIVILEGED=0 \ + "$GIT_SERVE" 2>&1 && + SSH_ORIGINAL_COMMAND="unflag foobar" AUR_USER=user3 AUR_PRIVILEGED=0 \ + "$GIT_SERVE" 2>&1 && + cat >expected <<-EOF && + 1|Because. + EOF + echo "SELECT OutOfDateTS IS NOT NULL, FlaggerComment FROM PackageBases WHERE ID = 3;" | \ + sqlite3 aur.db >actual && + test_cmp expected actual +' + +test_expect_success "Flag using a comment which is too short." ' + SSH_ORIGINAL_COMMAND="unflag foobar" AUR_USER=user2 AUR_PRIVILEGED=0 \ + "$GIT_SERVE" 2>&1 && + SSH_ORIGINAL_COMMAND="flag foobar xx" AUR_USER=user2 AUR_PRIVILEGED=0 \ + test_must_fail "$GIT_SERVE" 2>&1 && + cat >expected <<-EOF && + 0|Because. + EOF + echo "SELECT OutOfDateTS IS NOT NULL, FlaggerComment FROM PackageBases WHERE ID = 3;" | \ + sqlite3 aur.db >actual && + test_cmp expected actual +' + test_done -- cgit v1.2.3-24-g4f1b From 8914a41db938194efc021f842c89d47ff6b522c9 Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Tue, 20 Dec 2016 17:56:09 +0100 Subject: git-serve: Use Python exceptions for error handling Make it easier to reuse the helper functions provided by git-serve from another Python script by throwing exceptions instead of terminating the program on errors. Signed-off-by: Lukas Fleischer --- aurweb/exceptions.py | 53 +++++++++++++++++ aurweb/git/serve.py | 157 +++++++++++++++++++++++++-------------------------- 2 files changed, 131 insertions(+), 79 deletions(-) create mode 100644 aurweb/exceptions.py diff --git a/aurweb/exceptions.py b/aurweb/exceptions.py new file mode 100644 index 00000000..5922b2df --- /dev/null +++ b/aurweb/exceptions.py @@ -0,0 +1,53 @@ +class AurwebException(Exception): + pass + + +class MaintenanceException(AurwebException): + pass + + +class PermissionDeniedException(AurwebException): + def __init__(self, user): + msg = 'permission denied: {:s}'.format(user) + super(PermissionDeniedException, self).__init__(msg) + + +class InvalidUserException(AurwebException): + def __init__(self, user): + msg = 'unknown user: {:s}'.format(user) + super(InvalidUserException, self).__init__(msg) + + +class InvalidPackageBaseException(AurwebException): + def __init__(self, pkgbase): + msg = 'package base not found: {:s}'.format(pkgbase) + super(InvalidPackageBaseException, self).__init__(msg) + + +class InvalidRepositoryNameException(AurwebException): + def __init__(self, pkgbase): + msg = 'invalid repository name: {:s}'.format(pkgbase) + super(InvalidRepositoryNameException, self).__init__(msg) + + +class PackageBaseExistsException(AurwebException): + def __init__(self, pkgbase): + msg = 'package base already exists: {:s}'.format(pkgbase) + super(PackageBaseExistsException, self).__init__(msg) + + +class InvalidReasonException(AurwebException): + def __init__(self, reason): + msg = 'invalid reason: {:s}'.format(reason) + super(InvalidReasonException, self).__init__(msg) + + +class InvalidCommentException(AurwebException): + def __init__(self, comment): + msg = 'comment is too short: {:s}'.format(comment) + super(InvalidCommentException, self).__init__(msg) + + +class InvalidArgumentsException(AurwebException): + def __init__(self, msg): + super(InvalidArgumentsException, self).__init__(msg) diff --git a/aurweb/git/serve.py b/aurweb/git/serve.py index 08c65417..e33fbeb4 100755 --- a/aurweb/git/serve.py +++ b/aurweb/git/serve.py @@ -9,6 +9,7 @@ import time import aurweb.config import aurweb.db +import aurweb.exceptions notify_cmd = aurweb.config.get('notifications', 'notify-cmd') @@ -40,7 +41,7 @@ def list_repos(user): cur = conn.execute("SELECT ID FROM Users WHERE Username = ?", [user]) userid = cur.fetchone()[0] if userid == 0: - die('{:s}: unknown user: {:s}'.format(action, user)) + raise aurweb.exceptions.InvalidUserException(user) cur = conn.execute("SELECT Name, PackagerUID FROM PackageBases " + "WHERE MaintainerUID = ?", [userid]) @@ -51,16 +52,16 @@ def list_repos(user): def create_pkgbase(pkgbase, user): if not re.match(repo_regex, pkgbase): - die('{:s}: invalid repository name: {:s}'.format(action, pkgbase)) + raise aurweb.exceptions.InvalidRepositoryNameException(pkgbase) if pkgbase_exists(pkgbase): - die('{:s}: package base already exists: {:s}'.format(action, pkgbase)) + raise aurweb.exceptions.PackageBaseExistsException(pkgbase) conn = aurweb.db.Connection() cur = conn.execute("SELECT ID FROM Users WHERE Username = ?", [user]) userid = cur.fetchone()[0] if userid == 0: - die('{:s}: unknown user: {:s}'.format(action, user)) + raise aurweb.exceptions.InvalidUserException(user) now = int(time.time()) cur = conn.execute("INSERT INTO PackageBases (Name, SubmittedTS, " + @@ -79,19 +80,19 @@ def create_pkgbase(pkgbase, user): def pkgbase_adopt(pkgbase, user, privileged): pkgbase_id = pkgbase_from_name(pkgbase) if not pkgbase_id: - die('{:s}: package base not found: {:s}'.format(action, pkgbase)) + raise aurweb.exceptions.InvalidPackageBaseException(pkgbase) conn = aurweb.db.Connection() cur = conn.execute("SELECT ID FROM PackageBases WHERE ID = ? AND " + "MaintainerUID IS NULL", [pkgbase_id]) if not privileged and not cur.fetchone(): - die('{:s}: permission denied: {:s}'.format(action, user)) + raise aurweb.exceptions.PermissionDeniedException(user) cur = conn.execute("SELECT ID FROM Users WHERE Username = ?", [user]) userid = cur.fetchone()[0] if userid == 0: - die('{:s}: unknown user: {:s}'.format(action, user)) + raise aurweb.exceptions.InvalidUserException(user) cur = conn.execute("UPDATE PackageBases SET MaintainerUID = ? " + "WHERE ID = ?", [userid, pkgbase_id]) @@ -127,10 +128,10 @@ def pkgbase_get_comaintainers(pkgbase): def pkgbase_set_comaintainers(pkgbase, userlist, user, privileged): pkgbase_id = pkgbase_from_name(pkgbase) if not pkgbase_id: - die('{:s}: package base not found: {:s}'.format(action, pkgbase)) + raise aurweb.exceptions.InvalidPackageBaseException(pkgbase) if not privileged and not pkgbase_has_full_access(pkgbase, user): - die('{:s}: permission denied: {:s}'.format(action, user)) + raise aurweb.exceptions.PermissionDeniedException(user) conn = aurweb.db.Connection() @@ -142,7 +143,7 @@ def pkgbase_set_comaintainers(pkgbase, userlist, user, privileged): [olduser]) userid = cur.fetchone()[0] if userid == 0: - die('{:s}: unknown user: {:s}'.format(action, user)) + raise aurweb.exceptions.InvalidUserException(user) uids_old.add(userid) uids_new = set() @@ -151,7 +152,7 @@ def pkgbase_set_comaintainers(pkgbase, userlist, user, privileged): [newuser]) userid = cur.fetchone()[0] if userid == 0: - die('{:s}: unknown user: {:s}'.format(action, user)) + raise aurweb.exceptions.InvalidUserException(user) uids_new.add(userid) uids_add = uids_new - uids_old @@ -196,10 +197,10 @@ def pkgreq_by_pkgbase(pkgbase_id, reqtype): return [row[0] for row in cur.fetchall()] -def pkgreq_close(reqid, reason, comments, autoclose=False): +def pkgreq_close(reqid, user, reason, comments, autoclose=False): statusmap = {'accepted': 2, 'rejected': 3} if reason not in statusmap: - die('{:s}: invalid reason: {:s}'.format(action, reason)) + raise aurweb.exceptions.InvalidReasonException(reason) status = statusmap[reason] conn = aurweb.db.Connection() @@ -210,7 +211,7 @@ def pkgreq_close(reqid, reason, comments, autoclose=False): cur = conn.execute("SELECT ID FROM Users WHERE Username = ?", [user]) userid = cur.fetchone()[0] if userid == 0: - die('{:s}: unknown user: {:s}'.format(action, user)) + raise aurweb.exceptions.InvalidUserException(user) conn.execute("UPDATE PackageRequests SET Status = ?, ClosureComment = ? " + "WHERE ID = ?", [status, comments, reqid]) @@ -224,18 +225,18 @@ def pkgreq_close(reqid, reason, comments, autoclose=False): def pkgbase_disown(pkgbase, user, privileged): pkgbase_id = pkgbase_from_name(pkgbase) if not pkgbase_id: - die('{:s}: package base not found: {:s}'.format(action, pkgbase)) + raise aurweb.exceptions.InvalidPackageBaseException(pkgbase) initialized_by_owner = pkgbase_has_full_access(pkgbase, user) if not privileged and not initialized_by_owner: - die('{:s}: permission denied: {:s}'.format(action, user)) + raise aurweb.exceptions.PermissionDeniedException(user) # TODO: Support disowning package bases via package request. # Scan through pending orphan requests and close them. comment = 'The user {:s} disowned the package.'.format(user) for reqid in pkgreq_by_pkgbase(pkgbase_id, 'orphan'): - pkgreq_close(reqid, 'accepted', comment, True) + pkgreq_close(reqid, user, 'accepted', comment, True) comaintainers = [] new_maintainer_userid = None @@ -262,7 +263,7 @@ def pkgbase_disown(pkgbase, user, privileged): cur = conn.execute("SELECT ID FROM Users WHERE Username = ?", [user]) userid = cur.fetchone()[0] if userid == 0: - die('{:s}: unknown user: {:s}'.format(action, user)) + raise aurweb.exceptions.InvalidUserException(user) subprocess.Popen((notify_cmd, 'disown', str(pkgbase_id), str(userid))) @@ -272,14 +273,16 @@ def pkgbase_disown(pkgbase, user, privileged): def pkgbase_flag(pkgbase, user, comment): pkgbase_id = pkgbase_from_name(pkgbase) if not pkgbase_id: - die('{:s}: package base not found: {:s}'.format(action, pkgbase)) + raise aurweb.exceptions.InvalidPackageBaseException(pkgbase) + if len(comment) < 3: + raise aurweb.exceptions.InvalidCommentException(comment) conn = aurweb.db.Connection() cur = conn.execute("SELECT ID FROM Users WHERE Username = ?", [user]) userid = cur.fetchone()[0] if userid == 0: - die('{:s}: unknown user: {:s}'.format(action, user)) + raise aurweb.exceptions.InvalidUserException(user) now = int(time.time()) conn.execute("UPDATE PackageBases SET " + @@ -295,14 +298,14 @@ def pkgbase_flag(pkgbase, user, comment): def pkgbase_unflag(pkgbase, user): pkgbase_id = pkgbase_from_name(pkgbase) if not pkgbase_id: - die('{:s}: package base not found: {:s}'.format(action, pkgbase)) + raise aurweb.exceptions.InvalidPackageBaseException(pkgbase) conn = aurweb.db.Connection() cur = conn.execute("SELECT ID FROM Users WHERE Username = ?", [user]) userid = cur.fetchone()[0] if userid == 0: - die('{:s}: unknown user: {:s}'.format(action, user)) + raise aurweb.exceptions.InvalidUserException(user) if user in pkgbase_get_comaintainers(pkgbase): conn.execute("UPDATE PackageBases SET OutOfDateTS = NULL " + @@ -318,7 +321,7 @@ def pkgbase_unflag(pkgbase, user): def pkgbase_set_keywords(pkgbase, keywords): pkgbase_id = pkgbase_from_name(pkgbase) if not pkgbase_id: - die('{:s}: package base not found: {:s}'.format(action, pkgbase)) + raise aurweb.exceptions.InvalidPackageBaseException(pkgbase) conn = aurweb.db.Connection() @@ -377,29 +380,33 @@ def usage(cmds): exit(0) -def main(): - user = os.environ.get('AUR_USER') - privileged = (os.environ.get('AUR_PRIVILEGED', '0') == '1') - ssh_cmd = os.environ.get('SSH_ORIGINAL_COMMAND') - ssh_client = os.environ.get('SSH_CLIENT') +def checkarg_atleast(cmdargv, *argdesc): + if len(cmdargv) - 1 < len(argdesc): + msg = 'missing {:s}'.format(argdesc[len(cmdargv) - 1]) + raise aurweb.exceptions.InvalidArgumentsException(msg) + + +def checkarg_atmost(cmdargv, *argdesc): + if len(cmdargv) - 1 > len(argdesc): + raise aurweb.exceptions.InvalidArgumentsException('too many arguments') - if not ssh_cmd: - die_with_help("Interactive shell is disabled.") - cmdargv = shlex.split(ssh_cmd) - action = cmdargv[0] - remote_addr = ssh_client.split(' ')[0] if ssh_client else None +def checkarg(cmdargv, *argdesc): + checkarg_atleast(cmdargv, *argdesc) + checkarg_atmost(cmdargv, *argdesc) + + +def serve(action, cmdargv, user, privileged, remote_addr): if enable_maintenance: if remote_addr not in maintenance_exc: - die("The AUR is down due to maintenance. We will be back soon.") + raise aurweb.exceptions.MaintenanceException if action == 'git' and cmdargv[1] in ('upload-pack', 'receive-pack'): action = action + '-' + cmdargv[1] del cmdargv[1] if action == 'git-upload-pack' or action == 'git-receive-pack': - if len(cmdargv) < 2: - die_with_help("{:s}: missing path".format(action)) + checkarg(cmdargv, 'path') path = cmdargv[1].rstrip('/') if not path.startswith('/'): @@ -408,11 +415,11 @@ def main(): path = path + '.git' pkgbase = path[1:-4] if not re.match(repo_regex, pkgbase): - die('{:s}: invalid repository name: {:s}'.format(action, pkgbase)) + raise aurweb.exceptions.InvalidRepositoryNameException(pkgbase) if action == 'git-receive-pack' and pkgbase_exists(pkgbase): if not privileged and not pkgbase_has_write_access(pkgbase, user): - die('{:s}: permission denied: {:s}'.format(action, user)) + raise aurweb.exceptions.PermissionDeniedException(user) os.environ["AUR_USER"] = user os.environ["AUR_PKGBASE"] = pkgbase @@ -420,79 +427,48 @@ def main(): cmd = action + " '" + repo_path + "'" os.execl(git_shell_cmd, git_shell_cmd, '-c', cmd) elif action == 'set-keywords': - if len(cmdargv) < 2: - die_with_help("{:s}: missing repository name".format(action)) + checkarg(cmdargv, 'repository name') pkgbase_set_keywords(cmdargv[1], cmdargv[2:]) elif action == 'list-repos': - if len(cmdargv) > 1: - die_with_help("{:s}: too many arguments".format(action)) + checkarg(cmdargv) list_repos(user) elif action == 'setup-repo': - if len(cmdargv) < 2: - die_with_help("{:s}: missing repository name".format(action)) - if len(cmdargv) > 2: - die_with_help("{:s}: too many arguments".format(action)) + checkarg(cmdargv, 'repository name') warn('{:s} is deprecated. ' 'Use `git push` to create new repositories.'.format(action)) create_pkgbase(cmdargv[1], user) elif action == 'restore': - if len(cmdargv) < 2: - die_with_help("{:s}: missing repository name".format(action)) - if len(cmdargv) > 2: - die_with_help("{:s}: too many arguments".format(action)) + checkarg(cmdargv, 'repository name') pkgbase = cmdargv[1] - if not re.match(repo_regex, pkgbase): - die('{:s}: invalid repository name: {:s}'.format(action, pkgbase)) - - if pkgbase_exists(pkgbase): - die('{:s}: package base exists: {:s}'.format(action, pkgbase)) create_pkgbase(pkgbase, user) os.environ["AUR_USER"] = user os.environ["AUR_PKGBASE"] = pkgbase os.execl(git_update_cmd, git_update_cmd, 'restore') elif action == 'adopt': - if len(cmdargv) < 2: - die_with_help("{:s}: missing repository name".format(action)) - if len(cmdargv) > 2: - die_with_help("{:s}: too many arguments".format(action)) + checkarg(cmdargv, 'repository name') pkgbase = cmdargv[1] pkgbase_adopt(pkgbase, user, privileged) elif action == 'disown': - if len(cmdargv) < 2: - die_with_help("{:s}: missing repository name".format(action)) - if len(cmdargv) > 2: - die_with_help("{:s}: too many arguments".format(action)) + checkarg(cmdargv, 'repository name') pkgbase = cmdargv[1] pkgbase_disown(pkgbase, user, privileged) elif action == 'flag': - if len(cmdargv) < 2: - die_with_help("{:s}: missing repository name".format(action)) - if len(cmdargv) < 3: - die_with_help("{:s}: missing comment".format(action)) - if len(cmdargv) > 3: - die_with_help("{:s}: too many arguments".format(action)) + checkarg(cmdargv, 'repository name', 'comment') pkgbase = cmdargv[1] comment = cmdargv[2] - if len(comment) < 3: - die_with_help("{:s}: comment is too short".format(action)) - pkgbase_flag(pkgbase, user, comment) elif action == 'unflag': - if len(cmdargv) < 2: - die_with_help("{:s}: missing repository name".format(action)) - if len(cmdargv) > 2: - die_with_help("{:s}: too many arguments".format(action)) + checkarg(cmdargv, 'repository name') pkgbase = cmdargv[1] pkgbase_unflag(pkgbase, user) elif action == 'set-comaintainers': - if len(cmdargv) < 2: - die_with_help("{:s}: missing repository name".format(action)) + checkarg_atleast(cmdargv, 'repository name') pkgbase = cmdargv[1] userlist = cmdargv[2:] @@ -514,7 +490,30 @@ def main(): } usage(cmds) else: - die_with_help("invalid command: {:s}".format(action)) + msg = 'invalid command: {:s}'.format(action) + raise aurweb.exceptions.InvalidArgumentsException(msg) + + +def main(): + user = os.environ.get('AUR_USER') + privileged = (os.environ.get('AUR_PRIVILEGED', '0') == '1') + ssh_cmd = os.environ.get('SSH_ORIGINAL_COMMAND') + ssh_client = os.environ.get('SSH_CLIENT') + + if not ssh_cmd: + die_with_help("Interactive shell is disabled.") + cmdargv = shlex.split(ssh_cmd) + action = cmdargv[0] + remote_addr = ssh_client.split(' ')[0] if ssh_client else None + + try: + serve(action, cmdargv, user, privileged, remote_addr) + except aurweb.exceptions.MaintenanceException: + die("The AUR is down due to maintenance. We will be back soon.") + except aurweb.exceptions.InvalidArgumentsException as e: + die_with_help('{:s}: {}'.format(action, e)) + except aurweb.exceptions.AurwebException as e: + die('{:s}: {}'.format(action, e)) if __name__ == '__main__': -- cgit v1.2.3-24-g4f1b From eb4ba5cfdbaab8d649406571f6c0c89869303d20 Mon Sep 17 00:00:00 2001 From: Alex Muller Date: Tue, 3 Jan 2017 23:03:35 +0000 Subject: Increase minimum password length to 8 characters There are 95 printable ASCII characters which with a minimum length of 4 gives 95^4 or 81 million possible passwords. Increasing the minimum length to 8 increases the number of possible passwords by a factor of about 10^7. Relates to FS#52297. Signed-off-by: Alex Muller Signed-off-by: Lukas Fleischer --- conf/config.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/config.proto b/conf/config.proto index 96fad807..63e24583 100644 --- a/conf/config.proto +++ b/conf/config.proto @@ -9,7 +9,7 @@ password = aur [options] username_min_len = 3 username_max_len = 16 -passwd_min_len = 4 +passwd_min_len = 8 default_lang = en sql_debug = 0 max_sessions_per_user = 8 -- cgit v1.2.3-24-g4f1b From ecfa54e4928b61aeeedb43b341afa0bd802dea09 Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Mon, 9 Jan 2017 01:14:29 +0100 Subject: INSTALL: Refer to the AUR backend as aurweb Signed-off-by: Lukas Fleischer --- INSTALL | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/INSTALL b/INSTALL index 95cac4cf..bad80de3 100644 --- a/INSTALL +++ b/INSTALL @@ -1,7 +1,7 @@ Setup on Arch Linux =================== -1) Clone the AUR project: +1) Clone the aurweb project: $ cd /srv/http/ $ git clone git://git.archlinux.org/aurweb.git @@ -33,7 +33,7 @@ Setup on Arch Linux 3) Copy conf/config.proto to /etc/aurweb/config and adjust the configuration (pay attention to disable_http_login, enable_maintenance and aur_location). -4) Create a new MySQL database and a user and import the AUR SQL schema: +4) Create a new MySQL database and a user and import the aurweb SQL schema: $ mysql -uaur -p AUR Date: Tue, 17 Jan 2017 08:49:41 +0100 Subject: Document garbage collection settings for Git Add a note to the Git/SSH interface documentation that we recommend to disable automatic garbage collection and use a maintenance script to cleanup and optimize the Git repository instead. Also, add a reference to the Git/SSH interface documentation to the Git repository setup instructions in INSTALL. Signed-off-by: Lukas Fleischer --- INSTALL | 3 +++ doc/git-interface.txt | 11 +++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/INSTALL b/INSTALL index bad80de3..a472b277 100644 --- a/INSTALL +++ b/INSTALL @@ -57,6 +57,9 @@ Setup on Arch Linux # ln -s /usr/local/bin/aurweb-git-update hooks/update # chown -R aur . + It is recommended to read doc/git-interface.txt for more information on the + administration of the package Git repository. + 8) Configure sshd(8) for the AUR. Add the following lines at the end of your sshd_config(5) and restart the sshd. Note that OpenSSH 6.9 or newer is needed! diff --git a/doc/git-interface.txt b/doc/git-interface.txt index 14ff0c5d..475fda66 100644 --- a/doc/git-interface.txt +++ b/doc/git-interface.txt @@ -81,8 +81,8 @@ the GIT_NAMESPACE environment variable accordingly before forwarding a request. An example configuration for nginx and fcgiwrap can be found in the INSTALL instructions in the top-level directory. -Further Configuration ---------------------- +Further Configuration and Administration +---------------------------------------- When using Git namespaces, Git advertises refs outside the current namespace as so-called "have" lines. This is normally used to reduce traffic but it has the @@ -94,3 +94,10 @@ In order to omit these advertisements, one can add the strings "^refs/", "!refs/" and "!HEAD" to the transfer.hideRefs configuration setting. Note that the order of these patterns is important ("^refs/" must come first) and that Git 2.7 or newer is required for them to work. + +Since garbage collection always affects all objects (from all namespaces), it +is also recommended to disable automatic garbage collection by setting +receive.autogc to false. Remember to periodically run `git gc` manually or +setup a maintenance script which initiates the garbage collection if you follow +this advice. For gc.pruneExpire, we recommend "3.months.ago", such that commits +that became unreachable by TU intervention are kept for a while. -- cgit v1.2.3-24-g4f1b From 608c48309084e4048d8226c3f7e363b240248040 Mon Sep 17 00:00:00 2001 From: Mark Weiman Date: Fri, 20 Jan 2017 01:16:39 -0500 Subject: Add user set timezones Currently, aurweb displays all dates and times in UTC time. This patch adds a capability for each logged in user to set their preferred timezone. Implements FS#48729. Signed-off-by: Mark Weiman Signed-off-by: Lukas Fleischer --- conf/config.proto | 1 + schema/aur-schema.sql | 1 + upgrading/4.5.0.txt | 5 +++ web/html/account.php | 3 ++ web/html/register.php | 2 ++ web/html/voters.php | 2 +- web/lib/acctfuncs.inc.php | 27 +++++++++++++--- web/lib/aur.inc.php | 3 ++ web/lib/pkgreqfuncs.inc.php | 2 +- web/lib/timezone.inc.php | 60 ++++++++++++++++++++++++++++++++++++ web/template/account_edit_form.php | 15 +++++++++ web/template/flag_comment.php | 2 +- web/template/pkg_comments.php | 6 ++-- web/template/pkg_details.php | 6 ++-- web/template/pkgbase_details.php | 6 ++-- web/template/pkgreq_results.php | 2 +- web/template/stats/updates_table.php | 2 +- web/template/tu_details.php | 4 +-- web/template/tu_list.php | 4 +-- 19 files changed, 130 insertions(+), 23 deletions(-) create mode 100644 upgrading/4.5.0.txt create mode 100644 web/lib/timezone.inc.php diff --git a/conf/config.proto b/conf/config.proto index 63e24583..431697e2 100644 --- a/conf/config.proto +++ b/conf/config.proto @@ -11,6 +11,7 @@ username_min_len = 3 username_max_len = 16 passwd_min_len = 8 default_lang = en +default_timezone = UTC sql_debug = 0 max_sessions_per_user = 8 login_timeout = 7200 diff --git a/schema/aur-schema.sql b/schema/aur-schema.sql index 30209bd8..13e3fd94 100644 --- a/schema/aur-schema.sql +++ b/schema/aur-schema.sql @@ -32,6 +32,7 @@ CREATE TABLE Users ( ResetKey CHAR(32) NOT NULL DEFAULT '', RealName VARCHAR(64) NOT NULL DEFAULT '', LangPreference VARCHAR(6) NOT NULL DEFAULT 'en', + Timezone VARCHAR(32) NOT NULL DEFAULT 'UTC', Homepage TEXT NULL DEFAULT NULL, IRCNick VARCHAR(32) NOT NULL DEFAULT '', PGPKey VARCHAR(40) NULL DEFAULT NULL, diff --git a/upgrading/4.5.0.txt b/upgrading/4.5.0.txt new file mode 100644 index 00000000..6c4ce807 --- /dev/null +++ b/upgrading/4.5.0.txt @@ -0,0 +1,5 @@ +1. Add Timezone column to Users: + +--- +ALTER TABLE Users ADD COLUMN Timezone VARCHAR(32) NOT NULL DEFAULT 'UTC'; +--- \ No newline at end of file diff --git a/web/html/account.php b/web/html/account.php index 2892f046..91e57038 100644 --- a/web/html/account.php +++ b/web/html/account.php @@ -34,6 +34,7 @@ if ($action == "UpdateAccount") { in_request("U"), in_request("T"), in_request("S"), in_request("E"), in_request("H"), in_request("P"), in_request("C"), in_request("R"), in_request("L"), + in_request("TZ"), in_request("HP"), in_request("I"), in_request("K"), in_request("PK"), in_request("J"), in_request("CN"), in_request("UN"), in_request("ON"), in_request("ID"), @@ -89,6 +90,7 @@ if (isset($_COOKIE["AURSID"])) { "", $row["RealName"], $row["LangPreference"], + $row["Timezone"], $row["Homepage"], $row["IRCNick"], $row["PGPKey"], @@ -141,6 +143,7 @@ if (isset($_COOKIE["AURSID"])) { in_request("C"), in_request("R"), in_request("L"), + in_request("TZ"), in_request("HP"), in_request("I"), in_request("K"), diff --git a/web/html/register.php b/web/html/register.php index 6c6d52e6..843fea97 100644 --- a/web/html/register.php +++ b/web/html/register.php @@ -31,6 +31,7 @@ if (in_request("Action") == "NewAccount") { '', in_request("R"), in_request("L"), + in_request("TZ"), in_request("HP"), in_request("I"), in_request("K"), @@ -53,6 +54,7 @@ if (in_request("Action") == "NewAccount") { '', in_request("R"), in_request("L"), + in_request("TZ"), in_request("HP"), in_request("I"), in_request("K"), diff --git a/web/html/voters.php b/web/html/voters.php index 8833be1e..997186d8 100644 --- a/web/html/voters.php +++ b/web/html/voters.php @@ -20,7 +20,7 @@ if (has_credential(CRED_PKGBASE_LIST_VOTERS)):
  • 0): ?> - () + ()
  • diff --git a/web/lib/acctfuncs.inc.php b/web/lib/acctfuncs.inc.php index 6dcf91d1..b7288143 100644 --- a/web/lib/acctfuncs.inc.php +++ b/web/lib/acctfuncs.inc.php @@ -1,5 +1,4 @@ quote($salt); $R = $dbh->quote($R); $L = $dbh->quote($L); + $TZ = $dbh->quote($TZ); $HP = $dbh->quote($HP); $I = $dbh->quote($I); $K = $dbh->quote(str_replace(" ", "", $K)); $q = "INSERT INTO Users (AccountTypeID, Suspended, "; $q.= "InactivityTS, Username, Email, Passwd, Salt, "; - $q.= "RealName, LangPreference, Homepage, IRCNick, PGPKey) "; - $q.= "VALUES (1, 0, 0, $U, $E, $P, $salt, $R, $L, "; + $q.= "RealName, LangPreference, Timezone, Homepage, IRCNick, PGPKey) "; + $q.= "VALUES (1, 0, 0, $U, $E, $P, $salt, $R, $L, $TZ "; $q.= "$HP, $I, $K)"; $result = $dbh->exec($q); if (!$result) { @@ -347,6 +356,7 @@ function process_account_form($TYPE,$A,$U="",$T="",$S="",$E="",$H="",$P="",$C="" } $q.= ", RealName = " . $dbh->quote($R); $q.= ", LangPreference = " . $dbh->quote($L); + $q.= ", Timezone = " . $dbh->quote($TZ); $q.= ", Homepage = " . $dbh->quote($HP); $q.= ", IRCNick = " . $dbh->quote($I); $q.= ", PGPKey = " . $dbh->quote(str_replace(" ", "", $K)); @@ -359,6 +369,13 @@ function process_account_form($TYPE,$A,$U="",$T="",$S="",$E="",$H="",$P="",$C="" $ssh_key_result = account_set_ssh_keys($UID, $ssh_keys, $ssh_fingerprints); + if (isset($_COOKIE["AURTZ"]) && ($_COOKIE["AURTZ"] != $TZ)) { + /* set new cookie for timezone */ + $timeout = intval(config_get("options", "persistent_cookie_timeout")); + $cookie_time = time() + $timeout; + setcookie("AURTZ", $TZ, $cookie_time, "/"); + } + if ($result === false || $ssh_key_result === false) { $message = __("No changes were made to the account, %s%s%s.", "", htmlspecialchars($U,ENT_QUOTES), ""); diff --git a/web/lib/aur.inc.php b/web/lib/aur.inc.php index 67dd1c14..94a38499 100644 --- a/web/lib/aur.inc.php +++ b/web/lib/aur.inc.php @@ -18,6 +18,9 @@ include_once("cachefuncs.inc.php"); include_once("confparser.inc.php"); include_once("credentials.inc.php"); +include_once('timezone.inc.php'); +set_tz(); + /** * Check if a visitor is logged in * diff --git a/web/lib/pkgreqfuncs.inc.php b/web/lib/pkgreqfuncs.inc.php index e4556a3f..7a171ed4 100644 --- a/web/lib/pkgreqfuncs.inc.php +++ b/web/lib/pkgreqfuncs.inc.php @@ -172,7 +172,7 @@ function pkgreq_file($ids, $type, $merge_into, $comments) { * maintainer will not be included in the Cc list of the * request notification email. */ - $out_of_date_time = gmdate("Y-m-d", intval($details["OutOfDateTS"])); + $out_of_date_time = date("Y-m-d", intval($details["OutOfDateTS"])); pkgreq_close($request_id, "accepted", "The package base has been flagged out-of-date " . "since " . $out_of_date_time . ".", true); diff --git a/web/lib/timezone.inc.php b/web/lib/timezone.inc.php new file mode 100644 index 00000000..9fb24331 --- /dev/null +++ b/web/lib/timezone.inc.php @@ -0,0 +1,60 @@ + Displayed Description + */ +function generate_timezone_list() { + $php_timezones = DateTimeZone::listIdentifiers(DateTimeZone::ALL); + + $offsets = array(); + foreach ($php_timezones as $timezone) { + $tz = new DateTimeZone($timezone); + $offset = $tz->getOffset(new DateTime()); + $offsets[$timezone] = "(UTC" . ($offset < 0 ? "-" : "+") . gmdate("H:i", abs($offset)) . + ") " . $timezone; + } + + asort($offsets); + return $offsets; +} + +/** + * Set the timezone for the user. + * + * @return null + */ +function set_tz() { + $timezones = generate_timezone_list(); + $update_cookie = false; + + if (isset($_COOKIE["AURTZ"])) { + $timezone = $_COOKIE["AURTZ"]; + } elseif (isset($_COOKIE["AURSID"])) { + $dbh = DB::connect(); + $q = "SELECT Timezone FROM Users, Sessions "; + $q .= "WHERE Users.ID = Sessions.UsersID "; + $q .= "AND Sessions.SessionID = "; + $q .= $dbh->quote($_COOKIE["AURSID"]); + $result = $dbh->query($q); + + if ($result) { + $timezone = $result->fetchColumn(0); + } + + $update_cookie = true; + } + + if (!isset($timezone) || !array_key_exists($timezone, $timezones)) { + $timezone = config_get("options", "default_timezone"); + } + date_default_timezone_set($timezone); + + if ($update_cookie) { + $timeout = intval(config_get("options", "persistent_cookie_timeout")); + $cookie_time = time() + $timeout; + setcookie("AURTZ", $timezone, $cookie_time, "/"); + } +} diff --git a/web/template/account_edit_form.php b/web/template/account_edit_form.php index 19821a0b..17c9d14e 100644 --- a/web/template/account_edit_form.php +++ b/web/template/account_edit_form.php @@ -126,6 +126,21 @@ print ""."\n"; } } +?> + +

    +

    + +

    diff --git a/web/template/flag_comment.php b/web/template/flag_comment.php index 36af43ea..e8855fe8 100644 --- a/web/template/flag_comment.php +++ b/web/template/flag_comment.php @@ -5,7 +5,7 @@ ', html_format_username($message['Username']), '', '', htmlspecialchars($pkgbase_name), '', - '', gmdate('Y-m-d', $message['OutOfDateTS']), ''); ?> + '', date('Y-m-d', $message['OutOfDateTS']), ''); ?> ', htmlspecialchars($pkgbase_name), ''); ?> diff --git a/web/template/pkg_comments.php b/web/template/pkg_comments.php index a28e41b0..fee1898c 100644 --- a/web/template/pkg_comments.php +++ b/web/template/pkg_comments.php @@ -17,7 +17,7 @@ if (!isset($count)) { ('; if ($row['DelUserName']) { $user_fmtd = html_format_username($row['DelUserName']); @@ -40,7 +40,7 @@ if (!isset($count)) { } $heading .= ')'; } elseif ($uid && $is_edited) { - $date_fmtd = gmdate('Y-m-d H:i', $row['EditedTS']); + $date_fmtd = date('Y-m-d H:i', $row['EditedTS']); $heading .= ' ('; if ($row['EditUserName']) { $user_fmtd = html_format_username($row['EditUserName']); diff --git a/web/template/pkg_details.php b/web/template/pkg_details.php index b9c66d47..32693948 100644 --- a/web/template/pkg_details.php +++ b/web/template/pkg_details.php @@ -34,9 +34,9 @@ $msg = __('unknown'); $license = empty($row['License']) ? $msg : $row['License']; # Print the timestamps for last updates -$updated_time = ($row["ModifiedTS"] == 0) ? $msg : gmdate("Y-m-d H:i", intval($row["ModifiedTS"])); -$submitted_time = ($row["SubmittedTS"] == 0) ? $msg : gmdate("Y-m-d H:i", intval($row["SubmittedTS"])); -$out_of_date_time = ($row["OutOfDateTS"] == 0) ? $msg : gmdate("Y-m-d", intval($row["OutOfDateTS"])); +$updated_time = ($row["ModifiedTS"] == 0) ? $msg : date("Y-m-d H:i", intval($row["ModifiedTS"])); +$submitted_time = ($row["SubmittedTS"] == 0) ? $msg : date("Y-m-d H:i", intval($row["SubmittedTS"])); +$out_of_date_time = ($row["OutOfDateTS"] == 0) ? $msg : date("Y-m-d", intval($row["OutOfDateTS"])); $lics = pkg_licenses($row["ID"]); $grps = pkg_groups($row["ID"]); diff --git a/web/template/pkgbase_details.php b/web/template/pkgbase_details.php index 1012c4e6..fe769596 100644 --- a/web/template/pkgbase_details.php +++ b/web/template/pkgbase_details.php @@ -31,9 +31,9 @@ $popularity = $row['Popularity']; $msg = __('unknown'); # Print the timestamps for last updates -$updated_time = ($row["ModifiedTS"] == 0) ? $msg : gmdate("Y-m-d H:i", intval($row["ModifiedTS"])); -$submitted_time = ($row["SubmittedTS"] == 0) ? $msg : gmdate("Y-m-d H:i", intval($row["SubmittedTS"])); -$out_of_date_time = ($row["OutOfDateTS"] == 0) ? $msg : gmdate("Y-m-d", intval($row["OutOfDateTS"])); +$updated_time = ($row["ModifiedTS"] == 0) ? $msg : date("Y-m-d H:i", intval($row["ModifiedTS"])); +$submitted_time = ($row["SubmittedTS"] == 0) ? $msg : date("Y-m-d H:i", intval($row["SubmittedTS"])); +$out_of_date_time = ($row["OutOfDateTS"] == 0) ? $msg : date("Y-m-d", intval($row["OutOfDateTS"])); $pkgs = pkgbase_get_pkgnames($base_id); diff --git a/web/template/pkgreq_results.php b/web/template/pkgreq_results.php index b27963be..426c7f08 100644 --- a/web/template/pkgreq_results.php +++ b/web/template/pkgreq_results.php @@ -67,7 +67,7 @@ - class="flagged"> + class="flagged"> diff --git a/web/template/stats/updates_table.php b/web/template/stats/updates_table.php index 580583b5..b4c6215f 100644 --- a/web/template/stats/updates_table.php +++ b/web/template/stats/updates_table.php @@ -10,7 +10,7 @@ " title=""> - + diff --git a/web/template/tu_details.php b/web/template/tu_details.php index 38f6c0d0..d739060d 100644 --- a/web/template/tu_details.php +++ b/web/template/tu_details.php @@ -39,10 +39,10 @@ if ($yes > $active_tus / 2) {
    - +
    : - +
    : diff --git a/web/template/tu_list.php b/web/template/tu_list.php index b3e1073a..b7253f98 100644 --- a/web/template/tu_list.php +++ b/web/template/tu_list.php @@ -38,8 +38,8 @@ - - + + -- cgit v1.2.3-24-g4f1b From 7ff50701903017b3b97ca3ca176e923769cdad43 Mon Sep 17 00:00:00 2001 From: Mark Weiman Date: Fri, 20 Jan 2017 01:16:40 -0500 Subject: Update cookie for language setting when editing user information Currently, when a user edits their language setting from the edit user form, the changes aren't reflected until the user either lets the original cookie expire, deletes the cookie manually, or changes the language a second time via the dropdown menu on the top of the page. This patch makes the language cookie get updated when it is changed from the edit user form. Signed-off-by: Mark Weiman Signed-off-by: Lukas Fleischer --- web/lib/acctfuncs.inc.php | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/web/lib/acctfuncs.inc.php b/web/lib/acctfuncs.inc.php index b7288143..08dbc671 100644 --- a/web/lib/acctfuncs.inc.php +++ b/web/lib/acctfuncs.inc.php @@ -376,6 +376,13 @@ function process_account_form($TYPE,$A,$U="",$T="",$S="",$E="",$H="",$P="",$C="" setcookie("AURTZ", $TZ, $cookie_time, "/"); } + if (isset($_COOKIE["AURLANG"]) && ($_COOKIE["AURLANG"] != $L)) { + /* set new cookie for language */ + $timeout = intval(config_get("options", "persistent_cookie_timeout")); + $cookie_time = time() + $timeout; + setcookie("AURLANG", $L, $cookie_time, "/"); + } + if ($result === false || $ssh_key_result === false) { $message = __("No changes were made to the account, %s%s%s.", "", htmlspecialchars($U,ENT_QUOTES), ""); -- cgit v1.2.3-24-g4f1b From fc2ecff949ced53849e0ae10923d02d74b895c32 Mon Sep 17 00:00:00 2001 From: Mark Weiman Date: Fri, 20 Jan 2017 01:16:41 -0500 Subject: account.php: Reformat process_account_form() call Modify the call to process_account_form() to only having one parameter per line. Signed-off-by: Mark Weiman Signed-off-by: Lukas Fleischer --- web/html/account.php | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/web/html/account.php b/web/html/account.php index 91e57038..0b757612 100644 --- a/web/html/account.php +++ b/web/html/account.php @@ -31,13 +31,25 @@ if ($action == "UpdateAccount") { /* Update the details for the existing account */ list($success, $update_account_message) = process_account_form( "edit", "UpdateAccount", - in_request("U"), in_request("T"), in_request("S"), - in_request("E"), in_request("H"), in_request("P"), - in_request("C"), in_request("R"), in_request("L"), + in_request("U"), + in_request("T"), + in_request("S"), + in_request("E"), + in_request("H"), + in_request("P"), + in_request("C"), + in_request("R"), + in_request("L"), in_request("TZ"), - in_request("HP"), in_request("I"), in_request("K"), - in_request("PK"), in_request("J"), in_request("CN"), - in_request("UN"), in_request("ON"), in_request("ID"), + in_request("HP"), + in_request("I"), + in_request("K"), + in_request("PK"), + in_request("J"), + in_request("CN"), + in_request("UN"), + in_request("ON"), + in_request("ID"), $row["Username"]); } } -- cgit v1.2.3-24-g4f1b From 7ee2fddcca6ef924ccfd10e6de9a799a9eb1abeb Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Mon, 23 Jan 2017 09:07:45 +0100 Subject: git-serve: Add support for (un-)voting Add support for voting for packages and removing votes from the SSH interface. The syntax is `vote ` resp. `unvote `. Signed-off-by: Lukas Fleischer --- aurweb/exceptions.py | 12 ++++++++++ aurweb/git/serve.py | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+) diff --git a/aurweb/exceptions.py b/aurweb/exceptions.py index 5922b2df..639f9e09 100644 --- a/aurweb/exceptions.py +++ b/aurweb/exceptions.py @@ -48,6 +48,18 @@ class InvalidCommentException(AurwebException): super(InvalidCommentException, self).__init__(msg) +class AlreadyVotedException(AurwebException): + def __init__(self, comment): + msg = 'already voted for package base: {:s}'.format(comment) + super(AlreadyVotedException, self).__init__(msg) + + +class NotVotedException(AurwebException): + def __init__(self, comment): + msg = 'missing vote for package base: {:s}'.format(comment) + super(NotVotedException, self).__init__(msg) + + class InvalidArgumentsException(AurwebException): def __init__(self, msg): super(InvalidArgumentsException, self).__init__(msg) diff --git a/aurweb/git/serve.py b/aurweb/git/serve.py index e33fbeb4..4c03e3b6 100755 --- a/aurweb/git/serve.py +++ b/aurweb/git/serve.py @@ -318,6 +318,57 @@ def pkgbase_unflag(pkgbase, user): conn.commit() +def pkgbase_vote(pkgbase, user): + pkgbase_id = pkgbase_from_name(pkgbase) + if not pkgbase_id: + raise aurweb.exceptions.InvalidPackageBaseException(pkgbase) + + conn = aurweb.db.Connection() + + cur = conn.execute("SELECT ID FROM Users WHERE Username = ?", [user]) + userid = cur.fetchone()[0] + if userid == 0: + raise aurweb.exceptions.InvalidUserException(user) + + cur = conn.execute("SELECT COUNT(*) FROM PackageVotes " + + "WHERE UsersID = ? AND PackageBaseID = ?", + [userid, pkgbase_id]) + if cur.fetchone()[0] > 0: + raise aurweb.exceptions.AlreadyVotedException(pkgbase) + + now = int(time.time()) + conn.execute("INSERT INTO PackageVotes (UsersID, PackageBaseID, VoteTS) " + + "VALUES (?, ?, ?)", [userid, pkgbase_id, now]) + conn.execute("UPDATE PackageBases SET NumVotes = NumVotes + 1 " + + "WHERE ID = ?", [pkgbase_id]) + conn.commit() + + +def pkgbase_unvote(pkgbase, user): + pkgbase_id = pkgbase_from_name(pkgbase) + if not pkgbase_id: + raise aurweb.exceptions.InvalidPackageBaseException(pkgbase) + + conn = aurweb.db.Connection() + + cur = conn.execute("SELECT ID FROM Users WHERE Username = ?", [user]) + userid = cur.fetchone()[0] + if userid == 0: + raise aurweb.exceptions.InvalidUserException(user) + + cur = conn.execute("SELECT COUNT(*) FROM PackageVotes " + + "WHERE UsersID = ? AND PackageBaseID = ?", + [userid, pkgbase_id]) + if cur.fetchone()[0] == 0: + raise aurweb.exceptions.NotVotedException(pkgbase) + + conn.execute("DELETE FROM PackageVotes WHERE UsersID = ? AND " + + "PackageBaseID = ?", [userid, pkgbase_id]) + conn.execute("UPDATE PackageBases SET NumVotes = NumVotes - 1 " + + "WHERE ID = ?", [pkgbase_id]) + conn.commit() + + def pkgbase_set_keywords(pkgbase, keywords): pkgbase_id = pkgbase_from_name(pkgbase) if not pkgbase_id: @@ -467,6 +518,16 @@ def serve(action, cmdargv, user, privileged, remote_addr): pkgbase = cmdargv[1] pkgbase_unflag(pkgbase, user) + elif action == 'vote': + checkarg(cmdargv, 'repository name') + + pkgbase = cmdargv[1] + pkgbase_vote(pkgbase, user) + elif action == 'unvote': + checkarg(cmdargv, 'repository name') + + pkgbase = cmdargv[1] + pkgbase_unvote(pkgbase, user) elif action == 'set-comaintainers': checkarg_atleast(cmdargv, 'repository name') @@ -485,6 +546,8 @@ def serve(action, cmdargv, user, privileged, remote_addr): "set-keywords [...]": "Change package base keywords.", "setup-repo ": "Create a repository (deprecated).", "unflag ": "Remove out-of-date flag from a package base.", + "unvote ": "Remove vote from a package base.", + "vote ": "Vote for a package base.", "git-receive-pack": "Internal command used with Git.", "git-upload-pack": "Internal command used with Git.", } -- cgit v1.2.3-24-g4f1b From 0b09f200c50cd1e6737f6225b35f0af9d6f8bed8 Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Mon, 23 Jan 2017 09:10:04 +0100 Subject: t1200: Add tests for vote/unvote Signed-off-by: Lukas Fleischer --- test/t1200-git-serve.sh | 66 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/test/t1200-git-serve.sh b/test/t1200-git-serve.sh index d422c480..f986b625 100755 --- a/test/t1200-git-serve.sh +++ b/test/t1200-git-serve.sh @@ -414,4 +414,70 @@ test_expect_success "Flag using a comment which is too short." ' test_cmp expected actual ' +test_expect_success "Vote for a package base." ' + SSH_ORIGINAL_COMMAND="vote foobar" AUR_USER=user AUR_PRIVILEGED=0 \ + "$GIT_SERVE" 2>&1 && + cat >expected <<-EOF && + 3|1 + EOF + echo "SELECT PackageBaseID, UsersID FROM PackageVotes;" | \ + sqlite3 aur.db >actual && + test_cmp expected actual && + cat >expected <<-EOF && + 1 + EOF + echo "SELECT NumVotes FROM PackageBases WHERE Name = \"foobar\";" | \ + sqlite3 aur.db >actual && + test_cmp expected actual +' + +test_expect_success "Vote for a package base twice." ' + SSH_ORIGINAL_COMMAND="vote foobar" AUR_USER=user AUR_PRIVILEGED=0 \ + test_must_fail "$GIT_SERVE" 2>&1 && + cat >expected <<-EOF && + 3|1 + EOF + echo "SELECT PackageBaseID, UsersID FROM PackageVotes;" | \ + sqlite3 aur.db >actual && + test_cmp expected actual && + cat >expected <<-EOF && + 1 + EOF + echo "SELECT NumVotes FROM PackageBases WHERE Name = \"foobar\";" | \ + sqlite3 aur.db >actual && + test_cmp expected actual +' + +test_expect_success "Remove vote from a package base." ' + SSH_ORIGINAL_COMMAND="unvote foobar" AUR_USER=user AUR_PRIVILEGED=0 \ + "$GIT_SERVE" 2>&1 && + cat >expected <<-EOF && + EOF + echo "SELECT PackageBaseID, UsersID FROM PackageVotes;" | \ + sqlite3 aur.db >actual && + test_cmp expected actual && + cat >expected <<-EOF && + 0 + EOF + echo "SELECT NumVotes FROM PackageBases WHERE Name = \"foobar\";" | \ + sqlite3 aur.db >actual && + test_cmp expected actual +' + +test_expect_success "Try to remove the vote again." ' + SSH_ORIGINAL_COMMAND="unvote foobar" AUR_USER=user AUR_PRIVILEGED=0 \ + test_must_fail "$GIT_SERVE" 2>&1 && + cat >expected <<-EOF && + EOF + echo "SELECT PackageBaseID, UsersID FROM PackageVotes;" | \ + sqlite3 aur.db >actual && + test_cmp expected actual && + cat >expected <<-EOF && + 0 + EOF + echo "SELECT NumVotes FROM PackageBases WHERE Name = \"foobar\";" | \ + sqlite3 aur.db >actual && + test_cmp expected actual +' + test_done -- cgit v1.2.3-24-g4f1b From 1ed847118222c72c1f97c8217bfce6d29bb99f51 Mon Sep 17 00:00:00 2001 From: Mark Weiman Date: Mon, 23 Jan 2017 00:18:22 -0500 Subject: Show co-maintainers SSH clone URL on package base page On package base pages, if a co-maintainer visits, only the read-only URL is displayed which is inconsistent with how the individual packages of a package base's pages displays them. This adds the SSH clone URL to the package base's page for co-maintainers to see. Implements FS#52675. Signed-off-by: Mark Weiman Signed-off-by: Lukas Fleischer --- web/template/pkgbase_details.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/template/pkgbase_details.php b/web/template/pkgbase_details.php index fe769596..e368872e 100644 --- a/web/template/pkgbase_details.php +++ b/web/template/pkgbase_details.php @@ -50,7 +50,7 @@ $base_uri = get_pkgbase_uri($row['Name']); () - +
    -- cgit v1.2.3-24-g4f1b From b8df10e22732fd678a6d30e2bf4ac5eb14cf898e Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Wed, 25 Jan 2017 18:40:38 +0100 Subject: config.proto: Update path to the notification script As of commit 3718860 (Make maintenance scripts installable, 2016-10-17), the notification script is installed as aurweb-notify. Update the sample configuration file accordingly. Signed-off-by: Lukas Fleischer --- conf/config.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/config.proto b/conf/config.proto index 431697e2..c1be2816 100644 --- a/conf/config.proto +++ b/conf/config.proto @@ -34,7 +34,7 @@ enable-maintenance = 1 maintenance-exceptions = 127.0.0.1 [notifications] -notify-cmd = /srv/http/aurweb/scripts/notify.py +notify-cmd = /usr/local/bin/aurweb-notify sendmail = /usr/bin/sendmail sender = notify@aur.archlinux.org reply-to = noreply@aur.archlinux.org -- cgit v1.2.3-24-g4f1b From f8916d7e9bda129a57143d769f7eb1f596614c80 Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Wed, 25 Jan 2017 08:22:54 +0100 Subject: git-serve: Save last SSH login date and IP address In addition to logging the last login date and IP address on the web interface, store the time stamp and IP address of the last SSH login in the database. This simplifies user banning if one of the new SSH interface features, such as the voting mechanism implemented in 7ee2fdd (git-serve: Add support for (un-)voting, 2017-01-23), is abused. Signed-off-by: Lukas Fleischer --- aurweb/git/serve.py | 13 +++++++++++++ schema/aur-schema.sql | 2 ++ upgrading/4.5.0.txt | 10 +++++++++- 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/aurweb/git/serve.py b/aurweb/git/serve.py index 4c03e3b6..cfd4910d 100755 --- a/aurweb/git/serve.py +++ b/aurweb/git/serve.py @@ -410,6 +410,18 @@ def pkgbase_has_full_access(pkgbase, user): return cur.fetchone()[0] > 0 +def log_ssh_login(user, remote_addr): + conn = aurweb.db.Connection() + + now = int(time.time()) + conn.execute("UPDATE Users SET LastSSHLogin = ?, " + + "LastSSHLoginIPAddress = ? WHERE Username = ?", + [now, remote_addr, user]) + + conn.commit() + conn.close() + + def die(msg): sys.stderr.write("{:s}\n".format(msg)) exit(1) @@ -451,6 +463,7 @@ def serve(action, cmdargv, user, privileged, remote_addr): if enable_maintenance: if remote_addr not in maintenance_exc: raise aurweb.exceptions.MaintenanceException + log_ssh_login(user, remote_addr) if action == 'git' and cmdargv[1] in ('upload-pack', 'receive-pack'): action = action + '-' + cmdargv[1] diff --git a/schema/aur-schema.sql b/schema/aur-schema.sql index 13e3fd94..b0663eb5 100644 --- a/schema/aur-schema.sql +++ b/schema/aur-schema.sql @@ -38,6 +38,8 @@ CREATE TABLE Users ( PGPKey VARCHAR(40) NULL DEFAULT NULL, LastLogin BIGINT UNSIGNED NOT NULL DEFAULT 0, LastLoginIPAddress VARCHAR(45) NULL DEFAULT NULL, + LastSSHLogin BIGINT UNSIGNED NOT NULL DEFAULT 0, + LastSSHLoginIPAddress VARCHAR(45) NULL DEFAULT NULL, InactivityTS BIGINT UNSIGNED NOT NULL DEFAULT 0, RegistrationTS TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, CommentNotify TINYINT(1) NOT NULL DEFAULT 1, diff --git a/upgrading/4.5.0.txt b/upgrading/4.5.0.txt index 6c4ce807..5cf0888c 100644 --- a/upgrading/4.5.0.txt +++ b/upgrading/4.5.0.txt @@ -2,4 +2,12 @@ --- ALTER TABLE Users ADD COLUMN Timezone VARCHAR(32) NOT NULL DEFAULT 'UTC'; ---- \ No newline at end of file +--- + +2. Add LastSSHLogin and LastSSHLoginIPAddress columns to the Users table: + +--- +ALTER TABLE Users + ADD COLUMN LastSSHLogin BIGINT UNSIGNED NOT NULL DEFAULT 0, + ADD COLUMN LastSSHLoginIPAddress VARCHAR(45) NULL DEFAULT NULL; +--- -- cgit v1.2.3-24-g4f1b From 70db022aa8287c57a2ee03328ae893ba8b83b192 Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Wed, 25 Jan 2017 08:37:48 +0100 Subject: Store banned IP addresses as plain text Inspired by commit 32c8d0c (Store last login address as plain text, 2016-03-13). Signed-off-by: Lukas Fleischer --- schema/aur-schema.sql | 2 +- upgrading/4.5.0.txt | 7 +++++++ web/lib/acctfuncs.inc.php | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/schema/aur-schema.sql b/schema/aur-schema.sql index b0663eb5..99f90834 100644 --- a/schema/aur-schema.sql +++ b/schema/aur-schema.sql @@ -376,7 +376,7 @@ CREATE TABLE IF NOT EXISTS TU_Votes ( -- Malicious user banning -- CREATE TABLE Bans ( - IPAddress INTEGER UNSIGNED NOT NULL DEFAULT 0, + IPAddress VARCHAR(45) NULL DEFAULT NULL, BanTS TIMESTAMP NOT NULL, PRIMARY KEY (IPAddress) ) ENGINE = InnoDB; diff --git a/upgrading/4.5.0.txt b/upgrading/4.5.0.txt index 5cf0888c..fb0a2993 100644 --- a/upgrading/4.5.0.txt +++ b/upgrading/4.5.0.txt @@ -11,3 +11,10 @@ ALTER TABLE Users ADD COLUMN LastSSHLogin BIGINT UNSIGNED NOT NULL DEFAULT 0, ADD COLUMN LastSSHLoginIPAddress VARCHAR(45) NULL DEFAULT NULL; --- + +3. Convert the IPAddress column of the Bans table to VARCHAR(45). If the table + contains any active bans, convert them accordingly: + +---- +ALTER TABLE Bans MODIFY IPAddress VARCHAR(45) NULL DEFAULT NULL; +---- diff --git a/web/lib/acctfuncs.inc.php b/web/lib/acctfuncs.inc.php index 08dbc671..b3cf6122 100644 --- a/web/lib/acctfuncs.inc.php +++ b/web/lib/acctfuncs.inc.php @@ -621,7 +621,7 @@ function try_login() { function is_ipbanned() { $dbh = DB::connect(); - $q = "SELECT * FROM Bans WHERE IPAddress = " . $dbh->quote(ip2long($_SERVER['REMOTE_ADDR'])); + $q = "SELECT * FROM Bans WHERE IPAddress = " . $dbh->quote($_SERVER['REMOTE_ADDR']); $result = $dbh->query($q); return ($result->fetchColumn() ? true : false); -- cgit v1.2.3-24-g4f1b From 0e34dd6542afecc0890f77fbcb497fb5d8690d5b Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Wed, 25 Jan 2017 08:47:16 +0100 Subject: git-serve: Implement IP address bans Currently, IP address bans affect the web interface only. Make sure they are honored in the SSH interface as well. Signed-off-by: Lukas Fleischer --- aurweb/exceptions.py | 4 ++++ aurweb/git/serve.py | 12 ++++++++++++ 2 files changed, 16 insertions(+) diff --git a/aurweb/exceptions.py b/aurweb/exceptions.py index 639f9e09..664db68c 100644 --- a/aurweb/exceptions.py +++ b/aurweb/exceptions.py @@ -6,6 +6,10 @@ class MaintenanceException(AurwebException): pass +class BannedException(AurwebException): + pass + + class PermissionDeniedException(AurwebException): def __init__(self, user): msg = 'permission denied: {:s}'.format(user) diff --git a/aurweb/git/serve.py b/aurweb/git/serve.py index cfd4910d..44cce75d 100755 --- a/aurweb/git/serve.py +++ b/aurweb/git/serve.py @@ -422,6 +422,14 @@ def log_ssh_login(user, remote_addr): conn.close() +def bans_match(remote_addr): + conn = aurweb.db.Connection() + + cur = conn.execute("SELECT COUNT(*) FROM Bans WHERE IPAddress = ?", + [remote_addr]) + return cur.fetchone()[0] > 0 + + def die(msg): sys.stderr.write("{:s}\n".format(msg)) exit(1) @@ -463,6 +471,8 @@ def serve(action, cmdargv, user, privileged, remote_addr): if enable_maintenance: if remote_addr not in maintenance_exc: raise aurweb.exceptions.MaintenanceException + if bans_match(remote_addr): + raise aurweb.exceptions.BannedException log_ssh_login(user, remote_addr) if action == 'git' and cmdargv[1] in ('upload-pack', 'receive-pack'): @@ -586,6 +596,8 @@ def main(): serve(action, cmdargv, user, privileged, remote_addr) except aurweb.exceptions.MaintenanceException: die("The AUR is down due to maintenance. We will be back soon.") + except aurweb.exceptions.BannedException: + die("The SSH interface is disabled for your IP address.") except aurweb.exceptions.InvalidArgumentsException as e: die_with_help('{:s}: {}'.format(action, e)) except aurweb.exceptions.AurwebException as e: -- cgit v1.2.3-24-g4f1b From 33095b3292bdb2fa5561bf257c86004eeddcfae9 Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Wed, 25 Jan 2017 18:27:06 +0100 Subject: t1200: Test IP address log and bans Signed-off-by: Lukas Fleischer --- test/setup.sh | 8 ++++++++ test/t1200-git-serve.sh | 21 +++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/test/setup.sh b/test/setup.sh index 26873e8d..2959a4e6 100644 --- a/test/setup.sh +++ b/test/setup.sh @@ -98,6 +98,12 @@ AUTH_KEYTYPE_MISSING=sha-rsa AUTH_KEYTEXT_MISSING=AAAAB3NzaC1yc2EAAAADAQABAAABAQC9UTpssBunuTBCT3KFtv+yb+cN0VmI2C9O9U7wHlkEZWxNBK8is6tnDHXBxRuvRk0LHILkTidLLFX22ZF0+TFgSz7uuEvGZVNpa2Fn2+vKJJYMvZEvb/f8VHF5/Jddt21VOyu23royTN/duiT7WIZdCtEmq5C9Y43NPfsB8FbUc+FVSYT2Lq7g1/bzvFF+CZxwCrGjC3qC7p3pshICfFR8bbWgRN33ClxIQ7MvkcDtfNu38dLotJqdfEa7NdQgba5/S586f1A4OWKc/mQJFyTaGhRBxw/cBSjqonvO0442VYLHFxlrTHoUunKyOJ8+BJfKgjWmfENC9ESY3mL/IEn5 AUTH_FINGERPRINT_MISSING=SHA256:uB0B+30r2WA1TDMUmFcaEBjosjnFGzn33XFhiyvTL9w +# Setup fake SSH environment. +SSH_CLIENT='1.2.3.4 1234 22' +SSH_CONNECTION='1.2.3.4 1234 4.3.2.1 22' +SSH_TTY=/dev/pts/0 +export SSH_CLIENT SSH_CONNECTION SSH_TTY + # Initialize the test database. rm -f aur.db sed \ @@ -122,6 +128,8 @@ echo "INSERT INTO Users (ID, UserName, Passwd, Email, AccountTypeID) VALUES (9, echo "INSERT INTO SSHPubKeys (UserID, Fingerprint, PubKey) VALUES (1, '$AUTH_FINGERPRINT_USER', '$AUTH_KEYTYPE_USER $AUTH_KEYTEXT_USER');" | sqlite3 aur.db echo "INSERT INTO SSHPubKeys (UserID, Fingerprint, PubKey) VALUES (2, '$AUTH_FINGERPRINT_TU', '$AUTH_KEYTYPE_TU $AUTH_KEYTEXT_TU');" | sqlite3 aur.db +echo "INSERT INTO Bans (IPAddress, BanTS) VALUES ('1.3.3.7', 0);" | sqlite3 aur.db + echo "INSERT INTO PackageBlacklist (Name) VALUES ('forbidden');" | sqlite3 aur.db echo "INSERT INTO OfficialProviders (Name, Repo, Provides) VALUES ('official', 'core', 'official');" | sqlite3 aur.db diff --git a/test/t1200-git-serve.sh b/test/t1200-git-serve.sh index f986b625..07383aff 100755 --- a/test/t1200-git-serve.sh +++ b/test/t1200-git-serve.sh @@ -31,6 +31,27 @@ test_expect_success 'Test maintenance mode.' ' mv config.old config ' +test_expect_success 'Test IP address logging.' ' + SSH_ORIGINAL_COMMAND=help AUR_USER=user "$GIT_SERVE" 2>actual && + cat >expected <<-EOF && + 1.2.3.4 + EOF + echo "SELECT LastSSHLoginIPAddress FROM Users WHERE UserName = \"user\";" | \ + sqlite3 aur.db >actual && + test_cmp expected actual +' + +test_expect_success 'Test IP address bans.' ' + SSH_CLIENT_ORIG="$SSH_CLIENT" && + SSH_CLIENT="1.3.3.7 1337 22" && + SSH_ORIGINAL_COMMAND=help test_must_fail "$GIT_SERVE" 2>actual && + cat >expected <<-EOF && + The SSH interface is disabled for your IP address. + EOF + test_cmp expected actual && + SSH_CLIENT="$SSH_CLIENT_ORIG" +' + test_expect_success 'Test setup-repo and list-repos.' ' SSH_ORIGINAL_COMMAND="setup-repo foobar" AUR_USER=user \ "$GIT_SERVE" 2>&1 && -- cgit v1.2.3-24-g4f1b From 6cb8c041bc2264d02f7c86545170f45cc92d6caf Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Thu, 26 Jan 2017 09:02:46 +0100 Subject: Implement co-maintainer search Add an option to filter package search results by co-maintainer. Partly fixes FS#45591. Signed-off-by: Lukas Fleischer --- web/lib/pkgfuncs.inc.php | 8 ++++++++ web/template/pkg_search_form.php | 1 + 2 files changed, 9 insertions(+) diff --git a/web/lib/pkgfuncs.inc.php b/web/lib/pkgfuncs.inc.php index 4b0fdbac..8ca88352 100644 --- a/web/lib/pkgfuncs.inc.php +++ b/web/lib/pkgfuncs.inc.php @@ -670,6 +670,7 @@ function pkg_display_details($id=0, $row, $SID="") { * B - package base name (exact match) * k - package keyword(s) * m - package maintainer's username + * c - package co-maintainer's username * s - package submitter's username * do_Orphans - boolean. whether to search packages * without a maintainer @@ -746,6 +747,13 @@ function pkg_search_page($SID="") { /* Search by maintainer. */ $q_where .= "AND Users.Username = " . $dbh->quote($_GET['K']) . " "; } + elseif (isset($_GET["SeB"]) && $_GET["SeB"] == "c") { + /* Search by co-maintainer. */ + $q_where .= "AND EXISTS (SELECT * FROM PackageComaintainers "; + $q_where .= "INNER JOIN Users ON Users.ID = PackageComaintainers.UsersID "; + $q_where .= "WHERE PackageComaintainers.PackageBaseID = PackageBases.ID "; + $q_where .= "AND Users.Username = " . $dbh->quote($_GET['K']) . ")"; + } elseif (isset($_GET["SeB"]) && $_GET["SeB"] == "s") { /* Search by submitter. */ $q_where .= "AND SubmitterUID = " . intval(uid_from_username($_GET['K'])) . " "; diff --git a/web/template/pkg_search_form.php b/web/template/pkg_search_form.php index 795a796e..688cfcce 100644 --- a/web/template/pkg_search_form.php +++ b/web/template/pkg_search_form.php @@ -9,6 +9,7 @@ $searchby = array( 'B' => __('Exact Package Base'), 'k' => __('Keywords'), 'm' => __('Maintainer'), + 'c' => __('Co-maintainer'), 's' => __('Submitter') ); -- cgit v1.2.3-24-g4f1b From ac745f656d4c8d19cdcf8d843d6855c6b45a3974 Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Fri, 3 Feb 2017 23:52:31 +0100 Subject: Split out the search form from pkg_search_page() This makes it easier to display search results without showing the search form. Signed-off-by: Lukas Fleischer --- web/html/packages.php | 3 ++- web/lib/pkgfuncs.inc.php | 2 -- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/web/html/packages.php b/web/html/packages.php index 1b892781..8fd3266a 100644 --- a/web/html/packages.php +++ b/web/html/packages.php @@ -80,8 +80,9 @@ $(document).ready(function() { fetch(PDO::FETCH_ASSOC)) { -- cgit v1.2.3-24-g4f1b From 3b4c6e72a966c5344976990ed3214f2e184c90ad Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Sat, 4 Feb 2017 00:04:22 +0100 Subject: Refactor pkg_search_page() * Pass search parameters using an associative array instead of $_GET. * Add a boolean parameter to enable and disable headers/footers. Signed-off-by: Lukas Fleischer --- web/html/packages.php | 4 +- web/lib/pkgfuncs.inc.php | 130 +++++++++++++----------------------- web/template/pkg_search_results.php | 8 ++- 3 files changed, 55 insertions(+), 87 deletions(-) diff --git a/web/html/packages.php b/web/html/packages.php index 8fd3266a..ec6fc757 100644 --- a/web/html/packages.php +++ b/web/html/packages.php @@ -99,9 +99,9 @@ if (isset($pkgid)) { $_GET['SO'] = 'd'; } if (isset($_COOKIE["AURSID"])) { - pkg_search_page($_COOKIE["AURSID"]); + pkg_search_page($_GET, true, $_COOKIE["AURSID"]); } else { - pkg_search_page(); + pkg_search_page($_GET, true); } } diff --git a/web/lib/pkgfuncs.inc.php b/web/lib/pkgfuncs.inc.php index 8a5cf57b..ee4ca525 100644 --- a/web/lib/pkgfuncs.inc.php +++ b/web/lib/pkgfuncs.inc.php @@ -642,53 +642,16 @@ function pkg_display_details($id=0, $row, $SID="") { } } -/* pkg_search_page(SID) - * outputs the body of search/search results page - * - * parameters: - * SID - current Session ID - * preconditions: - * package search page has been accessed - * request variables have not been sanitized - * - * request vars: - * O - starting result number - * PP - number of search hits per page - * K - package search string - * SO - search hit sort order: - * values: a - ascending - * d - descending - * SB - sort search hits by: - * values: n - package name - * v - number of votes - * m - maintainer username - * SeB- property that search string (K) represents - * values: n - package name - * nd - package name & description - * b - package base name - * N - package name (exact match) - * B - package base name (exact match) - * k - package keyword(s) - * m - package maintainer's username - * c - package co-maintainer's username - * s - package submitter's username - * do_Orphans - boolean. whether to search packages - * without a maintainer - * - * - * These two are actually handled in packages.php. - * - * IDs- integer array of ticked packages' IDs - * action - action to be taken on ticked packages - * values: do_Flag - Flag out-of-date - * do_UnFlag - Remove out-of-date flag - * do_Adopt - Adopt - * do_Disown - Disown - * do_Delete - Delete - * do_Notify - Enable notification - * do_UnNotify - Disable notification +/** + * Output the body of the search results page + * + * @param array $params Search parameters + * @param bool $show_headers True if statistics should be included + * @param string $SID The session ID of the visitor + * + * @return void */ -function pkg_search_page($SID="") { +function pkg_search_page($params, $show_headers=true, $SID="") { $dbh = DB::connect(); /* @@ -699,16 +662,16 @@ function pkg_search_page($SID="") { $myuid = uid_from_sid($SID); /* Sanitize paging variables. */ - if (isset($_GET['O'])) { - $_GET['O'] = max(intval($_GET['O']), 0); + if (isset($params['O'])) { + $params['O'] = max(intval($params['O']), 0); } else { - $_GET['O'] = 0; + $params['O'] = 0; } - if (isset($_GET["PP"])) { - $_GET["PP"] = bound(intval($_GET["PP"]), 50, 250); + if (isset($params["PP"])) { + $params["PP"] = bound(intval($params["PP"]), 50, 250); } else { - $_GET["PP"] = 50; + $params["PP"] = 50; } /* @@ -742,67 +705,67 @@ function pkg_search_page($SID="") { $q_where = 'WHERE PackageBases.PackagerUID IS NOT NULL '; - if (isset($_GET['K'])) { - if (isset($_GET["SeB"]) && $_GET["SeB"] == "m") { + if (isset($params['K'])) { + if (isset($params["SeB"]) && $params["SeB"] == "m") { /* Search by maintainer. */ - $q_where .= "AND Users.Username = " . $dbh->quote($_GET['K']) . " "; + $q_where .= "AND Users.Username = " . $dbh->quote($params['K']) . " "; } - elseif (isset($_GET["SeB"]) && $_GET["SeB"] == "c") { + elseif (isset($params["SeB"]) && $params["SeB"] == "c") { /* Search by co-maintainer. */ $q_where .= "AND EXISTS (SELECT * FROM PackageComaintainers "; $q_where .= "INNER JOIN Users ON Users.ID = PackageComaintainers.UsersID "; $q_where .= "WHERE PackageComaintainers.PackageBaseID = PackageBases.ID "; - $q_where .= "AND Users.Username = " . $dbh->quote($_GET['K']) . ")"; + $q_where .= "AND Users.Username = " . $dbh->quote($params['K']) . ")"; } - elseif (isset($_GET["SeB"]) && $_GET["SeB"] == "s") { + elseif (isset($params["SeB"]) && $params["SeB"] == "s") { /* Search by submitter. */ - $q_where .= "AND SubmitterUID = " . intval(uid_from_username($_GET['K'])) . " "; + $q_where .= "AND SubmitterUID = " . intval(uid_from_username($params['K'])) . " "; } - elseif (isset($_GET["SeB"]) && $_GET["SeB"] == "n") { + elseif (isset($params["SeB"]) && $params["SeB"] == "n") { /* Search by name. */ - $K = "%" . addcslashes($_GET['K'], '%_') . "%"; + $K = "%" . addcslashes($params['K'], '%_') . "%"; $q_where .= "AND (Packages.Name LIKE " . $dbh->quote($K) . ") "; } - elseif (isset($_GET["SeB"]) && $_GET["SeB"] == "b") { + elseif (isset($params["SeB"]) && $params["SeB"] == "b") { /* Search by package base name. */ - $K = "%" . addcslashes($_GET['K'], '%_') . "%"; + $K = "%" . addcslashes($params['K'], '%_') . "%"; $q_where .= "AND (PackageBases.Name LIKE " . $dbh->quote($K) . ") "; } - elseif (isset($_GET["SeB"]) && $_GET["SeB"] == "k") { + elseif (isset($params["SeB"]) && $params["SeB"] == "k") { /* Search by keywords. */ - $q_where .= construct_keyword_search($dbh, false); + $q_where .= construct_keyword_search($dbh, $params['K'], false); } - elseif (isset($_GET["SeB"]) && $_GET["SeB"] == "N") { + elseif (isset($params["SeB"]) && $params["SeB"] == "N") { /* Search by name (exact match). */ - $q_where .= "AND (Packages.Name = " . $dbh->quote($_GET['K']) . ") "; + $q_where .= "AND (Packages.Name = " . $dbh->quote($params['K']) . ") "; } - elseif (isset($_GET["SeB"]) && $_GET["SeB"] == "B") { + elseif (isset($params["SeB"]) && $params["SeB"] == "B") { /* Search by package base name (exact match). */ - $q_where .= "AND (PackageBases.Name = " . $dbh->quote($_GET['K']) . ") "; + $q_where .= "AND (PackageBases.Name = " . $dbh->quote($params['K']) . ") "; } else { /* Keyword search (default). */ - $q_where .= construct_keyword_search($dbh, true); + $q_where .= construct_keyword_search($dbh, $params['K'], true); } } - if (isset($_GET["do_Orphans"])) { + if (isset($params["do_Orphans"])) { $q_where .= "AND MaintainerUID IS NULL "; } - if (isset($_GET['outdated'])) { - if ($_GET['outdated'] == 'on') { + if (isset($params['outdated'])) { + if ($params['outdated'] == 'on') { $q_where .= "AND OutOfDateTS IS NOT NULL "; } - elseif ($_GET['outdated'] == 'off') { + elseif ($params['outdated'] == 'off') { $q_where .= "AND OutOfDateTS IS NULL "; } } - $order = (isset($_GET["SO"]) && $_GET["SO"] == 'd') ? 'DESC' : 'ASC'; + $order = (isset($params["SO"]) && $params["SO"] == 'd') ? 'DESC' : 'ASC'; $q_sort = "ORDER BY "; - $sort_by = isset($_GET["SB"]) ? $_GET["SB"] : ''; + $sort_by = isset($params["SB"]) ? $params["SB"] : ''; switch ($sort_by) { case 'v': $q_sort .= "NumVotes " . $order . ", "; @@ -835,7 +798,7 @@ function pkg_search_page($SID="") { } $q_sort .= " Packages.Name " . $order . " "; - $q_limit = "LIMIT ".$_GET["PP"]." OFFSET ".$_GET["O"]; + $q_limit = "LIMIT ".$params["PP"]." OFFSET ".$params["O"]; $q = $q_select . $q_from . $q_from_extra . $q_where . $q_sort . $q_limit; $q_total = "SELECT COUNT(*) " . $q_from . $q_where; @@ -851,7 +814,7 @@ function pkg_search_page($SID="") { } if ($result && $total > 0) { - if (isset($_GET["SO"]) && $_GET["SO"] == "d"){ + if (isset($params["SO"]) && $params["SO"] == "d"){ $SO_next = "a"; } else { @@ -860,10 +823,10 @@ function pkg_search_page($SID="") { } /* Calculate the results to use. */ - $first = $_GET['O'] + 1; + $first = $params['O'] + 1; /* Calculation of pagination links. */ - $per_page = ($_GET['PP'] > 0) ? $_GET['PP'] : 50; + $per_page = ($params['PP'] > 0) ? $params['PP'] : 50; $current = ceil($first / $per_page); $pages = ceil($total / $per_page); $templ_pages = array(); @@ -904,17 +867,18 @@ function pkg_search_page($SID="") { * Construct the WHERE part of the sophisticated keyword search * * @param handle $dbh Database handle - * @param boolean $namedesc Search name and description fields + * @param string $keywords The search term + * @param bool $namedesc Search name and description fields * * @return string WHERE part of the SQL clause */ -function construct_keyword_search($dbh, $namedesc) { +function construct_keyword_search($dbh, $keywords, $namedesc) { $count = 0; $where_part = ""; $q_keywords = ""; $op = ""; - foreach (str_getcsv($_GET['K'], ' ') as $term) { + foreach (str_getcsv($keywords, ' ') as $term) { if ($term == "") { continue; } diff --git a/web/template/pkg_search_results.php b/web/template/pkg_search_results.php index 37a90328..7b6b00aa 100644 --- a/web/template/pkg_search_results.php +++ b/web/template/pkg_search_results.php @@ -5,6 +5,7 @@ if (!$result): ?>

    +

    @@ -24,12 +25,13 @@ if (!$result): ?>

    +
    - + @@ -48,7 +50,7 @@ if (!$result): ?> - + @@ -85,6 +87,7 @@ if (!$result): ?>
     
    ]" value="1" /> ">
    +

    @@ -127,6 +130,7 @@ if (!$result): ?> " />

    +
    -- cgit v1.2.3-24-g4f1b From b6aced9692dae4145b8848fb1da495901434a667 Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Sat, 4 Feb 2017 00:28:37 +0100 Subject: pkg_search_results.php: Split out package results box Do not print the wrapper div container when calling pkg_search_page(). Signed-off-by: Lukas Fleischer --- web/html/packages.php | 2 + web/template/pkg_search_results.php | 174 ++++++++++++++++++------------------ 2 files changed, 88 insertions(+), 88 deletions(-) diff --git a/web/html/packages.php b/web/html/packages.php index ec6fc757..113a1145 100644 --- a/web/html/packages.php +++ b/web/html/packages.php @@ -98,11 +98,13 @@ if (isset($pkgid)) { $_GET['SB'] = 'p'; $_GET['SO'] = 'd'; } + echo '
    '; if (isset($_COOKIE["AURSID"])) { pkg_search_page($_GET, true, $_COOKIE["AURSID"]); } else { pkg_search_page($_GET, true); } + echo '
    '; } html_footer(AURWEB_VERSION); diff --git a/web/template/pkg_search_results.php b/web/template/pkg_search_results.php index 7b6b00aa..d596ec2d 100644 --- a/web/template/pkg_search_results.php +++ b/web/template/pkg_search_results.php @@ -1,52 +1,51 @@ -

    +

    -

    +

    -
    - -
    -

    - - -

    - 1): ?> -

    - $pagestart): ?> - - - - - - - - -

    - -
    + +
    +

    + + +

    + 1): ?> +

    + $pagestart): ?> + + + + + + + + +

    +
    + -
    - - - - - - - - - - - - - - - - - - - + +
     ?
    + + + + + + + + + + + + + + + + + + @@ -84,53 +83,52 @@ if (!$result): ?> - -
     ?
    + + - -
    -

    - - -

    - 1): ?> -

    - $pagestart): ?> - - - - - - - - -

    - -
    + +
    +

    + + +

    + 1): ?> +

    + $pagestart): ?> + + + + + + + + +

    + +
    - -

    - + +

    + + - - - " /> -

    - - -
    -
    + + + + + + + + + + " /> +

    + + + -- cgit v1.2.3-24-g4f1b From 1049f9319131d7f6ffea6c1863739c39e3b30a8f Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Sat, 4 Feb 2017 00:13:09 +0100 Subject: Add dashboard For logged in users, the home page is replaced with an overview of the packages the user maintains or co-maintains. Signed-off-by: Lukas Fleischer --- web/html/home.php | 36 ++++++++++++++++++++++++++++++++++-- web/template/header.php | 7 ++++--- 2 files changed, 38 insertions(+), 5 deletions(-) diff --git a/web/html/home.php b/web/html/home.php index 475370bb..ff9caa7c 100644 --- a/web/html/home.php +++ b/web/html/home.php @@ -8,13 +8,42 @@ check_sid(); include_once('stats.inc.php'); -html_header( __("Home") ); +if (isset($_COOKIE["AURSID"])) { + html_header( __("Dashboard") ); +} else { + html_header( __("Home") ); +} ?>
    + +

    +

    + 50, + 'SeB' => 'm', + 'K' => username_from_sid($_COOKIE["AURSID"]), + 'SB' => 'l', + 'SO' => 'd' + ); + pkg_search_page($params, false, $_COOKIE["AURSID"]); + ?> +

    + 50, + 'SeB' => 'c', + 'K' => username_from_sid($_COOKIE["AURSID"]), + 'SB' => 'l', + 'SO' => 'd' + ); + pkg_search_page($params, false, $_COOKIE["AURSID"]); + ?> +

    AUR

    +
    +

    @@ -122,6 +153,7 @@ html_header( __("Home") );

    +
    @@ -140,7 +172,7 @@ html_header( __("Home") );
    - +
    diff --git a/web/template/header.php b/web/template/header.php index 874109a5..7343575e 100644 --- a/web/template/header.php +++ b/web/template/header.php @@ -53,10 +53,9 @@
      -
    • AUR
    • -
    • -
    • ">
    • +
    • +
    • @@ -67,6 +66,8 @@
    • +
    • AUR
    • +
    • -- cgit v1.2.3-24-g4f1b From 7d7e07932677eaf584e593af6868eab89c711b8b Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Sat, 4 Feb 2017 10:55:05 +0100 Subject: Hide the table sorting links on the dashboard The tables on the dashboard always show the 50 most recent packages, ordered by last update. Do not make the table headers of these tables clickable. Signed-off-by: Lukas Fleischer --- web/template/pkg_search_results.php | 35 +++++++++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/web/template/pkg_search_results.php b/web/template/pkg_search_results.php index d596ec2d..7f92685a 100644 --- a/web/template/pkg_search_results.php +++ b/web/template/pkg_search_results.php @@ -1,4 +1,23 @@ '; + if ($sb) { + echo '' . $title . ''; + } else { + echo $title; + } + if ($hint) { + echo '?'; + } + echo ''; + }; +} else { + $fmtth = function($title, $sb=false, $so=false, $hint=false) { + echo '' . $title . ''; + }; +} + if (!$result): ?>

      @@ -33,16 +52,16 @@ if (!$result): ?>   - - - - ? + + + + - - + + - - + + -- cgit v1.2.3-24-g4f1b From 555cdac2db5ebab48ef8abf66488fd27fb500aa7 Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Sat, 4 Feb 2017 11:00:20 +0100 Subject: Return the number of results in pkg_search_page() Signed-off-by: Lukas Fleischer --- web/lib/pkgfuncs.inc.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/web/lib/pkgfuncs.inc.php b/web/lib/pkgfuncs.inc.php index ee4ca525..063cc935 100644 --- a/web/lib/pkgfuncs.inc.php +++ b/web/lib/pkgfuncs.inc.php @@ -649,7 +649,7 @@ function pkg_display_details($id=0, $row, $SID="") { * @param bool $show_headers True if statistics should be included * @param string $SID The session ID of the visitor * - * @return void + * @return int The total number of packages matching the query */ function pkg_search_page($params, $show_headers=true, $SID="") { $dbh = DB::connect(); @@ -860,7 +860,7 @@ function pkg_search_page($params, $show_headers=true, $SID="") { include('pkg_search_results.php'); - return; + return $total; } /** -- cgit v1.2.3-24-g4f1b From a1890d400b2eefeaf20c80701951af6b2a8ff55e Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Sat, 4 Feb 2017 11:04:26 +0100 Subject: Add links to all owned packages to the dashboard In addition to showing the 50 most recent maintained and co-maintained packages, add links to all packages one owns or co-maintains. Signed-off-by: Lukas Fleischer --- web/html/home.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/web/html/home.php b/web/html/home.php index ff9caa7c..08ae59f6 100644 --- a/web/html/home.php +++ b/web/html/home.php @@ -21,7 +21,7 @@ if (isset($_COOKIE["AURSID"])) {

      -

      +

      (">)

      50, @@ -32,7 +32,7 @@ if (isset($_COOKIE["AURSID"])) { ); pkg_search_page($params, false, $_COOKIE["AURSID"]); ?> -

      +

      (">)

      50, -- cgit v1.2.3-24-g4f1b From 1613bd2f2980d5da7f2d3e0a0113f126b6deb155 Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Sat, 4 Feb 2017 23:54:54 +0100 Subject: confparser.inc.php: Support alternative config path Add a AUR_CONFIG environment variable that can be used to specify an alternative configuration file, similar to the feature introduced in ecbf32f (git-interface: Add AUR_CONFIG environment variable, 2016-08-03). Signed-off-by: Lukas Fleischer --- web/lib/confparser.inc.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/web/lib/confparser.inc.php b/web/lib/confparser.inc.php index 789300e1..e7128be6 100644 --- a/web/lib/confparser.inc.php +++ b/web/lib/confparser.inc.php @@ -4,7 +4,11 @@ function config_load() { global $AUR_CONFIG; if (!isset($AUR_CONFIG)) { - $AUR_CONFIG = parse_ini_file("/etc/aurweb/config", true, INI_SCANNER_RAW); + $path = getenv('AUR_CONFIG'); + if (!$path) { + $path = "/etc/aurweb/config"; + } + $AUR_CONFIG = parse_ini_file($path, true, INI_SCANNER_RAW); } } -- cgit v1.2.3-24-g4f1b From 880d25e98c3efd406532a1b460e32b6350c9e39c Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Tue, 7 Feb 2017 08:16:08 +0100 Subject: Allow to search for both maintainer and co-maintainer As a follow-up to commit 6cb8c04 (Implement co-maintainer search, 2017-01-26), add an option to search for both maintainers and co-maintainers at the same time. Signed-off-by: Lukas Fleischer --- web/lib/pkgfuncs.inc.php | 8 ++++++++ web/template/pkg_search_form.php | 1 + 2 files changed, 9 insertions(+) diff --git a/web/lib/pkgfuncs.inc.php b/web/lib/pkgfuncs.inc.php index 063cc935..030ec9a1 100644 --- a/web/lib/pkgfuncs.inc.php +++ b/web/lib/pkgfuncs.inc.php @@ -717,6 +717,14 @@ function pkg_search_page($params, $show_headers=true, $SID="") { $q_where .= "WHERE PackageComaintainers.PackageBaseID = PackageBases.ID "; $q_where .= "AND Users.Username = " . $dbh->quote($params['K']) . ")"; } + elseif (isset($params["SeB"]) && $params["SeB"] == "M") { + /* Search by maintainer and co-maintainer. */ + $q_where .= "AND (Users.Username = " . $dbh->quote($params['K']) . " "; + $q_where .= "OR EXISTS (SELECT * FROM PackageComaintainers "; + $q_where .= "INNER JOIN Users ON Users.ID = PackageComaintainers.UsersID "; + $q_where .= "WHERE PackageComaintainers.PackageBaseID = PackageBases.ID "; + $q_where .= "AND Users.Username = " . $dbh->quote($params['K']) . "))"; + } elseif (isset($params["SeB"]) && $params["SeB"] == "s") { /* Search by submitter. */ $q_where .= "AND SubmitterUID = " . intval(uid_from_username($params['K'])) . " "; diff --git a/web/template/pkg_search_form.php b/web/template/pkg_search_form.php index 688cfcce..3d0cde6c 100644 --- a/web/template/pkg_search_form.php +++ b/web/template/pkg_search_form.php @@ -10,6 +10,7 @@ $searchby = array( 'k' => __('Keywords'), 'm' => __('Maintainer'), 'c' => __('Co-maintainer'), + 'M' => __('Maintainer, Co-maintainer'), 's' => __('Submitter') ); -- cgit v1.2.3-24-g4f1b From d45585e36d6cbd9483f4a5b18cbbc346757ca6a0 Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Tue, 7 Feb 2017 08:20:34 +0100 Subject: Add flagged packages to the dashboard Implement a table that shows all packages which are flagged out-of-date and either maintained or co-maintained by the currently logged in user. Signed-off-by: Lukas Fleischer --- web/html/home.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/web/html/home.php b/web/html/home.php index 08ae59f6..62409af7 100644 --- a/web/html/home.php +++ b/web/html/home.php @@ -21,6 +21,18 @@ if (isset($_COOKIE["AURSID"])) {

      +

      + 50, + 'SeB' => 'M', + 'K' => username_from_sid($_COOKIE["AURSID"]), + 'outdated' => 'on', + 'SB' => 'l', + 'SO' => 'a' + ); + pkg_search_page($params, false, $_COOKIE["AURSID"]); + ?>

      (">)

      Date: Tue, 7 Feb 2017 08:25:41 +0100 Subject: Add an option to filter by user to pkgreq_list() When a user is specified, the function only returns package requests which are either opened by the given user or affecting packages maintained by the given user. Signed-off-by: Lukas Fleischer --- web/lib/pkgreqfuncs.inc.php | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/web/lib/pkgreqfuncs.inc.php b/web/lib/pkgreqfuncs.inc.php index 7a171ed4..7dcab135 100644 --- a/web/lib/pkgreqfuncs.inc.php +++ b/web/lib/pkgreqfuncs.inc.php @@ -19,10 +19,11 @@ function pkgreq_count() { * * @param int $offset The index of the first request to return * @param int $limit The maximum number of requests to return + * @param int $uid Only return packages affecting the given user * * @return array List of pacakge requests with details */ -function pkgreq_list($offset, $limit) { +function pkgreq_list($offset, $limit, $uid=false) { $dbh = DB::connect(); $q = "SELECT PackageRequests.ID, "; @@ -35,6 +36,12 @@ function pkgreq_list($offset, $limit) { $q.= "FROM PackageRequests INNER JOIN RequestTypes ON "; $q.= "RequestTypes.ID = PackageRequests.ReqTypeID "; $q.= "INNER JOIN Users ON Users.ID = PackageRequests.UsersID "; + + if ($uid) { + $q.= "WHERE PackageRequests.UsersID = " . intval($uid). " "; + $q.= "OR Users.ID = " . intval($uid) . " "; + } + $q.= "ORDER BY Open DESC, RequestTS DESC "; $q.= "LIMIT " . $limit . " OFFSET " . $offset; -- cgit v1.2.3-24-g4f1b From 05007d8b1a0a9c0b8371a7f5a0bcf5e8d240956a Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Tue, 7 Feb 2017 08:29:53 +0100 Subject: pkgreq_results.php: Split out package results box Do not include the wrapper div container in the template. Signed-off-by: Lukas Fleischer --- web/html/pkgreq.php | 2 + web/template/pkgreq_results.php | 238 ++++++++++++++++++++-------------------- 2 files changed, 120 insertions(+), 120 deletions(-) diff --git a/web/html/pkgreq.php b/web/html/pkgreq.php index 8348a4f3..e0ef6cfd 100644 --- a/web/html/pkgreq.php +++ b/web/html/pkgreq.php @@ -77,7 +77,9 @@ if (isset($base_id)) { $SID = $_COOKIE['AURSID']; html_header(__("Requests")); + echo '
      '; include('pkgreq_results.php'); + echo '
      '; } html_footer(AURWEB_VERSION); diff --git a/web/template/pkgreq_results.php b/web/template/pkgreq_results.php index 426c7f08..bd4fc6b9 100644 --- a/web/template/pkgreq_results.php +++ b/web/template/pkgreq_results.php @@ -1,129 +1,127 @@ -
      -
      -

      - - -

      - 1): ?> -

      - $pagestart): ?> - - - - - - - - -

      - -
      +
      +

      + + +

      + 1): ?> +

      + $pagestart): ?> + + + + + + + + +

      + +
      - - - - - - - - - - - - +
      + + + + + + + + + + + - - $idle_time); - if (!$due) { - $time_left = $idle_time - (time() - intval($row['RequestTS'])); - if ($time_left > 48 * 3600) { - $time_left_fmt = _n("~%d day left", "~%d days left", round($time_left / (24 * 3600))); - } elseif ($time_left > 3600) { - $time_left_fmt = _n("~%d hour left", "~%d hours left", round($time_left / 3600)); - } else { - $time_left_fmt = __("<1 hour left"); - } + + $idle_time); + if (!$due) { + $time_left = $idle_time - (time() - intval($row['RequestTS'])); + if ($time_left > 48 * 3600) { + $time_left_fmt = _n("~%d day left", "~%d days left", round($time_left / (24 * 3600))); + } elseif ($time_left > 3600) { + $time_left_fmt = _n("~%d hour left", "~%d hours left", round($time_left / 3600)); + } else { + $time_left_fmt = __("<1 hour left"); } - ?> - - - - - - - - - - + } + ?> + + + + + + + + - - class="flagged"> - - - - - - - - - - - + + + + + + + class="flagged"> + + - + + + + + + + + + + + + + + + - -
      "> - - - () - -
      "> + + + () - - - - - - -
      - - -
      - -
      - - - -
      - - () -
      - - - -
      + + + + + +
      + + +
      + +
      + + + +
      + + () +
      -
      + + -
      -

      - - -

      - 1): ?> -

      - $pagestart): ?> - - - - - - - - -

      - -
      +
      +

      + + +

      + 1): ?> +

      + $pagestart): ?> + + + + + + + + +

      +
      -- cgit v1.2.3-24-g4f1b From 403241baa34c75ed4942926cf667094f6036b773 Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Tue, 7 Feb 2017 08:44:14 +0100 Subject: pkgreq_results.php: Add a flag to hide headers Introduce a new boolean flag that can be used to disable extended headers, pagination and forms. Signed-off-by: Lukas Fleischer --- web/html/pkgreq.php | 1 + web/template/pkgreq_results.php | 12 ++++++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/web/html/pkgreq.php b/web/html/pkgreq.php index e0ef6cfd..f981c25d 100644 --- a/web/html/pkgreq.php +++ b/web/html/pkgreq.php @@ -78,6 +78,7 @@ if (isset($base_id)) { html_header(__("Requests")); echo '
      '; + $show_headers = true; include('pkgreq_results.php'); echo '
      '; } diff --git a/web/template/pkgreq_results.php b/web/template/pkgreq_results.php index bd4fc6b9..74fcb10d 100644 --- a/web/template/pkgreq_results.php +++ b/web/template/pkgreq_results.php @@ -1,3 +1,4 @@ +

      @@ -17,6 +18,7 @@

      + @@ -67,7 +69,7 @@ class="flagged"> - + - - + + + @@ -99,13 +102,13 @@ -
      @@ -89,8 +91,9 @@
      +

      @@ -125,3 +128,4 @@

      + -- cgit v1.2.3-24-g4f1b From 2bc208c13e3a48980e295bd0b444c99ada163865 Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Tue, 7 Feb 2017 08:51:15 +0100 Subject: Add requests to dashboard Add a new table which shows all package requests affecting the currently logged in user. Signed-off-by: Lukas Fleischer --- web/html/home.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/web/html/home.php b/web/html/home.php index 62409af7..381cb71f 100644 --- a/web/html/home.php +++ b/web/html/home.php @@ -33,6 +33,12 @@ if (isset($_COOKIE["AURSID"])) { ); pkg_search_page($params, false, $_COOKIE["AURSID"]); ?> +

      +

      (">)

      Date: Tue, 7 Feb 2017 08:54:50 +0100 Subject: Move my packages to separate dashboard sections Signed-off-by: Lukas Fleischer --- web/html/home.php | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/web/html/home.php b/web/html/home.php index 381cb71f..16525419 100644 --- a/web/html/home.php +++ b/web/html/home.php @@ -18,8 +18,8 @@ if (isset($_COOKIE["AURSID"])) {
      +
      -

      -

      (">)

      +
      +
      +

      (">)

      50, @@ -50,7 +52,9 @@ if (isset($_COOKIE["AURSID"])) { ); pkg_search_page($params, false, $_COOKIE["AURSID"]); ?> -

      (">)

      +
      +
      +

      (">)

      50, @@ -61,7 +65,9 @@ if (isset($_COOKIE["AURSID"])) { ); pkg_search_page($params, false, $_COOKIE["AURSID"]); ?> - +
      + +

      AUR

      -
      -

      -- cgit v1.2.3-24-g4f1b From 3a167a109b240ef7c8c2fa7363156456c6861521 Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Sat, 11 Feb 2017 22:21:03 +0100 Subject: Move package search links on the dashboard Move the package search links below the section headings. Signed-off-by: Lukas Fleischer --- web/html/home.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/web/html/home.php b/web/html/home.php index 16525419..ee7caf77 100644 --- a/web/html/home.php +++ b/web/html/home.php @@ -41,7 +41,8 @@ if (isset($_COOKIE["AURSID"])) { ?>
      -

      (">)

      +

      +

      ">

      50, @@ -54,7 +55,8 @@ if (isset($_COOKIE["AURSID"])) { ?>
      -

      (">)

      +

      +

      ">

      50, -- cgit v1.2.3-24-g4f1b From 9df1bd5fe2f781d1b8341496378c605b34cde64f Mon Sep 17 00:00:00 2001 From: Janne Heß Date: Sun, 12 Feb 2017 17:37:38 +0100 Subject: Add direct links to each source file MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently, each source file which is an external link (http://, https://, ...) is a clickable link. This commit extends the behaviour by making files from the repository clickable as well. The link brings the user to the corresponding cgit page. Also, the link to the PKGBUILD is altered to make the configuration more consistent. Signed-off-by: Janne Heß Signed-off-by: Lukas Fleischer --- conf/config.proto | 2 +- web/lib/pkgfuncs.inc.php | 6 ++++-- web/template/pkg_details.php | 4 ++-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/conf/config.proto b/conf/config.proto index c1be2816..01a907a6 100644 --- a/conf/config.proto +++ b/conf/config.proto @@ -27,7 +27,7 @@ aur_request_ml = aur-requests@archlinux.org request_idle_time = 1209600 auto_orphan_age = 15552000 auto_delete_age = 86400 -pkgbuild_uri = https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=%s +source_file_uri = https://aur.archlinux.org/cgit/aur.git/tree/%s?h=%s log_uri = https://aur.archlinux.org/cgit/aur.git/log/?h=%s snapshot_uri = /cgit/aur.git/snapshot/%s.tar.gz enable-maintenance = 1 diff --git a/web/lib/pkgfuncs.inc.php b/web/lib/pkgfuncs.inc.php index 030ec9a1..adb21f66 100644 --- a/web/lib/pkgfuncs.inc.php +++ b/web/lib/pkgfuncs.inc.php @@ -481,17 +481,19 @@ function pkg_rel_html($name, $cond, $arch) { * * @param string $url The URL of the source * @param string $arch The source architecture + * @param string $package The name of the package * * @return string The HTML code of the label to display */ -function pkg_source_link($url, $arch) { +function pkg_source_link($url, $arch, $package) { $url = explode('::', $url); $parsed_url = parse_url($url[0]); if (isset($parsed_url['scheme']) || isset($url[1])) { $link = '' . htmlspecialchars($url[0]) . ''; } else { - $link = htmlspecialchars($url[0]); + $file_url = sprintf(config_get('options', 'source_file_uri'), htmlspecialchars($url[0]), $package); + $link = '' . htmlspecialchars($url[0]) . ''; } if ($arch) { diff --git a/web/template/pkg_details.php b/web/template/pkg_details.php index 32693948..ed8974a3 100644 --- a/web/template/pkg_details.php +++ b/web/template/pkg_details.php @@ -1,6 +1,6 @@
        -
      • +
      -- cgit v1.2.3-24-g4f1b From f4176a8ce1e1b50e7f7d2ce660464caabbc6723f Mon Sep 17 00:00:00 2001 From: Michael Straube Date: Tue, 14 Feb 2017 20:17:11 +0100 Subject: Make aurjson error messages consistent All error messages in aurjson except two end with a period. Add the missing periods to make the messages consistent. Signed-off-by: Michael Straube Signed-off-by: Lukas Fleischer --- web/lib/aurjson.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/web/lib/aurjson.class.php b/web/lib/aurjson.class.php index 3bd9179c..e07522d4 100644 --- a/web/lib/aurjson.class.php +++ b/web/lib/aurjson.class.php @@ -387,7 +387,7 @@ class AurJSON { if ($search_by === 'name' || $search_by === 'name-desc') { if (strlen($keyword_string) < 2) { - return $this->json_error('Query arg too small'); + return $this->json_error('Query arg too small.'); } $keyword_string = $this->dbh->quote("%" . addcslashes($keyword_string, '%_') . "%"); @@ -441,7 +441,7 @@ class AurJSON { $names = $args['names']; if (!$ids && !$names) { - return $this->json_error('Invalid query arguments'); + return $this->json_error('Invalid query arguments.'); } $where_condition = ""; -- cgit v1.2.3-24-g4f1b From b3fdd3f80389e2708dc64414f0e48ef7120fd852 Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Wed, 15 Feb 2017 07:13:01 +0100 Subject: Add a parameter to skip old requests to pkgreq_list() Allow for hiding requests which were opened before a given time stamp. Signed-off-by: Lukas Fleischer --- web/lib/pkgreqfuncs.inc.php | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/web/lib/pkgreqfuncs.inc.php b/web/lib/pkgreqfuncs.inc.php index 7dcab135..774ebe7e 100644 --- a/web/lib/pkgreqfuncs.inc.php +++ b/web/lib/pkgreqfuncs.inc.php @@ -20,10 +20,11 @@ function pkgreq_count() { * @param int $offset The index of the first request to return * @param int $limit The maximum number of requests to return * @param int $uid Only return packages affecting the given user + * @param int $from Do not return packages older than the given date * - * @return array List of pacakge requests with details + * @return array List of package requests with details */ -function pkgreq_list($offset, $limit, $uid=false) { +function pkgreq_list($offset, $limit, $uid=false, $from=false) { $dbh = DB::connect(); $q = "SELECT PackageRequests.ID, "; @@ -37,9 +38,15 @@ function pkgreq_list($offset, $limit, $uid=false) { $q.= "RequestTypes.ID = PackageRequests.ReqTypeID "; $q.= "INNER JOIN Users ON Users.ID = PackageRequests.UsersID "; - if ($uid) { - $q.= "WHERE PackageRequests.UsersID = " . intval($uid). " "; - $q.= "OR Users.ID = " . intval($uid) . " "; + if ($uid || $from) { + $q.= "WHERE "; + if ($uid) { + $q.= "(PackageRequests.UsersID = " . intval($uid). " "; + $q.= "OR Users.ID = " . intval($uid) . ") AND "; + } + if ($from) { + $q.= "RequestTS >= " . intval($from). " "; + } } $q.= "ORDER BY Open DESC, RequestTS DESC "; -- cgit v1.2.3-24-g4f1b From 92049e8061d71dfe89b4cbd53a39d7ae74ac328a Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Wed, 15 Feb 2017 07:20:50 +0100 Subject: Hide old requests from the dashboard Only show package requests created less than 6 months ago on the dashboard. Signed-off-by: Lukas Fleischer --- conf/config.proto | 1 + web/html/home.php | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/conf/config.proto b/conf/config.proto index 01a907a6..df10b995 100644 --- a/conf/config.proto +++ b/conf/config.proto @@ -25,6 +25,7 @@ max_rpc_results = 5000 max_depends = 1000 aur_request_ml = aur-requests@archlinux.org request_idle_time = 1209600 +request_archive_time = 15552000 auto_orphan_age = 15552000 auto_delete_age = 86400 source_file_uri = https://aur.archlinux.org/cgit/aur.git/tree/%s?h=%s diff --git a/web/html/home.php b/web/html/home.php index ee7caf77..26754916 100644 --- a/web/html/home.php +++ b/web/html/home.php @@ -35,7 +35,9 @@ if (isset($_COOKIE["AURSID"])) { ?>

      -- cgit v1.2.3-24-g4f1b From e724b123ec003aab4a24ace4e7eea934a6dad395 Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Wed, 15 Feb 2017 21:59:20 +0100 Subject: pkgbase.php: Add default title Instead of triggering a PHP warning and using an empty title if no package base is specified, use a default title. Signed-off-by: Lukas Fleischer --- web/html/pkgbase.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/html/pkgbase.php b/web/html/pkgbase.php index 11fdf74a..23aa6c83 100644 --- a/web/html/pkgbase.php +++ b/web/html/pkgbase.php @@ -30,7 +30,7 @@ if (!isset($base_id) || !isset($pkgbase_name)) { } /* Set the title to package base name. */ -$title = $pkgbase_name; +$title = isset($pkgbase_name) ? $pkgbase_name : __("Package Bases"); /* Grab the list of package base IDs to be operated on. */ $ids = array(); -- cgit v1.2.3-24-g4f1b From 5059056567161d616496a015804094371bfb5b48 Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Wed, 15 Feb 2017 22:05:03 +0100 Subject: Fix several PHP short open tags Use " --- web/html/pkgdel.php | 2 +- web/html/pkgdisown.php | 2 +- web/html/pkgflag.php | 2 +- web/html/pkgmerge.php | 2 +- web/template/comaintainers_form.php | 2 +- web/template/pkgreq_close_form.php | 2 +- web/template/pkgreq_form.php | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/web/html/pkgdel.php b/web/html/pkgdel.php index 21a2677c..591ccce8 100644 --- a/web/html/pkgdel.php +++ b/web/html/pkgdel.php @@ -12,7 +12,7 @@ html_header(__("Package Deletion")); if (has_credential(CRED_PKGBASE_DELETE)): ?>
      -

      :

      +

      :

      ', htmlspecialchars($pkgbase_name), ''); ?> diff --git a/web/html/pkgdisown.php b/web/html/pkgdisown.php index f24a2d6d..036fe6d8 100644 --- a/web/html/pkgdisown.php +++ b/web/html/pkgdisown.php @@ -15,7 +15,7 @@ $comaintainers = pkgbase_get_comaintainers($base_id); if (has_credential(CRED_PKGBASE_DISOWN, $maintainer_uids)): ?>

      -

      :

      +

      :

      ', htmlspecialchars($pkgbase_name), ''); ?> diff --git a/web/html/pkgflag.php b/web/html/pkgflag.php index f50c2085..44849d88 100644 --- a/web/html/pkgflag.php +++ b/web/html/pkgflag.php @@ -43,7 +43,7 @@ html_header(__("Flag Package Out-Of-Date")); if (has_credential(CRED_PKGBASE_FLAG)): ?>

      -

      :

      +

      :

      ', htmlspecialchars($pkgbase_name), ''); ?> diff --git a/web/html/pkgmerge.php b/web/html/pkgmerge.php index c0ce655c..e8e7ca93 100644 --- a/web/html/pkgmerge.php +++ b/web/html/pkgmerge.php @@ -12,7 +12,7 @@ html_header(__("Package Merging")); if (has_credential(CRED_PKGBASE_DELETE)): ?>

      -

      :

      +

      :

      ', htmlspecialchars($pkgbase_name), ''); ?> diff --git a/web/template/comaintainers_form.php b/web/template/comaintainers_form.php index 70a74645..79e2b52c 100644 --- a/web/template/comaintainers_form.php +++ b/web/template/comaintainers_form.php @@ -1,5 +1,5 @@

      -

      :

      +

      :

      ', htmlspecialchars($pkgbase_name), ''); ?> diff --git a/web/template/pkgreq_close_form.php b/web/template/pkgreq_close_form.php index 59e9c8f4..6077b325 100644 --- a/web/template/pkgreq_close_form.php +++ b/web/template/pkgreq_close_form.php @@ -1,5 +1,5 @@

      -

      :

      +

      :

      ', htmlspecialchars($pkgbase_name), ''); ?> diff --git a/web/template/pkgreq_form.php b/web/template/pkgreq_form.php index 35dbef57..904ab48f 100644 --- a/web/template/pkgreq_form.php +++ b/web/template/pkgreq_form.php @@ -1,5 +1,5 @@

      -

      :

      +

      :

      ', htmlspecialchars($pkgbase_name), ''); ?> -- cgit v1.2.3-24-g4f1b From 65b75568cb3bbab39e03335bc84153ac4ac0379c Mon Sep 17 00:00:00 2001 From: Morten Linderud Date: Thu, 19 Jan 2017 23:28:44 +0100 Subject: Add security tracker into navbar Signed-off-by: Morten Linderud Signed-off-by: Lukas Fleischer --- web/template/cgit/header.html | 1 + web/template/header.php | 1 + 2 files changed, 2 insertions(+) diff --git a/web/template/cgit/header.html b/web/template/cgit/header.html index 0217f2fd..2d418702 100644 --- a/web/template/cgit/header.html +++ b/web/template/cgit/header.html @@ -7,6 +7,7 @@

    • Forums
    • Wiki
    • Bugs
    • +
    • Security
    • AUR
    • Download
    diff --git a/web/template/header.php b/web/template/header.php index 7343575e..f7409400 100644 --- a/web/template/header.php +++ b/web/template/header.php @@ -24,6 +24,7 @@
  • Forums
  • Wiki
  • Bugs
  • +
  • Security
  • AUR
  • Download
  • -- cgit v1.2.3-24-g4f1b From 08f56e76d7e203ce128ec6653280984e426f3811 Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Thu, 23 Feb 2017 07:42:25 +0100 Subject: Update message catalog Signed-off-by: Lukas Fleischer --- po/aur.pot | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 59 insertions(+), 11 deletions(-) diff --git a/po/aur.pot b/po/aur.pot index bbe34d63..580a1310 100644 --- a/po/aur.pot +++ b/po/aur.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: AUR v4.3.0\n" +"Project-Id-Version: AUR v4.4.1\n" "Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n" -"POT-Creation-Date: 2016-10-08 14:59+0200\n" +"POT-Creation-Date: 2017-02-23 07:42+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -159,10 +159,38 @@ msgstr "" msgid "Edit comment" msgstr "" +#: html/home.php template/header.php +msgid "Dashboard" +msgstr "" + #: html/home.php template/header.php msgid "Home" msgstr "" +#: html/home.php +msgid "My Flagged Packages" +msgstr "" + +#: html/home.php +msgid "My Requests" +msgstr "" + +#: html/home.php +msgid "My Packages" +msgstr "" + +#: html/home.php +msgid "Search for packages I maintain" +msgstr "" + +#: html/home.php +msgid "Co-Maintained Packages" +msgstr "" + +#: html/home.php +msgid "Search for packages I co-maintain" +msgstr "" + #: html/home.php #, php-format msgid "" @@ -429,6 +457,10 @@ msgstr "" msgid "Enter your e-mail address:" msgstr "" +#: html/pkgbase.php +msgid "Package Bases" +msgstr "" + #: html/pkgbase.php msgid "" "The selected packages have not been disowned, check the confirmation " @@ -723,6 +755,10 @@ msgstr "" msgid "Language is not currently supported." msgstr "" +#: lib/acctfuncs.inc.php +msgid "Timezone is not currently supported." +msgstr "" + #: lib/acctfuncs.inc.php #, php-format msgid "The username, %s%s%s, is already in use." @@ -1125,6 +1161,11 @@ msgstr "" msgid "Registration date:" msgstr "" +#: template/account_details.php template/pkgbase_details.php +#: template/pkg_details.php template/pkgreq_results.php template/tu_details.php +msgid "unknown" +msgstr "" + #: template/account_details.php msgid "Last Login" msgstr "" @@ -1189,6 +1230,10 @@ msgstr "" msgid "Language" msgstr "" +#: template/account_edit_form.php +msgid "Timezone" +msgstr "" + #: template/account_edit_form.php msgid "" "The following information is only required if you want to submit packages to " @@ -1294,10 +1339,6 @@ msgstr "" msgid "Copyright %s 2004-%d aurweb Development Team." msgstr "" -#: template/header.php -msgid "My Packages" -msgstr "" - #: template/header.php msgid " My Account" msgstr "" @@ -1366,11 +1407,6 @@ msgstr[1] "" msgid "Adopt Package" msgstr "" -#: template/pkgbase_details.php template/pkg_details.php -#: template/pkgreq_results.php template/tu_details.php -msgid "unknown" -msgstr "" - #: template/pkgbase_details.php msgid "Package Base Details" msgstr "" @@ -1668,6 +1704,10 @@ msgstr "" msgid "Close" msgstr "" +#: template/pkgreq_results.php +msgid "Pending" +msgstr "" + #: template/pkgreq_results.php msgid "Closed" msgstr "" @@ -1688,6 +1728,14 @@ msgstr "" msgid "Exact Package Base" msgstr "" +#: template/pkg_search_form.php +msgid "Co-maintainer" +msgstr "" + +#: template/pkg_search_form.php +msgid "Maintainer, Co-maintainer" +msgstr "" + #: template/pkg_search_form.php msgid "All" msgstr "" -- cgit v1.2.3-24-g4f1b From 31754909b1ebbc2a50f1faecbb0cf5058953b840 Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Fri, 24 Feb 2017 20:28:09 +0100 Subject: Fix user name in disown notifications Do not overwrite the $uid variable when updating co-maintainers. Fixes FS#52225. Signed-off-by: Lukas Fleischer --- web/lib/pkgbasefuncs.inc.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/web/lib/pkgbasefuncs.inc.php b/web/lib/pkgbasefuncs.inc.php index 4f102040..57b307d8 100644 --- a/web/lib/pkgbasefuncs.inc.php +++ b/web/lib/pkgbasefuncs.inc.php @@ -680,15 +680,15 @@ function pkgbase_adopt ($base_ids, $action=true, $via) { $comaintainers = pkgbase_get_comaintainers($base_id); if (count($comaintainers) > 0) { - $uid = uid_from_username($comaintainers[0]); + $comaintainer_uid = uid_from_username($comaintainers[0]); $comaintainers = array_diff($comaintainers, array($comaintainers[0])); pkgbase_set_comaintainers($base_id, $comaintainers); } else { - $uid = "NULL"; + $comaintainer_uid = "NULL"; } $q = "UPDATE PackageBases "; - $q.= "SET MaintainerUID = " . $uid . " "; + $q.= "SET MaintainerUID = " . $comaintainer_uid . " "; $q.= "WHERE ID = " . $base_id; $dbh->exec($q); } -- cgit v1.2.3-24-g4f1b From 29a48708bb7c3e00e80275a6b898f557f63dff69 Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Fri, 24 Feb 2017 19:52:28 +0100 Subject: Use bcrypt to hash passwords Replace the default hash function used for storing passwords by password_hash() which internally uses bcrypt. Legacy MD5 hashes are still supported and are immediately converted to the new format when a user logs in. Since big parts of the authentication system needed to be rewritten in this context, this patch also includes some simplification and refactoring of all code related to password checking and resetting. Fixes FS#52297. Signed-off-by: Lukas Fleischer --- schema/aur-schema.sql | 2 +- upgrading/4.5.0.txt | 6 ++ web/html/passreset.php | 5 +- web/lib/acctfuncs.inc.php | 144 +++++++++++++++++++--------------------------- web/lib/aur.inc.php | 57 ------------------ 5 files changed, 68 insertions(+), 146 deletions(-) diff --git a/schema/aur-schema.sql b/schema/aur-schema.sql index 99f90834..b75a257c 100644 --- a/schema/aur-schema.sql +++ b/schema/aur-schema.sql @@ -27,7 +27,7 @@ CREATE TABLE Users ( Username VARCHAR(32) NOT NULL, Email VARCHAR(254) NOT NULL, HideEmail TINYINT UNSIGNED NOT NULL DEFAULT 0, - Passwd CHAR(32) NOT NULL, + Passwd VARCHAR(255) NOT NULL, Salt CHAR(32) NOT NULL DEFAULT '', ResetKey CHAR(32) NOT NULL DEFAULT '', RealName VARCHAR(64) NOT NULL DEFAULT '', diff --git a/upgrading/4.5.0.txt b/upgrading/4.5.0.txt index fb0a2993..37b2b810 100644 --- a/upgrading/4.5.0.txt +++ b/upgrading/4.5.0.txt @@ -18,3 +18,9 @@ ALTER TABLE Users ---- ALTER TABLE Bans MODIFY IPAddress VARCHAR(45) NULL DEFAULT NULL; ---- + +4. Resize the Passwd column of the Users table: + +--- +ALTER TABLE Users MODIFY Passwd VARCHAR(255) NOT NULL; +--- diff --git a/web/html/passreset.php b/web/html/passreset.php index cb2f6bcd..e89967d4 100644 --- a/web/html/passreset.php +++ b/web/html/passreset.php @@ -34,10 +34,7 @@ if (isset($_GET['resetkey'], $_POST['email'], $_POST['password'], $_POST['confir } if (empty($error)) { - $salt = generate_salt(); - $hash = salted_hash($password, $salt); - - $error = password_reset($hash, $salt, $resetkey, $email); + $error = password_reset($password, $resetkey, $email); } } elseif (isset($_POST['email'])) { $email = $_POST['email']; diff --git a/web/lib/acctfuncs.inc.php b/web/lib/acctfuncs.inc.php index b3cf6122..d0a7ff94 100644 --- a/web/lib/acctfuncs.inc.php +++ b/web/lib/acctfuncs.inc.php @@ -272,13 +272,12 @@ function process_account_form($TYPE,$A,$U="",$T="",$S="",$E="",$H="",$P="",$C="" if ($TYPE == "new") { /* Create an unprivileged user. */ - $salt = generate_salt(); if (empty($P)) { $send_resetkey = true; $email = $E; } else { $send_resetkey = false; - $P = salted_hash($P, $salt); + $P = password_hash($P, PASSWORD_DEFAULT); } $U = $dbh->quote($U); $E = $dbh->quote($E); @@ -291,9 +290,9 @@ function process_account_form($TYPE,$A,$U="",$T="",$S="",$E="",$H="",$P="",$C="" $I = $dbh->quote($I); $K = $dbh->quote(str_replace(" ", "", $K)); $q = "INSERT INTO Users (AccountTypeID, Suspended, "; - $q.= "InactivityTS, Username, Email, Passwd, Salt, "; + $q.= "InactivityTS, Username, Email, Passwd , "; $q.= "RealName, LangPreference, Timezone, Homepage, IRCNick, PGPKey) "; - $q.= "VALUES (1, 0, 0, $U, $E, $P, $salt, $R, $L, $TZ "; + $q.= "VALUES (1, 0, 0, $U, $E, $P, $R, $L, $TZ "; $q.= "$HP, $I, $K)"; $result = $dbh->exec($q); if (!$result) { @@ -350,9 +349,8 @@ function process_account_form($TYPE,$A,$U="",$T="",$S="",$E="",$H="",$P="",$C="" $q.= ", HideEmail = 0"; } if ($P) { - $salt = generate_salt(); - $hash = salted_hash($P, $salt); - $q .= ", Passwd = '$hash', Salt = '$salt'"; + $hash = password_hash($P, PASSWORD_DEFAULT); + $q .= ", Passwd = " . $dbh->quote($hash); } $q.= ", RealName = " . $dbh->quote($R); $q.= ", LangPreference = " . $dbh->quote($L); @@ -528,19 +526,24 @@ function try_login() { if (user_suspended($userID)) { $login_error = __('Account suspended'); return array('SID' => '', 'error' => $login_error); - } elseif (passwd_is_empty($userID)) { - $login_error = __('Your password has been reset. ' . - 'If you just created a new account, please ' . - 'use the link from the confirmation email ' . - 'to set an initial password. Otherwise, ' . - 'please request a reset key on the %s' . - 'Password Reset%s page.', '', - ''); - return array('SID' => '', 'error' => $login_error); - } elseif (!valid_passwd($userID, $_REQUEST['passwd'])) { - $login_error = __("Bad username or password."); - return array('SID' => '', 'error' => $login_error); + } + + switch (check_passwd($userID, $_REQUEST['passwd'])) { + case -1: + $login_error = __('Your password has been reset. ' . + 'If you just created a new account, please ' . + 'use the link from the confirmation email ' . + 'to set an initial password. Otherwise, ' . + 'please request a reset key on the %s' . + 'Password Reset%s page.', '', + ''); + return array('SID' => '', 'error' => $login_error); + case 0: + $login_error = __("Bad username or password."); + return array('SID' => '', 'error' => $login_error); + case 1: + break; } $logged_in = 0; @@ -736,18 +739,18 @@ function send_resetkey($email, $welcome=false) { /** * Change a user's password in the database if reset key and e-mail are correct * - * @param string $hash New MD5 hash of a user's password - * @param string $salt New salt for the user's password + * @param string $password The new password * @param string $resetkey Code e-mailed to a user to reset a password * @param string $email E-mail address of the user resetting their password * * @return string|void Redirect page if successful, otherwise return error message */ -function password_reset($hash, $salt, $resetkey, $email) { +function password_reset($password, $resetkey, $email) { + $hash = password_hash($password, PASSWORD_DEFAULT); + $dbh = DB::connect(); - $q = "UPDATE Users "; - $q.= "SET Passwd = '$hash', "; - $q.= "Salt = '$salt', "; + $q = "UPDATE Users SET "; + $q.= "Passwd = " . $dbh->quote($hash) . ", "; $q.= "ResetKey = '' "; $q.= "WHERE ResetKey != '' "; $q.= "AND ResetKey = " . $dbh->quote($resetkey) . " "; @@ -778,75 +781,48 @@ function good_passwd($passwd) { /** * Determine if the password is correct and salt it if it hasn't been already * - * @param string $userID The user ID to check the password against + * @param int $user_id The user ID to check the password against * @param string $passwd The password the visitor sent * - * @return bool True if password was correct and properly salted, otherwise false + * @return int Positive if password is correct, negative if password is unset */ -function valid_passwd($userID, $passwd) { +function check_passwd($user_id, $passwd) { $dbh = DB::connect(); - if ($passwd == "") { - return false; - } - /* Get salt for this user. */ - $salt = get_salt($userID); - if ($salt) { - $q = "SELECT ID FROM Users "; - $q.= "WHERE ID = " . $userID . " "; - $q.= "AND Passwd = " . $dbh->quote(salted_hash($passwd, $salt)); - $result = $dbh->query($q); - if (!$result) { - return false; - } - - $row = $result->fetch(PDO::FETCH_NUM); - return ($row[0] > 0); - } else { - /* Check password without using salt. */ - $q = "SELECT ID FROM Users "; - $q.= "WHERE ID = " . $userID . " "; - $q.= "AND Passwd = " . $dbh->quote(md5($passwd)); - $result = $dbh->query($q); - if (!$result) { - return false; - } - - $row = $result->fetch(PDO::FETCH_NUM); - if (!$row[0]) { - return false; - } + /* Get password hash and salt. */ + $q = "SELECT Passwd, Salt FROM Users WHERE ID = " . intval($user_id); + $result = $dbh->query($q); + if (!$result) { + return 0; + } + $row = $result->fetch(PDO::FETCH_ASSOC); + if (!$row) { + return 0; + } + $hash = $row['Passwd']; + $salt = $row['Salt']; + if (!$hash) { + return -1; + } - /* Password correct, but salt it first! */ - if (!save_salt($userID, $passwd)) { - trigger_error("Unable to salt user's password;" . - " ID " . $userID, E_USER_WARNING); - return false; + /* Verify the password hash. */ + if (!password_verify($passwd, $hash)) { + /* Invalid password, fall back to MD5. */ + if (md5($salt . $passwd) != $hash) { + return 0; } - - return true; } -} -/** - * Determine if a user's password is empty - * - * @param string $uid The user ID to check for an empty password - * - * @return bool True if the user's password is empty, otherwise false - */ -function passwd_is_empty($uid) { - $dbh = DB::connect(); - - $q = "SELECT * FROM Users WHERE ID = " . $dbh->quote($uid) . " "; - $q .= "AND Passwd = " . $dbh->quote(''); - $result = $dbh->query($q); + /* Password correct, migrate the hash if necessary. */ + if (password_needs_rehash($hash, PASSWORD_DEFAULT)) { + $hash = password_hash($passwd, PASSWORD_DEFAULT); - if ($result->fetchColumn()) { - return true; - } else { - return false; + $q = "UPDATE Users SET Passwd = " . $dbh->quote($hash) . " "; + $q.= "WHERE ID = " . intval($user_id); + $dbh->query($q); } + + return 1; } /** diff --git a/web/lib/aur.inc.php b/web/lib/aur.inc.php index 94a38499..d58df406 100644 --- a/web/lib/aur.inc.php +++ b/web/lib/aur.inc.php @@ -537,63 +537,6 @@ function mkurl($append) { return substr($out, 5); } -/** - * Determine a user's salt from the database - * - * @param string $user_id The user ID of the user trying to log in - * - * @return string|void Return the salt for the requested user, otherwise void - */ -function get_salt($user_id) { - $dbh = DB::connect(); - $q = "SELECT Salt FROM Users WHERE ID = " . $user_id; - $result = $dbh->query($q); - if ($result) { - $row = $result->fetch(PDO::FETCH_NUM); - return $row[0]; - } - return; -} - -/** - * Save a user's salted password in the database - * - * @param string $user_id The user ID of the user who is salting their password - * @param string $passwd The password of the user logging in - */ -function save_salt($user_id, $passwd) { - $dbh = DB::connect(); - $salt = generate_salt(); - $hash = salted_hash($passwd, $salt); - $q = "UPDATE Users SET Salt = " . $dbh->quote($salt) . ", "; - $q.= "Passwd = " . $dbh->quote($hash) . " WHERE ID = " . $user_id; - return $dbh->exec($q); -} - -/** - * Generate a string to be used for salting passwords - * - * @return string MD5 hash of concatenated random number and current time - */ -function generate_salt() { - return md5(uniqid(mt_rand(), true)); -} - -/** - * Combine salt and password to form a hash - * - * @param string $passwd User plaintext password - * @param string $salt MD5 hash to be used as user salt - * - * @return string The MD5 hash of the concatenated salt and user password - */ -function salted_hash($passwd, $salt) { - if (strlen($salt) != 32) { - trigger_error('Salt does not look like an md5 hash', E_USER_WARNING); - } - return md5($salt . $passwd); -} - /** * Get a package comment * -- cgit v1.2.3-24-g4f1b From b205275196ca60e2809937b651db8d41c77b90ac Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Sat, 25 Feb 2017 13:03:10 +0100 Subject: pkgreq_results.php: Hide empty table Display a message that no requests matched the filter criteria instead of showing an empty package requests table. Signed-off-by: Lukas Fleischer --- web/template/pkgreq_results.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/web/template/pkgreq_results.php b/web/template/pkgreq_results.php index 74fcb10d..fb49dfae 100644 --- a/web/template/pkgreq_results.php +++ b/web/template/pkgreq_results.php @@ -1,3 +1,6 @@ + +

    +

    @@ -129,3 +132,4 @@

    + -- cgit v1.2.3-24-g4f1b From d0a7a70e2dd06defeef78660ae4efb803c94d859 Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Sat, 25 Feb 2017 13:41:22 +0100 Subject: Update message catalog --- po/aur.pot | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/po/aur.pot b/po/aur.pot index 580a1310..1434ab15 100644 --- a/po/aur.pot +++ b/po/aur.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: AUR v4.4.1\n" "Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n" -"POT-Creation-Date: 2017-02-23 07:42+0100\n" +"POT-Creation-Date: 2017-02-25 13:41+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -1650,6 +1650,10 @@ msgid "" "previously." msgstr "" +#: template/pkgreq_results.php +msgid "No requests matched your search criteria." +msgstr "" + #: template/pkgreq_results.php #, php-format msgid "%d package request found." -- cgit v1.2.3-24-g4f1b From e4bc2e7af318a9b2876b0021a8dc8dcf72661e62 Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Sun, 26 Feb 2017 10:28:03 +0100 Subject: Translation updates from Transifex Signed-off-by: Lukas Fleischer --- po/ar.po | 55 +++++++++++++++++++---- po/ast.po | 55 +++++++++++++++++++---- po/ca.po | 55 +++++++++++++++++++---- po/cs.po | 55 +++++++++++++++++++---- po/da.po | 55 +++++++++++++++++++---- po/de.po | 135 ++++++++++++++++++++++++++++++++++++++----------------- po/el.po | 55 +++++++++++++++++++---- po/es.po | 64 +++++++++++++++++++++----- po/es_419.po | 64 +++++++++++++++++++++----- po/fi.po | 55 +++++++++++++++++++---- po/fr.po | 57 +++++++++++++++++++---- po/he.po | 55 +++++++++++++++++++---- po/hr.po | 55 +++++++++++++++++++---- po/hu.po | 55 +++++++++++++++++++---- po/it.po | 55 +++++++++++++++++++---- po/ja.po | 68 ++++++++++++++++++++++------ po/nb.po | 65 ++++++++++++++++++++++----- po/nl.po | 55 +++++++++++++++++++---- po/pl.po | 72 +++++++++++++++++++++++------ po/pt_BR.po | 57 +++++++++++++++++++---- po/pt_PT.po | 55 +++++++++++++++++++---- po/ro.po | 55 +++++++++++++++++++---- po/ru.po | 55 +++++++++++++++++++---- po/sk.po | 145 +++++++++++++++++++++++++++++++++++++++++------------------ po/sr.po | 57 +++++++++++++++++++---- po/tr.po | 63 +++++++++++++++++++++----- po/uk.po | 107 ++++++++++++++++++++++++++++++------------- po/zh_CN.po | 55 +++++++++++++++++++---- po/zh_TW.po | 57 +++++++++++++++++++---- 29 files changed, 1536 insertions(+), 355 deletions(-) diff --git a/po/ar.po b/po/ar.po index 7258e645..02a03770 100644 --- a/po/ar.po +++ b/po/ar.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Arch User Repository (AUR)\n" "Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n" -"POT-Creation-Date: 2016-10-08 14:59+0200\n" -"PO-Revision-Date: 2016-10-08 12:59+0000\n" +"POT-Creation-Date: 2017-02-25 13:41+0100\n" +"PO-Revision-Date: 2017-02-25 12:41+0000\n" "Last-Translator: Lukas Fleischer \n" "Language-Team: Arabic (http://www.transifex.com/lfleischer/aur/language/" "ar/)\n" @@ -127,9 +127,30 @@ msgstr "أدر المصينين المشاركين" msgid "Edit comment" msgstr "حرّر التّعليق" +msgid "Dashboard" +msgstr "" + msgid "Home" msgstr "الرّئيسيّة" +msgid "My Flagged Packages" +msgstr "" + +msgid "My Requests" +msgstr "" + +msgid "My Packages" +msgstr "حزمي" + +msgid "Search for packages I maintain" +msgstr "" + +msgid "Co-Maintained Packages" +msgstr "" + +msgid "Search for packages I co-maintain" +msgstr "" + #, php-format msgid "" "Welcome to the AUR! Please read the %sAUR User Guidelines%s and %sAUR TU " @@ -365,6 +386,9 @@ msgstr "" msgid "Enter your e-mail address:" msgstr "أدخل عنوان بريدك الإلكترونيّ:" +msgid "Package Bases" +msgstr "" + msgid "" "The selected packages have not been disowned, check the confirmation " "checkbox." @@ -596,6 +620,9 @@ msgstr "لا يمكن زيادة صلاحيّات الحساب." msgid "Language is not currently supported." msgstr "اللغة غير مدعومة حاليًّا." +msgid "Timezone is not currently supported." +msgstr "" + #, php-format msgid "The username, %s%s%s, is already in use." msgstr "اسم المستخدم %s%s%s مستخدم بالفعل." @@ -900,6 +927,9 @@ msgstr "نشط" msgid "Registration date:" msgstr "" +msgid "unknown" +msgstr "مجهول" + msgid "Last Login" msgstr "آخر ولوج" @@ -949,6 +979,9 @@ msgstr "أعد كتابة كلمة المرور" msgid "Language" msgstr "اللغة" +msgid "Timezone" +msgstr "" + msgid "" "The following information is only required if you want to submit packages to " "the Arch User Repository." @@ -1029,9 +1062,6 @@ msgstr "عُد إلى التّفاصيل" msgid "Copyright %s 2004-%d aurweb Development Team." msgstr "الحقوق محفوظة %s 2004-%d فريق تطوير aurweb." -msgid "My Packages" -msgstr "حزمي" - msgid " My Account" msgstr "حسابي" @@ -1088,9 +1118,6 @@ msgstr[5] "%d طلب منتظر" msgid "Adopt Package" msgstr "تبنّ الحزمة" -msgid "unknown" -msgstr "مجهول" - msgid "Package Base Details" msgstr "تفاصيل أساس الحزمة" @@ -1276,6 +1303,9 @@ msgid "" "previously." msgstr "" +msgid "No requests matched your search criteria." +msgstr "" + #, php-format msgid "%d package request found." msgid_plural "%d package requests found." @@ -1331,6 +1361,9 @@ msgstr "" msgid "Close" msgstr "أغلق" +msgid "Pending" +msgstr "" + msgid "Closed" msgstr "مغلق" @@ -1346,6 +1379,12 @@ msgstr "الاسم بالضّبط" msgid "Exact Package Base" msgstr "أساس الحزمة بالضّبط" +msgid "Co-maintainer" +msgstr "" + +msgid "Maintainer, Co-maintainer" +msgstr "" + msgid "All" msgstr "الكلّ" diff --git a/po/ast.po b/po/ast.po index 2a80e03e..760aec42 100644 --- a/po/ast.po +++ b/po/ast.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: Arch User Repository (AUR)\n" "Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n" -"POT-Creation-Date: 2016-10-08 14:59+0200\n" -"PO-Revision-Date: 2016-10-08 12:59+0000\n" +"POT-Creation-Date: 2017-02-25 13:41+0100\n" +"PO-Revision-Date: 2017-02-25 12:41+0000\n" "Last-Translator: Lukas Fleischer \n" "Language-Team: Asturian (http://www.transifex.com/lfleischer/aur/language/" "ast/)\n" @@ -127,9 +127,30 @@ msgstr "" msgid "Edit comment" msgstr "" +msgid "Dashboard" +msgstr "" + msgid "Home" msgstr "Aniciu" +msgid "My Flagged Packages" +msgstr "" + +msgid "My Requests" +msgstr "" + +msgid "My Packages" +msgstr "Los mios paquetes" + +msgid "Search for packages I maintain" +msgstr "" + +msgid "Co-Maintained Packages" +msgstr "" + +msgid "Search for packages I co-maintain" +msgstr "" + #, php-format msgid "" "Welcome to the AUR! Please read the %sAUR User Guidelines%s and %sAUR TU " @@ -349,6 +370,9 @@ msgstr "" msgid "Enter your e-mail address:" msgstr "Introduz la to direción de corréu:" +msgid "Package Bases" +msgstr "" + msgid "" "The selected packages have not been disowned, check the confirmation " "checkbox." @@ -579,6 +603,9 @@ msgstr "Nun puen aumentase los permisos de la cuenta." msgid "Language is not currently supported." msgstr "La llingua nun ta anguaño sofitada." +msgid "Timezone is not currently supported." +msgstr "" + #, php-format msgid "The username, %s%s%s, is already in use." msgstr "El nome d'usuariu, %s%s%s, yá ta n'usu." @@ -882,6 +909,9 @@ msgstr "Activu" msgid "Registration date:" msgstr "" +msgid "unknown" +msgstr "Desconocíu" + msgid "Last Login" msgstr "" @@ -931,6 +961,9 @@ msgstr "Teclexa de nueves la contraseña" msgid "Language" msgstr "Llingua" +msgid "Timezone" +msgstr "" + msgid "" "The following information is only required if you want to submit packages to " "the Arch User Repository." @@ -1012,9 +1045,6 @@ msgstr "" msgid "Copyright %s 2004-%d aurweb Development Team." msgstr "" -msgid "My Packages" -msgstr "Los mios paquetes" - msgid " My Account" msgstr "La mio cuenta" @@ -1067,9 +1097,6 @@ msgstr[1] "" msgid "Adopt Package" msgstr "" -msgid "unknown" -msgstr "Desconocíu" - msgid "Package Base Details" msgstr "Detalles del paquete base" @@ -1255,6 +1282,9 @@ msgid "" "previously." msgstr "" +msgid "No requests matched your search criteria." +msgstr "" + #, php-format msgid "%d package request found." msgid_plural "%d package requests found." @@ -1298,6 +1328,9 @@ msgstr "Bloquiáu" msgid "Close" msgstr "Zarrar" +msgid "Pending" +msgstr "" + msgid "Closed" msgstr "Zarráu" @@ -1313,6 +1346,12 @@ msgstr "Nome exautu" msgid "Exact Package Base" msgstr "Paquete base exautu" +msgid "Co-maintainer" +msgstr "" + +msgid "Maintainer, Co-maintainer" +msgstr "" + msgid "All" msgstr "Too" diff --git a/po/ca.po b/po/ca.po index 3cab9e51..c3c868fd 100644 --- a/po/ca.po +++ b/po/ca.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: Arch User Repository (AUR)\n" "Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n" -"POT-Creation-Date: 2016-10-08 14:59+0200\n" -"PO-Revision-Date: 2016-10-08 12:59+0000\n" +"POT-Creation-Date: 2017-02-25 13:41+0100\n" +"PO-Revision-Date: 2017-02-25 12:41+0000\n" "Last-Translator: Lukas Fleischer \n" "Language-Team: Catalan (http://www.transifex.com/lfleischer/aur/language/" "ca/)\n" @@ -127,9 +127,30 @@ msgstr "" msgid "Edit comment" msgstr "" +msgid "Dashboard" +msgstr "" + msgid "Home" msgstr "Inici" +msgid "My Flagged Packages" +msgstr "" + +msgid "My Requests" +msgstr "" + +msgid "My Packages" +msgstr "Els meus paquets" + +msgid "Search for packages I maintain" +msgstr "" + +msgid "Co-Maintained Packages" +msgstr "" + +msgid "Search for packages I co-maintain" +msgstr "" + #, php-format msgid "" "Welcome to the AUR! Please read the %sAUR User Guidelines%s and %sAUR TU " @@ -347,6 +368,9 @@ msgstr "" msgid "Enter your e-mail address:" msgstr "Introduiu la vostra adreça de correu." +msgid "Package Bases" +msgstr "" + msgid "" "The selected packages have not been disowned, check the confirmation " "checkbox." @@ -579,6 +603,9 @@ msgstr "No es possible augmentar els permisos del compte." msgid "Language is not currently supported." msgstr "L'idioma no està suportat actualment." +msgid "Timezone is not currently supported." +msgstr "" + #, php-format msgid "The username, %s%s%s, is already in use." msgstr "El nom d'usuari, %s%s%s, ja s'està fent servir." @@ -887,6 +914,9 @@ msgstr "Actiu" msgid "Registration date:" msgstr "" +msgid "unknown" +msgstr "desconegut" + msgid "Last Login" msgstr "" @@ -936,6 +966,9 @@ msgstr "Escriu altre cop la contrasenya" msgid "Language" msgstr "Idioma" +msgid "Timezone" +msgstr "" + msgid "" "The following information is only required if you want to submit packages to " "the Arch User Repository." @@ -1016,9 +1049,6 @@ msgstr "" msgid "Copyright %s 2004-%d aurweb Development Team." msgstr "" -msgid "My Packages" -msgstr "Els meus paquets" - msgid " My Account" msgstr "El meu Compte" @@ -1071,9 +1101,6 @@ msgstr[1] "" msgid "Adopt Package" msgstr "Adoptar Paquet" -msgid "unknown" -msgstr "desconegut" - msgid "Package Base Details" msgstr "" @@ -1257,6 +1284,9 @@ msgid "" "previously." msgstr "" +msgid "No requests matched your search criteria." +msgstr "" + #, php-format msgid "%d package request found." msgid_plural "%d package requests found." @@ -1300,6 +1330,9 @@ msgstr "" msgid "Close" msgstr "" +msgid "Pending" +msgstr "" + msgid "Closed" msgstr "" @@ -1315,6 +1348,12 @@ msgstr "" msgid "Exact Package Base" msgstr "" +msgid "Co-maintainer" +msgstr "" + +msgid "Maintainer, Co-maintainer" +msgstr "" + msgid "All" msgstr "Tots" diff --git a/po/cs.po b/po/cs.po index d5abe1c4..51e6e2c0 100644 --- a/po/cs.po +++ b/po/cs.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: Arch User Repository (AUR)\n" "Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n" -"POT-Creation-Date: 2016-10-08 14:59+0200\n" -"PO-Revision-Date: 2016-10-08 12:59+0000\n" +"POT-Creation-Date: 2017-02-25 13:41+0100\n" +"PO-Revision-Date: 2017-02-25 12:41+0000\n" "Last-Translator: Lukas Fleischer \n" "Language-Team: Czech (http://www.transifex.com/lfleischer/aur/language/cs/)\n" "Language: cs\n" @@ -127,9 +127,30 @@ msgstr "" msgid "Edit comment" msgstr "Upravit komentář" +msgid "Dashboard" +msgstr "" + msgid "Home" msgstr "Domů" +msgid "My Flagged Packages" +msgstr "" + +msgid "My Requests" +msgstr "" + +msgid "My Packages" +msgstr "Moje balíčky" + +msgid "Search for packages I maintain" +msgstr "" + +msgid "Co-Maintained Packages" +msgstr "" + +msgid "Search for packages I co-maintain" +msgstr "" + #, php-format msgid "" "Welcome to the AUR! Please read the %sAUR User Guidelines%s and %sAUR TU " @@ -343,6 +364,9 @@ msgstr "" msgid "Enter your e-mail address:" msgstr "Zadejte emailovou adresu:" +msgid "Package Bases" +msgstr "" + msgid "" "The selected packages have not been disowned, check the confirmation " "checkbox." @@ -569,6 +593,9 @@ msgstr "" msgid "Language is not currently supported." msgstr "Jazyk není momentálné podporován." +msgid "Timezone is not currently supported." +msgstr "" + #, php-format msgid "The username, %s%s%s, is already in use." msgstr "" @@ -869,6 +896,9 @@ msgstr "Aktivní" msgid "Registration date:" msgstr "" +msgid "unknown" +msgstr "neznámý" + msgid "Last Login" msgstr "Poslední přihlášení" @@ -918,6 +948,9 @@ msgstr "Heslo znovu" msgid "Language" msgstr "Jazyk" +msgid "Timezone" +msgstr "" + msgid "" "The following information is only required if you want to submit packages to " "the Arch User Repository." @@ -998,9 +1031,6 @@ msgstr "" msgid "Copyright %s 2004-%d aurweb Development Team." msgstr "" -msgid "My Packages" -msgstr "Moje balíčky" - msgid " My Account" msgstr "Můj účet" @@ -1054,9 +1084,6 @@ msgstr[2] "%d čekajících požadavků" msgid "Adopt Package" msgstr "Adoptovat balíček" -msgid "unknown" -msgstr "neznámý" - msgid "Package Base Details" msgstr "" @@ -1240,6 +1267,9 @@ msgid "" "previously." msgstr "" +msgid "No requests matched your search criteria." +msgstr "" + #, php-format msgid "%d package request found." msgid_plural "%d package requests found." @@ -1286,6 +1316,9 @@ msgstr "Zamčeno" msgid "Close" msgstr "Uzavřít" +msgid "Pending" +msgstr "" + msgid "Closed" msgstr "Uzavřeno" @@ -1301,6 +1334,12 @@ msgstr "Přesné jméno" msgid "Exact Package Base" msgstr "" +msgid "Co-maintainer" +msgstr "" + +msgid "Maintainer, Co-maintainer" +msgstr "" + msgid "All" msgstr "Vše" diff --git a/po/da.po b/po/da.po index 2f31a152..59de0846 100644 --- a/po/da.po +++ b/po/da.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Arch User Repository (AUR)\n" "Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n" -"POT-Creation-Date: 2016-10-08 14:59+0200\n" -"PO-Revision-Date: 2016-10-08 12:59+0000\n" +"POT-Creation-Date: 2017-02-25 13:41+0100\n" +"PO-Revision-Date: 2017-02-25 12:41+0000\n" "Last-Translator: Lukas Fleischer \n" "Language-Team: Danish (http://www.transifex.com/lfleischer/aur/language/" "da/)\n" @@ -126,9 +126,30 @@ msgstr "" msgid "Edit comment" msgstr "" +msgid "Dashboard" +msgstr "" + msgid "Home" msgstr "Hjem" +msgid "My Flagged Packages" +msgstr "" + +msgid "My Requests" +msgstr "" + +msgid "My Packages" +msgstr "Mine pakker" + +msgid "Search for packages I maintain" +msgstr "" + +msgid "Co-Maintained Packages" +msgstr "" + +msgid "Search for packages I co-maintain" +msgstr "" + #, php-format msgid "" "Welcome to the AUR! Please read the %sAUR User Guidelines%s and %sAUR TU " @@ -338,6 +359,9 @@ msgstr "" msgid "Enter your e-mail address:" msgstr "Indtast din mail-adresse:" +msgid "Package Bases" +msgstr "" + msgid "" "The selected packages have not been disowned, check the confirmation " "checkbox." @@ -564,6 +588,9 @@ msgstr "" msgid "Language is not currently supported." msgstr "Sproget er ikke understøttet på nuværende tidspunkt." +msgid "Timezone is not currently supported." +msgstr "" + #, php-format msgid "The username, %s%s%s, is already in use." msgstr "" @@ -863,6 +890,9 @@ msgstr "Aktiv" msgid "Registration date:" msgstr "" +msgid "unknown" +msgstr "ukendt" + msgid "Last Login" msgstr "Sidste login" @@ -912,6 +942,9 @@ msgstr "Bekræft adgangskode" msgid "Language" msgstr "Sprog" +msgid "Timezone" +msgstr "" + msgid "" "The following information is only required if you want to submit packages to " "the Arch User Repository." @@ -992,9 +1025,6 @@ msgstr "" msgid "Copyright %s 2004-%d aurweb Development Team." msgstr "" -msgid "My Packages" -msgstr "Mine pakker" - msgid " My Account" msgstr "Min konto" @@ -1047,9 +1077,6 @@ msgstr[1] "" msgid "Adopt Package" msgstr "Adopter pakke" -msgid "unknown" -msgstr "ukendt" - msgid "Package Base Details" msgstr "" @@ -1233,6 +1260,9 @@ msgid "" "previously." msgstr "" +msgid "No requests matched your search criteria." +msgstr "" + #, php-format msgid "%d package request found." msgid_plural "%d package requests found." @@ -1276,6 +1306,9 @@ msgstr "Låst" msgid "Close" msgstr "Luk" +msgid "Pending" +msgstr "" + msgid "Closed" msgstr "Lukket" @@ -1291,6 +1324,12 @@ msgstr "Præcist navn" msgid "Exact Package Base" msgstr "" +msgid "Co-maintainer" +msgstr "" + +msgid "Maintainer, Co-maintainer" +msgstr "" + msgid "All" msgstr "Alle" diff --git a/po/de.po b/po/de.po index 5aa6e538..7eb709b9 100644 --- a/po/de.po +++ b/po/de.po @@ -7,7 +7,7 @@ # Alexander Griesbaum , 2013-2014 # bjo , 2013 # FabianS_ , 2012 -# go2sh , 2015 +# go2sh , 2015-2016 # FabianS_ , 2012 # Giuliano Schneider , 2015-2016 # go2sh , 2015 @@ -18,15 +18,16 @@ # Nuc1eoN , 2014 # Nuc1eoN , 2014 # Simon Schneider , 2011 +# Stefan Auditor , 2017 # Thomas_Do , 2013-2014 # Thomas_Do , 2012-2013 msgid "" msgstr "" "Project-Id-Version: Arch User Repository (AUR)\n" "Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n" -"POT-Creation-Date: 2016-10-08 14:59+0200\n" -"PO-Revision-Date: 2016-10-08 12:59+0000\n" -"Last-Translator: Lukas Fleischer \n" +"POT-Creation-Date: 2017-02-25 13:41+0100\n" +"PO-Revision-Date: 2017-02-25 16:16+0000\n" +"Last-Translator: Stefan Auditor \n" "Language-Team: German (http://www.transifex.com/lfleischer/aur/language/" "de/)\n" "Language: de\n" @@ -45,15 +46,15 @@ msgid "Note" msgstr "Anmerkung" msgid "Git clone URLs are not meant to be opened in a browser." -msgstr "" +msgstr "Git clone URLs sind nicht dafür gedacht im Browser geöffnet zu werden." #, php-format msgid "To clone the Git repository of %s, run %s." -msgstr "" +msgstr "Um das Git Repository von %s zu clonen, führe %s aus." #, php-format msgid "Click %shere%s to return to the %s details page." -msgstr "" +msgstr "Klicke %shere%s um zur %s Detailseite zurückzukehren." msgid "Service Unavailable" msgstr "Dienst nicht verfügbr" @@ -144,9 +145,30 @@ msgstr "Verwalte Ko-Maintainer" msgid "Edit comment" msgstr "Kommentar bearbeiten" +msgid "Dashboard" +msgstr "Dashboard" + msgid "Home" msgstr "Startseite" +msgid "My Flagged Packages" +msgstr "Mein markierten Pakete" + +msgid "My Requests" +msgstr "Meine Anfragen" + +msgid "My Packages" +msgstr "Meine Pakete" + +msgid "Search for packages I maintain" +msgstr "Suche nach Paketen die ich betreue" + +msgid "Co-Maintained Packages" +msgstr "Ko-Maintainer Pakete" + +msgid "Search for packages I co-maintain" +msgstr "Suche nach Paketen die ich betreue ko-maintaine" + #, php-format msgid "" "Welcome to the AUR! Please read the %sAUR User Guidelines%s and %sAUR TU " @@ -201,7 +223,7 @@ msgstr "" "Paketdetailseite eingereicht werden können:" msgid "Orphan Request" -msgstr "Verweisungsanfrage" +msgstr "Verwaisanfrage" msgid "" "Request a package to be disowned, e.g. when the maintainer is inactive and " @@ -211,7 +233,7 @@ msgstr "" "das Paket vor einer ganzen Weile als veraltet makiert wurde." msgid "Deletion Request" -msgstr "Lösch-Antrag" +msgstr "Löschanfrage" msgid "" "Request a package to be removed from the Arch User Repository. Please do not " @@ -396,6 +418,9 @@ msgstr "" msgid "Enter your e-mail address:" msgstr "Gib Deine E-Mail-Adresse ein:" +msgid "Package Bases" +msgstr "Paketbasis" + msgid "" "The selected packages have not been disowned, check the confirmation " "checkbox." @@ -481,7 +506,7 @@ msgid "Only Trusted Users and Developers can disown packages." msgstr "Nur Tus und Developer können die Paket-Betreuung abgeben." msgid "Flag Comment" -msgstr "" +msgstr "Kommentar markieren" msgid "Flag Package Out-Of-Date" msgstr "Paket als \"veraltet\" makieren" @@ -557,7 +582,7 @@ msgstr "" "Nur vertrauenswürdige Benutzer und Entwickler können Pakete verschmelzen." msgid "Submit Request" -msgstr "" +msgstr "Anfrage absenden" msgid "Close Request" msgstr "Anfrage schließen" @@ -653,6 +678,9 @@ msgstr "Die Zugriffsrechte des Kontos können nicht erweitert werden." msgid "Language is not currently supported." msgstr "Diese Sprache wird momentan noch nicht unterstützt." +msgid "Timezone is not currently supported." +msgstr "Diese Zeitzone wird momentan noch nicht unterstützt." + #, php-format msgid "The username, %s%s%s, is already in use." msgstr "Der Nutzername %s%s%s ist bereits vergeben." @@ -747,19 +775,19 @@ msgid "Missing comment ID." msgstr "Kommentar-ID fehlt." msgid "No more than 5 comments can be pinned." -msgstr "" +msgstr "Mehr als 5 Kommentare können nicht angeheftet werden." msgid "You are not allowed to pin this comment." -msgstr "" +msgstr "Du bist nicht berechtigt diesen Kommentar anzuheften." msgid "You are not allowed to unpin this comment." -msgstr "" +msgstr "Du bist nicht berechtigt diesen Kommentar loszuheften." msgid "Comment has been pinned." -msgstr "" +msgstr "Kommentar wurde angeheftet." msgid "Comment has been unpinned." -msgstr "" +msgstr "Kommentar wurde losgeheftet." msgid "Error retrieving package details." msgstr "Fehler beim Aufrufen der Paket-Details." @@ -943,7 +971,7 @@ msgid "Real Name" msgstr "Echter Name" msgid "Homepage" -msgstr "" +msgstr "Homepage" msgid "IRC Nick" msgstr "IRC-Name" @@ -961,7 +989,10 @@ msgid "Active" msgstr "Aktiv" msgid "Registration date:" -msgstr "" +msgstr "Registrierungsdatum:" + +msgid "unknown" +msgstr "unbekannt" msgid "Last Login" msgstr "Letzter Login" @@ -982,7 +1013,7 @@ msgstr "" #, php-format msgid "Click %shere%s for user details." -msgstr "" +msgstr "Klicke %shere%s für Benutzerdetails." msgid "required" msgstr "Notwendig" @@ -1015,6 +1046,9 @@ msgstr "Bestätige das Passwort" msgid "Language" msgstr "Sprache" +msgid "Timezone" +msgstr "Zeitzone" + msgid "" "The following information is only required if you want to submit packages to " "the Arch User Repository." @@ -1026,16 +1060,16 @@ msgid "SSH Public Key" msgstr "Öffentlicher SSH Schlüssel" msgid "Notification settings" -msgstr "" +msgstr "Benachrichtigungseinstellungen" msgid "Notify of new comments" msgstr "Über neue Kommentare benachrichtigen" msgid "Notify of package updates" -msgstr "" +msgstr "Benachrichtige Paketaktualisierungen" msgid "Notify of ownership changes" -msgstr "" +msgstr "Benachrichtige Besitzeränderungen" msgid "Update" msgstr "Aktualisieren" @@ -1047,7 +1081,7 @@ msgid "Reset" msgstr "Zurücksetzen" msgid "No results matched your search criteria." -msgstr "Deine Suche enthält leider keine Ergebnisse." +msgstr "Die Suchkriterien erzielten keine Treffer." msgid "Edit Account" msgstr "Konto bearbeiten" @@ -1082,26 +1116,23 @@ msgstr "Speichern" #, php-format msgid "Flagged Out-of-Date Comment: %s" -msgstr "" +msgstr "Markiert als \"veraltet\" Kommentar: %s" #, php-format msgid "%s%s%s flagged %s%s%s out-of-date on %s%s%s for the following reason:" -msgstr "" +msgstr "%s%s%s markiert %s%s%s als \"veraltet\" am %s%s%s auf Grund von:" #, php-format msgid "%s%s%s is not flagged out-of-date." -msgstr "" +msgstr "%s%s%s wurde nicht als \"veraltet\" markiert." msgid "Return to Details" -msgstr "" +msgstr "Zu den Details zurückkehren" #, php-format msgid "Copyright %s 2004-%d aurweb Development Team." msgstr "Copyright %s 2004-%d aurweb Development Team." -msgid "My Packages" -msgstr "Meine Pakete" - msgid " My Account" msgstr "Mein Konto" @@ -1140,7 +1171,7 @@ msgid "Disable notifications" msgstr "Benachrichtigungen deaktivieren" msgid "Enable notifications" -msgstr "" +msgstr "Benachritigungen aktivieren" msgid "Manage Co-Maintainers" msgstr "Verwalte Ko-Maintainer" @@ -1154,9 +1185,6 @@ msgstr[1] "%d ausstehende Anfragen" msgid "Adopt Package" msgstr "Paket übernehmen" -msgid "unknown" -msgstr "unbekannt" - msgid "Package Base Details" msgstr "Paketbasis Details" @@ -1201,7 +1229,7 @@ msgid "View all comments" msgstr "Zeige alle Kommentare" msgid "Pinned Comments" -msgstr "" +msgstr "Angeheftete Kommentare" msgid "Latest Comments" msgstr "Neueste Kommentare" @@ -1237,10 +1265,10 @@ msgid "Delete comment" msgstr "Kommentar löschen" msgid "Pin comment" -msgstr "" +msgstr "Kommentar anheften" msgid "Unpin comment" -msgstr "" +msgstr "Kommentar losheften" msgid "All comments" msgstr "Alle Kommentare" @@ -1331,6 +1359,10 @@ msgid "" "package base. This type of request should be used for duplicates, software " "abandoned by upstream, as well as illegal and irreparably broken packages." msgstr "" +"Durch das Absenden einer Löschanfrage wird ein vertrauenswürdiger Benutzer " +"gefragt die Paketbasis zu löschen. Dieser Typ von Anfragen soll für doppelte " +"Pakete, vom Upstream aufgegebene Software sowie illegale und unreparierbar " +"kaputte Pakete verwendet werden." msgid "" "By submitting a merge request, you ask a Trusted User to delete the package " @@ -1338,6 +1370,11 @@ msgid "" "package does not affect the corresponding Git repositories. Make sure you " "update the Git history of the target package yourself." msgstr "" +"Durch das Absenden einer Zusammenfüranfrage wird ein vertrauenswürdiger " +"Benutzer gefragt die Paketbasis zu löschen und die Stimmen und Kommentare zu " +"einer anderen Paketbasis zu transferieren. Das Zusammenführen eines Paketes " +"betrifft nicht die zugehörigen Git Repositories. Stelle sicher, dass die Git " +"Historie des Zielpakets von dir aktualisiert wird." msgid "" "By submitting an orphan request, you ask a Trusted User to disown the " @@ -1345,6 +1382,13 @@ msgid "" "the maintainer is MIA and you already tried to contact the maintainer " "previously." msgstr "" +"Durch das absenden eines Verwaisanfrage wird ein vertrauenswürdiger Benutzer " +"gefragt die Paketbasis zu enteignen. Bitte mache das nur, wenn das Paket " +"Aktionen vom Betreuer braucht, der Betreuer nicht reagiert und du ihn vorher " +"bereits versucht hast zu kontaktieren." + +msgid "No requests matched your search criteria." +msgstr "Die Suchkriterien erzielten keine Treffer in Anfragen." #, php-format msgid "%d package request found." @@ -1368,8 +1412,8 @@ msgstr "Datum" #, php-format msgid "~%d day left" msgid_plural "~%d days left" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "noch ~%d Tag" +msgstr[1] "noch ~%d Tage" #, php-format msgid "~%d hour left" @@ -1389,6 +1433,9 @@ msgstr "Gesperrt" msgid "Close" msgstr "Schließen" +msgid "Pending" +msgstr "Ausstehend" + msgid "Closed" msgstr "Geschlossen" @@ -1404,6 +1451,12 @@ msgstr "Exakter Name" msgid "Exact Package Base" msgstr "Exakte Paketbasis" +msgid "Co-maintainer" +msgstr "Ko-Maintainer" + +msgid "Maintainer, Co-maintainer" +msgstr "Betreuer, Ko-Maintainer" + msgid "All" msgstr "Alle" @@ -1456,7 +1509,7 @@ msgid "Error retrieving package list." msgstr "Fehler beim Aufrufen der Paket-Liste." msgid "No packages matched your search criteria." -msgstr "Keine Pakete entsprachen deinen Suchkriterien." +msgstr "Die Suchkriterien erzielten keine Treffer in Pakete." #, php-format msgid "%d package found." @@ -1472,6 +1525,8 @@ msgid "" "Popularity is calculated as the sum of all votes with each vote being " "weighted with a factor of %.2f per day since its creation." msgstr "" +"Die Beliebtheit wird als die Summe aller Stimmen berechnet, wobei jede " +"Stimme mit dem Faktor %.2f pro Tag seit der Erstellung gewichtet wird." msgid "Yes" msgstr "Ja" diff --git a/po/el.po b/po/el.po index 254c02a1..b4d7902c 100644 --- a/po/el.po +++ b/po/el.po @@ -14,8 +14,8 @@ msgid "" msgstr "" "Project-Id-Version: Arch User Repository (AUR)\n" "Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n" -"POT-Creation-Date: 2016-10-08 14:59+0200\n" -"PO-Revision-Date: 2016-10-08 12:59+0000\n" +"POT-Creation-Date: 2017-02-25 13:41+0100\n" +"PO-Revision-Date: 2017-02-25 12:41+0000\n" "Last-Translator: Lukas Fleischer \n" "Language-Team: Greek (http://www.transifex.com/lfleischer/aur/language/el/)\n" "Language: el\n" @@ -131,9 +131,30 @@ msgstr "" msgid "Edit comment" msgstr "" +msgid "Dashboard" +msgstr "" + msgid "Home" msgstr "Αρχική" +msgid "My Flagged Packages" +msgstr "" + +msgid "My Requests" +msgstr "" + +msgid "My Packages" +msgstr "Τα πακέτα μου" + +msgid "Search for packages I maintain" +msgstr "" + +msgid "Co-Maintained Packages" +msgstr "" + +msgid "Search for packages I co-maintain" +msgstr "" + #, php-format msgid "" "Welcome to the AUR! Please read the %sAUR User Guidelines%s and %sAUR TU " @@ -354,6 +375,9 @@ msgstr "" msgid "Enter your e-mail address:" msgstr "Εισάγετε την διεύθυνση e-mail σας:" +msgid "Package Bases" +msgstr "" + msgid "" "The selected packages have not been disowned, check the confirmation " "checkbox." @@ -587,6 +611,9 @@ msgstr "Δε γίνεται να αυξηθούν τα δικαιώματα το msgid "Language is not currently supported." msgstr "Η γλώσσα αυτή δεν υποστηρίζεται ακόμη." +msgid "Timezone is not currently supported." +msgstr "" + #, php-format msgid "The username, %s%s%s, is already in use." msgstr "Το όνομα, %s%s%s, χρησιμοποιείται ήδη." @@ -899,6 +926,9 @@ msgstr "Ενεργός" msgid "Registration date:" msgstr "" +msgid "unknown" +msgstr "άγνωστο" + msgid "Last Login" msgstr "Τελευταία σύνδεση" @@ -948,6 +978,9 @@ msgstr "Πληκτρολογήστε ξανά τον κωδικό σας." msgid "Language" msgstr "Γλώσσα" +msgid "Timezone" +msgstr "" + msgid "" "The following information is only required if you want to submit packages to " "the Arch User Repository." @@ -1028,9 +1061,6 @@ msgstr "" msgid "Copyright %s 2004-%d aurweb Development Team." msgstr "" -msgid "My Packages" -msgstr "Τα πακέτα μου" - msgid " My Account" msgstr "Ο λογαριασμός μου" @@ -1083,9 +1113,6 @@ msgstr[1] "" msgid "Adopt Package" msgstr "Υιοθετήστε το Πακέτο" -msgid "unknown" -msgstr "άγνωστο" - msgid "Package Base Details" msgstr "" @@ -1269,6 +1296,9 @@ msgid "" "previously." msgstr "" +msgid "No requests matched your search criteria." +msgstr "" + #, php-format msgid "%d package request found." msgid_plural "%d package requests found." @@ -1312,6 +1342,9 @@ msgstr "" msgid "Close" msgstr "" +msgid "Pending" +msgstr "" + msgid "Closed" msgstr "" @@ -1327,6 +1360,12 @@ msgstr "" msgid "Exact Package Base" msgstr "" +msgid "Co-maintainer" +msgstr "" + +msgid "Maintainer, Co-maintainer" +msgstr "" + msgid "All" msgstr "Όλα" diff --git a/po/es.po b/po/es.po index c61e657d..a141ff57 100644 --- a/po/es.po +++ b/po/es.po @@ -18,8 +18,8 @@ msgid "" msgstr "" "Project-Id-Version: Arch User Repository (AUR)\n" "Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n" -"POT-Creation-Date: 2016-10-08 14:59+0200\n" -"PO-Revision-Date: 2016-10-08 12:59+0000\n" +"POT-Creation-Date: 2017-02-25 13:41+0100\n" +"PO-Revision-Date: 2017-02-25 12:41+0000\n" "Last-Translator: Lukas Fleischer \n" "Language-Team: Spanish (http://www.transifex.com/lfleischer/aur/language/" "es/)\n" @@ -40,14 +40,15 @@ msgstr "Nota" msgid "Git clone URLs are not meant to be opened in a browser." msgstr "" +"Las direcciones de clonado de Git no deberían ser habiertas en un navegador." #, php-format msgid "To clone the Git repository of %s, run %s." -msgstr "" +msgstr "Para clonar el repositorio Git de %s, ejecuta %s." #, php-format msgid "Click %shere%s to return to the %s details page." -msgstr "" +msgstr "Haz clic %saquí%s para regresar a la página de detalles de %s." msgid "Service Unavailable" msgstr "Servicio no disponible" @@ -137,9 +138,30 @@ msgstr "Administrar coencargados" msgid "Edit comment" msgstr "Editar comentario" +msgid "Dashboard" +msgstr "" + msgid "Home" msgstr "Inicio" +msgid "My Flagged Packages" +msgstr "" + +msgid "My Requests" +msgstr "" + +msgid "My Packages" +msgstr "Mis paquetes" + +msgid "Search for packages I maintain" +msgstr "" + +msgid "Co-Maintained Packages" +msgstr "" + +msgid "Search for packages I co-maintain" +msgstr "" + #, php-format msgid "" "Welcome to the AUR! Please read the %sAUR User Guidelines%s and %sAUR TU " @@ -387,6 +409,9 @@ msgstr "" msgid "Enter your e-mail address:" msgstr "Introduce tu dirección de correo:" +msgid "Package Bases" +msgstr "" + msgid "" "The selected packages have not been disowned, check the confirmation " "checkbox." @@ -640,6 +665,9 @@ msgstr "No se puede incrementar los permisos de la cuenta." msgid "Language is not currently supported." msgstr "El idioma no está soportado actualmente." +msgid "Timezone is not currently supported." +msgstr "" + #, php-format msgid "The username, %s%s%s, is already in use." msgstr "El nombre de usuario, %s%s%s, ya está en uso." @@ -953,7 +981,10 @@ msgid "Active" msgstr "Activo" msgid "Registration date:" -msgstr "" +msgstr "Fecha de registración:" + +msgid "unknown" +msgstr "desconocido" msgid "Last Login" msgstr "Última autentificación" @@ -973,7 +1004,7 @@ msgstr "Haz clic %saquí%s si deseas eliminar permanentemente esta cuenta." #, php-format msgid "Click %shere%s for user details." -msgstr "" +msgstr "Haz clic %saquí%s para ver los detalles del usuario." msgid "required" msgstr "obligatorio" @@ -1006,6 +1037,9 @@ msgstr "Reescribe la contraseña" msgid "Language" msgstr "Idioma" +msgid "Timezone" +msgstr "" + msgid "" "The following information is only required if you want to submit packages to " "the Arch User Repository." @@ -1094,9 +1128,6 @@ msgid "Copyright %s 2004-%d aurweb Development Team." msgstr "" "Derechos de autor %s 2004 - %d, equipo desarrollador de la web del AUR." -msgid "My Packages" -msgstr "Mis paquetes" - msgid " My Account" msgstr "Mi cuenta" @@ -1149,9 +1180,6 @@ msgstr[1] "Hay %d solicitudes pendientes" msgid "Adopt Package" msgstr "Adoptar paquete" -msgid "unknown" -msgstr "desconocido" - msgid "Package Base Details" msgstr "Detalles del paquete base" @@ -1354,6 +1382,9 @@ msgstr "" "mantenención, el encargado no presenta signos de actividad y ya intentaste " "ponerte en contacto con él anteriormente." +msgid "No requests matched your search criteria." +msgstr "" + #, php-format msgid "%d package request found." msgid_plural "%d package requests found." @@ -1397,6 +1428,9 @@ msgstr "Bloqueada" msgid "Close" msgstr "Cerrar" +msgid "Pending" +msgstr "" + msgid "Closed" msgstr "Cerrada" @@ -1412,6 +1446,12 @@ msgstr "Nombre exacto" msgid "Exact Package Base" msgstr "Paquete base exacto" +msgid "Co-maintainer" +msgstr "" + +msgid "Maintainer, Co-maintainer" +msgstr "" + msgid "All" msgstr "Todos" diff --git a/po/es_419.po b/po/es_419.po index 14adaf94..d065cf9c 100644 --- a/po/es_419.po +++ b/po/es_419.po @@ -16,8 +16,8 @@ msgid "" msgstr "" "Project-Id-Version: Arch User Repository (AUR)\n" "Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n" -"POT-Creation-Date: 2016-10-08 14:59+0200\n" -"PO-Revision-Date: 2016-10-08 12:59+0000\n" +"POT-Creation-Date: 2017-02-25 13:41+0100\n" +"PO-Revision-Date: 2017-02-25 12:41+0000\n" "Last-Translator: Lukas Fleischer \n" "Language-Team: Spanish (Latin America) (http://www.transifex.com/lfleischer/" "aur/language/es_419/)\n" @@ -38,14 +38,15 @@ msgstr "Nota" msgid "Git clone URLs are not meant to be opened in a browser." msgstr "" +"Las direcciones de clonado de Git no deberían ser habiertas en un navegador." #, php-format msgid "To clone the Git repository of %s, run %s." -msgstr "" +msgstr "Para clonar el repositorio Git de %s, ejecute %s." #, php-format msgid "Click %shere%s to return to the %s details page." -msgstr "" +msgstr "Haga clic %saquí%s para regresar a la página de detalles de %s." msgid "Service Unavailable" msgstr "Servicio no disponible" @@ -135,9 +136,30 @@ msgstr "Administrar coencargados" msgid "Edit comment" msgstr "Editar comentario" +msgid "Dashboard" +msgstr "" + msgid "Home" msgstr "Inicio" +msgid "My Flagged Packages" +msgstr "" + +msgid "My Requests" +msgstr "" + +msgid "My Packages" +msgstr "Mis paquetes" + +msgid "Search for packages I maintain" +msgstr "" + +msgid "Co-Maintained Packages" +msgstr "" + +msgid "Search for packages I co-maintain" +msgstr "" + #, php-format msgid "" "Welcome to the AUR! Please read the %sAUR User Guidelines%s and %sAUR TU " @@ -384,6 +406,9 @@ msgstr "" msgid "Enter your e-mail address:" msgstr "Introduzca su dirección de correo:" +msgid "Package Bases" +msgstr "" + msgid "" "The selected packages have not been disowned, check the confirmation " "checkbox." @@ -636,6 +661,9 @@ msgstr "No se puede incrementar los permisos de la cuenta." msgid "Language is not currently supported." msgstr "El idioma no está soportado actualmente." +msgid "Timezone is not currently supported." +msgstr "" + #, php-format msgid "The username, %s%s%s, is already in use." msgstr "El nombre de usuario, %s%s%s, ya está en uso." @@ -946,7 +974,10 @@ msgid "Active" msgstr "Activo" msgid "Registration date:" -msgstr "" +msgstr "Fecha de registración:" + +msgid "unknown" +msgstr "desconocido" msgid "Last Login" msgstr "Última autentificación" @@ -966,7 +997,7 @@ msgstr "Haga clic %saquí%s si desea borrar permanentemente esa cuenta." #, php-format msgid "Click %shere%s for user details." -msgstr "" +msgstr "Haga clic %saquí%s para ver los detalles del usuario." msgid "required" msgstr "obligatorio" @@ -999,6 +1030,9 @@ msgstr "Reescriba la contraseña" msgid "Language" msgstr "Idioma" +msgid "Timezone" +msgstr "" + msgid "" "The following information is only required if you want to submit packages to " "the Arch User Repository." @@ -1086,9 +1120,6 @@ msgid "Copyright %s 2004-%d aurweb Development Team." msgstr "" "Derechos de autor %s 2004 - %d, equipo de desarrollo de la web del AUR." -msgid "My Packages" -msgstr "Mis paquetes" - msgid " My Account" msgstr "Mi cuenta" @@ -1141,9 +1172,6 @@ msgstr[1] "Hay %d peticiones pendientes" msgid "Adopt Package" msgstr "Adoptar paquete" -msgid "unknown" -msgstr "desconocido" - msgid "Package Base Details" msgstr "Detalles del paquete base" @@ -1346,6 +1374,9 @@ msgstr "" "mantenención para funcionar, el encargado no presenta da de actividad y ya " "intentó ponerse en contacto con él anteriormente." +msgid "No requests matched your search criteria." +msgstr "" + #, php-format msgid "%d package request found." msgid_plural "%d package requests found." @@ -1389,6 +1420,9 @@ msgstr "Bloqueada" msgid "Close" msgstr "Cerrar" +msgid "Pending" +msgstr "" + msgid "Closed" msgstr "Cerrada" @@ -1404,6 +1438,12 @@ msgstr "Nombre exacto" msgid "Exact Package Base" msgstr "Paquete base exacto" +msgid "Co-maintainer" +msgstr "" + +msgid "Maintainer, Co-maintainer" +msgstr "" + msgid "All" msgstr "Todos" diff --git a/po/fi.po b/po/fi.po index 6e20ae22..86601c0f 100644 --- a/po/fi.po +++ b/po/fi.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Arch User Repository (AUR)\n" "Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n" -"POT-Creation-Date: 2016-10-08 14:59+0200\n" -"PO-Revision-Date: 2016-10-08 12:59+0000\n" +"POT-Creation-Date: 2017-02-25 13:41+0100\n" +"PO-Revision-Date: 2017-02-25 12:41+0000\n" "Last-Translator: Lukas Fleischer \n" "Language-Team: Finnish (http://www.transifex.com/lfleischer/aur/language/" "fi/)\n" @@ -126,9 +126,30 @@ msgstr "" msgid "Edit comment" msgstr "Muokkaa kommenttia" +msgid "Dashboard" +msgstr "" + msgid "Home" msgstr "Etusivu" +msgid "My Flagged Packages" +msgstr "" + +msgid "My Requests" +msgstr "" + +msgid "My Packages" +msgstr "Omat paketit" + +msgid "Search for packages I maintain" +msgstr "" + +msgid "Co-Maintained Packages" +msgstr "" + +msgid "Search for packages I co-maintain" +msgstr "" + #, php-format msgid "" "Welcome to the AUR! Please read the %sAUR User Guidelines%s and %sAUR TU " @@ -368,6 +389,9 @@ msgstr "" msgid "Enter your e-mail address:" msgstr "Sähköpostiosoitteesi:" +msgid "Package Bases" +msgstr "" + msgid "" "The selected packages have not been disowned, check the confirmation " "checkbox." @@ -616,6 +640,9 @@ msgstr "Käyttäjätunnuksen oikeuksia ei voitu korottaa." msgid "Language is not currently supported." msgstr "Kieli ei ole vielä tuettuna." +msgid "Timezone is not currently supported." +msgstr "" + #, php-format msgid "The username, %s%s%s, is already in use." msgstr "Käyttäjänimi %s%s%s on jo käytössä." @@ -917,6 +944,9 @@ msgstr "Aktiivinen" msgid "Registration date:" msgstr "" +msgid "unknown" +msgstr "tuntematon" + msgid "Last Login" msgstr "" @@ -966,6 +996,9 @@ msgstr "Salasana uudelleen:" msgid "Language" msgstr "Kieli" +msgid "Timezone" +msgstr "" + msgid "" "The following information is only required if you want to submit packages to " "the Arch User Repository." @@ -1046,9 +1079,6 @@ msgstr "" msgid "Copyright %s 2004-%d aurweb Development Team." msgstr "" -msgid "My Packages" -msgstr "Omat paketit" - msgid " My Account" msgstr "Omat tiedot" @@ -1101,9 +1131,6 @@ msgstr[1] "%d käsittelemätöntä hallintapyyntöä" msgid "Adopt Package" msgstr "Ryhdy ylläpitäjäksi" -msgid "unknown" -msgstr "tuntematon" - msgid "Package Base Details" msgstr "" @@ -1287,6 +1314,9 @@ msgid "" "previously." msgstr "" +msgid "No requests matched your search criteria." +msgstr "" + #, php-format msgid "%d package request found." msgid_plural "%d package requests found." @@ -1330,6 +1360,9 @@ msgstr "" msgid "Close" msgstr "" +msgid "Pending" +msgstr "" + msgid "Closed" msgstr "" @@ -1345,6 +1378,12 @@ msgstr "" msgid "Exact Package Base" msgstr "" +msgid "Co-maintainer" +msgstr "" + +msgid "Maintainer, Co-maintainer" +msgstr "" + msgid "All" msgstr "Kaikki" diff --git a/po/fr.po b/po/fr.po index 0c10f9fb..0bb3ccd4 100644 --- a/po/fr.po +++ b/po/fr.po @@ -15,9 +15,9 @@ msgid "" msgstr "" "Project-Id-Version: Arch User Repository (AUR)\n" "Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n" -"POT-Creation-Date: 2016-10-08 14:59+0200\n" -"PO-Revision-Date: 2016-10-11 20:06+0000\n" -"Last-Translator: Antoine Lubineau \n" +"POT-Creation-Date: 2017-02-25 13:41+0100\n" +"PO-Revision-Date: 2017-02-25 12:41+0000\n" +"Last-Translator: Lukas Fleischer \n" "Language-Team: French (http://www.transifex.com/lfleischer/aur/language/" "fr/)\n" "Language: fr\n" @@ -136,9 +136,30 @@ msgstr "Gérer les co-mainteneurs" msgid "Edit comment" msgstr "Éditer le commentaire" +msgid "Dashboard" +msgstr "" + msgid "Home" msgstr "Accueil" +msgid "My Flagged Packages" +msgstr "" + +msgid "My Requests" +msgstr "" + +msgid "My Packages" +msgstr "Mes paquets" + +msgid "Search for packages I maintain" +msgstr "" + +msgid "Co-Maintained Packages" +msgstr "" + +msgid "Search for packages I co-maintain" +msgstr "" + #, php-format msgid "" "Welcome to the AUR! Please read the %sAUR User Guidelines%s and %sAUR TU " @@ -387,6 +408,9 @@ msgstr "" msgid "Enter your e-mail address:" msgstr "Entrez votre adresse e-mail :" +msgid "Package Bases" +msgstr "" + msgid "" "The selected packages have not been disowned, check the confirmation " "checkbox." @@ -645,6 +669,9 @@ msgstr "Ne peut pas augmenter les autorisations du compte." msgid "Language is not currently supported." msgstr "Cette langue n'est pas supportée pour le moment." +msgid "Timezone is not currently supported." +msgstr "" + #, php-format msgid "The username, %s%s%s, is already in use." msgstr "Le nom d’utilisateur %s%s%s, est déjà utilisé." @@ -967,6 +994,9 @@ msgstr "Actif" msgid "Registration date:" msgstr "Date d'enregistrement :" +msgid "unknown" +msgstr "inconnu" + msgid "Last Login" msgstr "Dernière connexion." @@ -1018,6 +1048,9 @@ msgstr "Retapez le mot de passe" msgid "Language" msgstr "Langue" +msgid "Timezone" +msgstr "" + msgid "" "The following information is only required if you want to submit packages to " "the Arch User Repository." @@ -1103,9 +1136,6 @@ msgstr "Retourner aux détails" msgid "Copyright %s 2004-%d aurweb Development Team." msgstr "Copyright %s 2004-%d aurweb Development Team." -msgid "My Packages" -msgstr "Mes paquets" - msgid " My Account" msgstr "Mon compte" @@ -1158,9 +1188,6 @@ msgstr[1] "%d requêtes en attente" msgid "Adopt Package" msgstr "Adopter ce paquet" -msgid "unknown" -msgstr "inconnu" - msgid "Package Base Details" msgstr "Détails du paquet de base" @@ -1363,6 +1390,9 @@ msgstr "" "mainteneur ne répond pas et que vous avez préalablement essayé de contacter " "le mainteneur." +msgid "No requests matched your search criteria." +msgstr "" + #, php-format msgid "%d package request found." msgid_plural "%d package requests found." @@ -1406,6 +1436,9 @@ msgstr "Verrouillé" msgid "Close" msgstr "Fermer" +msgid "Pending" +msgstr "" + msgid "Closed" msgstr "Fermé" @@ -1421,6 +1454,12 @@ msgstr "Nom exact" msgid "Exact Package Base" msgstr "Paquet de base exact" +msgid "Co-maintainer" +msgstr "" + +msgid "Maintainer, Co-maintainer" +msgstr "" + msgid "All" msgstr "Tout" diff --git a/po/he.po b/po/he.po index 75321be6..2cf535a1 100644 --- a/po/he.po +++ b/po/he.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: Arch User Repository (AUR)\n" "Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n" -"POT-Creation-Date: 2016-10-08 14:59+0200\n" -"PO-Revision-Date: 2016-10-08 12:59+0000\n" +"POT-Creation-Date: 2017-02-25 13:41+0100\n" +"PO-Revision-Date: 2017-02-25 12:41+0000\n" "Last-Translator: Lukas Fleischer \n" "Language-Team: Hebrew (http://www.transifex.com/lfleischer/aur/language/" "he/)\n" @@ -127,9 +127,30 @@ msgstr "ניהול שותפים לתחזוקה" msgid "Edit comment" msgstr "עריכת תגובה" +msgid "Dashboard" +msgstr "" + msgid "Home" msgstr "בית" +msgid "My Flagged Packages" +msgstr "" + +msgid "My Requests" +msgstr "" + +msgid "My Packages" +msgstr "החבילות שלי" + +msgid "Search for packages I maintain" +msgstr "" + +msgid "Co-Maintained Packages" +msgstr "" + +msgid "Search for packages I co-maintain" +msgstr "" + #, php-format msgid "" "Welcome to the AUR! Please read the %sAUR User Guidelines%s and %sAUR TU " @@ -353,6 +374,9 @@ msgstr "" msgid "Enter your e-mail address:" msgstr "נא להזין את כתובת הדוא״ל שלך:" +msgid "Package Bases" +msgstr "" + msgid "" "The selected packages have not been disowned, check the confirmation " "checkbox." @@ -583,6 +607,9 @@ msgstr "לא ניתן להגדיל את הרשאות החשבון." msgid "Language is not currently supported." msgstr "שפה כרגע לא נתמכת." +msgid "Timezone is not currently supported." +msgstr "" + #, php-format msgid "The username, %s%s%s, is already in use." msgstr "שם המשתמש, %s%s%s, כבר נמצא בשימוש." @@ -884,6 +911,9 @@ msgstr "פעיל" msgid "Registration date:" msgstr "" +msgid "unknown" +msgstr "לא מוכר" + msgid "Last Login" msgstr "כניסה אחרונה" @@ -933,6 +963,9 @@ msgstr "הקלדת הססמה מחדש" msgid "Language" msgstr "שפה" +msgid "Timezone" +msgstr "" + msgid "" "The following information is only required if you want to submit packages to " "the Arch User Repository." @@ -1014,9 +1047,6 @@ msgstr "חזרה לפרטים" msgid "Copyright %s 2004-%d aurweb Development Team." msgstr "כל הזכויות שמורות %s 2004-%d לצוות הפיתוח של aurweb." -msgid "My Packages" -msgstr "החבילות שלי" - msgid " My Account" msgstr "החשבון שלי" @@ -1069,9 +1099,6 @@ msgstr[1] "%d בקשות ממתינות" msgid "Adopt Package" msgstr "אימוץ חבילה" -msgid "unknown" -msgstr "לא מוכר" - msgid "Package Base Details" msgstr "פרטי בסיס החבילה" @@ -1255,6 +1282,9 @@ msgid "" "previously." msgstr "" +msgid "No requests matched your search criteria." +msgstr "" + #, php-format msgid "%d package request found." msgid_plural "%d package requests found." @@ -1298,6 +1328,9 @@ msgstr "ננעל" msgid "Close" msgstr "סגירה" +msgid "Pending" +msgstr "" + msgid "Closed" msgstr "סגור" @@ -1313,6 +1346,12 @@ msgstr "שם מדויק" msgid "Exact Package Base" msgstr "בסיס החבילה המדויק" +msgid "Co-maintainer" +msgstr "" + +msgid "Maintainer, Co-maintainer" +msgstr "" + msgid "All" msgstr "הכול" diff --git a/po/hr.po b/po/hr.po index 2bf3963c..71a1ae82 100644 --- a/po/hr.po +++ b/po/hr.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Arch User Repository (AUR)\n" "Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n" -"POT-Creation-Date: 2016-10-08 14:59+0200\n" -"PO-Revision-Date: 2016-10-08 12:59+0000\n" +"POT-Creation-Date: 2017-02-25 13:41+0100\n" +"PO-Revision-Date: 2017-02-25 12:41+0000\n" "Last-Translator: Lukas Fleischer \n" "Language-Team: Croatian (http://www.transifex.com/lfleischer/aur/language/" "hr/)\n" @@ -126,9 +126,30 @@ msgstr "" msgid "Edit comment" msgstr "" +msgid "Dashboard" +msgstr "" + msgid "Home" msgstr "Početna" +msgid "My Flagged Packages" +msgstr "" + +msgid "My Requests" +msgstr "" + +msgid "My Packages" +msgstr "Moji paketi" + +msgid "Search for packages I maintain" +msgstr "" + +msgid "Co-Maintained Packages" +msgstr "" + +msgid "Search for packages I co-maintain" +msgstr "" + #, php-format msgid "" "Welcome to the AUR! Please read the %sAUR User Guidelines%s and %sAUR TU " @@ -338,6 +359,9 @@ msgstr "" msgid "Enter your e-mail address:" msgstr "" +msgid "Package Bases" +msgstr "" + msgid "" "The selected packages have not been disowned, check the confirmation " "checkbox." @@ -564,6 +588,9 @@ msgstr "" msgid "Language is not currently supported." msgstr "Jezik trenutno nije podržan." +msgid "Timezone is not currently supported." +msgstr "" + #, php-format msgid "The username, %s%s%s, is already in use." msgstr "" @@ -863,6 +890,9 @@ msgstr "Aktivan" msgid "Registration date:" msgstr "" +msgid "unknown" +msgstr "nepoznato" + msgid "Last Login" msgstr "" @@ -912,6 +942,9 @@ msgstr "Ponovno upišite lozinku" msgid "Language" msgstr "Jezik" +msgid "Timezone" +msgstr "" + msgid "" "The following information is only required if you want to submit packages to " "the Arch User Repository." @@ -992,9 +1025,6 @@ msgstr "" msgid "Copyright %s 2004-%d aurweb Development Team." msgstr "" -msgid "My Packages" -msgstr "Moji paketi" - msgid " My Account" msgstr "" @@ -1048,9 +1078,6 @@ msgstr[2] "" msgid "Adopt Package" msgstr "" -msgid "unknown" -msgstr "nepoznato" - msgid "Package Base Details" msgstr "" @@ -1234,6 +1261,9 @@ msgid "" "previously." msgstr "" +msgid "No requests matched your search criteria." +msgstr "" + #, php-format msgid "%d package request found." msgid_plural "%d package requests found." @@ -1280,6 +1310,9 @@ msgstr "" msgid "Close" msgstr "" +msgid "Pending" +msgstr "" + msgid "Closed" msgstr "" @@ -1295,6 +1328,12 @@ msgstr "" msgid "Exact Package Base" msgstr "" +msgid "Co-maintainer" +msgstr "" + +msgid "Maintainer, Co-maintainer" +msgstr "" + msgid "All" msgstr "" diff --git a/po/hu.po b/po/hu.po index a2320696..4501a4aa 100644 --- a/po/hu.po +++ b/po/hu.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: Arch User Repository (AUR)\n" "Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n" -"POT-Creation-Date: 2016-10-08 14:59+0200\n" -"PO-Revision-Date: 2016-10-08 12:59+0000\n" +"POT-Creation-Date: 2017-02-25 13:41+0100\n" +"PO-Revision-Date: 2017-02-25 12:41+0000\n" "Last-Translator: Lukas Fleischer \n" "Language-Team: Hungarian (http://www.transifex.com/lfleischer/aur/language/" "hu/)\n" @@ -129,9 +129,30 @@ msgstr "Társkarbantartók kezelése" msgid "Edit comment" msgstr "Hozzászólás szerkesztése" +msgid "Dashboard" +msgstr "" + msgid "Home" msgstr "Honlap" +msgid "My Flagged Packages" +msgstr "" + +msgid "My Requests" +msgstr "" + +msgid "My Packages" +msgstr "Csomagjaim" + +msgid "Search for packages I maintain" +msgstr "" + +msgid "Co-Maintained Packages" +msgstr "" + +msgid "Search for packages I co-maintain" +msgstr "" + #, php-format msgid "" "Welcome to the AUR! Please read the %sAUR User Guidelines%s and %sAUR TU " @@ -376,6 +397,9 @@ msgstr "" msgid "Enter your e-mail address:" msgstr "Add meg az e-mail címedet:" +msgid "Package Bases" +msgstr "" + msgid "" "The selected packages have not been disowned, check the confirmation " "checkbox." @@ -629,6 +653,9 @@ msgstr "Nem lehet megnövelni a fiók jogosultságait." msgid "Language is not currently supported." msgstr "A nyelv jelenleg nem támogatott." +msgid "Timezone is not currently supported." +msgstr "" + #, php-format msgid "The username, %s%s%s, is already in use." msgstr "A(z) %s%s%s felhasználónév már használatban van." @@ -935,6 +962,9 @@ msgstr "Aktív" msgid "Registration date:" msgstr "Regisztráció dátuma:" +msgid "unknown" +msgstr "ismeretlen" + msgid "Last Login" msgstr "Legutóbbi bejelentkezés" @@ -986,6 +1016,9 @@ msgstr "Megismételt jelszó" msgid "Language" msgstr "Nyelv" +msgid "Timezone" +msgstr "" + msgid "" "The following information is only required if you want to submit packages to " "the Arch User Repository." @@ -1072,9 +1105,6 @@ msgstr "Vissza a részletekhez" msgid "Copyright %s 2004-%d aurweb Development Team." msgstr "Copyright %s 2004-%d aurweb fejlesztői csapat." -msgid "My Packages" -msgstr "Csomagjaim" - msgid " My Account" msgstr " Fiókom" @@ -1127,9 +1157,6 @@ msgstr[1] "%d függő kérelem" msgid "Adopt Package" msgstr "Csomag örökbe fogadása" -msgid "unknown" -msgstr "ismeretlen" - msgid "Package Base Details" msgstr "Alapcsomag részletei" @@ -1332,6 +1359,9 @@ msgstr "" "igényel fenntartói műveletet, a fenntartó eltűnt, és előzőleg már " "megpróbáltad felvenni a kapcsolatot a fenntartóval." +msgid "No requests matched your search criteria." +msgstr "" + #, php-format msgid "%d package request found." msgid_plural "%d package requests found." @@ -1375,6 +1405,9 @@ msgstr "Zárolva" msgid "Close" msgstr "Lezárás" +msgid "Pending" +msgstr "" + msgid "Closed" msgstr "Lezárva" @@ -1390,6 +1423,12 @@ msgstr "Pontos név" msgid "Exact Package Base" msgstr "Pontos alapcsomag" +msgid "Co-maintainer" +msgstr "" + +msgid "Maintainer, Co-maintainer" +msgstr "" + msgid "All" msgstr "Összes" diff --git a/po/it.po b/po/it.po index e0047f3f..e84c1e07 100644 --- a/po/it.po +++ b/po/it.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: Arch User Repository (AUR)\n" "Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n" -"POT-Creation-Date: 2016-10-08 14:59+0200\n" -"PO-Revision-Date: 2016-10-08 12:59+0000\n" +"POT-Creation-Date: 2017-02-25 13:41+0100\n" +"PO-Revision-Date: 2017-02-25 12:41+0000\n" "Last-Translator: Lukas Fleischer \n" "Language-Team: Italian (http://www.transifex.com/lfleischer/aur/language/" "it/)\n" @@ -129,9 +129,30 @@ msgstr "Gestisci i co-manutentori" msgid "Edit comment" msgstr "Edita il commento" +msgid "Dashboard" +msgstr "" + msgid "Home" msgstr "Home" +msgid "My Flagged Packages" +msgstr "" + +msgid "My Requests" +msgstr "" + +msgid "My Packages" +msgstr "I miei pacchetti" + +msgid "Search for packages I maintain" +msgstr "" + +msgid "Co-Maintained Packages" +msgstr "" + +msgid "Search for packages I co-maintain" +msgstr "" + #, php-format msgid "" "Welcome to the AUR! Please read the %sAUR User Guidelines%s and %sAUR TU " @@ -378,6 +399,9 @@ msgstr "" msgid "Enter your e-mail address:" msgstr "Inserisci il tuo indirizzo email:" +msgid "Package Bases" +msgstr "" + msgid "" "The selected packages have not been disowned, check the confirmation " "checkbox." @@ -632,6 +656,9 @@ msgstr "Non è possibile incrementare i permessi dell'account." msgid "Language is not currently supported." msgstr "Lingua attualmente non supportata." +msgid "Timezone is not currently supported." +msgstr "" + #, php-format msgid "The username, %s%s%s, is already in use." msgstr "Il nome utente %s%s%s è già in uso." @@ -950,6 +977,9 @@ msgstr "Attivo" msgid "Registration date:" msgstr "" +msgid "unknown" +msgstr "sconosciuta" + msgid "Last Login" msgstr "Ultimo accesso" @@ -1001,6 +1031,9 @@ msgstr "Riscrivi la password" msgid "Language" msgstr "Lingua" +msgid "Timezone" +msgstr "" + msgid "" "The following information is only required if you want to submit packages to " "the Arch User Repository." @@ -1085,9 +1118,6 @@ msgstr "" msgid "Copyright %s 2004-%d aurweb Development Team." msgstr "Copyright %s 2004-%d aurweb Development Team." -msgid "My Packages" -msgstr "I miei pacchetti" - msgid " My Account" msgstr "Il mio account" @@ -1140,9 +1170,6 @@ msgstr[1] "%d richieste in attesa" msgid "Adopt Package" msgstr "Adotta il pacchetto" -msgid "unknown" -msgstr "sconosciuta" - msgid "Package Base Details" msgstr "Dettagli del pacchetto base" @@ -1330,6 +1357,9 @@ msgid "" "previously." msgstr "" +msgid "No requests matched your search criteria." +msgstr "" + #, php-format msgid "%d package request found." msgid_plural "%d package requests found." @@ -1373,6 +1403,9 @@ msgstr "Bloccato" msgid "Close" msgstr "Chiudi" +msgid "Pending" +msgstr "" + msgid "Closed" msgstr "Chiuso" @@ -1388,6 +1421,12 @@ msgstr "Nome esatto" msgid "Exact Package Base" msgstr "Pacchetto base esatto" +msgid "Co-maintainer" +msgstr "" + +msgid "Maintainer, Co-maintainer" +msgstr "" + msgid "All" msgstr "Tutti" diff --git a/po/ja.po b/po/ja.po index fae1a946..a649f077 100644 --- a/po/ja.po +++ b/po/ja.po @@ -5,13 +5,14 @@ # Translators: # kusakata, 2013 # kusakata, 2013 -# kusakata, 2013-2016 +# kusakata, 2013-2017 +# 尾ノ上卓朗 , 2017 msgid "" msgstr "" "Project-Id-Version: Arch User Repository (AUR)\n" "Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n" -"POT-Creation-Date: 2016-10-08 14:59+0200\n" -"PO-Revision-Date: 2016-10-08 12:59+0000\n" +"POT-Creation-Date: 2017-02-25 13:41+0100\n" +"PO-Revision-Date: 2017-02-25 12:41+0000\n" "Last-Translator: Lukas Fleischer \n" "Language-Team: Japanese (http://www.transifex.com/lfleischer/aur/language/" "ja/)\n" @@ -31,18 +32,18 @@ msgid "Note" msgstr "ノート" msgid "Git clone URLs are not meant to be opened in a browser." -msgstr "" +msgstr "Git のクローン URL はブラウザで開いてはいけません。" #, php-format msgid "To clone the Git repository of %s, run %s." -msgstr "" +msgstr "%s の Git リポジトリを複製するには、%s を実行してください。" #, php-format msgid "Click %shere%s to return to the %s details page." -msgstr "" +msgstr "%sこちら%sをクリックすると %s の詳細ページに戻ります。" msgid "Service Unavailable" -msgstr "Service Unavailable" +msgstr "サービスは利用できません。" msgid "" "Don't panic! This site is down due to maintenance. We will be back soon." @@ -129,9 +130,30 @@ msgstr "共同メンテナの管理" msgid "Edit comment" msgstr "コメントを編集" +msgid "Dashboard" +msgstr "ダッシュボード" + msgid "Home" msgstr "ホーム" +msgid "My Flagged Packages" +msgstr "自分のフラグが立っているパッケージ" + +msgid "My Requests" +msgstr "自分のリクエスト" + +msgid "My Packages" +msgstr "自分のパッケージ" + +msgid "Search for packages I maintain" +msgstr "メンテしているパッケージを検索" + +msgid "Co-Maintained Packages" +msgstr "共同メンテしているパッケージ" + +msgid "Search for packages I co-maintain" +msgstr "共同メンテしているパッケージを検索" + #, php-format msgid "" "Welcome to the AUR! Please read the %sAUR User Guidelines%s and %sAUR TU " @@ -374,6 +396,9 @@ msgstr "" msgid "Enter your e-mail address:" msgstr "メールアドレスを入力:" +msgid "Package Bases" +msgstr "パッケージベース" + msgid "" "The selected packages have not been disowned, check the confirmation " "checkbox." @@ -623,6 +648,9 @@ msgstr "アカウント権限を増やすことはできません。" msgid "Language is not currently supported." msgstr "言語は現在サポートされていません。" +msgid "Timezone is not currently supported." +msgstr "タイムゾーンは現在サポートされていません。" + #, php-format msgid "The username, %s%s%s, is already in use." msgstr "%s%s%s というユーザー名は既に使われています。" @@ -930,6 +958,9 @@ msgstr "活動中" msgid "Registration date:" msgstr "登録日:" +msgid "unknown" +msgstr "不明" + msgid "Last Login" msgstr "最後のログイン" @@ -981,6 +1012,9 @@ msgstr "パスワードの再入力" msgid "Language" msgstr "言語" +msgid "Timezone" +msgstr "タイムゾーン" + msgid "" "The following information is only required if you want to submit packages to " "the Arch User Repository." @@ -1066,9 +1100,6 @@ msgstr "詳細に戻る" msgid "Copyright %s 2004-%d aurweb Development Team." msgstr "Copyright %s 2004-%d aurweb Development Team." -msgid "My Packages" -msgstr "自分のパッケージ" - msgid " My Account" msgstr "アカウント" @@ -1120,9 +1151,6 @@ msgstr[0] "%d 件の保留リクエスト。" msgid "Adopt Package" msgstr "パッケージを承継する" -msgid "unknown" -msgstr "不明" - msgid "Package Base Details" msgstr "パッケージベースの詳細" @@ -1324,6 +1352,9 @@ msgstr "" "り、現在のメンテナが行方不明で、メンテナに連絡を取ろうとしても返答がない場合" "にのみ、リクエストを送信してください。" +msgid "No requests matched your search criteria." +msgstr "" + #, php-format msgid "%d package request found." msgid_plural "%d package requests found." @@ -1364,6 +1395,9 @@ msgstr "ロックされています" msgid "Close" msgstr "クローズ" +msgid "Pending" +msgstr "保留中" + msgid "Closed" msgstr "クローズされました" @@ -1379,6 +1413,12 @@ msgstr "名前完全一致" msgid "Exact Package Base" msgstr "パッケージベース完全一致" +msgid "Co-maintainer" +msgstr "共同メンテナ" + +msgid "Maintainer, Co-maintainer" +msgstr "メンテナ, 共同メンテナ" + msgid "All" msgstr "全て" @@ -1532,7 +1572,7 @@ msgid "No" msgstr "いいえ" msgid "Abstain" -msgstr "Abstain" +msgstr "棄権" msgid "Total" msgstr "合計" diff --git a/po/nb.po b/po/nb.po index 08597e50..2961989f 100644 --- a/po/nb.po +++ b/po/nb.po @@ -3,7 +3,7 @@ # This file is distributed under the same license as the AUR package. # # Translators: -# Alexander F Rødseth , 2015 +# Alexander F Rødseth , 2015,2017 # Alexander F Rødseth , 2011,2013-2014 # Harald H. , 2015 # Kim Nordmo , 2016 @@ -13,8 +13,8 @@ msgid "" msgstr "" "Project-Id-Version: Arch User Repository (AUR)\n" "Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n" -"POT-Creation-Date: 2016-10-08 14:59+0200\n" -"PO-Revision-Date: 2016-10-08 12:59+0000\n" +"POT-Creation-Date: 2017-02-25 13:41+0100\n" +"PO-Revision-Date: 2017-02-25 12:41+0000\n" "Last-Translator: Lukas Fleischer \n" "Language-Team: Norwegian Bokmål (http://www.transifex.com/lfleischer/aur/" "language/nb/)\n" @@ -34,15 +34,15 @@ msgid "Note" msgstr "OBS" msgid "Git clone URLs are not meant to be opened in a browser." -msgstr "" +msgstr "Git clone URL-er er ikke ment til å åpnes i nettleseren." #, php-format msgid "To clone the Git repository of %s, run %s." -msgstr "" +msgstr "For å klone et Git arkiv fra %s, kjør %s." #, php-format msgid "Click %shere%s to return to the %s details page." -msgstr "" +msgstr "Trykk %sher%s for å returnere til detalj-siden for %s." msgid "Service Unavailable" msgstr "Tjenesten er utilgjengelig" @@ -130,9 +130,30 @@ msgstr "Administrer Med-Vedlikeholdere" msgid "Edit comment" msgstr "Rediger kommentar" +msgid "Dashboard" +msgstr "" + msgid "Home" msgstr "Hjem" +msgid "My Flagged Packages" +msgstr "" + +msgid "My Requests" +msgstr "" + +msgid "My Packages" +msgstr "Mine pakker" + +msgid "Search for packages I maintain" +msgstr "" + +msgid "Co-Maintained Packages" +msgstr "" + +msgid "Search for packages I co-maintain" +msgstr "" + #, php-format msgid "" "Welcome to the AUR! Please read the %sAUR User Guidelines%s and %sAUR TU " @@ -179,6 +200,8 @@ msgid "" "There are three types of requests that can be filed in the %sPackage Actions" "%s box on the package details page:" msgstr "" +"Det er tre forskjellige forespørsler som kan velges i %sPakkenhandling%s-" +"boksen på siden til en pakke:" msgid "Orphan Request" msgstr "Foreldreløs-forespørsel" @@ -362,6 +385,9 @@ msgstr "" msgid "Enter your e-mail address:" msgstr "Angi din e-postadresse:" +msgid "Package Bases" +msgstr "" + msgid "" "The selected packages have not been disowned, check the confirmation " "checkbox." @@ -595,6 +621,9 @@ msgstr "Kan ikke gi flere tillatelser til kontoen." msgid "Language is not currently supported." msgstr "Språket støttes ikke på dette tidspunktet." +msgid "Timezone is not currently supported." +msgstr "" + #, php-format msgid "The username, %s%s%s, is already in use." msgstr "Brukernavnet, %s%s%s, er allerede i bruk." @@ -901,6 +930,9 @@ msgstr "Aktiv" msgid "Registration date:" msgstr "" +msgid "unknown" +msgstr "ukjent" + msgid "Last Login" msgstr "Sist logget inn" @@ -952,6 +984,9 @@ msgstr "Skriv inn passordet på nytt" msgid "Language" msgstr "Språk" +msgid "Timezone" +msgstr "" + msgid "" "The following information is only required if you want to submit packages to " "the Arch User Repository." @@ -1032,9 +1067,6 @@ msgstr "" msgid "Copyright %s 2004-%d aurweb Development Team." msgstr "" -msgid "My Packages" -msgstr "Mine pakker" - msgid " My Account" msgstr " Min konto" @@ -1087,9 +1119,6 @@ msgstr[1] "%d ventende forespørsler" msgid "Adopt Package" msgstr "Adopter pakke" -msgid "unknown" -msgstr "ukjent" - msgid "Package Base Details" msgstr "Grunnpakkedetaljer" @@ -1277,6 +1306,9 @@ msgid "" "previously." msgstr "" +msgid "No requests matched your search criteria." +msgstr "" + #, php-format msgid "%d package request found." msgid_plural "%d package requests found." @@ -1320,6 +1352,9 @@ msgstr "Låst" msgid "Close" msgstr "Lukk" +msgid "Pending" +msgstr "" + msgid "Closed" msgstr "Lukket" @@ -1335,6 +1370,12 @@ msgstr "Eksakt navn" msgid "Exact Package Base" msgstr "Eksakt grunnpakke" +msgid "Co-maintainer" +msgstr "" + +msgid "Maintainer, Co-maintainer" +msgstr "" + msgid "All" msgstr "Alle" diff --git a/po/nl.po b/po/nl.po index 99432f5f..4dd221f5 100644 --- a/po/nl.po +++ b/po/nl.po @@ -12,8 +12,8 @@ msgid "" msgstr "" "Project-Id-Version: Arch User Repository (AUR)\n" "Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n" -"POT-Creation-Date: 2016-10-08 14:59+0200\n" -"PO-Revision-Date: 2016-10-08 12:59+0000\n" +"POT-Creation-Date: 2017-02-25 13:41+0100\n" +"PO-Revision-Date: 2017-02-25 12:41+0000\n" "Last-Translator: Lukas Fleischer \n" "Language-Team: Dutch (http://www.transifex.com/lfleischer/aur/language/nl/)\n" "Language: nl\n" @@ -130,9 +130,30 @@ msgstr "Mede-onderhouders beheren" msgid "Edit comment" msgstr "" +msgid "Dashboard" +msgstr "" + msgid "Home" msgstr "Startgedeelte" +msgid "My Flagged Packages" +msgstr "" + +msgid "My Requests" +msgstr "" + +msgid "My Packages" +msgstr "Mijn pakketten" + +msgid "Search for packages I maintain" +msgstr "" + +msgid "Co-Maintained Packages" +msgstr "" + +msgid "Search for packages I co-maintain" +msgstr "" + #, php-format msgid "" "Welcome to the AUR! Please read the %sAUR User Guidelines%s and %sAUR TU " @@ -371,6 +392,9 @@ msgstr "" msgid "Enter your e-mail address:" msgstr "Vul uw e-mail adres in:" +msgid "Package Bases" +msgstr "" + msgid "" "The selected packages have not been disowned, check the confirmation " "checkbox." @@ -614,6 +638,9 @@ msgstr "Kan de account permissies niet verhogen." msgid "Language is not currently supported." msgstr "Taal wordt momenteel niet ondersteund." +msgid "Timezone is not currently supported." +msgstr "" + #, php-format msgid "The username, %s%s%s, is already in use." msgstr "De gebruikersnaam %s%s%s is al in gebruik." @@ -927,6 +954,9 @@ msgstr "Actief" msgid "Registration date:" msgstr "" +msgid "unknown" +msgstr "onbekend" + msgid "Last Login" msgstr "Laatste Login" @@ -976,6 +1006,9 @@ msgstr "Voer wachtwoord opnieuw in" msgid "Language" msgstr "Taal" +msgid "Timezone" +msgstr "" + msgid "" "The following information is only required if you want to submit packages to " "the Arch User Repository." @@ -1060,9 +1093,6 @@ msgstr "" msgid "Copyright %s 2004-%d aurweb Development Team." msgstr "" -msgid "My Packages" -msgstr "Mijn pakketten" - msgid " My Account" msgstr "Mijn Account" @@ -1115,9 +1145,6 @@ msgstr[1] "%d verzoeken in wachtrij" msgid "Adopt Package" msgstr "Adopteer Pakket" -msgid "unknown" -msgstr "onbekend" - msgid "Package Base Details" msgstr "Details van Basispakket" @@ -1306,6 +1333,9 @@ msgid "" "previously." msgstr "" +msgid "No requests matched your search criteria." +msgstr "" + #, php-format msgid "%d package request found." msgid_plural "%d package requests found." @@ -1349,6 +1379,9 @@ msgstr "Vergrendeld" msgid "Close" msgstr "Sluit" +msgid "Pending" +msgstr "" + msgid "Closed" msgstr "Gesloten" @@ -1364,6 +1397,12 @@ msgstr "Exacte Naam" msgid "Exact Package Base" msgstr "Exact Basispakket" +msgid "Co-maintainer" +msgstr "" + +msgid "Maintainer, Co-maintainer" +msgstr "" + msgid "All" msgstr "Alle" diff --git a/po/pl.po b/po/pl.po index d7338cab..ad2918f3 100644 --- a/po/pl.po +++ b/po/pl.po @@ -9,6 +9,7 @@ # Chris Warrick , 2012 # Kwpolska , 2011 # Lukas Fleischer , 2011 +# m4sk1n , 2017 # Michal T , 2016 # Nuc1eoN , 2014 # Piotr Strębski , 2013-2016 @@ -16,17 +17,18 @@ msgid "" msgstr "" "Project-Id-Version: Arch User Repository (AUR)\n" "Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n" -"POT-Creation-Date: 2016-10-08 14:59+0200\n" -"PO-Revision-Date: 2016-10-12 09:11+0000\n" -"Last-Translator: Michal T \n" +"POT-Creation-Date: 2017-02-25 13:41+0100\n" +"PO-Revision-Date: 2017-02-25 12:41+0000\n" +"Last-Translator: Lukas Fleischer \n" "Language-Team: Polish (http://www.transifex.com/lfleischer/aur/language/" "pl/)\n" "Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2);\n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n" +"%100<12 || n%100>=14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n" +"%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" msgid "Page Not Found" msgstr "Nie znaleziono strony" @@ -136,9 +138,30 @@ msgstr "Zarządzanie współutrzymującymi" msgid "Edit comment" msgstr "Edytuj komentarz" +msgid "Dashboard" +msgstr "" + msgid "Home" msgstr "Start" +msgid "My Flagged Packages" +msgstr "" + +msgid "My Requests" +msgstr "" + +msgid "My Packages" +msgstr "Moje pakiety" + +msgid "Search for packages I maintain" +msgstr "" + +msgid "Co-Maintained Packages" +msgstr "" + +msgid "Search for packages I co-maintain" +msgstr "" + #, php-format msgid "" "Welcome to the AUR! Please read the %sAUR User Guidelines%s and %sAUR TU " @@ -186,7 +209,7 @@ msgid "" msgstr "" msgid "Orphan Request" -msgstr "" +msgstr "Zgłoszenie osieroconego pakietu" msgid "" "Request a package to be disowned, e.g. when the maintainer is inactive and " @@ -368,6 +391,9 @@ msgstr "" msgid "Enter your e-mail address:" msgstr "Wpisz swój adres e-mail:" +msgid "Package Bases" +msgstr "" + msgid "" "The selected packages have not been disowned, check the confirmation " "checkbox." @@ -615,6 +641,9 @@ msgstr "Nie można zwiększyć uprawnień konta." msgid "Language is not currently supported." msgstr "Język nie jest obecnie obsługiwany." +msgid "Timezone is not currently supported." +msgstr "" + #, php-format msgid "The username, %s%s%s, is already in use." msgstr "Nazwa użytkownika, %s%s%s, jest już używana." @@ -922,6 +951,9 @@ msgstr "Aktywne" msgid "Registration date:" msgstr "Data rejestracji:" +msgid "unknown" +msgstr "nieznana" + msgid "Last Login" msgstr "Ostatnie logowanie" @@ -973,6 +1005,9 @@ msgstr "Hasło (ponownie)" msgid "Language" msgstr "Język" +msgid "Timezone" +msgstr "" + msgid "" "The following information is only required if you want to submit packages to " "the Arch User Repository." @@ -1058,9 +1093,6 @@ msgstr "Powrót do szczegółów" msgid "Copyright %s 2004-%d aurweb Development Team." msgstr "Prawa autorskie %s 2004-%d Zespół Programistów aurweb." -msgid "My Packages" -msgstr "Moje pakiety" - msgid " My Account" msgstr "Moje konto" @@ -1110,13 +1142,11 @@ msgid_plural "%d pending requests" msgstr[0] "%d prośba w toku" msgstr[1] "%d prośby w toku" msgstr[2] "%d próśb w toku" +msgstr[3] "%d próśb w toku" msgid "Adopt Package" msgstr "Przejmij pakiet" -msgid "unknown" -msgstr "nieznana" - msgid "Package Base Details" msgstr "Szczegóły bazy pakietu" @@ -1227,7 +1257,7 @@ msgid "Groups" msgstr "Grupy" msgid "Conflicts" -msgstr "Konflikty" +msgstr "Konfliktuje z" msgid "Provides" msgstr "Zapewnia" @@ -1304,12 +1334,16 @@ msgid "" "previously." msgstr "" +msgid "No requests matched your search criteria." +msgstr "" + #, php-format msgid "%d package request found." msgid_plural "%d package requests found." msgstr[0] "%d prośba odnaleziona." msgstr[1] "%d prośby odnalezione." msgstr[2] "%d próśb odnaleziono." +msgstr[3] "%d próśb odnaleziono." #, php-format msgid "Page %d of %d." @@ -1330,6 +1364,7 @@ msgid_plural "~%d days left" msgstr[0] "pozostało ~%d dzień" msgstr[1] "pozostało ~%d dni" msgstr[2] "pozostało ~%d dni" +msgstr[3] "pozostało ~%d dni" #, php-format msgid "~%d hour left" @@ -1337,6 +1372,7 @@ msgid_plural "~%d hours left" msgstr[0] "pozostała ~%d godzina" msgstr[1] "pozostały ~%d godziny" msgstr[2] "pozostało ~%d godzin" +msgstr[3] "pozostało ~%d godzin" msgid "<1 hour left" msgstr "pozostała <1 godzina" @@ -1350,6 +1386,9 @@ msgstr "Zablokowane" msgid "Close" msgstr "Zamknij" +msgid "Pending" +msgstr "" + msgid "Closed" msgstr "Zamknięte" @@ -1365,6 +1404,12 @@ msgstr "Dokładna nazwa" msgid "Exact Package Base" msgstr "Dokładna baza pakietu" +msgid "Co-maintainer" +msgstr "" + +msgid "Maintainer, Co-maintainer" +msgstr "" + msgid "All" msgstr "Wszystkie" @@ -1425,6 +1470,7 @@ msgid_plural "%d packages found." msgstr[0] "%d pakiet znaleziono" msgstr[1] "%d pakiety znaleziono" msgstr[2] "%d pakietów znaleziono" +msgstr[3] "%d pakietów znaleziono" msgid "Version" msgstr "Wersja" diff --git a/po/pt_BR.po b/po/pt_BR.po index f653b435..04848217 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -6,7 +6,7 @@ # Albino Biasutti Neto Bino , 2011 # Fábio Nogueira , 2016 # Rafael Fontenelle , 2012-2015 -# Rafael Fontenelle , 2011,2015-2016 +# Rafael Fontenelle , 2011,2015-2017 # Rafael Fontenelle , 2011 # Sandro , 2011 # Sandro , 2011 @@ -14,8 +14,8 @@ msgid "" msgstr "" "Project-Id-Version: Arch User Repository (AUR)\n" "Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n" -"POT-Creation-Date: 2016-10-08 14:59+0200\n" -"PO-Revision-Date: 2016-10-08 14:05+0000\n" +"POT-Creation-Date: 2017-02-25 13:41+0100\n" +"PO-Revision-Date: 2017-02-25 15:12+0000\n" "Last-Translator: Rafael Fontenelle \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/lfleischer/aur/" "language/pt_BR/)\n" @@ -133,9 +133,30 @@ msgstr "Gerenciar co-mantenedores" msgid "Edit comment" msgstr "Editar comentário" +msgid "Dashboard" +msgstr "Dashboard" + msgid "Home" msgstr "Início" +msgid "My Flagged Packages" +msgstr "Meus pacotes sinalizados" + +msgid "My Requests" +msgstr "Minhas requisições" + +msgid "My Packages" +msgstr "Meus pacotes" + +msgid "Search for packages I maintain" +msgstr "Pesquisar por pacotes que eu mantenho" + +msgid "Co-Maintained Packages" +msgstr "Pacote comantidos" + +msgid "Search for packages I co-maintain" +msgstr "Pesquisar por pacotes que eu comantenho" + #, php-format msgid "" "Welcome to the AUR! Please read the %sAUR User Guidelines%s and %sAUR TU " @@ -381,6 +402,9 @@ msgstr "" msgid "Enter your e-mail address:" msgstr "Digite o seu endereço de e-mail:" +msgid "Package Bases" +msgstr "Pacotes base" + msgid "" "The selected packages have not been disowned, check the confirmation " "checkbox." @@ -628,6 +652,9 @@ msgstr "Não foi possível aumentar as permissões da conta." msgid "Language is not currently supported." msgstr "Idioma sem suporte no momento." +msgid "Timezone is not currently supported." +msgstr "Fuso horário sem suporte no momento." + #, php-format msgid "The username, %s%s%s, is already in use." msgstr "O nome de usuário, %s%s%s, já está sendo usado." @@ -940,6 +967,9 @@ msgstr "Ativa" msgid "Registration date:" msgstr "Data de registro:" +msgid "unknown" +msgstr "desconhecido" + msgid "Last Login" msgstr "Último login" @@ -991,6 +1021,9 @@ msgstr "Re-digite a senha" msgid "Language" msgstr "Idioma" +msgid "Timezone" +msgstr "Fuso horário" + msgid "" "The following information is only required if you want to submit packages to " "the Arch User Repository." @@ -1076,9 +1109,6 @@ msgstr "Retornar para Detalhes" msgid "Copyright %s 2004-%d aurweb Development Team." msgstr "Copyright %s 2004-%d Equipe de Desenvolvimento do aurweb." -msgid "My Packages" -msgstr "Meus pacotes" - msgid " My Account" msgstr " Minha conta" @@ -1131,9 +1161,6 @@ msgstr[1] "%d requisições pentendes" msgid "Adopt Package" msgstr "Adotar pacote" -msgid "unknown" -msgstr "desconhecido" - msgid "Package Base Details" msgstr "Detalhes do pacote base" @@ -1335,6 +1362,9 @@ msgstr "" "ação do mantenedor, estando este ausente por muito tempo, e você já tentou - " "e não conseguiu - contatá-lo anteriormente." +msgid "No requests matched your search criteria." +msgstr "Nenhuma requisição correspondeu aos seus critérios de pesquisa." + #, php-format msgid "%d package request found." msgid_plural "%d package requests found." @@ -1378,6 +1408,9 @@ msgstr "Travado" msgid "Close" msgstr "Fechar" +msgid "Pending" +msgstr "Pendente" + msgid "Closed" msgstr "Fechada" @@ -1393,6 +1426,12 @@ msgstr "Nome exato" msgid "Exact Package Base" msgstr "Pacote base exato" +msgid "Co-maintainer" +msgstr "Comantenedor" + +msgid "Maintainer, Co-maintainer" +msgstr "Mantenedor, comantenedor" + msgid "All" msgstr "Todos" diff --git a/po/pt_PT.po b/po/pt_PT.po index 59ecb4f6..e00b5b83 100644 --- a/po/pt_PT.po +++ b/po/pt_PT.po @@ -12,8 +12,8 @@ msgid "" msgstr "" "Project-Id-Version: Arch User Repository (AUR)\n" "Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n" -"POT-Creation-Date: 2016-10-08 14:59+0200\n" -"PO-Revision-Date: 2016-10-08 12:59+0000\n" +"POT-Creation-Date: 2017-02-25 13:41+0100\n" +"PO-Revision-Date: 2017-02-25 12:41+0000\n" "Last-Translator: Lukas Fleischer \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/lfleischer/" "aur/language/pt_PT/)\n" @@ -131,9 +131,30 @@ msgstr "Gerir responsáveis" msgid "Edit comment" msgstr "Editar comentário" +msgid "Dashboard" +msgstr "" + msgid "Home" msgstr "Início" +msgid "My Flagged Packages" +msgstr "" + +msgid "My Requests" +msgstr "" + +msgid "My Packages" +msgstr "Os meus pacotes" + +msgid "Search for packages I maintain" +msgstr "" + +msgid "Co-Maintained Packages" +msgstr "" + +msgid "Search for packages I co-maintain" +msgstr "" + #, php-format msgid "" "Welcome to the AUR! Please read the %sAUR User Guidelines%s and %sAUR TU " @@ -369,6 +390,9 @@ msgstr "" msgid "Enter your e-mail address:" msgstr "Introduza o endereço de e-mail:" +msgid "Package Bases" +msgstr "" + msgid "" "The selected packages have not been disowned, check the confirmation " "checkbox." @@ -603,6 +627,9 @@ msgstr "Incapaz de aumentar as permissões da conta." msgid "Language is not currently supported." msgstr "Língua não suportada actualmente." +msgid "Timezone is not currently supported." +msgstr "" + #, php-format msgid "The username, %s%s%s, is already in use." msgstr "O nome de utilizador, %s%s%s, já se encontra a ser utilizado." @@ -911,6 +938,9 @@ msgstr "Activo" msgid "Registration date:" msgstr "" +msgid "unknown" +msgstr "desconhecido" + msgid "Last Login" msgstr "Última sessão" @@ -960,6 +990,9 @@ msgstr "Reintroduza a palavra-passe" msgid "Language" msgstr "Língua" +msgid "Timezone" +msgstr "" + msgid "" "The following information is only required if you want to submit packages to " "the Arch User Repository." @@ -1040,9 +1073,6 @@ msgstr "" msgid "Copyright %s 2004-%d aurweb Development Team." msgstr "" -msgid "My Packages" -msgstr "Os meus pacotes" - msgid " My Account" msgstr "A minha Conta" @@ -1095,9 +1125,6 @@ msgstr[1] "%d pedidos por atender" msgid "Adopt Package" msgstr "Adotar Pacote" -msgid "unknown" -msgstr "desconhecido" - msgid "Package Base Details" msgstr "Pacote Base Detalhes" @@ -1283,6 +1310,9 @@ msgid "" "previously." msgstr "" +msgid "No requests matched your search criteria." +msgstr "" + #, php-format msgid "%d package request found." msgid_plural "%d package requests found." @@ -1326,6 +1356,9 @@ msgstr "" msgid "Close" msgstr "Fechar" +msgid "Pending" +msgstr "" + msgid "Closed" msgstr "Fechado" @@ -1341,6 +1374,12 @@ msgstr "Nome exacto" msgid "Exact Package Base" msgstr "Pacote Base Exacto" +msgid "Co-maintainer" +msgstr "" + +msgid "Maintainer, Co-maintainer" +msgstr "" + msgid "All" msgstr "Todos" diff --git a/po/ro.po b/po/ro.po index 85172d91..801e5dd7 100644 --- a/po/ro.po +++ b/po/ro.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: Arch User Repository (AUR)\n" "Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n" -"POT-Creation-Date: 2016-10-08 14:59+0200\n" -"PO-Revision-Date: 2016-10-08 12:59+0000\n" +"POT-Creation-Date: 2017-02-25 13:41+0100\n" +"PO-Revision-Date: 2017-02-25 12:41+0000\n" "Last-Translator: Lukas Fleischer \n" "Language-Team: Romanian (http://www.transifex.com/lfleischer/aur/language/" "ro/)\n" @@ -130,9 +130,30 @@ msgstr "" msgid "Edit comment" msgstr "" +msgid "Dashboard" +msgstr "" + msgid "Home" msgstr "Acasă" +msgid "My Flagged Packages" +msgstr "" + +msgid "My Requests" +msgstr "" + +msgid "My Packages" +msgstr "Pachetele mele" + +msgid "Search for packages I maintain" +msgstr "" + +msgid "Co-Maintained Packages" +msgstr "" + +msgid "Search for packages I co-maintain" +msgstr "" + #, php-format msgid "" "Welcome to the AUR! Please read the %sAUR User Guidelines%s and %sAUR TU " @@ -350,6 +371,9 @@ msgstr "" msgid "Enter your e-mail address:" msgstr "Introdu adresa ta de e-mail:" +msgid "Package Bases" +msgstr "" + msgid "" "The selected packages have not been disowned, check the confirmation " "checkbox." @@ -583,6 +607,9 @@ msgstr "Permisiunile contului nu pot fi ridicate." msgid "Language is not currently supported." msgstr "Limba nu este încă suportată." +msgid "Timezone is not currently supported." +msgstr "" + #, php-format msgid "The username, %s%s%s, is already in use." msgstr "Numele de utilizator %s%s%s este deja folosit." @@ -893,6 +920,9 @@ msgstr "Activ" msgid "Registration date:" msgstr "" +msgid "unknown" +msgstr "necunoscut" + msgid "Last Login" msgstr "Ultima autentificare" @@ -942,6 +972,9 @@ msgstr "Rescrie parola" msgid "Language" msgstr "Limbă" +msgid "Timezone" +msgstr "" + msgid "" "The following information is only required if you want to submit packages to " "the Arch User Repository." @@ -1022,9 +1055,6 @@ msgstr "" msgid "Copyright %s 2004-%d aurweb Development Team." msgstr "" -msgid "My Packages" -msgstr "Pachetele mele" - msgid " My Account" msgstr "Contul meu" @@ -1078,9 +1108,6 @@ msgstr[2] "%d de cereri în așteptare" msgid "Adopt Package" msgstr "Adoptă pachet" -msgid "unknown" -msgstr "necunoscut" - msgid "Package Base Details" msgstr "Detalii pachet de bază" @@ -1270,6 +1297,9 @@ msgid "" "previously." msgstr "" +msgid "No requests matched your search criteria." +msgstr "" + #, php-format msgid "%d package request found." msgid_plural "%d package requests found." @@ -1316,6 +1346,9 @@ msgstr "Blocat" msgid "Close" msgstr "Închide" +msgid "Pending" +msgstr "" + msgid "Closed" msgstr "Închis" @@ -1331,6 +1364,12 @@ msgstr "Nume exact" msgid "Exact Package Base" msgstr "Pachet de bază exact" +msgid "Co-maintainer" +msgstr "" + +msgid "Maintainer, Co-maintainer" +msgstr "" + msgid "All" msgstr "Toate" diff --git a/po/ru.po b/po/ru.po index 530947e1..41f6534c 100644 --- a/po/ru.po +++ b/po/ru.po @@ -15,8 +15,8 @@ msgid "" msgstr "" "Project-Id-Version: Arch User Repository (AUR)\n" "Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n" -"POT-Creation-Date: 2016-10-08 14:59+0200\n" -"PO-Revision-Date: 2016-10-08 12:59+0000\n" +"POT-Creation-Date: 2017-02-25 13:41+0100\n" +"PO-Revision-Date: 2017-02-25 12:41+0000\n" "Last-Translator: Lukas Fleischer \n" "Language-Team: Russian (http://www.transifex.com/lfleischer/aur/language/" "ru/)\n" @@ -135,9 +135,30 @@ msgstr "Управление ответственными" msgid "Edit comment" msgstr "Редактировать комментарий" +msgid "Dashboard" +msgstr "" + msgid "Home" msgstr "Главная" +msgid "My Flagged Packages" +msgstr "" + +msgid "My Requests" +msgstr "" + +msgid "My Packages" +msgstr "Мои пакеты" + +msgid "Search for packages I maintain" +msgstr "" + +msgid "Co-Maintained Packages" +msgstr "" + +msgid "Search for packages I co-maintain" +msgstr "" + #, php-format msgid "" "Welcome to the AUR! Please read the %sAUR User Guidelines%s and %sAUR TU " @@ -382,6 +403,9 @@ msgstr "" msgid "Enter your e-mail address:" msgstr "Введите свой адрес электронной почты:" +msgid "Package Bases" +msgstr "" + msgid "" "The selected packages have not been disowned, check the confirmation " "checkbox." @@ -623,6 +647,9 @@ msgstr "Невозможно повысить привилегии." msgid "Language is not currently supported." msgstr "Язык пока не поддерживается." +msgid "Timezone is not currently supported." +msgstr "" + #, php-format msgid "The username, %s%s%s, is already in use." msgstr "Имя %s%s%s уже занято." @@ -930,6 +957,9 @@ msgstr "Активный" msgid "Registration date:" msgstr "" +msgid "unknown" +msgstr "неизвестно" + msgid "Last Login" msgstr "Последний вход" @@ -981,6 +1011,9 @@ msgstr "Введите пароль еще раз" msgid "Language" msgstr "Язык" +msgid "Timezone" +msgstr "" + msgid "" "The following information is only required if you want to submit packages to " "the Arch User Repository." @@ -1065,9 +1098,6 @@ msgstr "Вернуться к деталям" msgid "Copyright %s 2004-%d aurweb Development Team." msgstr "Copyright %s 2004-%d aurweb Development Team." -msgid "My Packages" -msgstr "Мои пакеты" - msgid " My Account" msgstr "Моя учётная запись" @@ -1122,9 +1152,6 @@ msgstr[3] "%d запросов в обработке" msgid "Adopt Package" msgstr "Усыновить пакет" -msgid "unknown" -msgstr "неизвестно" - msgid "Package Base Details" msgstr "Информация по группе пакетов" @@ -1323,6 +1350,9 @@ msgstr "" "действиях обслуживающего, который недоступен и вы уже пытались связаться с " "ним ранее." +msgid "No requests matched your search criteria." +msgstr "" + #, php-format msgid "%d package request found." msgid_plural "%d package requests found." @@ -1372,6 +1402,9 @@ msgstr "Заблокировано" msgid "Close" msgstr "Закрыть" +msgid "Pending" +msgstr "" + msgid "Closed" msgstr "Закрыт" @@ -1387,6 +1420,12 @@ msgstr "Точное имя" msgid "Exact Package Base" msgstr "Точное имя группы" +msgid "Co-maintainer" +msgstr "" + +msgid "Maintainer, Co-maintainer" +msgstr "" + msgid "All" msgstr "Все" diff --git a/po/sk.po b/po/sk.po index 4a564e9f..051a6864 100644 --- a/po/sk.po +++ b/po/sk.po @@ -3,14 +3,14 @@ # This file is distributed under the same license as the AUR package. # # Translators: -# archetyp , 2013-2015 +# archetyp , 2013-2016 # Matej Ľach , 2011 msgid "" msgstr "" "Project-Id-Version: Arch User Repository (AUR)\n" "Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n" -"POT-Creation-Date: 2016-10-08 14:59+0200\n" -"PO-Revision-Date: 2016-10-08 12:59+0000\n" +"POT-Creation-Date: 2017-02-25 13:41+0100\n" +"PO-Revision-Date: 2017-02-25 12:41+0000\n" "Last-Translator: Lukas Fleischer \n" "Language-Team: Slovak (http://www.transifex.com/lfleischer/aur/language/" "sk/)\n" @@ -31,14 +31,16 @@ msgstr "Poznámka" msgid "Git clone URLs are not meant to be opened in a browser." msgstr "" +"URL adresy na klonovanie Git repozitárov nie sú určené pre otváranie v " +"prehliadači." #, php-format msgid "To clone the Git repository of %s, run %s." -msgstr "" +msgstr "Na klonovanie Git repozitáre pre %s spustite %s." #, php-format msgid "Click %shere%s to return to the %s details page." -msgstr "" +msgstr "Kliknite %ssem%s pre návrat na stránku s detailami o %s." msgid "Service Unavailable" msgstr "Služba nie je dostupná" @@ -127,9 +129,30 @@ msgstr "Manažovať spolupracovníkov" msgid "Edit comment" msgstr "Editovať komentár" +msgid "Dashboard" +msgstr "" + msgid "Home" msgstr "Domov" +msgid "My Flagged Packages" +msgstr "" + +msgid "My Requests" +msgstr "" + +msgid "My Packages" +msgstr "Moje balíčky" + +msgid "Search for packages I maintain" +msgstr "" + +msgid "Co-Maintained Packages" +msgstr "" + +msgid "Search for packages I co-maintain" +msgstr "" + #, php-format msgid "" "Welcome to the AUR! Please read the %sAUR User Guidelines%s and %sAUR TU " @@ -371,6 +394,9 @@ msgstr "" msgid "Enter your e-mail address:" msgstr "Zadajte svoju e-mailovú adresu:" +msgid "Package Bases" +msgstr "" + msgid "" "The selected packages have not been disowned, check the confirmation " "checkbox." @@ -452,7 +478,7 @@ msgid "Only Trusted Users and Developers can disown packages." msgstr "Len dôverovaní užívatelia a vývojári môžu vyvlastňovať balíčky." msgid "Flag Comment" -msgstr "" +msgstr "Označ komentár" msgid "Flag Package Out-Of-Date" msgstr "Označ balíček ako zastaranú verziu" @@ -523,10 +549,10 @@ msgid "Only Trusted Users and Developers can merge packages." msgstr "Len dôverovaní užívatelia a vývojári môžu zlúčiť balíčky." msgid "Submit Request" -msgstr "" +msgstr "Odoslať žiadosť" msgid "Close Request" -msgstr "Zatvorit žiadosť" +msgstr "Zatvoriť žiadosť" msgid "First" msgstr "Prvý" @@ -617,6 +643,9 @@ msgstr "Nepodarilo sa rozšíriť práva účtu." msgid "Language is not currently supported." msgstr "Jazyk nie je momentálne podporovaný." +msgid "Timezone is not currently supported." +msgstr "" + #, php-format msgid "The username, %s%s%s, is already in use." msgstr "Užívateľské meno %s%s%s sa už používa." @@ -710,19 +739,19 @@ msgid "Missing comment ID." msgstr "Chýba ID komentára." msgid "No more than 5 comments can be pinned." -msgstr "" +msgstr "Nemôže byť pripnutých viac ako 5 komentárov." msgid "You are not allowed to pin this comment." -msgstr "" +msgstr "Nemáte oprávnenie na pripnutie tohoto komentára." msgid "You are not allowed to unpin this comment." -msgstr "" +msgstr "Nemáte oprávnenie na odopnutie tohoto komentára." msgid "Comment has been pinned." -msgstr "" +msgstr "Komentár bol pripnutý." msgid "Comment has been unpinned." -msgstr "" +msgstr "Komentár bol odopnutý." msgid "Error retrieving package details." msgstr "Chyba pri získavaní informácií o balíčku." @@ -805,10 +834,10 @@ msgid "You have been removed from the comment notification list for %s." msgstr "Boli ste odobraný z notifikačného zoznamu komentárov pre %s." msgid "You are not allowed to undelete this comment." -msgstr "" +msgstr "Nemáte práva na obnovenie tohto komentára." msgid "Comment has been undeleted." -msgstr "" +msgstr "Komentár bol obnovený." msgid "You are not allowed to delete this comment." msgstr "Nemáte práva na vymazanie tohto komentára." @@ -902,7 +931,7 @@ msgid "Real Name" msgstr "Skutočné meno" msgid "Homepage" -msgstr "" +msgstr "Domovská stránka" msgid "IRC Nick" msgstr "IRC prezývka" @@ -920,7 +949,10 @@ msgid "Active" msgstr "Aktívny" msgid "Registration date:" -msgstr "" +msgstr "Dátum registrácie" + +msgid "unknown" +msgstr "neznámy" msgid "Last Login" msgstr "Posledné prihlásenie" @@ -940,7 +972,7 @@ msgstr "Kliknite %ssem%s ak chcete natrvalo vymazať tento účet." #, php-format msgid "Click %shere%s for user details." -msgstr "" +msgstr "Kliknite %ssem%s pre informácie o užívateľovi." msgid "required" msgstr "povinný" @@ -972,6 +1004,9 @@ msgstr "Potvrďte heslo" msgid "Language" msgstr "Jazyk" +msgid "Timezone" +msgstr "" + msgid "" "The following information is only required if you want to submit packages to " "the Arch User Repository." @@ -983,16 +1018,16 @@ msgid "SSH Public Key" msgstr "Verejný SSH kľúč" msgid "Notification settings" -msgstr "" +msgstr "Nastavenia upozornení" msgid "Notify of new comments" msgstr "Upozorni na nové komentáre" msgid "Notify of package updates" -msgstr "" +msgstr "Upozorni na aktualizácie balíčkov" msgid "Notify of ownership changes" -msgstr "" +msgstr "Upozorni na zmeny vo vlastníctve balíčka" msgid "Update" msgstr "Aktualizácia" @@ -1039,25 +1074,23 @@ msgstr "Uložiť" #, php-format msgid "Flagged Out-of-Date Comment: %s" -msgstr "" +msgstr "Komentár k označeniu balíčka ako zastaranej verzie: %s" #, php-format msgid "%s%s%s flagged %s%s%s out-of-date on %s%s%s for the following reason:" msgstr "" +"%s%s%s bol označený %s%s%s ako zastaraný %s%s%s z nasledujúceho dôvodu:" #, php-format msgid "%s%s%s is not flagged out-of-date." -msgstr "" +msgstr "%s%s%s nie je označený ako zastarný." msgid "Return to Details" -msgstr "" +msgstr "Návrat na detaily" #, php-format msgid "Copyright %s 2004-%d aurweb Development Team." -msgstr "" - -msgid "My Packages" -msgstr "Moje balíčky" +msgstr "Copyright %s 2004-%d aurweb Development Team." msgid " My Account" msgstr "Môj účet" @@ -1079,7 +1112,7 @@ msgstr "Prehľadať wiki" #, php-format msgid "Flagged out-of-date (%s)" -msgstr "" +msgstr "Označený ako zastaraný (%s)" msgid "Flag package out-of-date" msgstr "Označ balíček ako neaktuálny" @@ -1097,7 +1130,7 @@ msgid "Disable notifications" msgstr "Vypni upozornenia" msgid "Enable notifications" -msgstr "" +msgstr "Povoliť upozornenia" msgid "Manage Co-Maintainers" msgstr "Manažovať spolupracovníkov" @@ -1112,9 +1145,6 @@ msgstr[2] "%d ostávajúcich žiadostí" msgid "Adopt Package" msgstr "Adoptuj balíček" -msgid "unknown" -msgstr "neznámy" - msgid "Package Base Details" msgstr "Detaily základne balíčka" @@ -1159,7 +1189,7 @@ msgid "View all comments" msgstr "Pozrieť všetky komentáre" msgid "Pinned Comments" -msgstr "" +msgstr "Pripnuté komentáre" msgid "Latest Comments" msgstr "Posledné komentáre" @@ -1178,27 +1208,27 @@ msgstr "vymazal %s %s" #, php-format msgid "deleted on %s" -msgstr "" +msgstr "vymazaný %s" #, php-format msgid "edited on %s by %s" -msgstr "" +msgstr "editovaný %s %s" #, php-format msgid "edited on %s" -msgstr "" +msgstr "editovaný %s" msgid "Undelete comment" -msgstr "" +msgstr "Obnoviť komentár" msgid "Delete comment" msgstr "Vymaž komentár" msgid "Pin comment" -msgstr "" +msgstr "Pripnúť komentár" msgid "Unpin comment" -msgstr "" +msgstr "Odopnúť komentár" msgid "All comments" msgstr "Všetky komentáre" @@ -1288,6 +1318,10 @@ msgid "" "package base. This type of request should be used for duplicates, software " "abandoned by upstream, as well as illegal and irreparably broken packages." msgstr "" +"Odoslaním žiadosti na vymazanie balíčka žiadate dôverovaného užívateľa t.j. " +"Trusted User, aby vymazal balíček aj s jeho základňou. Tento typ požiadavky " +"by mal použitý pre duplikáty, softvér ku ktorému už nie sú zdroje ako aj " +"nelegálne a neopraviteľné balíčky." msgid "" "By submitting a merge request, you ask a Trusted User to delete the package " @@ -1295,6 +1329,11 @@ msgid "" "package does not affect the corresponding Git repositories. Make sure you " "update the Git history of the target package yourself." msgstr "" +"Odoslaním žiadosti na zlúčenie balíčka žiadate dôverovaného užívateľa t.j. " +"Trusted User, aby vymazal balíček aj s jeho základňou a preniesol hlasy a " +"komentáre na inú základňu balíčka. Zlúčenie balíčka nezasiahne prináležiace " +"Git repozitáre, preto sa uistite, že Git história cieľového balíčka je " +"aktuálna." msgid "" "By submitting an orphan request, you ask a Trusted User to disown the " @@ -1302,6 +1341,13 @@ msgid "" "the maintainer is MIA and you already tried to contact the maintainer " "previously." msgstr "" +"Odoslaním žiadosti na osirotenie balíčka žiadate dôverovaného užívateľa t.j. " +"Trusted User, aby vyvlastnil balíček aj s jeho základňou. Toto urobte len " +"vtedy, ak balíček vyžaduje zásah od vlastníka, vlastník nie je zastihnuteľný " +"a už ste sa niekoľkokrát pokúšali vlastníka kontaktovať." + +msgid "No requests matched your search criteria." +msgstr "" #, php-format msgid "%d package request found." @@ -1326,9 +1372,9 @@ msgstr "Dátum" #, php-format msgid "~%d day left" msgid_plural "~%d days left" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "ostáva ~%d deň" +msgstr[1] "ostáva ~%d dni" +msgstr[2] "ostáva ~%d dní" #, php-format msgid "~%d hour left" @@ -1349,6 +1395,9 @@ msgstr "Uzamknuté" msgid "Close" msgstr "Zatvoriť" +msgid "Pending" +msgstr "" + msgid "Closed" msgstr "Zatvorené" @@ -1364,6 +1413,12 @@ msgstr "Presné meno" msgid "Exact Package Base" msgstr "Presná základňa balíčka" +msgid "Co-maintainer" +msgstr "" + +msgid "Maintainer, Co-maintainer" +msgstr "" + msgid "All" msgstr "Všetky" @@ -1433,6 +1488,8 @@ msgid "" "Popularity is calculated as the sum of all votes with each vote being " "weighted with a factor of %.2f per day since its creation." msgstr "" +"Popularita sa počíta ako súčet všetkých hlasov, pričom každý hlas je " +"prenásobený váhovým koeficientom %.2f každý deň od jeho pridania." msgid "Yes" msgstr "Áno" @@ -1492,7 +1549,7 @@ msgid "Recent Updates" msgstr "Nedávne aktualizácie" msgid "more" -msgstr "" +msgstr "viac" msgid "My Statistics" msgstr "Moja štatistika" diff --git a/po/sr.po b/po/sr.po index 32a57394..4cf8d12c 100644 --- a/po/sr.po +++ b/po/sr.po @@ -10,9 +10,9 @@ msgid "" msgstr "" "Project-Id-Version: Arch User Repository (AUR)\n" "Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n" -"POT-Creation-Date: 2016-10-08 14:59+0200\n" -"PO-Revision-Date: 2016-10-11 14:07+0000\n" -"Last-Translator: Slobodan Terzić \n" +"POT-Creation-Date: 2017-02-25 13:41+0100\n" +"PO-Revision-Date: 2017-02-25 12:41+0000\n" +"Last-Translator: Lukas Fleischer \n" "Language-Team: Serbian (http://www.transifex.com/lfleischer/aur/language/" "sr/)\n" "Language: sr\n" @@ -129,9 +129,30 @@ msgstr "Upravljanje koodržavaocima" msgid "Edit comment" msgstr "Uređivanje komentara" +msgid "Dashboard" +msgstr "" + msgid "Home" msgstr "Početna" +msgid "My Flagged Packages" +msgstr "" + +msgid "My Requests" +msgstr "" + +msgid "My Packages" +msgstr "Moji paketi" + +msgid "Search for packages I maintain" +msgstr "" + +msgid "Co-Maintained Packages" +msgstr "" + +msgid "Search for packages I co-maintain" +msgstr "" + #, php-format msgid "" "Welcome to the AUR! Please read the %sAUR User Guidelines%s and %sAUR TU " @@ -372,6 +393,9 @@ msgstr "" msgid "Enter your e-mail address:" msgstr "Unesite adresu e-pošte:" +msgid "Package Bases" +msgstr "" + msgid "" "The selected packages have not been disowned, check the confirmation " "checkbox." @@ -610,6 +634,9 @@ msgstr "Ne mogu da uvećam dozvole naloga." msgid "Language is not currently supported." msgstr "Jezik trenutno nije podržan." +msgid "Timezone is not currently supported." +msgstr "" + #, php-format msgid "The username, %s%s%s, is already in use." msgstr "Korisničko ime %s%s%s je već u upotrebi." @@ -915,6 +942,9 @@ msgstr "Aktivan" msgid "Registration date:" msgstr "Datum registracije:" +msgid "unknown" +msgstr "nepoznata" + msgid "Last Login" msgstr "Poslednje prijavljivanje" @@ -966,6 +996,9 @@ msgstr "Ponovo unesite lozinku" msgid "Language" msgstr "Jezik" +msgid "Timezone" +msgstr "" + msgid "" "The following information is only required if you want to submit packages to " "the Arch User Repository." @@ -1050,9 +1083,6 @@ msgstr "Nazad na detalje" msgid "Copyright %s 2004-%d aurweb Development Team." msgstr "Copyright %s 2004-%d aurweb Development Team." -msgid "My Packages" -msgstr "Moji paketi" - msgid " My Account" msgstr "Moj nalog" @@ -1106,9 +1136,6 @@ msgstr[2] "%d zahteva na čekanju" msgid "Adopt Package" msgstr "Usvoji paket" -msgid "unknown" -msgstr "nepoznata" - msgid "Package Base Details" msgstr "Podaci o bazi paketa" @@ -1307,6 +1334,9 @@ msgstr "" "zahteva održavanje, a održavalac je nedosupan i već ste pokušali da ga " "kontaktirate." +msgid "No requests matched your search criteria." +msgstr "" + #, php-format msgid "%d package request found." msgid_plural "%d package requests found." @@ -1353,6 +1383,9 @@ msgstr "Zaključano" msgid "Close" msgstr "Zatvori" +msgid "Pending" +msgstr "" + msgid "Closed" msgstr "Zatvoreno" @@ -1368,6 +1401,12 @@ msgstr "Tačno ime" msgid "Exact Package Base" msgstr "Tačna osnova paketa" +msgid "Co-maintainer" +msgstr "" + +msgid "Maintainer, Co-maintainer" +msgstr "" + msgid "All" msgstr "svi" diff --git a/po/tr.po b/po/tr.po index b5ddf23c..9490001e 100644 --- a/po/tr.po +++ b/po/tr.po @@ -3,21 +3,21 @@ # This file is distributed under the same license as the AUR package. # # Translators: -# Atilla Öntaş , 2011,2013-2015 -# Atilla Öntaş , 2012,2014 +# tarakbumba , 2011,2013-2015 +# tarakbumba , 2012,2014 # Demiray Muhterem , 2015 # Lukas Fleischer , 2011 # Samed Beyribey , 2012 # Samed Beyribey , 2012 # Serpil Acar , 2016 -# Atilla Öntaş , 2012 +# tarakbumba , 2012 msgid "" msgstr "" "Project-Id-Version: Arch User Repository (AUR)\n" "Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n" -"POT-Creation-Date: 2016-10-08 14:59+0200\n" -"PO-Revision-Date: 2016-10-09 05:38+0000\n" -"Last-Translator: Serpil Acar \n" +"POT-Creation-Date: 2017-02-25 13:41+0100\n" +"PO-Revision-Date: 2017-02-25 12:41+0000\n" +"Last-Translator: Lukas Fleischer \n" "Language-Team: Turkish (http://www.transifex.com/lfleischer/aur/language/" "tr/)\n" "Language: tr\n" @@ -134,9 +134,30 @@ msgstr "Yardımcı bakımcıları Yönet" msgid "Edit comment" msgstr "Yorumu düzenle" +msgid "Dashboard" +msgstr "" + msgid "Home" msgstr "Anasayfa" +msgid "My Flagged Packages" +msgstr "" + +msgid "My Requests" +msgstr "" + +msgid "My Packages" +msgstr "Paketlerim" + +msgid "Search for packages I maintain" +msgstr "" + +msgid "Co-Maintained Packages" +msgstr "" + +msgid "Search for packages I co-maintain" +msgstr "" + #, php-format msgid "" "Welcome to the AUR! Please read the %sAUR User Guidelines%s and %sAUR TU " @@ -376,6 +397,9 @@ msgstr "" msgid "Enter your e-mail address:" msgstr "E-posta adresinizi girin:" +msgid "Package Bases" +msgstr "" + msgid "" "The selected packages have not been disowned, check the confirmation " "checkbox." @@ -620,6 +644,9 @@ msgstr "Hesap izinleri yükseltilemiyor." msgid "Language is not currently supported." msgstr "Dil henüz desteklenmiyor." +msgid "Timezone is not currently supported." +msgstr "" + #, php-format msgid "The username, %s%s%s, is already in use." msgstr "Kullanıcı adı, %s%s%s, zaten kullanılıyor." @@ -926,6 +953,9 @@ msgstr "Etkin" msgid "Registration date:" msgstr "Kayıt tarihi:" +msgid "unknown" +msgstr "bilinmiyor" + msgid "Last Login" msgstr "Son giriş" @@ -977,6 +1007,9 @@ msgstr "Parolayı tekrar girin" msgid "Language" msgstr "Dil" +msgid "Timezone" +msgstr "" + msgid "" "The following information is only required if you want to submit packages to " "the Arch User Repository." @@ -1061,9 +1094,6 @@ msgstr "Detaylara Geri Dön." msgid "Copyright %s 2004-%d aurweb Development Team." msgstr "" -msgid "My Packages" -msgstr "Paketlerim" - msgid " My Account" msgstr "Hesabım" @@ -1116,9 +1146,6 @@ msgstr[1] "%d adet bekleyen talep" msgid "Adopt Package" msgstr "Paketi Sahiplen" -msgid "unknown" -msgstr "bilinmiyor" - msgid "Package Base Details" msgstr "Paket Temeli Ayrıntıları" @@ -1315,6 +1342,9 @@ msgid "" "previously." msgstr "" +msgid "No requests matched your search criteria." +msgstr "" + #, php-format msgid "%d package request found." msgid_plural "%d package requests found." @@ -1358,6 +1388,9 @@ msgstr "Kilitli" msgid "Close" msgstr "Kapat" +msgid "Pending" +msgstr "" + msgid "Closed" msgstr "Kapandı" @@ -1373,6 +1406,12 @@ msgstr "Tam Ad" msgid "Exact Package Base" msgstr "Tam Paket Temeli" +msgid "Co-maintainer" +msgstr "" + +msgid "Maintainer, Co-maintainer" +msgstr "" + msgid "All" msgstr "Tümü" diff --git a/po/uk.po b/po/uk.po index 8e26a4f7..f6267e65 100644 --- a/po/uk.po +++ b/po/uk.po @@ -6,14 +6,14 @@ # Lukas Fleischer , 2011 # Rax Garfield , 2012 # Rax Garfield , 2012 -# Yarema aka Knedlyk , 2011-2016 +# Yarema aka Knedlyk , 2011-2017 # Данило Коростіль , 2011 msgid "" msgstr "" "Project-Id-Version: Arch User Repository (AUR)\n" "Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n" -"POT-Creation-Date: 2016-10-08 14:59+0200\n" -"PO-Revision-Date: 2016-10-08 15:11+0000\n" +"POT-Creation-Date: 2017-02-25 13:41+0100\n" +"PO-Revision-Date: 2017-02-25 16:47+0000\n" "Last-Translator: Yarema aka Knedlyk \n" "Language-Team: Ukrainian (http://www.transifex.com/lfleischer/aur/language/" "uk/)\n" @@ -43,7 +43,7 @@ msgstr "Щоб клонувати сховище Git з %s, виконайте % #, php-format msgid "Click %shere%s to return to the %s details page." -msgstr "Клацніть %sтут%s для повернення на сторінку деталей %s." +msgstr "Клацніть %sтут%s для повернення на сторінку інформації %s." msgid "Service Unavailable" msgstr "Сервіс недоступний" @@ -128,14 +128,35 @@ msgid "Submit" msgstr "Надіслати пакунок" msgid "Manage Co-maintainers" -msgstr "Керування супровідниками" +msgstr "Керування ко-супровідниками" msgid "Edit comment" msgstr "Редагувати коментар" +msgid "Dashboard" +msgstr "Панель знарядь" + msgid "Home" msgstr "Початкова сторінка" +msgid "My Flagged Packages" +msgstr "Мої відмічені пакунки" + +msgid "My Requests" +msgstr "Мої запити" + +msgid "My Packages" +msgstr "Мої пакунки" + +msgid "Search for packages I maintain" +msgstr "Пошук пакунків які я підтримую" + +msgid "Co-Maintained Packages" +msgstr "Пакунки з сумісним супроводом" + +msgid "Search for packages I co-maintain" +msgstr "Пошук пакунків з сумісним супроводом" + #, php-format msgid "" "Welcome to the AUR! Please read the %sAUR User Guidelines%s and %sAUR TU " @@ -378,6 +399,9 @@ msgstr "" msgid "Enter your e-mail address:" msgstr "Введіть адресу електронної пошти:" +msgid "Package Bases" +msgstr "Бази пакунків" + msgid "" "The selected packages have not been disowned, check the confirmation " "checkbox." @@ -405,7 +429,9 @@ msgstr "Вилучити пакунок" msgid "" "Use this form to delete the package base %s%s%s and the following packages " "from the AUR: " -msgstr "Використовуйте цю форму для вилучення пакунку %s%s%s з AUR. " +msgstr "" +"Використовуйте цю форму для вилучення бази пакунків %s%s%s і наступних " +"пакунків з AUR. " msgid "Deletion of a package is permanent. " msgstr "Вилучення пакунку є безповоротне." @@ -430,7 +456,7 @@ msgid "" "Use this form to disown the package base %s%s%s which includes the following " "packages: " msgstr "" -"Використайте ці форму для позбавлення базового пакунка %s%s%s власника, який " +"Використайте ці форму для позбавлення бази пакунків %s%s%s власника, яка " "містить наступні пакунки:" #, php-format @@ -467,7 +493,7 @@ msgid "" "Use this form to flag the package base %s%s%s and the following packages out-" "of-date: " msgstr "" -"Використовуйте цю форму для позначення базового пакунку %s%s%s і наступні " +"Використовуйте цю форму для позначення бази пакунків %s%s%s і наступні " "пакунки як застарілі:" #, php-format @@ -503,7 +529,8 @@ msgstr "Об’єднати пакунок" #, php-format msgid "Use this form to merge the package base %s%s%s into another package. " -msgstr "Використовуйте цю форму для злиття пакунку %s%s%s з іншим пакунком." +msgstr "" +"Використовуйте цю форму для злиття бази пакунків %s%s%s з іншим пакунком." msgid "The following packages will be deleted: " msgstr "Наступні пакунки будуть вилучені:" @@ -621,6 +648,9 @@ msgstr "Неможливо збільшити дозволи рахунку." msgid "Language is not currently supported." msgstr "Наразі ця мова не підтримується." +msgid "Timezone is not currently supported." +msgstr "Наразі часова зона не підтримується." + #, php-format msgid "The username, %s%s%s, is already in use." msgstr "Назва користувача %s%s%s вже використовується." @@ -695,7 +725,7 @@ msgid "View account information for %s" msgstr "Показати інформацію про рахунок для %s" msgid "Package base ID or package base name missing." -msgstr "ID базового пакунку або ж назва базового пакунку пропущена." +msgstr "ID бази пакунків або ж назва бази пакунків пропущена." msgid "You are not allowed to edit this comment." msgstr "У вас немає прав, щоб редагувати цей коментар." @@ -828,21 +858,20 @@ msgid "Comment has been edited." msgstr "Коментар редаговано." msgid "You are not allowed to edit the keywords of this package base." -msgstr "" -"Ви не маєте прав для редагування ключових слів для цього базового пакунку." +msgstr "Ви не маєте прав для редагування ключових слів для цієї бази пакунків." msgid "The package base keywords have been updated." -msgstr "Ключові слова базового пакунку оновлено." +msgstr "Ключові слова бази пакунків оновлено." msgid "You are not allowed to manage co-maintainers of this package base." -msgstr "Ви не має прав для керування супровідниками цього базового пакунку." +msgstr "Ви не має прав для керування ко-супровідниками цієї бази пакунків." #, php-format msgid "Invalid user name: %s" msgstr "Неправильна назва користувача: %s" msgid "The package base co-maintainers have been updated." -msgstr "Оновлено супровідників базового пакунку." +msgstr "Оновлено ко-супровідників бази пакунків." msgid "View packages details for" msgstr "Показати деталі пакунку для " @@ -931,6 +960,9 @@ msgstr "Активний" msgid "Registration date:" msgstr "Дата реєстрації:" +msgid "unknown" +msgstr "невідомо" + msgid "Last Login" msgstr "Останній вхід" @@ -949,7 +981,7 @@ msgstr "Натисніть %sтут%s, якщо Ви бажаєте безпов #, php-format msgid "Click %shere%s for user details." -msgstr "Клацніть %sтут%s для деталей про користувача." +msgstr "Клацніть %sтут%s, щоб дізнатися більше про користувача." msgid "required" msgstr "обов'язково" @@ -982,6 +1014,9 @@ msgstr "Введіть пароль ще раз" msgid "Language" msgstr "Мова" +msgid "Timezone" +msgstr "Часова зона" + msgid "" "The following information is only required if you want to submit packages to " "the Arch User Repository." @@ -1038,7 +1073,7 @@ msgstr "Більше немає результатів." msgid "" "Use this form to add co-maintainers for %s%s%s (one user name per line):" msgstr "" -"Використайте цю форму для додавання супровідника для %s%s%s (одна назва " +"Використайте цю форму для додавання ко-супровідника для %s%s%s (одна назва " "користувача в одній стрічці):" msgid "Users" @@ -1066,9 +1101,6 @@ msgstr "Повернення до подробиць." msgid "Copyright %s 2004-%d aurweb Development Team." msgstr "Всі права застережено %s 2004-%d Команда Розробників aurweb." -msgid "My Packages" -msgstr "Мої пакунки" - msgid " My Account" msgstr "Мій рахунок" @@ -1110,7 +1142,7 @@ msgid "Enable notifications" msgstr "Включити сповіщення" msgid "Manage Co-Maintainers" -msgstr "Керування Супровідниками" +msgstr "Керування ко-супровідниками" #, php-format msgid "%d pending request" @@ -1122,9 +1154,6 @@ msgstr[2] "%d запитів в обробці" msgid "Adopt Package" msgstr "Прийняти пакунок" -msgid "unknown" -msgstr "невідомо" - msgid "Package Base Details" msgstr "Деталі бази пакунків" @@ -1254,7 +1283,7 @@ msgstr "Сирці" #, php-format msgid "Use this form to close the request for package base %s%s%s." -msgstr "Використайте цю форму для закриття запиту щодо бази пакетів %s%s%s." +msgstr "Використайте цю форму для закриття запиту щодо бази пакунків %s%s%s." msgid "" "The comments field can be left empty. However, it is highly recommended to " @@ -1298,8 +1327,9 @@ msgid "" "abandoned by upstream, as well as illegal and irreparably broken packages." msgstr "" "Надсилаючи запит на вилучення, Ви просите Довіреного Користувача вилучити " -"пакунок з бази. Цей тип запиту повинен використовуватися для дублікатів, " -"неоновлюваних програм, а також нелегальних і невиправно пошкоджених пакунків." +"пакунок з бази пакунків. Цей тип запиту повинен використовуватися для " +"дублікатів, неоновлюваних програм, а також нелегальних і невиправно " +"пошкоджених пакунків." msgid "" "By submitting a merge request, you ask a Trusted User to delete the package " @@ -1308,9 +1338,9 @@ msgid "" "update the Git history of the target package yourself." msgstr "" "Надсилаючи запит на об'єднання, Ви просите Довіреного Користувача вилучити " -"пакунок і перенести всі його голосування і коментарі до іншого пакунку. " -"Об'єднання пакунку не впливає на відповідні сховища Git. Впевніться, що Ви " -"оновили самі історію Git доцільового пакунку." +"базу пакунків і перенести всі його голосування і коментарі до іншої бази " +"пакунків. Об'єднання пакунку не впливає на відповідні сховища Git. " +"Впевніться, що Ви самостійно оновили історію Git доцільового пакунку." msgid "" "By submitting an orphan request, you ask a Trusted User to disown the " @@ -1319,8 +1349,12 @@ msgid "" "previously." msgstr "" "Надсилаючи запит на зречення, Ви просите Довіреного Користувача позбавити " -"пакунок власника. Робіть це, якщо пакунок потребує якоїсь дії, супровідник " -"не робить жодних дій і Ви вже попередньо намагалися зв'язатися з ним." +"базу пакунків власника. Робіть це, якщо пакунок потребує якоїсь дії від " +"супровідника, супровідник не робить жодних дій і Ви вже попередньо " +"намагалися зв'язатися з ним." + +msgid "No requests matched your search criteria." +msgstr "Жоден запит не відповідає Вашим критеріям пошуку." #, php-format msgid "%d package request found." @@ -1368,6 +1402,9 @@ msgstr "Замкнено" msgid "Close" msgstr "Закрити" +msgid "Pending" +msgstr "В очікуванні" + msgid "Closed" msgstr "Замкнено" @@ -1383,6 +1420,12 @@ msgstr "Точна назва" msgid "Exact Package Base" msgstr "Точна база пакунків" +msgid "Co-maintainer" +msgstr "Ко-супровідник" + +msgid "Maintainer, Co-maintainer" +msgstr "Супровідник, ко-супровідник" + msgid "All" msgstr "Всі" diff --git a/po/zh_CN.po b/po/zh_CN.po index 453e7683..d5e306cf 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -14,8 +14,8 @@ msgid "" msgstr "" "Project-Id-Version: Arch User Repository (AUR)\n" "Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n" -"POT-Creation-Date: 2016-10-08 14:59+0200\n" -"PO-Revision-Date: 2016-10-08 12:59+0000\n" +"POT-Creation-Date: 2017-02-25 13:41+0100\n" +"PO-Revision-Date: 2017-02-25 12:41+0000\n" "Last-Translator: Lukas Fleischer \n" "Language-Team: Chinese (China) (http://www.transifex.com/lfleischer/aur/" "language/zh_CN/)\n" @@ -131,9 +131,30 @@ msgstr "管理共同维护者" msgid "Edit comment" msgstr "编辑评论" +msgid "Dashboard" +msgstr "" + msgid "Home" msgstr "首页" +msgid "My Flagged Packages" +msgstr "" + +msgid "My Requests" +msgstr "" + +msgid "My Packages" +msgstr "我的软件包" + +msgid "Search for packages I maintain" +msgstr "" + +msgid "Co-Maintained Packages" +msgstr "" + +msgid "Search for packages I co-maintain" +msgstr "" + #, php-format msgid "" "Welcome to the AUR! Please read the %sAUR User Guidelines%s and %sAUR TU " @@ -361,6 +382,9 @@ msgstr "" msgid "Enter your e-mail address:" msgstr "输入您的邮箱地址:" +msgid "Package Bases" +msgstr "" + msgid "" "The selected packages have not been disowned, check the confirmation " "checkbox." @@ -591,6 +615,9 @@ msgstr "不能提高账户权限。" msgid "Language is not currently supported." msgstr "目前不支持此语言。" +msgid "Timezone is not currently supported." +msgstr "" + #, php-format msgid "The username, %s%s%s, is already in use." msgstr "用户名 %s%s%s 已被使用。" @@ -894,6 +921,9 @@ msgstr "激活" msgid "Registration date:" msgstr "" +msgid "unknown" +msgstr "未知" + msgid "Last Login" msgstr "最后登陆" @@ -943,6 +973,9 @@ msgstr "确认密码" msgid "Language" msgstr "语言" +msgid "Timezone" +msgstr "" + msgid "" "The following information is only required if you want to submit packages to " "the Arch User Repository." @@ -1023,9 +1056,6 @@ msgstr "返回详情" msgid "Copyright %s 2004-%d aurweb Development Team." msgstr "版权所有 %s 2004-%d aurweb 开发组" -msgid "My Packages" -msgstr "我的软件包" - msgid " My Account" msgstr "我的帐户" @@ -1077,9 +1107,6 @@ msgstr[0] "%d 个未处理的请求" msgid "Adopt Package" msgstr "接管软件包" -msgid "unknown" -msgstr "未知" - msgid "Package Base Details" msgstr "包基础详情" @@ -1263,6 +1290,9 @@ msgid "" "previously." msgstr "" +msgid "No requests matched your search criteria." +msgstr "" + #, php-format msgid "%d package request found." msgid_plural "%d package requests found." @@ -1303,6 +1333,9 @@ msgstr "已锁定" msgid "Close" msgstr "关闭" +msgid "Pending" +msgstr "" + msgid "Closed" msgstr "已关闭" @@ -1318,6 +1351,12 @@ msgstr "确切的名字" msgid "Exact Package Base" msgstr "准确包基础" +msgid "Co-maintainer" +msgstr "" + +msgid "Maintainer, Co-maintainer" +msgstr "" + msgid "All" msgstr "全部" diff --git a/po/zh_TW.po b/po/zh_TW.po index 5d1a4247..7c155188 100644 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -3,13 +3,13 @@ # This file is distributed under the same license as the AUR package. # # Translators: -# Jeff Huang , 2014-2016 +# Jeff Huang , 2014-2017 msgid "" msgstr "" "Project-Id-Version: Arch User Repository (AUR)\n" "Report-Msgid-Bugs-To: https://bugs.archlinux.org/index.php?project=2\n" -"POT-Creation-Date: 2016-10-08 14:59+0200\n" -"PO-Revision-Date: 2016-10-09 09:21+0000\n" +"POT-Creation-Date: 2017-02-25 13:41+0100\n" +"PO-Revision-Date: 2017-02-26 03:10+0000\n" "Last-Translator: Jeff Huang \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/lfleischer/aur/" "language/zh_TW/)\n" @@ -125,9 +125,30 @@ msgstr "管理共同維護者" msgid "Edit comment" msgstr "編輯評論" +msgid "Dashboard" +msgstr "儀表板" + msgid "Home" msgstr "首頁" +msgid "My Flagged Packages" +msgstr "我標記的套件" + +msgid "My Requests" +msgstr "我的請求" + +msgid "My Packages" +msgstr "我的套件" + +msgid "Search for packages I maintain" +msgstr "搜尋我維護的套件" + +msgid "Co-Maintained Packages" +msgstr "共同維護的套件" + +msgid "Search for packages I co-maintain" +msgstr "搜尋我共同維護的套件" + #, php-format msgid "" "Welcome to the AUR! Please read the %sAUR User Guidelines%s and %sAUR TU " @@ -358,6 +379,9 @@ msgstr "" msgid "Enter your e-mail address:" msgstr "輸入您的電子郵件地址:" +msgid "Package Bases" +msgstr "套件基礎" + msgid "" "The selected packages have not been disowned, check the confirmation " "checkbox." @@ -589,6 +613,9 @@ msgstr "無法提升帳號權限。" msgid "Language is not currently supported." msgstr "目前不支援此語言。" +msgid "Timezone is not currently supported." +msgstr "目前不支援時區。" + #, php-format msgid "The username, %s%s%s, is already in use." msgstr "使用者名稱 %s%s%s 已被使用。" @@ -892,6 +919,9 @@ msgstr "活躍" msgid "Registration date:" msgstr "註冊日期:" +msgid "unknown" +msgstr "未知" + msgid "Last Login" msgstr "最後登入" @@ -941,6 +971,9 @@ msgstr "重新輸入密碼" msgid "Language" msgstr "語言" +msgid "Timezone" +msgstr "時區" + msgid "" "The following information is only required if you want to submit packages to " "the Arch User Repository." @@ -1021,9 +1054,6 @@ msgstr "回到詳情" msgid "Copyright %s 2004-%d aurweb Development Team." msgstr "Copyright %s 2004-%d aurweb 開發團隊。" -msgid "My Packages" -msgstr "我的套件" - msgid " My Account" msgstr "我的帳號" @@ -1075,9 +1105,6 @@ msgstr[0] "%d 個擱置的請求" msgid "Adopt Package" msgstr "接管套件" -msgid "unknown" -msgstr "未知" - msgid "Package Base Details" msgstr "套件基礎詳細資訊" @@ -1268,6 +1295,9 @@ msgstr "" "透過遞交棄置請求,您會請求受信使用者棄置套件基礎。請僅在該套件需要有維護者動" "作、維護者突然消失且您先前已經連絡過維護者時做此動作。" +msgid "No requests matched your search criteria." +msgstr "沒有符合您搜尋條件的搜尋結果。" + #, php-format msgid "%d package request found." msgid_plural "%d package requests found." @@ -1308,6 +1338,9 @@ msgstr "已鎖定" msgid "Close" msgstr "關閉" +msgid "Pending" +msgstr "擱置中" + msgid "Closed" msgstr "已關閉" @@ -1323,6 +1356,12 @@ msgstr "確切的名稱" msgid "Exact Package Base" msgstr "確切的套件基礎" +msgid "Co-maintainer" +msgstr "共同維護者" + +msgid "Maintainer, Co-maintainer" +msgstr "維護者、共同維護者" + msgid "All" msgstr "全部" -- cgit v1.2.3-24-g4f1b From 5fd417d70154470d145c83a4b60693c8d877b016 Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Sun, 26 Feb 2017 10:28:34 +0100 Subject: Release 4.5.0 Signed-off-by: Lukas Fleischer --- web/lib/version.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/lib/version.inc.php b/web/lib/version.inc.php index dcf5666e..e18873e3 100644 --- a/web/lib/version.inc.php +++ b/web/lib/version.inc.php @@ -1,3 +1,3 @@