diff --git a/README.md b/README.md index f12a2ed..6614b18 100644 --- a/README.md +++ b/README.md @@ -44,7 +44,6 @@ 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 d993d55..9d39fe0 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 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\"." +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\"." #. Author of the plugin msgid "Tilman Kranz" diff --git a/lang/linuxfoo-gitlab.pot b/lang/linuxfoo-gitlab.pot index 53ef2a9..810ea64 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 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\"." +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 "" #. Author of the plugin diff --git a/linuxfoo-gitlab.php b/linuxfoo-gitlab.php index 0e87b76..85b603c 100644 --- a/linuxfoo-gitlab.php +++ b/linuxfoo-gitlab.php @@ -3,39 +3,31 @@ /* 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 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". +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". 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]; @@ -56,35 +48,43 @@ class LinuxfooGitlab { } static function format_commit($atts, $commit) { + $out = ''; + preg_match('/^....-..-../', $commit->committed_date, $m); + $date = $m[0]; - $result = $m[0].' '; + $title = htmlspecialchars($commit->title, ENT_NOQUOTES|ENT_HTML5|ENT_SUBSTITUTE, 'UTF-8', FALSE); - if($atts['author']==null || $atts['author']!='none') - $result .= - __('by', 'linuxfoo-gitlab').' '.$commit->author_name; - - $result .= + $out .= + $date.' '. + __('by', 'linuxfoo-gitlab').' '.$commit->author_name. ': '. - ''.$commit->short_id.' '. - htmlspecialchars($commit->title, ENT_NOQUOTES|ENT_HTML5|ENT_SUBSTITUTE, 'UTF-8', FALSE); + ''.$commit->short_id.' '.$title; - return $result; + return $out; } static function format_commit_stats($atts, $commits_count, $branch) { - 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'])).':'; + $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; } - 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 .= ''; + $out .= ''; } } } @@ -158,7 +158,7 @@ class LinuxfooGitlab { return $out; } - static function releases_list($atts, $project_url) { + static function releases_list($atts, $project_url) { $out = ''; if(is_null($atts['releases']) || $atts['releases']=='none') { @@ -183,32 +183,32 @@ class LinuxfooGitlab { else { if(count($releases)==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').': '. - ''. - ''; + '

'. + '
    '; foreach($releases as $release) { $out .= - ''. + '
  • '. ''.$release->name.''. - ''; + '
  • '; } - $out .= '
    '; + $out .= '
'; } } } @@ -217,14 +217,14 @@ class LinuxfooGitlab { return $out; } - static function list_commits($atts, $content, $tag) { + static function list_commits($atts, $content, $tag) { return self::show_project($atts, $content, $tag); } - static function show_project($atts, $content, $tag) { - global $post; + static function show_project($atts, $content, $tag) { + global $post; - $out = ''; + $out = '
'; if( is_null($atts['url']) || @@ -255,14 +255,19 @@ class LinuxfooGitlab { $out .= self::error('Project information not readable.'); } else { - $out .= self::project_header($atts, $project); + $out .= + ''. + __('Gitlab project', 'linuxfoo-gitlab').' '. + ''.$project->name.''. + ''; + $out .= self::commits_list($atts, $project_url); $out .= self::releases_list($atts, $project_url); } } } - $out .= ''; + $out .= '
'; return $out; } diff --git a/styles.css b/styles.css index 1dec3c9..229f784 100644 --- a/styles.css +++ b/styles.css @@ -1,17 +1,13 @@ .linuxfoo_gitlab { - display: block; border: 1px dashed #8a8a8a; border-radius: .5em; padding: .25em .5em; } -.linuxfoo_gitlab .commits, .linuxfoo_gitlab .releases { - display: block; +.linuxfoo_gitlab .commits { margin: .25em 0 .25em 0; } -.linuxfoo_gitlab .commit, .linuxfoo_gitlab .release { - display: list-item; - list-style-type: square; - margin: 0 0 0 1em; +.linuxfoo_gitlab .releases { + margin: .25em 0 .25em 0; } .linuxfoo_gitlab .project_header { display: block;