Display link to github for remote themes

AI-generated summary

A discussion was started by danekhollas about adding a direct link to a theme’s Github repository on its page. The current links to “About theme” and the license are not helpful when a theme is forked and modified locally. danekhollas suggested adding a link below the “Check updates” button and including the branch name if the theme was imported from a specific branch.

zogstrip agreed with the idea and encouraged danekhollas to submit a pull request (PR) with before/after screenshots. danekhollas started working on the feature but encountered issues with Handlebars, including accessing the remote theme’s branch and creating a proper Github link for non-default branches.

sam pointed out that the feature should not be specific to Github, as other platforms like Bitbucket and Gitlab are also supported. danekhollas acknowledged this and changed the feature to be more general.

After some iterations, danekhollas submitted a draft PR with a “Source” link for remote themes, but it still had a minor issue with the link always going to the default branch. sam asked vinothkannans to review the PR and add a small JavaScript test. The feature was eventually merged into the commit 48d690ae01e6a65c2c5ac7995b7e0b8a741599c2.

Hi folks,

it would be nice if a remote theme page contained a direct link to the respective Github repo.
There is a link “About theme” which typically leads to a topic here on meta (where the link to github can be found) and the License link would typically link to the github repo. However, both of these are useless if you happen to fork a theme and make local modifications.

Maybe something like this could work?

Alternatively, the link could be below the Check updates button.

Also, now that we can import from specific branches, the branch itself should be displayed as well or at least the link to Github should go to that branch.

If this sounds reasonable, would you accept a PR?

8 Likes

Definitely would!

Be sure to include before/after screenshots as well :wink:

7 Likes

Hmm, I started working on this here, but am having two problems (I am Handlebars noob so they are probably trivial):

  1. In app/assets/javascripts/admin/templates/customize-themes-show.hbs, I would expect variable model.remote_theme.branch to work, but it doesn’t i.e it does not return the non-default branch that I imported.

  2. I will probably need a Handlebars helper to create a proper Github link for non-default branch, but I do not know where to put the code. I will need something like this:

Handlebars.registerHelper('getGithubUrl', function(baseUrl, branch) {
   if (! branch) { 
     return baseUrl;
   } else {
     // strip '.git' from the end, it is added there automatically in GitImporter
     var url = str.substring( 0, str.indexOf( ".git" ) );;
     return url + '/tree/' + branch;
   }
});

Sorry for noob questions, any pointers will be highly appreciated. :blush:

One quick note here, I am not too easy baking “GitHub” into our UIs here, we want to allow diversity here, if people want to use bitbucket or gitlab for themes it is A-OK.

5 Likes

Thank you! I wasn’t sure others are supported, will change it.

3 Likes

We should own this feature and not outsource it @sam

3 Likes

There is now a cool “Source” link for remote themes! :clap:

One minor improvement would be good though. The link always goes to the default branch, even if the theme was imported from a custom branch.

I clumsily tried to fix this, but couldn’t quite get there. I’ve submitted a draft PR if anyone was willing to help or pick this up. Thanks!

https://github.com/discourse/discourse/pull/9184

8 Likes

Nice fix, @vinothkannans can you review and a small js test maybe?

4 Likes

https://github.com/discourse/discourse/commit/48d690ae01e6a65c2c5ac7995b7e0b8a741599c2

It’s now merged in the commit above.

7 Likes