forked from tk-sls.de/linuxfoo-gitlab
initial commit of v1.1
This commit is contained in:
commit
bdb1121857
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
lang/*.mo
|
52
lang/linuxfoo-gitlab-de_DE.po
Normal file
52
lang/linuxfoo-gitlab-de_DE.po
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
# Copyright (C) 2021 Tilman Kranz
|
||||||
|
# This file is distributed under the same license as the Gitlab REST API Shortcodes plugin.
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Gitlab REST API Shortcodes 1.1\n"
|
||||||
|
"Report-Msgid-Bugs-To: https://tk-sls.de/ref/linuxfoo-gitlab\n"
|
||||||
|
"Last-Translator: Tilman Kranz <t.kranz@tk-sls.de>\n"
|
||||||
|
"Language: de\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"POT-Creation-Date: 2021-11-27T03:05:12+01:00\n"
|
||||||
|
"PO-Revision-Date: 2021-11-27 00:00+0100\n"
|
||||||
|
"X-Generator: WP-CLI 2.5.0\n"
|
||||||
|
"X-Domain: linuxfoo-gitlab\n"
|
||||||
|
|
||||||
|
#. Plugin Name of the plugin
|
||||||
|
msgid "Gitlab REST API Shortcodes"
|
||||||
|
msgstr "Gitlab REST API Shortcodes"
|
||||||
|
|
||||||
|
#. Description of the plugin
|
||||||
|
msgid "<p>Summary: Embed list of most recent commits to a Gitlab project from a Gitlab instance's public REST API.</p><p>Example: Add [gitlab-list-commits url=https://tk-sls.de/gitlab project_id=42 since=\"3 month\" max=5] for a list of at most 5 commits to that project that were made since at most 3 months ago.</p><p>The attributes \"url\" and \"project_id\" are mandatory.</p><p>The attributes \"since\" and \"max\" are optional (beware, the default is an unlimited list of commits).</p><p>Other optional attributes:</p><ul><li>ref_name=STRING: List only commit from branch or reference name STRING.</li><li>default_branch: If set, list only commits from the project's default branch.</li></ul>"
|
||||||
|
msgstr "<p>Zusammenfassung: Lies Liste neuester Commits eines Projekts aus einem Projekt in einer Gitlab-Instanz via v4 REST API.</p><p>Beispiel: [gitlab-list-commits url=https://tk-sls.de/gitlab project_id=42 since=\"3 month\" max=5] Liste bis zu 5 Commits (Neueste zuerst) aus den letzten 3 Monaten.</p><p>Attribute \"url\" und \"project_id\" sind Pflichtangaben.</p><p>Attribute \"since\" und \"max\" sind optional (Achtung, Standardverhalten ist unlimitiertes Auflisten).</p><p>Weitere optionale Attribute:</p><ul><li>ref_name=STRING: Zeige nur Commits aus Branch oder Refname STRING.</li><li>default_branch: Falls gesetzt, zeige nur Commits aus dem Default-Branch des Projektes.</li></ul>"
|
||||||
|
|
||||||
|
#: linuxfoo-gitlab.php:36
|
||||||
|
msgid "Required parameter missing."
|
||||||
|
msgstr "Benötigter Parameter fehlt."
|
||||||
|
|
||||||
|
#: linuxfoo-gitlab.php:43
|
||||||
|
msgid "Project URL not reachable."
|
||||||
|
msgstr "Projekt-URL nicht erreichbar."
|
||||||
|
|
||||||
|
#: linuxfoo-gitlab.php:79
|
||||||
|
msgid "Commits URL not reachable."
|
||||||
|
msgstr "Commits-URL nicht erreichbar."
|
||||||
|
|
||||||
|
#: linuxfoo-gitlab.php:85
|
||||||
|
msgid "Commits information not readable."
|
||||||
|
msgstr "Commit-Information nicht verfügbar."
|
||||||
|
|
||||||
|
#: linuxfoo-gitlab.php:96
|
||||||
|
msgid "No commits"
|
||||||
|
msgstr "Keine Commits"
|
||||||
|
|
||||||
|
#: linuxfoo-gitlab.php:97
|
||||||
|
#: linuxfoo-gitlab.php:110
|
||||||
|
msgid "in branch"
|
||||||
|
msgstr "in Branch"
|
||||||
|
|
||||||
|
#: linuxfoo-gitlab.php:109
|
||||||
|
msgid "Last %d commits"
|
||||||
|
msgstr "Letzte %d Commits"
|
51
lang/linuxfoo-gitlab.pot
Normal file
51
lang/linuxfoo-gitlab.pot
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
# Copyright (C) 2021 Tilman Kranz
|
||||||
|
# This file is distributed under the same license as the Gitlab REST API Shortcodes plugin.
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Gitlab REST API Shortcodes 1.1\n"
|
||||||
|
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/linuxfoo-gitlab\n"
|
||||||
|
"Last-Translator: Tilman Kranz <t.kranz@tk-sls.de>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"POT-Creation-Date: 2021-11-27T03:05:12+01:00\n"
|
||||||
|
"PO-Revision-Date: 2021-11-27 00:00+0100\n"
|
||||||
|
"X-Generator: WP-CLI 2.5.0\n"
|
||||||
|
"X-Domain: linuxfoo-gitlab\n"
|
||||||
|
|
||||||
|
#. Plugin Name of the plugin
|
||||||
|
msgid "Gitlab REST API Shortcodes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. Description of the plugin
|
||||||
|
msgid "<p>Summary: Embed list of most recent commits to a Gitlab project from a Gitlab instance's public REST API.</p><p>Example: Add [gitlab-list-commits url=https://tk-sls.de/gitlab project_id=42 since=\"3 month\" max=5] for a list of at most 5 commits to that project that were made since at most 3 months ago.</p><p>The attributes \"url\" and \"project_id\" are mandatory.</p><p>The attributes \"since\" and \"max\" are optional (beware, the default is an unlimited list of commits).</p><p>Other optional attributes:</p><ul><li>ref_name=STRING: List only commit from branch or reference name STRING.</li><li>default_branch: If set, list only commits from the project's default branch.</li></ul>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: linuxfoo-gitlab.php:36
|
||||||
|
msgid "Required parameter missing."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: linuxfoo-gitlab.php:43
|
||||||
|
msgid "Project URL not reachable."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: linuxfoo-gitlab.php:79
|
||||||
|
msgid "Commits URL not reachable."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: linuxfoo-gitlab.php:85
|
||||||
|
msgid "Commits information not readable."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: linuxfoo-gitlab.php:96
|
||||||
|
msgid "No commits"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: linuxfoo-gitlab.php:97
|
||||||
|
#: linuxfoo-gitlab.php:110
|
||||||
|
msgid "in branch"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: linuxfoo-gitlab.php:109
|
||||||
|
msgid "Last %d commits"
|
||||||
|
msgstr ""
|
142
linuxfoo-gitlab.php
Normal file
142
linuxfoo-gitlab.php
Normal file
@ -0,0 +1,142 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
Plugin Name: Gitlab REST API Shortcodes
|
||||||
|
Plugin URI: http://tk-sls.de/ref/gitlab-list-commits
|
||||||
|
Description: <p>Summary: Embed list of most recent commits to a Gitlab project from a Gitlab instance's public REST API.</p><p>Example: Add [gitlab-list-commits url=https://tk-sls.de/gitlab project_id=42 since="3 month" max=5] for a list of at most 5 commits to that project that were made since at most 3 months ago.</p><p>The attributes "url" and "project_id" are mandatory.</p><p>The attributes "since" and "max" are optional (beware, the default is an unlimited list of commits).</p><p>Other optional attributes:</p><ul><li>ref_name=STRING: List only commit from branch or reference name STRING.</li><li>default_branch: If set, list only commits from the project's default branch.</li></ul>
|
||||||
|
Author: Tilman Kranz
|
||||||
|
Version: 1.1
|
||||||
|
Author URI: https://tk-sls.de
|
||||||
|
*/
|
||||||
|
|
||||||
|
class LinuxfooGitlab {
|
||||||
|
public function __construct() {
|
||||||
|
}
|
||||||
|
|
||||||
|
static function css() {
|
||||||
|
wp_enqueue_style('linuxfoo_gitlab_css', plugins_url('styles.css', __FILE__ ), '', '1.1' );
|
||||||
|
}
|
||||||
|
|
||||||
|
static function error ( $msg ) {
|
||||||
|
return
|
||||||
|
'<div class="linuxfoo_gitlab">'.
|
||||||
|
'<span class="error">'.
|
||||||
|
$msg.
|
||||||
|
'</span>'.
|
||||||
|
'</div>';
|
||||||
|
}
|
||||||
|
|
||||||
|
static function list_commits($atts, $content, $tag) {
|
||||||
|
global $post;
|
||||||
|
|
||||||
|
if(
|
||||||
|
is_null($atts['url']) ||
|
||||||
|
is_null($atts['project_id'])
|
||||||
|
) {
|
||||||
|
return self::error(__('Required parameter missing.', 'linuxfoo-gitlab'));
|
||||||
|
}
|
||||||
|
|
||||||
|
$project_url = $atts['url'].'/api/v4/projects/'.$atts['project_id'];
|
||||||
|
$project_json = file_get_contents($project_url);
|
||||||
|
|
||||||
|
if(is_null($project_json)) {
|
||||||
|
return self::error(__('Project URL not reachable.', 'linuxfoo-gitlab'));
|
||||||
|
}
|
||||||
|
|
||||||
|
$project = json_decode($project_json);
|
||||||
|
|
||||||
|
if(is_null($project)) {
|
||||||
|
return self::error('Project information not readable.');
|
||||||
|
}
|
||||||
|
|
||||||
|
$project_header =
|
||||||
|
'<span class="project_header">'.
|
||||||
|
'Gitlab project'.' <a href="'.$project->web_url.'">'.$project->name.'</a>'.
|
||||||
|
'</span>';
|
||||||
|
|
||||||
|
$commits_url = $project_url.'/repository/commits?';
|
||||||
|
|
||||||
|
if(!is_null($atts['since'])) {
|
||||||
|
$since = date(DATE_ISO8601, strtotime('-'.$atts['since']));
|
||||||
|
$commits_url .= '&since='.$since;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!is_null($atts['ref_name'])) {
|
||||||
|
$commits_url .= '&ref_name='.$atts['ref_name'];
|
||||||
|
$branch = $atts['ref_name'];
|
||||||
|
}
|
||||||
|
elseif(!is_null($atts['default_branch'])) {
|
||||||
|
$commits_url .= '&ref_name='.$project->default_branch;
|
||||||
|
$branch = $project->default_branch;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$branch = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
$commits_json = file_get_contents($commits_url);
|
||||||
|
|
||||||
|
if(is_null($project_json)) {
|
||||||
|
return self::error(__('Commits URL not reachable.', 'linuxfoo-gitlab'));
|
||||||
|
}
|
||||||
|
|
||||||
|
$commits = json_decode($commits_json);
|
||||||
|
|
||||||
|
if(is_null($project)) {
|
||||||
|
return self::error(__('Commits information not readable.', 'linuxfoo-gitlab'));
|
||||||
|
}
|
||||||
|
|
||||||
|
$commits_count = count($commits);
|
||||||
|
$commits_count = is_null($atts['max']) ? $commits_count : min($commits_count, $atts['max']);
|
||||||
|
|
||||||
|
if($commits_count==0) {
|
||||||
|
return
|
||||||
|
'<div class="linuxfoo_gitlab">'.
|
||||||
|
$project_header.
|
||||||
|
'<span class="stats">'.
|
||||||
|
__('No commits', 'linuxfoo-gitlab').
|
||||||
|
(is_null($branch) ? '' : ' '.__('in branch', 'linuxfoo-gitlab').' "'.$branch).'"'.
|
||||||
|
(is_null($atts['since']) ? '' : ' since '.$atts['since'].' ago').'.'.
|
||||||
|
'</span>'.
|
||||||
|
'</div>';
|
||||||
|
}
|
||||||
|
|
||||||
|
$commits = array_slice($commits, 0, $commits_count);
|
||||||
|
|
||||||
|
$out =
|
||||||
|
'<div class="linuxfoo_gitlab">'.
|
||||||
|
$project_header.
|
||||||
|
'<span class="stats">'.
|
||||||
|
sprintf(__('Last %d commits', 'linuxfoo-gitlab'), $commits_count).
|
||||||
|
(is_null($branch) ? '' : ' '.__('in branch', 'linuxfoo-gitlab').' "'.$branch).'"'.
|
||||||
|
(is_null($atts['since']) ? '' : ' since '.$atts['since'].' ago').':'.
|
||||||
|
'</span>'.
|
||||||
|
'<ul class="commits">';
|
||||||
|
|
||||||
|
foreach($commits as $commit) {
|
||||||
|
preg_match('/^....-..-../', $commit->committed_date, $m);
|
||||||
|
$date = $m[0];
|
||||||
|
|
||||||
|
$title = htmlspecialchars($commit->title, ENT_NOQUOTES|ENT_HTML5|ENT_SUBSTITUTE, 'UTF-8', FALSE);
|
||||||
|
|
||||||
|
$out .=
|
||||||
|
'<li>'.
|
||||||
|
$date.': <a href="'.$commit->web_url.'">'.$commit->short_id.'</a> '.$title.
|
||||||
|
'</li>';
|
||||||
|
}
|
||||||
|
|
||||||
|
$out .=
|
||||||
|
'</ul>'.
|
||||||
|
'</div>';
|
||||||
|
|
||||||
|
return $out;
|
||||||
|
}
|
||||||
|
|
||||||
|
static function load_textdomain() {
|
||||||
|
load_plugin_textdomain('linuxfoo-gitlab', false, dirname(plugin_basename(__FILE__)).'/lang');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
add_action('plugins_loaded', 'LinuxfooGitlab::load_textdomain');
|
||||||
|
add_action('wp_enqueue_scripts', 'LinuxfooGitlab::css' );
|
||||||
|
add_shortcode('gitlab-list-commits', 'LinuxfooGitlab::list_commits');
|
||||||
|
|
14
styles.css
Normal file
14
styles.css
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
.linuxfoo_gitlab {
|
||||||
|
border: 1px dashed #8a8a8a;
|
||||||
|
border-radius: .5em;
|
||||||
|
padding: .25em .5em;
|
||||||
|
}
|
||||||
|
.linuxfoo_gitlab .commits {
|
||||||
|
margin: .25em 0 .25em 0;
|
||||||
|
}
|
||||||
|
.linuxfoo_gitlab .project_header {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.linuxfoo_gitlab .stats {
|
||||||
|
font-size: smaller;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user