diff --git a/README.md b/README.md index 6614b18..f12a2ed 100644 --- a/README.md +++ b/README.md @@ -44,6 +44,7 @@ The following optional attributes modify the behavior of the list of commits: * `max=NUM`: Optional; `NUM`: Positive integer; list not more than `NUM` commits (example: `5`). * `ref_name=STRING`: Optional: list only commit from branch or reference name `STRING` (examples: `main`, `v1.1`). * `default_branch`: Optional; if set, list only commits from the project's default branch. +* `author="none"`: Optional; do not print names of authors in the commit list. ## Author and License diff --git a/lang/linuxfoo-gitlab-de_DE.po b/lang/linuxfoo-gitlab-de_DE.po index 9d39fe0..d993d55 100644 --- a/lang/linuxfoo-gitlab-de_DE.po +++ b/lang/linuxfoo-gitlab-de_DE.po @@ -22,8 +22,8 @@ msgid "http://tk-sls.de/ref/gitlab-list-commits" msgstr "http://tk-sls.de/ref/gitlab-list-commits" #. Description of the plugin -msgid "Summary: Embed list of most recent commits to a Gitlab project from a Gitlab instance's public REST API. Example: Add [gitlab-list-commits url=https://tk-sls.de/gitlab project_id=42 commits=\"all\" since=\"3 month\" max=5 releases=\"latest\"] for a list of at most 5 commits to that project that were made since at most 3 months ago, followed by alink to the latest release of the project (if any). To disable the list of commits, set commits=\"none\". To generate a list of all releases, set releases=\"all\". To disable the list of releases, omit the \"releases\" attribute or set releases=\"none\"." -msgstr "Zusammenfassung: Bette Liste der neuesten Commits eines Gitlab-Projektes ein, die mit Gitlabs REST API abgerufen wird. Beispiel: Füge folgenden Shortcode zu einem Artikel hinzu, um die letzten 5 Commits anzuzeigen, die nicht älter als 3 Monate sind: [gitlab-list-commits url=https://tk-sls.de/gitlab project_id=42 since=\"3 month\" max=5]. Um die Liste der Commits zu deaktivieren: commits=\"none\". Um eine Liste von Releases hinzuzufügen: releases=\"all\". Um nur die neueste Release anzuzeigen: releases=\"latest\"." +msgid "Summary: Embed list of most recent commits to a Gitlab project from a Gitlab instance's public REST API. Example: Add [gitlab-list-commits url=https://tk-sls.de/gitlab project_id=42 commits=\"all\" since=\"3 month\" max=5 releases=\"latest\"] for a list of at most 5 commits to that project that were made since at most 3 months ago, followed by alink to the latest release of the project (if any). To disable the list of commits, set commits=\"none\". To disable printing the author name of a commit, set author=\"none\". To generate a list of all releases, set releases=\"all\". To disable the list of releases, omit the \"releases\" attribute or set releases=\"none\"." +msgstr "Zusammenfassung: Bette Liste der neuesten Commits eines Gitlab-Projektes ein, die mit Gitlabs REST API abgerufen wird. Beispiel: Füge folgenden Shortcode zu einem Artikel hinzu, um die letzten 5 Commits anzuzeigen, die nicht älter als 3 Monate sind: [gitlab-list-commits url=https://tk-sls.de/gitlab project_id=42 since=\"3 month\" max=5]. Um die Liste der Commits zu deaktivieren: commits=\"none\". Um die Ausgabe der Autor-Namens pro Commit zu deaktivieren: author=\"none\". Um eine Liste von Releases hinzuzufügen: releases=\"all\". Um nur die neueste Release anzuzeigen: releases=\"latest\"." #. Author of the plugin msgid "Tilman Kranz" diff --git a/lang/linuxfoo-gitlab.pot b/lang/linuxfoo-gitlab.pot index 810ea64..53ef2a9 100644 --- a/lang/linuxfoo-gitlab.pot +++ b/lang/linuxfoo-gitlab.pot @@ -23,7 +23,7 @@ msgid "http://tk-sls.de/ref/gitlab-list-commits" msgstr "" #. Description of the plugin -msgid "Summary: Embed list of most recent commits to a Gitlab project from a Gitlab instance's public REST API. Example: Add [gitlab-list-commits url=https://tk-sls.de/gitlab project_id=42 commits=\"all\" since=\"3 month\" max=5 releases=\"latest\"] for a list of at most 5 commits to that project that were made since at most 3 months ago, followed by alink to the latest release of the project (if any). To disable the list of commits, set commits=\"none\". To generate a list of all releases, set releases=\"all\". To disable the list of releases, omit the \"releases\" attribute or set releases=\"none\"." +msgid "Summary: Embed list of most recent commits to a Gitlab project from a Gitlab instance's public REST API. Example: Add [gitlab-list-commits url=https://tk-sls.de/gitlab project_id=42 commits=\"all\" since=\"3 month\" max=5 releases=\"latest\"] for a list of at most 5 commits to that project that were made since at most 3 months ago, followed by alink to the latest release of the project (if any). To disable the list of commits, set commits=\"none\". To disable printing the author name of a commit, set author=\"none\". To generate a list of all releases, set releases=\"all\". To disable the list of releases, omit the \"releases\" attribute or set releases=\"none\"." msgstr "" #. Author of the plugin diff --git a/linuxfoo-gitlab.php b/linuxfoo-gitlab.php index 85b603c..0e87b76 100644 --- a/linuxfoo-gitlab.php +++ b/linuxfoo-gitlab.php @@ -3,31 +3,39 @@ /* Plugin Name: Gitlab REST API Shortcodes Plugin URI: http://tk-sls.de/ref/gitlab-list-commits -Description: Summary: Embed list of most recent commits to a Gitlab project from a Gitlab instance's public REST API. Example: Add [gitlab-list-commits url=https://tk-sls.de/gitlab project_id=42 commits="all" since="3 month" max=5 releases="latest"] for a list of at most 5 commits to that project that were made since at most 3 months ago, followed by alink to the latest release of the project (if any). To disable the list of commits, set commits="none". To generate a list of all releases, set releases="all". To disable the list of releases, omit the "releases" attribute or set releases="none". +Description: Summary: Embed list of most recent commits to a Gitlab project from a Gitlab instance's public REST API. Example: Add [gitlab-list-commits url=https://tk-sls.de/gitlab project_id=42 commits="all" since="3 month" max=5 releases="latest"] for a list of at most 5 commits to that project that were made since at most 3 months ago, followed by alink to the latest release of the project (if any). To disable the list of commits, set commits="none". To disable printing the author name of a commit, set author="none". To generate a list of all releases, set releases="all". To disable the list of releases, omit the "releases" attribute or set releases="none". Author: Tilman Kranz Version: 1.4 Author URI: https://tk-sls.de */ class LinuxfooGitlab { - public function __construct() { - } + public function __construct() { + } static function load_textdomain() { load_plugin_textdomain('linuxfoo-gitlab', false, dirname(plugin_basename(__FILE__)).'/lang'); } static function css() { - wp_enqueue_style('linuxfoo_gitlab_css', plugins_url('styles.css', __FILE__ ), '', '1.4' ); + wp_enqueue_style('linuxfoo_gitlab_css', plugins_url('styles.css', __FILE__ ), '', '1.4' ); } - static function error ( $msg ) { + static function error ( $msg ) { return ''. $msg. ''; } + static function project_header($atts, $project) { + return + ''. + __('Gitlab project', 'linuxfoo-gitlab').' '. + ''.$project->name.''. + ''; + } + static function format_since($since) { preg_match('/^([0-9]+)\s+(.*)$/', $since, $m); $num = $m[1]; @@ -48,43 +56,35 @@ class LinuxfooGitlab { } static function format_commit($atts, $commit) { - $out = ''; - preg_match('/^....-..-../', $commit->committed_date, $m); - $date = $m[0]; - $title = htmlspecialchars($commit->title, ENT_NOQUOTES|ENT_HTML5|ENT_SUBSTITUTE, 'UTF-8', FALSE); + $result = $m[0].' '; - $out .= - $date.' '. - __('by', 'linuxfoo-gitlab').' '.$commit->author_name. + if($atts['author']==null || $atts['author']!='none') + $result .= + __('by', 'linuxfoo-gitlab').' '.$commit->author_name; + + $result .= ': '. - ''.$commit->short_id.' '.$title; + ''.$commit->short_id.' '. + htmlspecialchars($commit->title, ENT_NOQUOTES|ENT_HTML5|ENT_SUBSTITUTE, 'UTF-8', FALSE); - return $out; + return $result; } static function format_commit_stats($atts, $commits_count, $branch) { - $out = ''; - - if($commits_count==0) { - $out .= - __('No commits', 'linuxfoo-gitlab'). - (is_null($branch) ? '' : ' '.__('in branch', 'linuxfoo-gitlab').' "'.$branch.'"'). - (is_null($atts['since']) ? '' : ' '.('since '.$atts['since'].' ago')).'.'; - } - else { - $out .= - /* translators: %d: maximum number of commits displayed */ - sprintf(__('Last %d commits', 'linuxfoo-gitlab'), $commits_count). - (is_null($branch) ? '' : ' '.__('in branch', 'linuxfoo-gitlab').' "'.$branch.'"'). - (is_null($atts['since']) ? '' : ' '.self::format_since($atts['since'])).':'; - } - - return $out; + return + ( + ($commits_count==0) + ? __('No commits', 'linuxfoo-gitlab') + /* translators: %d: maximum number of commits displayed */ + : sprintf(__('Last %d commits', 'linuxfoo-gitlab'), $commits_count) + ). + (is_null($branch) ? '' : ' '.__('in branch', 'linuxfoo-gitlab').' "'.$branch.'"'). + (is_null($atts['since']) ? '' : ' '.self::format_since($atts['since'])).':'; } - static function commits_list($atts, $project_url) { + static function commits_list($atts, $project_url) { $since = null; if($atts['commits']=='none') { @@ -144,13 +144,13 @@ class LinuxfooGitlab { ''; if($commits_count>0) { - $out .= '
'. + ''. __('This project has currently no releases.', 'linuxfoo-gitlab'). - '
'; + ''; } elseif($atts['releases']=='latest') { $out .= - ''. + ''. __('Latest release', 'linuxfoo-gitlab').': '. ''.$releases[0]->name.''. - '
'; + ''; } elseif($atts['releases']=='all') { $out .= - ''. + ''. __('Releases', 'linuxfoo-gitlab').': '. - '
'. - '