GithubConnect by justb3a

ProcessWire module to connect a Github OAuth application.

WARNING: This repository is no longer maintained

This repository will not be updated. The repository will be kept available in read-only mode.

ProcessWire GithubConnect

ProcessWire module to connect a Github OAuth application.

Generate Access Token


Register a new OAuth application

You have to create an OAuth application to get appId and appSecret. Those keys are required.
Go to Github and add a new OAuth application.
Therefore you've to fill in a redirect uri, copy it from module settings. Congrats! Now you can copy your unique Client ID and Client Secret

Fill in module settings

Fill in the following fields:

  • organization
  • Github Client ID
  • Github Client Secret

Now save module settings.
Click the Authorize! link to generate code and access token.
Now the field Github Access Token should be filled.

Endpoints


Usage Example

$github = $modules->get('GithubConnect');
$github->setRepository('owner/repository');
$result = $github->getRepositoryInformations();

Set the Repository

You can set a repository initially. So you don't have to pass it every time.

$github->setRepository('owner/repository');

  • params
    • name of repository, scheme: :owner/:repo (string)

Get Repository Informations

Get informations about a repository.

$github->getRepositoryInformations($repo);

  • see Github Api (to get the complete documentation and an example response)
  • params
    • optional name of repository, scheme: :owner/:repo (string)

  • return array

Get the readme

Get informations about the README file.

$github->getReadme($repo);

  • see Github Api (to get the complete documentation and an example response)
  • params
    • optional name of repository, scheme: :owner/:repo (string)

  • return array

Get the content

Get base64 decoded content of a file.

$github->getContent($data);

  • params
    • result data for example from $github->getReadme($repo); (array)

  • return string

Get the readme content

Get base64 decoded content of a the README.

$github->getReadmeContent($repo);

  • params
    • optional name of repository, scheme: :owner/:repo (string)

  • return string

Get certain file

Get informations about a certain file.

$github->getFile($filename, $repo);

  • see Github Api (to get the complete documentation and an example response)
  • params
    • filename
    • optional name of repository, scheme: :owner/:repo (string)

  • return array

Get content of certain file

Get base64 decoded content of a certain file.

$github->getContentOfAFile($filename, $repo);

  • see Github Api (to get the complete documentation and an example response)
  • params
    • filename
    • optional name of repository, scheme: :owner/:repo (string)

  • return string

List repositories for the specified org

List all repositories for an specified organization.

$github->listRepositoriesByOrg($org);

  • see Github Api (to get the complete documentation and an example response)
  • params
    • optional name of an organization (defaults to entry from module settings)

  • return array

Get a Tree

Get a tree of a github repository by a sha.

A sha, or "hash", is an individual change to a file or a directory. Every time you save a file with git, it creates a unique ID (a.k.a. the "SHA" or "hash") that allows you to keep record of what changes were made when and by who. Instead of a sha you can also use the name of a branch.

$github->getTree($sha, $recursive, $repo);

  • see Github Api (to get the complete documentation and an example response)
  • params
    • optional sha defaults to branch master
    • optional recursive defaults to true
    • optional name of repository, scheme: :owner/:repo (string)

  • return array

Use predefined autofill functionality


Create two templates:

  • A to get the content of the readme
  • B to get the content of a file inside a repository

Create the following fields:

identTypeassign to templatedescription
fieldSelectOptionA + BField which should be filled with Github repositories.
fieldSubSelectOptionBField which should be filled with files of a Github repository.
fieldPlainTextA + BField which should store the selected Github repository.
fieldTeaserTextareaAField which should contain the imported description content (a.k.a. teaser).
fieldBodyTextareaA + BField which should contain the imported file content.

Add the fields to the appropriate template(s). Assign the created fields in module settings.

Example

Create the following fields:
  • repositories: Type Option
  • repository_tree: Type Option
  • repository: Type Text
  • description: Type Textarea
  • body: Type Textarea
Create two templates and assign the fields:
  • Template github-main, assign fields:
    • repositories
    • repository
    • description
    • body

  • Template github-sub, assign fields:
    • repositories
    • repositoryTree
    • repository
    • body

Fill in module settings
  • enable Backend Import Features
  • (1) choose field repositories
  • (2) choose field repository
  • (3) choose field description
  • (4) choose field body
  • (5) choose field repository_tree
Create a new page with template github-main
  • you'll get a list of all available Github repositories, choose one and click save
  • after the page has been reloaded, the following fields are filled:
    • repository: contains the chosen repository
    • description: contains the description of the repository
    • body: contains the content of the readme

  • as long as you're not choose a repository from the list again (field repositories), the content won't be changed or overwritten
Create a new page with template github-sub
  • you'll get a list of all available Github repositories, choose one and click save
  • after the page has been reloaded, the following fields are filled:
    • repository: contains the chosen repository
    • repository_tree: here you'll see a list of all files from the chosen repository

  • choose one of the files listed there and click save
  • after the page has been reloaded, the following fields are filled:
    • body: contains the content of the readme

  • as long as you're not choose a repository from the list again (field repositories) or another file (field repository_tree), the content won't be changed or overwritten

Install and use modules at your own risk. Always have a site and database backup before installing new modules.

Twitter updates

  • ProcessWire 3.0.187: This week we have some very useful new additions to both the core Repeater Fieldtype and the ProFields Repeater Matrix Fieldtype. This post covers all the details along with a couple of brief demonstration videos— More
    22 October 2021
  • ProcessWire 3.0.185 (dev) core updates, plus new Session Allow module— More
    17 September 2021
  • Three new ProcessWire Textformatter modules: Find/Replace, Markdown in Markup, and Emoji— More
    3 September 2021

Latest news

  • ProcessWire Weekly #389
    The 389th issue of ProcessWire Weekly we'll check out the latest core updates, introduce the Session Viewer module, and more. Read on!
    Weekly.pw / 23 October 2021
  • New Repeater and Repeater Matrix features
    This week we have some very useful new additions to both the core Repeater Fieldtype and the ProFields Repeater Matrix Fieldtype. This post covers all the details along with a couple of brief demonstration videos. 
    Blog / 22 October 2021
  • Subscribe to weekly ProcessWire news

“The end client and designer love the ease at which they can update the website. Training beyond how to log in wasn’t even necessary since ProcessWire’s default interface is straightforward.” —Jonathan Lahijani