diff options
author | Lukas Fleischer <lfleischer@archlinux.org> | 2017-02-26 10:30:16 +0100 |
---|---|---|
committer | Lukas Fleischer <lfleischer@archlinux.org> | 2017-02-26 10:30:16 +0100 |
commit | 69f7eb115a0a48d4d2808708bcfef9eaf292f64c (patch) | |
tree | e8e4ac633b88099b6836ba3f637b0ab2b1d6a472 | |
parent | fdd932ff8d5e5899cfeae9a8b29011fa2cf9d439 (diff) | |
parent | 5fd417d70154470d145c83a4b60693c8d877b016 (diff) | |
download | aur-69f7eb115a0a48d4d2808708bcfef9eaf292f64c.tar.gz aur-69f7eb115a0a48d4d2808708bcfef9eaf292f64c.tar.xz |
Merge branch 'master' into maint
80 files changed, 2813 insertions, 971 deletions
@@ -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 </srv/http/aurweb/schema/aur-schema.sql @@ -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/aurweb/exceptions.py b/aurweb/exceptions.py new file mode 100644 index 00000000..664db68c --- /dev/null +++ b/aurweb/exceptions.py @@ -0,0 +1,69 @@ +class AurwebException(Exception): + pass + + +class MaintenanceException(AurwebException): + pass + + +class BannedException(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 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 476aea86..44cce75d 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,17 +263,116 @@ 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))) conn.close() +def pkgbase_flag(pkgbase, user, comment): + pkgbase_id = pkgbase_from_name(pkgbase) + if not pkgbase_id: + 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: + raise aurweb.exceptions.InvalidUserException(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: + 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) + + 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_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: - die('{:s}: package base not found: {:s}'.format(action, pkgbase)) + raise aurweb.exceptions.InvalidPackageBaseException(pkgbase) conn = aurweb.db.Connection() @@ -310,6 +410,26 @@ 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 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) @@ -331,29 +451,36 @@ 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) - 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_atmost(cmdargv, *argdesc): + if len(cmdargv) - 1 > len(argdesc): + raise aurweb.exceptions.InvalidArgumentsException('too many arguments') + + +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 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'): 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('/'): @@ -362,11 +489,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 @@ -374,57 +501,58 @@ 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': + checkarg(cmdargv, 'repository name', 'comment') + + pkgbase = cmdargv[1] + comment = cmdargv[2] + pkgbase_flag(pkgbase, user, comment) + elif action == 'unflag': + checkarg(cmdargv, 'repository name') + + 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': - if len(cmdargv) < 2: - die_with_help("{:s}: missing repository name".format(action)) + checkarg_atleast(cmdargv, 'repository name') pkgbase = cmdargv[1] userlist = cmdargv[2:] @@ -433,18 +561,47 @@ def main(): cmds = { "adopt <name>": "Adopt a package base.", "disown <name>": "Disown a package base.", + "flag <name> <comment>": "Flag a package base out-of-date.", "help": "Show this help message and exit.", "list-repos": "List all your repositories.", "restore <name>": "Restore a deleted package base.", "set-comaintainers <name> [...]": "Set package base co-maintainers.", "set-keywords <name> [...]": "Change package base keywords.", "setup-repo <name>": "Create a repository (deprecated).", + "unflag <name>": "Remove out-of-date flag from a package base.", + "unvote <name>": "Remove vote from a package base.", + "vote <name>": "Vote for a package base.", "git-receive-pack": "Internal command used with Git.", "git-upload-pack": "Internal command used with Git.", } 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.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: + die('{:s}: {}'.format(action, e)) if __name__ == '__main__': diff --git a/aurweb/scripts/notify.py b/aurweb/scripts/notify.py index ddd6e49b..69164fba 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): @@ -136,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()] @@ -247,7 +248,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 + '/' diff --git a/conf/config.proto b/conf/config.proto index 96fad807..df10b995 100644 --- a/conf/config.proto +++ b/conf/config.proto @@ -9,8 +9,9 @@ password = aur [options] username_min_len = 3 username_max_len = 16 -passwd_min_len = 4 +passwd_min_len = 8 default_lang = en +default_timezone = UTC sql_debug = 0 max_sessions_per_user = 8 login_timeout = 7200 @@ -24,16 +25,17 @@ 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 -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 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 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. @@ -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 <transifex@cryptocrack.de>\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 "الكلّ" @@ -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 <transifex@cryptocrack.de>\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" @@ -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-25 13:41+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -160,10 +160,38 @@ 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 "" "Welcome to the AUR! Please read the %sAUR User Guidelines%s and %sAUR TU " @@ -430,6 +458,10 @@ 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 " "checkbox." @@ -724,6 +756,10 @@ 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." msgstr "" @@ -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 "" @@ -1190,6 +1231,10 @@ 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 " "the Arch User Repository." @@ -1295,10 +1340,6 @@ 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 "" @@ -1615,6 +1651,10 @@ msgid "" msgstr "" #: template/pkgreq_results.php +msgid "No requests matched your search criteria." +msgstr "" + +#: template/pkgreq_results.php #, php-format msgid "%d package request found." msgid_plural "%d package requests found." @@ -1669,6 +1709,10 @@ msgid "Close" msgstr "" #: template/pkgreq_results.php +msgid "Pending" +msgstr "" + +#: template/pkgreq_results.php msgid "Closed" msgstr "" @@ -1689,6 +1733,14 @@ 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 "" @@ -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 <transifex@cryptocrack.de>\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" @@ -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 <transifex@cryptocrack.de>\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" @@ -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 <transifex@cryptocrack.de>\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" @@ -7,7 +7,7 @@ # Alexander Griesbaum <agrsbm@gmail.com>, 2013-2014 # bjo <bjo@nord-west.org>, 2013 # FabianS_ <cadoc@gmx.de>, 2012 -# go2sh <c.seitz@tu-bs.de>, 2015 +# go2sh <c.seitz@tu-bs.de>, 2015-2016 # FabianS_ <cadoc@gmx.de>, 2012 # Giuliano Schneider <gs93@gmx.net>, 2015-2016 # go2sh <c.seitz@tu-bs.de>, 2015 @@ -18,15 +18,16 @@ # Nuc1eoN <nucrap@hotmail.com>, 2014 # Nuc1eoN <nucrap@hotmail.com>, 2014 # Simon Schneider <SPAM.schneida@gmail.com>, 2011 +# Stefan Auditor <stefan.auditor@erdfisch.de>, 2017 # Thomas_Do <thomasdodo@arcor.de>, 2013-2014 # Thomas_Do <thomasdodo@arcor.de>, 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 <transifex@cryptocrack.de>\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 <stefan.auditor@erdfisch.de>\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" @@ -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 <transifex@cryptocrack.de>\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 "Όλα" @@ -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 <transifex@cryptocrack.de>\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 <transifex@cryptocrack.de>\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" @@ -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 <transifex@cryptocrack.de>\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" @@ -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 <antoine@lubignon.info>\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 <transifex@cryptocrack.de>\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" @@ -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 <transifex@cryptocrack.de>\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 "הכול" @@ -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 <transifex@cryptocrack.de>\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 "" @@ -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 <transifex@cryptocrack.de>\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" @@ -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 <transifex@cryptocrack.de>\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" @@ -5,13 +5,14 @@ # Translators: # kusakata, 2013 # kusakata, 2013 -# kusakata, 2013-2016 +# kusakata, 2013-2017 +# 尾ノ上卓朗 <onoue@showway.biz>, 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 <transifex@cryptocrack.de>\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 "合計" @@ -3,7 +3,7 @@ # This file is distributed under the same license as the AUR package. # # Translators: -# Alexander F Rødseth <rodseth@gmail.com>, 2015 +# Alexander F Rødseth <rodseth@gmail.com>, 2015,2017 # Alexander F Rødseth <rodseth@gmail.com>, 2011,2013-2014 # Harald H. <haarektrans@gmail.com>, 2015 # Kim Nordmo <kim.nordmo@gmail.com>, 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 <transifex@cryptocrack.de>\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" @@ -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 <transifex@cryptocrack.de>\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" @@ -9,6 +9,7 @@ # Chris Warrick <kwpolska@gmail.com>, 2012 # Kwpolska <kwpolska@kwpolska.tk>, 2011 # Lukas Fleischer <transifex@cryptocrack.de>, 2011 +# m4sk1n <m4sk1n@o2.pl>, 2017 # Michal T <zorza2@gmail.com>, 2016 # Nuc1eoN <nucrap@hotmail.com>, 2014 # Piotr Strębski <strebski@o2.pl>, 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 <zorza2@gmail.com>\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 <transifex@cryptocrack.de>\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 <biasuttin@gmail.com>, 2011 # Fábio Nogueira <deb.user.ba@gmail.com>, 2016 # Rafael Fontenelle <rffontenelle@gmail.com>, 2012-2015 -# Rafael Fontenelle <rffontenelle@gmail.com>, 2011,2015-2016 +# Rafael Fontenelle <rffontenelle@gmail.com>, 2011,2015-2017 # Rafael Fontenelle <rffontenelle@gmail.com>, 2011 # Sandro <sandrossv@hotmail.com>, 2011 # Sandro <sandrossv@hotmail.com>, 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 <rffontenelle@gmail.com>\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 <transifex@cryptocrack.de>\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" @@ -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 <transifex@cryptocrack.de>\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" @@ -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 <transifex@cryptocrack.de>\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 "Все" @@ -3,14 +3,14 @@ # This file is distributed under the same license as the AUR package. # # Translators: -# archetyp <archetyp@linuxmail.org>, 2013-2015 +# archetyp <archetyp@linuxmail.org>, 2013-2016 # Matej Ľach <matej.lach@gmail.com>, 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 <transifex@cryptocrack.de>\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" @@ -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ć <githzerai06@gmail.com>\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 <transifex@cryptocrack.de>\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" @@ -3,21 +3,21 @@ # This file is distributed under the same license as the AUR package. # # Translators: -# Atilla Öntaş <tarakbumba@gmail.com>, 2011,2013-2015 -# Atilla Öntaş <tarakbumba@gmail.com>, 2012,2014 +# tarakbumba <tarakbumba@gmail.com>, 2011,2013-2015 +# tarakbumba <tarakbumba@gmail.com>, 2012,2014 # Demiray Muhterem <mdemiray@msn.com>, 2015 # Lukas Fleischer <transifex@cryptocrack.de>, 2011 # Samed Beyribey <ras0ir@eventualis.org>, 2012 # Samed Beyribey <samed@ozguryazilim.com.tr>, 2012 # Serpil Acar <acarserpil89@gmail.com>, 2016 -# Atilla Öntaş <tarakbumba@gmail.com>, 2012 +# tarakbumba <tarakbumba@gmail.com>, 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 <acarserpil89@gmail.com>\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 <transifex@cryptocrack.de>\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ü" @@ -6,14 +6,14 @@ # Lukas Fleischer <transifex@cryptocrack.de>, 2011 # Rax Garfield <admin@dvizho.ks.ua>, 2012 # Rax Garfield <admin@dvizho.ks.ua>, 2012 -# Yarema aka Knedlyk <yupadmin@gmail.com>, 2011-2016 +# Yarema aka Knedlyk <yupadmin@gmail.com>, 2011-2017 # Данило Коростіль <ted.korostiled@gmail.com>, 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 <yupadmin@gmail.com>\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 <transifex@cryptocrack.de>\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 <s8321414@gmail.com>, 2014-2016 +# Jeff Huang <s8321414@gmail.com>, 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 <s8321414@gmail.com>\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 "全部" diff --git a/schema/aur-schema.sql b/schema/aur-schema.sql index 30209bd8..b75a257c 100644 --- a/schema/aur-schema.sql +++ b/schema/aur-schema.sql @@ -27,16 +27,19 @@ 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 '', 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, 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, @@ -373,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/test/setup.sh b/test/setup.sh index d02d2981..2959a4e6 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 @@ -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 5054ce36..07383aff 100755 --- a/test/t1200-git-serve.sh +++ b/test/t1200-git-serve.sh @@ -20,6 +20,38 @@ 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 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 && @@ -340,4 +372,133 @@ 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_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 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 diff --git a/upgrading/4.5.0.txt b/upgrading/4.5.0.txt new file mode 100644 index 00000000..37b2b810 --- /dev/null +++ b/upgrading/4.5.0.txt @@ -0,0 +1,26 @@ +1. Add Timezone column to Users: + +--- +ALTER TABLE Users ADD COLUMN Timezone VARCHAR(32) NOT NULL DEFAULT 'UTC'; +--- + +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; +--- + +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; +---- + +4. Resize the Passwd column of the Users table: + +--- +ALTER TABLE Users MODIFY Passwd VARCHAR(255) NOT NULL; +--- diff --git a/web/html/account.php b/web/html/account.php index 2892f046..0b757612 100644 --- a/web/html/account.php +++ b/web/html/account.php @@ -31,12 +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("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("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"), $row["Username"]); } } @@ -89,6 +102,7 @@ if (isset($_COOKIE["AURSID"])) { "", $row["RealName"], $row["LangPreference"], + $row["Timezone"], $row["Homepage"], $row["IRCNick"], $row["PGPKey"], @@ -141,6 +155,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/home.php b/web/html/home.php index 475370bb..26754916 100644 --- a/web/html/home.php +++ b/web/html/home.php @@ -8,12 +8,69 @@ check_sid(); include_once('stats.inc.php'); -html_header( __("Home") ); +if (isset($_COOKIE["AURSID"])) { + html_header( __("Dashboard") ); +} else { + html_header( __("Home") ); +} ?> <div id="content-left-wrapper"> <div id="content-left"> + <?php if (isset($_COOKIE["AURSID"])): ?> + <div id="intro" class="box"> + <h2><?= __("Dashboard"); ?></h2> + <h3><?= __("My Flagged Packages"); ?></h3> + <?php + $params = array( + 'PP' => 50, + 'SeB' => 'M', + 'K' => username_from_sid($_COOKIE["AURSID"]), + 'outdated' => 'on', + 'SB' => 'l', + 'SO' => 'a' + ); + pkg_search_page($params, false, $_COOKIE["AURSID"]); + ?> + <h3><?= __("My Requests"); ?></h3> + <?php + $archive_time = config_get_int('options', 'request_archive_time'); + $from = time() - $archive_time; + $results = pkgreq_list(0, 50, uid_from_sid($_COOKIE["AURSID"]), $from); + $show_headers = false; + include('pkgreq_results.php'); + ?> + </div> + <div id="intro" class="box"> + <h2><?= __("My Packages"); ?></h2> + <p><a href="<?= get_uri('/packages/') ?>?SeB=m&K=<?= username_from_sid($_COOKIE["AURSID"]); ?>"><?= __('Search for packages I maintain') ?></a></p> + <?php + $params = array( + 'PP' => 50, + 'SeB' => 'm', + 'K' => username_from_sid($_COOKIE["AURSID"]), + 'SB' => 'l', + 'SO' => 'd' + ); + pkg_search_page($params, false, $_COOKIE["AURSID"]); + ?> + </div> + <div id="intro" class="box"> + <h2><?= __("Co-Maintained Packages"); ?></h2> + <p><a href="<?= get_uri('/packages/') ?>?SeB=c&K=<?= username_from_sid($_COOKIE["AURSID"]); ?>"><?= __('Search for packages I co-maintain') ?></a></p> + <?php + $params = array( + 'PP' => 50, + 'SeB' => 'c', + 'K' => username_from_sid($_COOKIE["AURSID"]), + 'SB' => 'l', + 'SO' => 'd' + ); + pkg_search_page($params, false, $_COOKIE["AURSID"]); + ?> + </div> + <?php else: ?> <div id="intro" class="box"> <h2>AUR <?= __("Home"); ?></h2> <p> @@ -122,6 +179,7 @@ html_header( __("Home") ); </p> </div> </div> + <?php endif; ?> </div> </div> <div id="content-right"> @@ -140,7 +198,7 @@ html_header( __("Home") ); <div id="pkg-stats" class="widget box"> <?php general_stats_table(); ?> </div> - <?php if (!empty($_COOKIE["AURSID"])): ?> + <?php if (isset($_COOKIE["AURSID"])): ?> <div id="pkg-stats" class="widget box"> <?php user_table(uid_from_sid($_COOKIE["AURSID"])); ?> </div> diff --git a/web/html/packages.php b/web/html/packages.php index 1b892781..113a1145 100644 --- a/web/html/packages.php +++ b/web/html/packages.php @@ -80,8 +80,9 @@ $(document).ready(function() { </script> <?php +include('pkg_search_form.php'); + if (isset($pkgid)) { - include('pkg_search_form.php'); if ($pkgid) { if (isset($_COOKIE["AURSID"])) { pkg_display_details($pkgid, $details, $_COOKIE["AURSID"]); @@ -97,11 +98,13 @@ if (isset($pkgid)) { $_GET['SB'] = 'p'; $_GET['SO'] = 'd'; } + echo '<div id="pkglist-results" class="box">'; 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); } + echo '</div>'; } html_footer(AURWEB_VERSION); 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/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(); 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)): ?> <div class="box"> - <h2><?= __('Delete Package') ?>: <? htmlspecialchars($pkgbase_name) ?></h2> + <h2><?= __('Delete Package') ?>: <?= htmlspecialchars($pkgbase_name) ?></h2> <p> <?= __('Use this form to delete the package base %s%s%s and the following packages from the AUR: ', '<strong>', htmlspecialchars($pkgbase_name), '</strong>'); ?> 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)): ?> <div class="box"> - <h2><?= __('Disown Package') ?>: <? htmlspecialchars($pkgbase_name) ?></h2> + <h2><?= __('Disown Package') ?>: <?= htmlspecialchars($pkgbase_name) ?></h2> <p> <?= __('Use this form to disown the package base %s%s%s which includes the following packages: ', '<strong>', htmlspecialchars($pkgbase_name), '</strong>'); ?> 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)): ?> <div class="box"> - <h2><?= __('Flag Package Out-Of-Date') ?>: <? htmlspecialchars($pkgbase_name) ?></h2> + <h2><?= __('Flag Package Out-Of-Date') ?>: <?= htmlspecialchars($pkgbase_name) ?></h2> <p> <?= __('Use this form to flag the package base %s%s%s and the following packages out-of-date: ', '<strong>', htmlspecialchars($pkgbase_name), '</strong>'); ?> 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)): ?> <div class="box"> - <h2><?= __('Merge Package') ?>: <? htmlspecialchars($pkgbase_name) ?></h2> + <h2><?= __('Merge Package') ?>: <?= htmlspecialchars($pkgbase_name) ?></h2> <p> <?= __('Use this form to merge the package base %s%s%s into another package. ', '<strong>', htmlspecialchars($pkgbase_name), '</strong>'); ?> diff --git a/web/html/pkgreq.php b/web/html/pkgreq.php index 8348a4f3..f981c25d 100644 --- a/web/html/pkgreq.php +++ b/web/html/pkgreq.php @@ -77,7 +77,10 @@ if (isset($base_id)) { $SID = $_COOKIE['AURSID']; html_header(__("Requests")); + echo '<div id="pkglist-results" class="box">'; + $show_headers = true; include('pkgreq_results.php'); + echo '</div>'; } html_footer(AURWEB_VERSION); 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)): <li> <a href="<?= get_user_uri($row['Username']); ?>"><?= htmlspecialchars($row['Username']) ?></a> <?php if ($row["VoteTS"] > 0): ?> - (<?= gmdate("Y-m-d H:i", intval($row["VoteTS"])) ?>) + (<?= date("Y-m-d H:i", intval($row["VoteTS"])) ?>) <?php endif; ?> </li> <?php endwhile; ?> 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'); } diff --git a/web/lib/acctfuncs.inc.php b/web/lib/acctfuncs.inc.php index 172b9621..d0a7ff94 100644 --- a/web/lib/acctfuncs.inc.php +++ b/web/lib/acctfuncs.inc.php @@ -1,5 +1,4 @@ <?php - /** * Determine if an HTTP request variable is set * @@ -52,6 +51,7 @@ function html_format_pgp_fingerprint($fingerprint) { * @param string $C The confirmed password value of the displayed user * @param string $R The real name of the displayed user * @param string $L The language preference of the displayed user + * @param string $TZ The timezone preference of the displayed user * @param string $HP The homepage of the displayed user * @param string $I The IRC nickname of the displayed user * @param string $K The PGP key fingerprint of the displayed user @@ -66,9 +66,13 @@ function html_format_pgp_fingerprint($fingerprint) { * @return void */ function display_account_form($A,$U="",$T="",$S="",$E="",$H="",$P="",$C="",$R="", - $L="",$HP="",$I="",$K="",$PK="",$J="",$CN="",$UN="",$ON="",$UID=0,$N="") { + $L="",$TZ="",$HP="",$I="",$K="",$PK="",$J="",$CN="",$UN="",$ON="",$UID=0,$N="") { global $SUPPORTED_LANGS; + if ($TZ == "") { + $TZ = config_get("options", "default_timezone"); + } + include("account_edit_form.php"); return; } @@ -88,6 +92,7 @@ function display_account_form($A,$U="",$T="",$S="",$E="",$H="",$P="",$C="",$R="" * @param string $C The confirmed password for the user * @param string $R The real name of the user * @param string $L The language preference of the user + * @param string $TZ The timezone preference of the user * @param string $HP The homepage of the displayed user * @param string $I The IRC nickname of the user * @param string $K The PGP fingerprint of the user @@ -102,7 +107,7 @@ function display_account_form($A,$U="",$T="",$S="",$E="",$H="",$P="",$C="",$R="" * @return array Boolean indicating success and message to be printed */ function process_account_form($TYPE,$A,$U="",$T="",$S="",$E="",$H="",$P="",$C="", - $R="",$L="",$HP="",$I="",$K="",$PK="",$J="",$CN="",$UN="",$ON="",$UID=0,$N="") { + $R="",$L="",$TZ="",$HP="",$I="",$K="",$PK="",$J="",$CN="",$UN="",$ON="",$UID=0,$N="") { global $SUPPORTED_LANGS; $error = ''; @@ -200,6 +205,9 @@ function process_account_form($TYPE,$A,$U="",$T="",$S="",$E="",$H="",$P="",$C="" if (!$error && !array_key_exists($L, $SUPPORTED_LANGS)) { $error = __("Language is not currently supported."); } + if (!$error && !array_key_exists($TZ, generate_timezone_list())) { + $error = __("Timezone is not currently supported."); + } if (!$error) { /* * Check whether the user name is available. @@ -264,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); @@ -278,13 +285,14 @@ function process_account_form($TYPE,$A,$U="",$T="",$S="",$E="",$H="",$P="",$C="" $salt = $dbh->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.= "InactivityTS, Username, Email, Passwd , "; + $q.= "RealName, LangPreference, Timezone, Homepage, IRCNick, PGPKey) "; + $q.= "VALUES (1, 0, 0, $U, $E, $P, $R, $L, $TZ "; $q.= "$HP, $I, $K)"; $result = $dbh->exec($q); if (!$result) { @@ -341,12 +349,12 @@ 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); + $q.= ", Timezone = " . $dbh->quote($TZ); $q.= ", Homepage = " . $dbh->quote($HP); $q.= ", IRCNick = " . $dbh->quote($I); $q.= ", PGPKey = " . $dbh->quote(str_replace(" ", "", $K)); @@ -359,6 +367,20 @@ 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 (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.", "<strong>", htmlspecialchars($U,ENT_QUOTES), "</strong>"); @@ -504,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.', '<a href="' . - htmlspecialchars(get_uri('/passreset')) . '">', - '</a>'); - 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.', '<a href="' . + htmlspecialchars(get_uri('/passreset')) . '">', + '</a>'); + 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; @@ -543,7 +570,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 +587,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); @@ -597,7 +624,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); @@ -638,7 +665,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 +692,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); @@ -712,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) . " "; @@ -754,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; } /** @@ -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..d58df406 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 * @@ -38,7 +41,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 +80,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); } @@ -535,63 +538,6 @@ function mkurl($append) { } /** - * 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 * * @param int $comment_id The ID of the comment 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 = ""; 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); } } diff --git a/web/lib/pkgbasefuncs.inc.php b/web/lib/pkgbasefuncs.inc.php index b0827844..57b307d8 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"; @@ -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); } @@ -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/pkgfuncs.inc.php b/web/lib/pkgfuncs.inc.php index 4b0fdbac..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 = '<a href="' . htmlspecialchars((isset($url[1]) ? $url[1] : $url[0]), ENT_QUOTES) . '">' . htmlspecialchars($url[0]) . '</a>'; } else { - $link = htmlspecialchars($url[0]); + $file_url = sprintf(config_get('options', 'source_file_uri'), htmlspecialchars($url[0]), $package); + $link = '<a href="' . $file_url . '">' . htmlspecialchars($url[0]) . '</a>'; } if ($arch) { @@ -642,52 +644,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 - * 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 int The total number of packages matching the query */ -function pkg_search_page($SID="") { +function pkg_search_page($params, $show_headers=true, $SID="") { $dbh = DB::connect(); /* @@ -698,16 +664,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; } /* @@ -741,60 +707,75 @@ 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']) . " "; - } - elseif (isset($_GET["SeB"]) && $_GET["SeB"] == "s") { + $q_where .= "AND Users.Username = " . $dbh->quote($params['K']) . " "; + } + 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($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($_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 . ", "; @@ -827,7 +808,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; @@ -843,7 +824,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 { @@ -852,10 +833,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(); @@ -880,8 +861,6 @@ function pkg_search_page($SID="") { $templ_pages[__('Last') . ' »'] = ($pages - 1) * $per_page; } - include('pkg_search_form.php'); - $searchresults = array(); if ($result) { while ($row = $result->fetch(PDO::FETCH_ASSOC)) { @@ -891,24 +870,25 @@ function pkg_search_page($SID="") { include('pkg_search_results.php'); - return; + return $total; } /** * 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/lib/pkgreqfuncs.inc.php b/web/lib/pkgreqfuncs.inc.php index 8ceac8df..774ebe7e 100644 --- a/web/lib/pkgreqfuncs.inc.php +++ b/web/lib/pkgreqfuncs.inc.php @@ -19,10 +19,12 @@ 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) { +function pkgreq_list($offset, $limit, $uid=false, $from=false) { $dbh = DB::connect(); $q = "SELECT PackageRequests.ID, "; @@ -35,6 +37,18 @@ 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 || $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 "; $q.= "LIMIT " . $limit . " OFFSET " . $offset; @@ -149,7 +163,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(); @@ -172,7 +186,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 @@ +<?php +set_include_path(get_include_path() . PATH_SEPARATOR . '../lib'); + +/** + * Generate an associative of the PHP timezones and display text. + * + * @return array PHP Timezone => 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/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); 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 @@ <?php -define("AURWEB_VERSION", "v4.4.1"); +define("AURWEB_VERSION", "v4.5.0"); 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 @@ -129,6 +129,21 @@ ?> </select> </p> + <p> + <label for="id_timezone"><?= __("Timezone") ?></label> + <select name="TZ" id="id_timezone"> +<?php + $timezones = generate_timezone_list(); + while (list($key, $val) = each($timezones)) { + if ($TZ == $key) { + print "<option value=\"".$key."\" selected=\"selected\"> ".$val."</option>\n"; + } else { + print "<option value=\"".$key."\"> ".$val."</option>\n"; + } + } +?> + </select> + </p> </fieldset> <fieldset> 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 @@ <li id="anb-forums"><a href="https://bbs.archlinux.org/" title="Community forums">Forums</a></li> <li id="anb-wiki"><a href="https://wiki.archlinux.org/" title="Community documentation">Wiki</a></li> <li id="anb-bugs"><a href="https://bugs.archlinux.org/" title="Report and track bugs">Bugs</a></li> + <li id="anb-security"><a href="https://security.archlinux.org/" title="Arch Linux Security Tracker">Security</a></li> <li id="anb-aur"><a href="/" title="Arch Linux User Repository">AUR</a></li> <li id="anb-download"><a href="https://www.archlinux.org/download/" title="Get Arch Linux">Download</a></li> </ul> 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 @@ <div class="box"> - <h2><?= __('Manage Co-maintainers') ?>: <? htmlspecialchars($pkgbase_name) ?></h2> + <h2><?= __('Manage Co-maintainers') ?>: <?= htmlspecialchars($pkgbase_name) ?></h2> <p> <?= __('Use this form to add co-maintainers for %s%s%s (one user name per line):', '<strong>', htmlspecialchars($pkgbase_name), '</strong>'); ?> 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 @@ <?= __('%s%s%s flagged %s%s%s out-of-date on %s%s%s for the following reason:', '<strong>', html_format_username($message['Username']), '</strong>', '<strong>', htmlspecialchars($pkgbase_name), '</strong>', - '<strong>', gmdate('Y-m-d', $message['OutOfDateTS']), '</strong>'); ?> + '<strong>', date('Y-m-d', $message['OutOfDateTS']), '</strong>'); ?> <?php else: ?> <?= __('%s%s%s is not flagged out-of-date.', '<strong>', htmlspecialchars($pkgbase_name), '</strong>'); ?> diff --git a/web/template/header.php b/web/template/header.php index 874109a5..f7409400 100644 --- a/web/template/header.php +++ b/web/template/header.php @@ -24,6 +24,7 @@ <li id="anb-forums"><a href="https://bbs.archlinux.org/" title="Community forums">Forums</a></li> <li id="anb-wiki"><a href="https://wiki.archlinux.org/" title="Community documentation">Wiki</a></li> <li id="anb-bugs"><a href="https://bugs.archlinux.org/" title="Report and track bugs">Bugs</a></li> + <li id="anb-security"><a href="https://security.archlinux.org/" title="Arch Linux Security Tracker">Security</a></li> <li id="anb-aur"><a href="/" title="Arch Linux User Repository">AUR</a></li> <li id="anb-download"><a href="https://www.archlinux.org/download/" title="Get Arch Linux">Download</a></li> </ul> @@ -53,10 +54,9 @@ </div> <div id="archdev-navbar"> <ul> - <li><a href="<?= get_uri('/'); ?>">AUR <?= __("Home"); ?></a></li> - <li><a href="<?= get_uri('/packages/'); ?>"><?= __("Packages"); ?></a></li> <?php if (isset($_COOKIE['AURSID'])): ?> - <li><a href="<?= get_uri('/packages/'); ?>?SeB=m&K=<?= username_from_sid($_COOKIE["AURSID"]); ?>"><?= __("My Packages"); ?></a></li> + <li><a href="<?= get_uri('/'); ?>"><?= __("Dashboard"); ?></a></li> + <li><a href="<?= get_uri('/packages/'); ?>"><?= __("Packages"); ?></a></li> <?php if (has_credential(CRED_PKGREQ_LIST)): ?> <li><a href="<?= get_uri('/requests/') ; ?>"><?= __("Requests"); ?></a></li> <?php endif; ?> @@ -67,6 +67,8 @@ <?php if (has_credential(CRED_TU_LIST_VOTES)): ?><li><a href="<?= get_uri('/tu/'); ?>"><?= __("Trusted User"); ?></a></li><?php endif; ?> <li><a href="<?= get_uri('/logout/'); ?>"><?= __("Logout"); ?></a></li> <?php else: ?> + <li><a href="<?= get_uri('/'); ?>">AUR <?= __("Home"); ?></a></li> + <li><a href="<?= get_uri('/packages/'); ?>"><?= __("Packages"); ?></a></li> <li><a href="<?= get_uri('/register/'); ?>"><?= __("Register"); ?></a></li> <?php if (config_get_bool('options', 'disable_http_login') && empty($_SERVER['HTTPS'])): ?> <li><a href="<?= get_uri('/login/', true); ?>"><?= __("Login"); ?></a></li> 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)) { <?php while (list($indx, $row) = each($comments)): ?> <?php - $date_fmtd = gmdate('Y-m-d H:i', $row['CommentTS']); + $date_fmtd = date('Y-m-d H:i', $row['CommentTS']); if ($row['UserName']) { $user_fmtd = html_format_username($row['UserName']); $heading = __('%s commented on %s', $user_fmtd, $date_fmtd); @@ -30,7 +30,7 @@ if (!isset($count)) { $is_pinned = $row['PinnedTS']; if ($uid && $is_deleted) { - $date_fmtd = gmdate('Y-m-d H:i', $row['DelTS']); + $date_fmtd = date('Y-m-d H:i', $row['DelTS']); $heading .= ' <span class="edited">('; if ($row['DelUserName']) { $user_fmtd = html_format_username($row['DelUserName']); @@ -40,7 +40,7 @@ if (!isset($count)) { } $heading .= ')</span>'; } 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 .= ' <span class="edited">('; 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..ed8974a3 100644 --- a/web/template/pkg_details.php +++ b/web/template/pkg_details.php @@ -1,6 +1,6 @@ <?php -$pkgbuild_uri = sprintf(config_get('options', 'pkgbuild_uri'), urlencode($row['BaseName'])); +$pkgbuild_uri = sprintf(config_get('options', 'source_file_uri'), 'PKGBUILD', urlencode($row['BaseName'])); $log_uri = sprintf(config_get('options', 'log_uri'), urlencode($row['BaseName'])); $snapshot_uri = sprintf(config_get('options', 'snapshot_uri'), urlencode($row['BaseName'])); $git_clone_uri_anon = sprintf(config_get('options', 'git_clone_uri_anon'), htmlspecialchars($row['BaseName'])); @@ -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"]); @@ -299,7 +299,7 @@ endif; <div> <ul id="pkgsrcslist"> <?php while (list($k, $src) = each($sources)): ?> - <li><?= pkg_source_link($src[0], $src[1]) ?></li> + <li><?= pkg_source_link($src[0], $src[1], urlencode($row['BaseName'])) ?></li> <?php endwhile; ?> </ul> </div> diff --git a/web/template/pkg_search_form.php b/web/template/pkg_search_form.php index 795a796e..3d0cde6c 100644 --- a/web/template/pkg_search_form.php +++ b/web/template/pkg_search_form.php @@ -9,6 +9,8 @@ $searchby = array( 'B' => __('Exact Package Base'), 'k' => __('Keywords'), 'm' => __('Maintainer'), + 'c' => __('Co-maintainer'), + 'M' => __('Maintainer, Co-maintainer'), 's' => __('Submitter') ); diff --git a/web/template/pkg_search_results.php b/web/template/pkg_search_results.php index 37a90328..7f92685a 100644 --- a/web/template/pkg_search_results.php +++ b/web/template/pkg_search_results.php @@ -1,54 +1,74 @@ <?php +if ($show_headers) { + $fmtth = function($title, $sb=false, $so=false, $hint=false) { + echo '<th>'; + if ($sb) { + echo '<a href="?' . mkurl('SB=' . $sb . '&SO = ' . $so) . '">' . $title . '</a>'; + } else { + echo $title; + } + if ($hint) { + echo '<span title="' . $hint . '" class="hover-help"><sup>?</sup></span>'; + } + echo '</th>'; + }; +} else { + $fmtth = function($title, $sb=false, $so=false, $hint=false) { + echo '<th>' . $title . '</th>'; + }; +} + if (!$result): ?> - <div class="box"><p><?= __("Error retrieving package list.") ?></p></div> + <p><?= __("Error retrieving package list.") ?></p> <?php elseif ($total == 0): ?> - <div class="box"><p><?= __("No packages matched your search criteria.") ?></p></div> + <p><?= __("No packages matched your search criteria.") ?></p> <?php else: ?> - <div id="pkglist-results" class="box"> - <div class="pkglist-stats"> - <p> - <?= _n('%d package found.', '%d packages found.', $total) ?> - <?= __('Page %d of %d.', $current, $pages) ?> - </p> - <?php if (count($templ_pages) > 1): ?> - <p class="pkglist-nav"> - <?php foreach ($templ_pages as $pagenr => $pagestart): ?> - <?php if ($pagestart === false): ?> - <span class="page"><?= $pagenr ?></span> - <?php elseif ($pagestart + 1 == $first): ?> - <span class="page"><?= $pagenr ?></span> - <?php else: ?> - <a class="page" href="<?= get_uri('/packages/'); ?>?<?= mkurl('O=' . $pagestart) ?>"><?= $pagenr ?></a> - <?php endif; ?> - <?php endforeach; ?> - </p> - <?php endif; ?> - </div> + <?php if ($show_headers): ?> + <div class="pkglist-stats"> + <p> + <?= _n('%d package found.', '%d packages found.', $total) ?> + <?= __('Page %d of %d.', $current, $pages) ?> + </p> + <?php if (count($templ_pages) > 1): ?> + <p class="pkglist-nav"> + <?php foreach ($templ_pages as $pagenr => $pagestart): ?> + <?php if ($pagestart === false): ?> + <span class="page"><?= $pagenr ?></span> + <?php elseif ($pagestart + 1 == $first): ?> + <span class="page"><?= $pagenr ?></span> + <?php else: ?> + <a class="page" href="<?= get_uri('/packages/'); ?>?<?= mkurl('O=' . $pagestart) ?>"><?= $pagenr ?></a> + <?php endif; ?> + <?php endforeach; ?> + </p> + <?php endif; ?> + </div> + <?php endif; ?> - <form id="pkglist-results-form" method="post" action="<?= get_uri('/pkgbase/'); ?>?<?= htmlentities($_SERVER['QUERY_STRING']) ?>"> - <table class="results"> - <thead> - <tr> - <?php if ($SID): ?> - <th> </th> - <?php endif; ?> - <th><a href="?<?= mkurl('SB=n&SO=' . $SO_next) ?>"><?= __("Name") ?></a></th> - <th><?= __("Version") ?></th> - <th><a href="?<?= mkurl('SB=v&SO=' . $SO_next) ?>"><?= __("Votes") ?></a></th> - <th><a href="?<?= mkurl('SB=p&SO=' . $SO_next) ?>"><?= __("Popularity") ?></a><span title="<?= __('Popularity is calculated as the sum of all votes with each vote being weighted with a factor of %.2f per day since its creation.', 0.98) ?>" class="hover-help"><sup>?</sup></span></th> - <?php if ($SID): ?> - <th><a href="?<?= mkurl('SB=w&SO=' . $SO_next) ?>"><?= __("Voted") ?></a></th> - <th><a href="?<?= mkurl('SB=o&SO=' . $SO_next) ?>"><?= __("Notify") ?></a></th> - <?php endif; ?> - <th><?= __("Description") ?></th> - <th><a href="?<?= mkurl('SB=m&SO=' . $SO_next) ?>"><?= __("Maintainer") ?></a></th> - </tr> - </thead> - <tbody> + <form id="pkglist-results-form" method="post" action="<?= get_uri('/pkgbase/'); ?>?<?= htmlentities($_SERVER['QUERY_STRING']) ?>"> + <table class="results"> + <thead> + <tr> + <?php if ($SID && $show_headers): ?> + <th> </th> + <?php endif; ?> + <?php $fmtth(__('Name'), 'n', $SO_next) ?> + <?php $fmtth(__('Version')) ?> + <?php $fmtth(__('Votes'), 'v', $SO_next) ?> + <?php $fmtth(__('Popularity'), 'p', $SO_next, __('Popularity is calculated as the sum of all votes with each vote being weighted with a factor of %.2f per day since its creation.', 0.98)) ?> + <?php if ($SID): ?> + <?php $fmtth(__('Voted'), 'w', $SO_next) ?> + <?php $fmtth(__('Notify'), 'o', $SO_next) ?> + <?php endif; ?> + <?php $fmtth(__('Description')) ?> + <?php $fmtth(__('Maintainer'), 'm', $SO_next) ?> + </tr> + </thead> + <tbody> <?php while (list($indx, $row) = each($searchresults)): ?> <tr class="<?= ($indx % 2 == 0) ? 'odd' : 'even' ?>"> - <?php if ($SID): ?> + <?php if ($SID && $show_headers): ?> <td><input type="checkbox" name="IDs[<?= $row["PackageBaseID"] ?>]" value="1" /></td> <?php endif; ?> <td><a href="<?= htmlspecialchars(get_pkg_uri($row["Name"]), ENT_QUOTES); ?>"><?= htmlspecialchars($row["Name"]) ?></a></td> @@ -82,51 +102,52 @@ if (!$result): ?> </tr> <?php endwhile; ?> - </tbody> - </table> + </tbody> + </table> - <div class="pkglist-stats"> - <p> - <?= _n('%d package found.', '%d packages found.', $total) ?> - <?= __('Page %d of %d.', $current, $pages) ?> - </p> - <?php if (count($templ_pages) > 1): ?> - <p class="pkglist-nav"> - <?php foreach ($templ_pages as $pagenr => $pagestart): ?> - <?php if ($pagestart === false): ?> - <span class="page"><?= $pagenr ?></span> - <?php elseif ($pagestart + 1 == $first): ?> - <span class="page"><?= $pagenr ?></span> - <?php else: ?> - <a class="page" href="<?= get_uri('/packages/'); ?>?<?= mkurl('O=' . $pagestart) ?>"><?= $pagenr ?></a> - <?php endif; ?> - <?php endforeach; ?> - </p> - <?php endif; ?> - </div> + <?php if ($show_headers): ?> + <div class="pkglist-stats"> + <p> + <?= _n('%d package found.', '%d packages found.', $total) ?> + <?= __('Page %d of %d.', $current, $pages) ?> + </p> + <?php if (count($templ_pages) > 1): ?> + <p class="pkglist-nav"> + <?php foreach ($templ_pages as $pagenr => $pagestart): ?> + <?php if ($pagestart === false): ?> + <span class="page"><?= $pagenr ?></span> + <?php elseif ($pagestart + 1 == $first): ?> + <span class="page"><?= $pagenr ?></span> + <?php else: ?> + <a class="page" href="<?= get_uri('/packages/'); ?>?<?= mkurl('O=' . $pagestart) ?>"><?= $pagenr ?></a> + <?php endif; ?> + <?php endforeach; ?> + </p> + <?php endif; ?> + </div> - <?php if ($SID): ?> - <p> - <select name="action"> - <option><?= __("Actions") ?></option> - <option value="do_UnFlag"><?= __("Unflag Out-of-date") ?></option> - <option value="do_Adopt"><?= __("Adopt Packages") ?></option> - <option value="do_Disown"><?= __("Disown Packages") ?></option> - <?php if (has_credential(CRED_PKGBASE_DELETE)): ?> - <option value="do_Delete"><?= __("Delete Packages") ?></option> - <?php endif; ?> - <option value="do_Notify"><?= __("Notify") ?></option> - <option value="do_UnNotify"><?= __("UnNotify") ?></option> - </select> + <?php if ($SID): ?> + <p> + <select name="action"> + <option><?= __("Actions") ?></option> + <option value="do_UnFlag"><?= __("Unflag Out-of-date") ?></option> + <option value="do_Adopt"><?= __("Adopt Packages") ?></option> + <option value="do_Disown"><?= __("Disown Packages") ?></option> <?php if (has_credential(CRED_PKGBASE_DELETE)): ?> - <label for="merge_Into"><?= __("Merge into") ?></label> - <input type="text" id="merge_Into" name="merge_Into" /> + <option value="do_Delete"><?= __("Delete Packages") ?></option> <?php endif; ?> - <label class="confirmation"><input type="checkbox" name="confirm" value="1" /> <?= __("Confirm") ?></label> - <input type="hidden" name="token" value="<?= htmlspecialchars($_COOKIE['AURSID']) ?>" /> - <input type="submit" class="button" style="width: 80px" value="<?= __("Go") ?>" /> - </p> - <?php endif; # if ($SID) ?> - </form> - </div> + <option value="do_Notify"><?= __("Notify") ?></option> + <option value="do_UnNotify"><?= __("UnNotify") ?></option> + </select> + <?php if (has_credential(CRED_PKGBASE_DELETE)): ?> + <label for="merge_Into"><?= __("Merge into") ?></label> + <input type="text" id="merge_Into" name="merge_Into" /> + <?php endif; ?> + <label class="confirmation"><input type="checkbox" name="confirm" value="1" /> <?= __("Confirm") ?></label> + <input type="hidden" name="token" value="<?= htmlspecialchars($_COOKIE['AURSID']) ?>" /> + <input type="submit" class="button" style="width: 80px" value="<?= __("Go") ?>" /> + </p> + <?php endif; # if ($SID) ?> + <?php endif; ?> + </form> <?php endif; # search was successful and returned multiple results ?> diff --git a/web/template/pkgbase_details.php b/web/template/pkgbase_details.php index 1012c4e6..e368872e 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); @@ -50,7 +50,7 @@ $base_uri = get_pkgbase_uri($row['Name']); <th><?= __('Git Clone URL') . ': ' ?></th> <td> <a href="<?= $git_clone_uri_anon ?>"><?= $git_clone_uri_anon ?></a> (<?= __('read-only') ?>) - <?php if ($uid == $row["MaintainerUID"]): ?> + <?php if (in_array($uid, $maintainers)): ?> <br /> <a href="<?= $git_clone_uri_priv ?>"><?= $git_clone_uri_priv ?></a> <?php endif; ?> </td> 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 @@ <div class="box"> - <h2><?= __('Close Request') ?>: <? htmlspecialchars($pkgbase_name) ?></h2> + <h2><?= __('Close Request') ?>: <?= htmlspecialchars($pkgbase_name) ?></h2> <p> <?= __('Use this form to close the request for package base %s%s%s.', '<strong>', htmlspecialchars($pkgbase_name), '</strong>'); ?> 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 @@ <div class="box"> - <h2><?= __('Submit Request') ?>: <? htmlspecialchars($pkgbase_name) ?></h2> + <h2><?= __('Submit Request') ?>: <?= htmlspecialchars($pkgbase_name) ?></h2> <p> <?= __('Use this form to file a request against package base %s%s%s which includes the following packages:', '<strong>', htmlspecialchars($pkgbase_name), '</strong>'); ?> diff --git a/web/template/pkgreq_results.php b/web/template/pkgreq_results.php index b27963be..fb49dfae 100644 --- a/web/template/pkgreq_results.php +++ b/web/template/pkgreq_results.php @@ -1,129 +1,135 @@ -<div id="pkglist-results" class="box"> - <div class="pkglist-stats"> - <p> - <?= _n('%d package request found.', '%d package requests found.', $total) ?> - <?= __('Page %d of %d.', $current, $pages) ?> - </p> - <?php if (count($templ_pages) > 1): ?> - <p class="pkglist-nav"> - <?php foreach ($templ_pages as $pagenr => $pagestart): ?> - <?php if ($pagestart === false): ?> - <span class="page"><?= $pagenr ?></span> - <?php elseif ($pagestart + 1 == $first): ?> - <span class="page"><?= $pagenr ?></span> - <?php else: ?> - <a class="page" href="<?= get_uri('/requests/'); ?>?<?= mkurl('O=' . $pagestart) ?>"><?= $pagenr ?></a> - <?php endif; ?> - <?php endforeach; ?> - </p> - <?php endif; ?> - </div> +<?php if (count($results) == 0): ?> +<p><?= __("No requests matched your search criteria.") ?></p> +<?php else: ?> +<?php if ($show_headers): ?> +<div class="pkglist-stats"> + <p> + <?= _n('%d package request found.', '%d package requests found.', $total) ?> + <?= __('Page %d of %d.', $current, $pages) ?> + </p> + <?php if (count($templ_pages) > 1): ?> + <p class="pkglist-nav"> + <?php foreach ($templ_pages as $pagenr => $pagestart): ?> + <?php if ($pagestart === false): ?> + <span class="page"><?= $pagenr ?></span> + <?php elseif ($pagestart + 1 == $first): ?> + <span class="page"><?= $pagenr ?></span> + <?php else: ?> + <a class="page" href="<?= get_uri('/requests/'); ?>?<?= mkurl('O=' . $pagestart) ?>"><?= $pagenr ?></a> + <?php endif; ?> + <?php endforeach; ?> + </p> + <?php endif; ?> +</div> +<?php endif; ?> - <table class="results"> - <thead> - <tr> - <th><?= __("Package") ?></th> - <th><?= __("Type") ?></th> - <th><?= __("Comments") ?></th> - <th><?= __("Filed by") ?></th> - <th><?= __("Date") ?></th> - <th><?= __("Status") ?></th> - </tr> - </thead> - <tbody> +<table class="results"> +<thead> + <tr> + <th><?= __("Package") ?></th> + <th><?= __("Type") ?></th> + <th><?= __("Comments") ?></th> + <th><?= __("Filed by") ?></th> + <th><?= __("Date") ?></th> + <th><?= __("Status") ?></th> + </tr> +</thead> +<tbody> - <?php while (list($indx, $row) = each($results)): ?> - <?php - $idle_time = config_get_int('options', 'request_idle_time'); - $due = ($row['Open'] && time() - intval($row['RequestTS']) > $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"); - } + <?php while (list($indx, $row) = each($results)): ?> + <?php + $idle_time = config_get_int('options', 'request_idle_time'); + $due = ($row['Open'] && time() - intval($row['RequestTS']) > $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"); } - ?> - <tr class="<?= ($indx % 2 == 0) ? 'odd' : 'even' ?>"> - <?php if ($row['BaseID']): ?> - <td><a href="<?= htmlspecialchars(get_pkgbase_uri($row["Name"]), ENT_QUOTES); ?>"><?= htmlspecialchars($row["Name"]) ?></a></td> - <?php else: ?> - <td><?= htmlspecialchars($row["Name"]) ?></td> - <?php endif; ?> - <?php if ($row['Type'] == 'merge'): ?> - <td> - <?= htmlspecialchars(ucfirst($row['Type']), ENT_QUOTES); ?> - <?php if (!empty($row['MergeInto'])): ?> - (<?= htmlspecialchars($row['MergeInto'], ENT_QUOTES); ?>) - <?php endif; ?> - </td> - <?php else: ?> - <td><?= htmlspecialchars(ucfirst($row['Type']), ENT_QUOTES); ?></td> + } + ?> + <tr class="<?= ($indx % 2 == 0) ? 'odd' : 'even' ?>"> + <?php if ($row['BaseID']): ?> + <td><a href="<?= htmlspecialchars(get_pkgbase_uri($row["Name"]), ENT_QUOTES); ?>"><?= htmlspecialchars($row["Name"]) ?></a></td> + <?php else: ?> + <td><?= htmlspecialchars($row["Name"]) ?></td> + <?php endif; ?> + <?php if ($row['Type'] == 'merge'): ?> + <td> + <?= htmlspecialchars(ucfirst($row['Type']), ENT_QUOTES); ?> + <?php if (!empty($row['MergeInto'])): ?> + (<?= htmlspecialchars($row['MergeInto'], ENT_QUOTES); ?>) <?php endif; ?> - <td class="wrap"><?= htmlspecialchars($row['Comments'], ENT_QUOTES); ?></td> - <td> - <a href="<?= get_uri('/account/') . htmlspecialchars($row['User'], ENT_QUOTES) ?>" title="<?= __('View account information for %s', htmlspecialchars($row['User'])) ?>"><?= htmlspecialchars($row['User']) ?></a> - </td> - <td<?php if ($due): ?> class="flagged"<?php endif; ?>><?= gmdate("Y-m-d H:i", intval($row['RequestTS'])) ?></td> - <?php if ($row['Open']): ?> - <td> - <?php if ($row['BaseID']): ?> - <?php if ($row['Type'] == 'deletion'): ?> - <a href="<?= get_pkgbase_uri($row['Name']) ?>delete/?via=<?= intval($row['ID']) ?>"><?= __('Accept') ?></a> - <br/ > - <?php elseif ($row['Type'] == 'merge'): ?> - <a href="<?= get_pkgbase_uri($row['Name']) ?>merge/?into=<?= urlencode($row['MergeInto']) ?>&via=<?= intval($row['ID']) ?>"><?= __('Accept') ?></a> - <br /> - <?php elseif ($row['Type'] == 'orphan' && $due): ?> - <form action="<?= get_pkgbase_uri($row['Name']) . 'disown/'; ?>" method="post"> - <input type="hidden" name="token" value="<?= htmlspecialchars($_COOKIE['AURSID']) ?>" /> - <input type="hidden" name="via" value="<?= intval($row['ID']) ?>" /> - <input type="submit" class="button text-button" name="do_Disown" value="<?= __('Accept') ?>" /> - </form> - <?php elseif ($row['Type'] == 'orphan' && !$due): ?> - <?= __('Locked') ?> (<?= $time_left_fmt ?>) - <br /> - <?php endif; ?> - <?php endif; ?> - <a href="<?= get_pkgreq_route() . '/' . intval($row['ID']) ?>/close/"><?= __('Close') ?></a> - </td> - <?php else: ?> - <?php if ($row['Status'] == 1): ?> - <td><?= __("Closed") ?></td> - <?php elseif ($row['Status'] == 2): ?> - <td><?= __("Accepted") ?></td> - <?php elseif ($row['Status'] == 3): ?> - <td><?= __("Rejected") ?></td> - <?php else: ?> - <td><?= __("unknown") ?></td> + </td> + <?php else: ?> + <td><?= htmlspecialchars(ucfirst($row['Type']), ENT_QUOTES); ?></td> + <?php endif; ?> + <td class="wrap"><?= htmlspecialchars($row['Comments'], ENT_QUOTES); ?></td> + <td> + <a href="<?= get_uri('/account/') . htmlspecialchars($row['User'], ENT_QUOTES) ?>" title="<?= __('View account information for %s', htmlspecialchars($row['User'])) ?>"><?= htmlspecialchars($row['User']) ?></a> + </td> + <td<?php if ($due): ?> class="flagged"<?php endif; ?>><?= date("Y-m-d H:i", intval($row['RequestTS'])) ?></td> + <?php if ($row['Open'] && $show_headers): ?> + <td> + <?php if ($row['BaseID']): ?> + <?php if ($row['Type'] == 'deletion'): ?> + <a href="<?= get_pkgbase_uri($row['Name']) ?>delete/?via=<?= intval($row['ID']) ?>"><?= __('Accept') ?></a> + <br/ > + <?php elseif ($row['Type'] == 'merge'): ?> + <a href="<?= get_pkgbase_uri($row['Name']) ?>merge/?into=<?= urlencode($row['MergeInto']) ?>&via=<?= intval($row['ID']) ?>"><?= __('Accept') ?></a> + <br /> + <?php elseif ($row['Type'] == 'orphan' && $due): ?> + <form action="<?= get_pkgbase_uri($row['Name']) . 'disown/'; ?>" method="post"> + <input type="hidden" name="token" value="<?= htmlspecialchars($_COOKIE['AURSID']) ?>" /> + <input type="hidden" name="via" value="<?= intval($row['ID']) ?>" /> + <input type="submit" class="button text-button" name="do_Disown" value="<?= __('Accept') ?>" /> + </form> + <?php elseif ($row['Type'] == 'orphan' && !$due): ?> + <?= __('Locked') ?> (<?= $time_left_fmt ?>) + <br /> <?php endif; ?> <?php endif; ?> - </tr> - <?php endwhile; ?> + <a href="<?= get_pkgreq_route() . '/' . intval($row['ID']) ?>/close/"><?= __('Close') ?></a> + </td> + <?php elseif ($row['Open'] && !$show_headers): ?> + <td><?= __("Pending") ?></td> + <?php elseif ($row['Status'] == 1): ?> + <td><?= __("Closed") ?></td> + <?php elseif ($row['Status'] == 2): ?> + <td><?= __("Accepted") ?></td> + <?php elseif ($row['Status'] == 3): ?> + <td><?= __("Rejected") ?></td> + <?php else: ?> + <td><?= __("unknown") ?></td> + <?php endif; ?> + </tr> + <?php endwhile; ?> - </tbody> - </table> +</tbody> +</table> - <div class="pkglist-stats"> - <p> - <?= _n('%d package request found.', '%d package requests found.', $total) ?> - <?= __('Page %d of %d.', $current, $pages) ?> - </p> - <?php if (count($templ_pages) > 1): ?> - <p class="pkglist-nav"> - <?php foreach ($templ_pages as $pagenr => $pagestart): ?> - <?php if ($pagestart === false): ?> - <span class="page"><?= $pagenr ?></span> - <?php elseif ($pagestart + 1 == $first): ?> - <span class="page"><?= $pagenr ?></span> - <?php else: ?> - <a class="page" href="<?= get_uri('/requests/'); ?>?<?= mkurl('O=' . $pagestart) ?>"><?= $pagenr ?></a> - <?php endif; ?> - <?php endforeach; ?> - </p> - <?php endif; ?> - </div> +<?php if ($show_headers): ?> +<div class="pkglist-stats"> + <p> + <?= _n('%d package request found.', '%d package requests found.', $total) ?> + <?= __('Page %d of %d.', $current, $pages) ?> + </p> + <?php if (count($templ_pages) > 1): ?> + <p class="pkglist-nav"> + <?php foreach ($templ_pages as $pagenr => $pagestart): ?> + <?php if ($pagestart === false): ?> + <span class="page"><?= $pagenr ?></span> + <?php elseif ($pagestart + 1 == $first): ?> + <span class="page"><?= $pagenr ?></span> + <?php else: ?> + <a class="page" href="<?= get_uri('/requests/'); ?>?<?= mkurl('O=' . $pagestart) ?>"><?= $pagenr ?></a> + <?php endif; ?> + <?php endforeach; ?> + </p> + <?php endif; ?> </div> +<?php endif; ?> +<?php endif; ?> 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 @@ <a href="<?= get_pkg_uri($row["Name"]); ?>" title="<?= htmlspecialchars($row["Name"]) . ' ' . htmlspecialchars($row["Version"]); ?>"><?= htmlspecialchars($row["Name"]) . ' ' . htmlspecialchars($row["Version"]); ?></a> </td> <td class="pkg-date"> - <span><?= gmdate("Y-m-d H:i", intval($row["ModifiedTS"])); ?></span> + <span><?= date("Y-m-d H:i", intval($row["ModifiedTS"])); ?></span> </td> </tr> <?php endforeach; ?> 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) { <?php endif; ?> </strong> <br /> - <?= __("Submitted: %s by %s", gmdate("Y-m-d H:i", $row['Submitted']), html_format_username(username_from_id($row['SubmitterID']))) ?> + <?= __("Submitted: %s by %s", date("Y-m-d H:i", $row['Submitted']), html_format_username(username_from_id($row['SubmitterID']))) ?> <br /> <?= __("End") ?>: - <strong><?= gmdate("Y-m-d H:i", $row['End']) ?></strong> + <strong><?= date("Y-m-d H:i", $row['End']) ?></strong> <?php if ($isrunning == 0): ?> <br /> <?= __("Result") ?>: 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 @@ <td><?php $row["Agenda"] = htmlspecialchars(substr($row["Agenda"], 0, $prev_Len)); ?> <a href="<?= get_uri('/tu/'); ?>?id=<?= $row['ID'] ?>"><?= $row["Agenda"] ?></a> </td> - <td><?= gmdate("Y-m-d", $row["Submitted"]) ?></td> - <td><?= gmdate("Y-m-d", $row["End"]) ?></td> + <td><?= date("Y-m-d", $row["Submitted"]) ?></td> + <td><?= date("Y-m-d", $row["End"]) ?></td> <td> <?php if (!empty($row['User'])): ?> <a href="<?= get_uri('/packages/'); ?>?K=<?= $row['User'] ?>&SeB=m"><?= $row['User'] ?></a> |