Giter VIP home page Giter VIP logo

tagmanager's Introduction

Tag Manager

Tags are great, they are literally the best way we have of indicating what a piece of content is, what it’s about and where it came from. We use tags to generate navigation on theguardian.com and provide pages and pages of links to interesting content. Tags can be mapped which allows them to magically show rich contextual information from external systems on relevant pages. Everyone loves tags.

The tag manager allows the tags to be ... er ... managed

Useful Links

Running

Before you run for the first time you will need to run ./scripts/setup.sh this will install and compile all the frontend dependencies needed for the app (you may need to install npm before you can run this successfully). If any frontend dependencies are changed you should re run the setup script.

N.B. If you encounter errors during setup when installing npm packages, use nvm or another node version manager to install and use the expected version of nodejs.

The Nginx setup uses the dev-nginx tool. After running this the tag manager will be available on https://tagmanager.local.dev-gutools.co.uk

To read the database and interact with the AWS infrastructure you will need AWS credentials that allow you access to the Composer account available to the default credentials provider chain. The easiest way to configure this is to obtain the credentials via janus and export the credentials to your shell using the handy script provided by janus.

Tag Manager also makes requests to CAPI preview. This means you will also need CAPI credentials from janus (with 'API Gateway invocation' permission).

If you are working on the commercial tag functionality and need to be able to upload logos you will also need AWS credentials for the frontend aws account available as an AWS profile named "frontend". This can also be obtained via janus.

If you want to integrate with Path Manager, e.g. to create tags, you'll need to create a tunnel from your local server (localhost 6000) to the Path Manager load balancer. This can be done using this command:

ssm ssh -x -t tag-manager,CODE -p composer --tunnel 6000:<internal-path-manager-url>:80

The internal path manager DNS name can be found in EC2 load balancers in AWS.

Run ./scripts/start.sh to start the full app.

Client Side Development

We use webpack to compile the assets for this project. You have the option to run ./scripts/setup.sh after each change, or alternatively you can choose to use one of the alternative startup scripts provided

  1. ./scripts/start.sh This starts a webpack watcher in addition to running the application - The watcher will compile unminified code when it detects a change to the javascript. Refresh the webpage to see the new code.
  2. ./scripts/client-dev.sh This scripts starts a webpack-dev-server alongside the application which provides Hot Reloading. Changes you make to code should be immediately visible in the browser

Developing

The backend code used the standard scala play layout.

The frontend components live in the public directory in root. Css is compiled from sass file in the style directory.

tagmanager's People

Contributors

steppenwells avatar itsibitzi avatar rhystmills avatar hmgibson23 avatar twrichards avatar jharewinton avatar aracho1 avatar thekarel avatar davidfurey avatar andrew-nowak avatar tomrf1 avatar reettaphant avatar jonathonherbert avatar simonbyford avatar jacobwinch avatar parisatork avatar akash1810 avatar sihil avatar ajwl avatar chrisfinch avatar tjsilver avatar mbarton avatar vlbee avatar dependabot[bot] avatar gtrufitt avatar paperboyo avatar philmcmahon avatar shession avatar waisingyiu avatar samanthagottlieb avatar

Stargazers

 avatar Space avatar Brendan avatar Dimitrij Pinneker avatar Luke Hoyland avatar batuhan avatar Tomas Nygren avatar Christopher Lloyd avatar David Beach avatar Kevin Hatfield avatar Corrine Lin avatar aIex quiterio avatar Talia Retelny avatar

Watchers

James Padolsey avatar Grant Klopper avatar Wizard Supreme of AI and Automation - Nayeem Syed avatar  avatar Aaron Pritzlaff avatar Mark Butler avatar theguardian.com continuous integration avatar aliraza avatar Luke Hoyland avatar James Cloos avatar Nathaniel Bennett avatar James Mockett avatar  avatar Ollie avatar George Haberis avatar Sam Morris avatar Gideon Goldberg avatar  avatar Richard Bangay avatar  avatar Zeek Ikomoni avatar Akemi Takagi avatar Mohammad Haque avatar  avatar Frank Sloan avatar Chris Jones avatar Jessica Leivers avatar Sakib Supple avatar Prout avatar Dominik Lander avatar Andrew Magee avatar Martin Kuzdowicz avatar Antonio Voce avatar  avatar Ben Sullivan avatar Marjan Kalanaki avatar Divya Bhatt avatar  avatar Ioanna Kokkini avatar Francesca Hammond avatar  avatar  avatar  avatar

tagmanager's Issues

CAPI Migration Plan

Remaining CAPI Items

  • Tag Reindexing
  • Confirming Tag Deletion is working
  • Sections
  • Section Reindexing
  • Feature Switch between old and new tag system

Remaining Tag Manager Items in: #52

Migration Steps

  • Migrate CODE tags from R2 into CODE tag manager
  • Trigger Tag Reindex in CODE
  • Compare R2 Tags from CODE with TagManager CODE tags in Elastic Search
  • Migrate CODE sections from R2 into CODE tag manager
  • Trigger Section Reindex in CODE
  • Compare R2 Sections from CODE with TagManager CODE sections in Elastic Search
  • Migrate PROD tags from R2 into CODE tag manager
  • Trigger Tag Reindex in PROD
  • Compare R2 Tags from PROD with TagManager PROD tags in Elastic Search
  • Migrate PROD sections from R2 into PROD tag manager
  • Trigger Section Reindex in PROD
  • Compare R2 Sections from PROD with TagManager PROD sections in Elastic Search
  • Enable feature switch to use new Tag records in CAPI.

Deal properly with Unicode characters in tags

Hello,

Related to https://github.com/guardian/flexible-content/issues/1654 (and many more all over the place).

Currently users have to know and then remember to use proper accents in External tag name but to manually remove them for Internal tag names. That’s lame and prone to errors, system should do it for them.

This results in mistakes like e.g. these two tags (CP notified) https://tagmanager.gutools.co.uk/tag/74717 & https://tagmanager.gutools.co.uk/tag/70102:

accents-tags
[note how slug is misspelled]

Searching also should be more clever (should return results when one searches for both spellings). Maybe ES asciifolding could be of help here?

Regards
Mateusz

Outstanding Features to Implement

Required to replace R2

Hide Categories

This will be enabled later, hide topic tag categories for the time being.

Inital Compression Byte missing for Porter

@oilnam [1:10 PM]
so we have a small issue

​[1:10]
we have a custom byte at the beginning of the thrift data that tells us if and what compression we’re using

​[1:12]
https://github.com/guardian/content-api/blob/master/porter/src/main/scala/com.gu.contentapi.porter/integration/ThriftDeserializer.scala#L30

​[1:13]
so for consistency it would be good if you could add the 0 bit at the beginning of the thrift data

​[1:13]
zero meaning “no compression"

Changes to the top bar and add favicon

@clloyd
Please

  1. Add favicon
  2. Add 'tag' icon on the top left. (this is a link back to tags home)
  3. Add highlight blue borer on the top of the navigation when it's selected.

Please see the image below.
The icon and favicon are attached in the email yesterday.

tagmanager-topbar-06

Front End Cleanup

Description/Scribe

  • Formatting not functional (was previously...??) Chrome DEV bug, fixed in canary

Date Picker

  • Should we be using that 3rd Party component? (#166)
  • Need to add icons, fix styling (currently copied and pasted styling) (#166)

Publication Tag https://tagmanager.code.dev-gutools.co.uk/tag/2

  • Publication information remove buttons are unstyled
  • Newspaper Book Sections only show id's should fetch name similar to parents (#161)
  • Newspaper Book Sections are unstyled, maybe a box similar to parents? (#187)

Tag Context

  • Add new parent relationship is unclear/ugly, could use improvement (#178)
  • Add new reference is Un-Styled

Image Uploader

  • Separating @steppenwells's upload module into a styled module (ideally with upload feedback etc)

Tag Audit

  • Add the ability to see a summary of the tags involved, these are stored with the audit record, ideally shouldn't be visible constantly, maybe clicking on a row shows more info? (#171)

Lists

  • List views have no hover / CTA indication - e.g. the tag list

No Grid Support

Now grid has png support there's no excuse for TagManager not using it.

There is already a Grid react component in Quiz Builder, so we should build upon that.

CAPI Draft

Abstract issue, all our operations work on CAPI live, preview isn't included... probably should be.

Tracking Tag

cc @na7hangood

This is a new tag type (Tracking) which has the following information:

  • type: "Tracking"
  • internalName: User Defined
  • externalName: User Defined
  • comparableValue: User Defined
  • slug: User Defined
  • trackingInformation:
    • trackingType: User Defined String from List e.g. "Commissioning desk">
  • section: None (Global)
  • path: tracking/{trackingType}/{slug}
  • pageId: Fetched from path manager

Update other build configuration

The master branch of this repository has been migrated to main using the master-to-main tool.

Please check any build related configuration and update as required:

  • TeamCity - See the required steps in the migrating.md document
  • Change snyk github integration(s) - it uses the default branch, but you will need to delete and reimport the project+file as this is the only way to refresh the default branch at present.
  • Any other externally configured analysis tooling your team is using e.g. travis CI

It's probably a good idea to merge test PR to main once this is complete, to make sure that everything is working as expected. 🙂

Add Features to Batch Tagger

Editorial would like some extra features in the batch tagger to aid productivity.

Find out what those features are and add them 💃

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.