diff --git a/tutorials/docs-tutorial-0-big-picture-2022/Group.png b/tutorials/docs-tutorial-0-big-picture-2022/Group.png new file mode 100644 index 0000000..970139b Binary files /dev/null and b/tutorials/docs-tutorial-0-big-picture-2022/Group.png differ diff --git a/tutorials/docs-tutorial-0-big-picture-2022/SAP-GitHub.png b/tutorials/docs-tutorial-0-big-picture-2022/SAP-GitHub.png new file mode 100644 index 0000000..1c86295 Binary files /dev/null and b/tutorials/docs-tutorial-0-big-picture-2022/SAP-GitHub.png differ diff --git a/tutorials/docs-tutorial-0-big-picture-2022/Tutorial.png b/tutorials/docs-tutorial-0-big-picture-2022/Tutorial.png new file mode 100644 index 0000000..03af09f Binary files /dev/null and b/tutorials/docs-tutorial-0-big-picture-2022/Tutorial.png differ diff --git a/tutorials/docs-tutorial-0-big-picture-2022/TutorialGroup.png b/tutorials/docs-tutorial-0-big-picture-2022/TutorialGroup.png new file mode 100644 index 0000000..bdc62ec Binary files /dev/null and b/tutorials/docs-tutorial-0-big-picture-2022/TutorialGroup.png differ diff --git a/tutorials/docs-tutorial-0-big-picture-2022/TutorialNavigator.png b/tutorials/docs-tutorial-0-big-picture-2022/TutorialNavigator.png new file mode 100644 index 0000000..f7e130f Binary files /dev/null and b/tutorials/docs-tutorial-0-big-picture-2022/TutorialNavigator.png differ diff --git a/tutorials/docs-tutorial-0-big-picture-2022/docs-tutorial-0-big-picture-2022.md b/tutorials/docs-tutorial-0-big-picture-2022/docs-tutorial-0-big-picture-2022.md new file mode 100644 index 0000000..0504134 --- /dev/null +++ b/tutorials/docs-tutorial-0-big-picture-2022/docs-tutorial-0-big-picture-2022.md @@ -0,0 +1,191 @@ +--- +author_name: Riley Rainey +author_profile: https://github.com/rbrainey +parser: v2 +keywords: tutorial +primary_tag: tutorial>tutorial +tags: [ tutorial>beginner, tutorial>cloud, tutorial>tutorial ] +time: 30 +--- + +# The Big Picture on Tutorials + This is a high-level introduction to SAP Developer Tutorial system. It describes the system and outlines the tasks and processes that tutorial authors need to understand to create and maintain effective content. + +## Topics + - The purpose of our tutorials + - How tutorials are organized for our customer developers + - The high-level process for creating and publishing tutorials + - How to plan your tutorials + - **Your responsibilities when creating tutorials** + +## Introduction +> **IMPORTANT:** If you haven't already done so, visit our [SAP Build Work Zone Workspace](https://workzone.one.int.sap/site#workzone-home&/groups/A7NmsKmoG9vVaxizKhdQOk/overview_page/r9dX7mvdcXW5KMmWvG2NYl). + +>If you have any questions, write to . + +### What are Developer Tutorials? + +First and foremost, SAP Developer Tutorials are a logical extension to SAP's trial resources. Folks can sign up for these trials, but what should they do next? This Tutorial system delivers hands-on guidance to help folks get environments set up and then explore SAP frameworks and tools at their own pace. + +Each tutorial is organized into a relatively small chunk of learning -- it is packaged to be completed in no more than 30 minutes of a user's time. You'll see in a moment how these chunks can be connected together to achieve more complex goals too. + +As a potential tutorial author, here's some considerations to keep in mind: + + - **Tutorials do not replace documentation** - tutorials provide an important way to provide extensions to technical documentation, but should never be thought of as a replacement. If something you are demonstrating in a tutorial doesn't appear in SAP's core documentation, consider reporting it to the proper owners. + + - **Subject Matter** - think about what a developer might actually need to construct using your tool or service. Can you provide a simple working example that illustrates an anticipated use case? Can you demonstrate SAP best practices, SAP naming conventions, or other core SAP APIs or services along the way? Tutorials offer a way to demonstrate these in an integrated fashion that can help developers write better code. + + - **Not just "What", but "Why"** - All along the way, look for opportunities to explain context. What is being accomplished in a particular step? Why is that step essential to the larger task? Explaining these elements makes for a more engaging experience; consider: + + - What does a step do? + - What is happening in the background that might not be apparent to the developer? + - What are the ramifications of what they just did? + - Would they do this any differently productive environment? + - What did they accomplish at the completion of the tutorial? + +### SAP Tutorial Navigator + +Our tutorials made visible to the public in the [SAP Tutorial Navigator](https://developers.sap.com/tutorial-navigator.html). + +Roughly 1,400 tutorials are published today. Tutorials can be filtered by SAP product name, topic, general keywords and target experience level. Newly published or freshly updated content is featured at the top of the list. + +![Tutorial Navigator](TutorialNavigator.png) + +### Important Terms + +A **Tutorial** describes a logically complete task. Something that takes just a few minutes to complete (e.g., get trial account, enable a service). + +We'll explore it more deeply later, but Tutorials are authored in an SAP-specific extended form of [Markdown](https://www.markdownguide.org/getting-started/). Within a Tutorial's Markdown source file, the Tutorial you will break down the larger task into specific **Steps**. Steps will also be described in a later tutorial. + +![Tutorial](Tutorial.png) + +Individual Tutorials can be combined in a planned sequence. This is called a "**Group**". For example, a Group might be composed of Tutorials that result in creating a simple application from beginning to end. The number of Tutorials in a Group varies. It will depend on the work you are describing but, in practice, Groups are often composed of three to five tutorials. And it's typical to require an hour to complete a Group. + +[View Groups in the Tutorial Navigator](https://developers.sap.com/tutorial-navigator.html?tag=tutorial:type/group) + +![Tutorial Group](Group.png) + +As an example, the Tutorial you are reading now is the first in the Group titled, "[Create Developer Tutorials](https://developers-prod-aqua.wcms-prod.c.eu-de-2.cloud.sap/group.docs-tutorial.html)". The Tutorial system is flexible in that it allows folks to start at a Group, or dive directly into a specific Tutorial. Wherever applicable, the Tutorial system will add navigation hints at the top of page to make it easy traverse between Tutorials or to visit the parent Group, regardless of their entry point. + +Tutorials and Groups can be combined into a **Mission**. A Mission demonstrates more complete information for learning a skill. + +A Missions also can provide incentive to be completed. As the author, you can specify that the developer should receive a SAP Community Badge upon successful completion. These badges can be displayed by the user in their SAP Community profile to demonstrate their exposure to particular tools or topics. + +We also utilize Missions at face-to-face SAP events. For example, at SAP TechEd we often will have a reserved area called the SAP App Space (or "Developer Garage"). In this area, show attendees can sit down at pre-configured machines, execute Missions and, upon completion, receive "swag": t-shirts, mugs, and other prizes. + +[View Missions in the Tutorial Navigator](https://developers.sap.com/tutorial-navigator.html?tag=tutorial:type/mission) + +![Mission](mission-sample.png) + +### Planning + +As an author, you will find that planning is an important starting point for creating an effective collection of Tutorials. + +Look ahead a few months to what missions and tutorials you'll want for your topic. A six to twelve month window is a good starting point. Start with an outline of tasks that need to be described. Find a logical order for these and break those down into Tutorials. As you flesh out what each tutorial describes, you'll get a sense of the time required for each. + +You can break-up larger tutorials and still keep them logically connected using Groups. + +If the content might be useful at an event or if it merits Community recognition, consider making that a Mission rather than a Group. + +> ### Get Help in Planning +> - Work with a SAP Developer Advocate in your product area. The Advocate is extremely knowledgeable about SAP technologies and the other published tutorials, and will be responsible for approving all tutorials. It will probably save effort to find one and work with them from the outset. + +>For the most up-to-date list of Advocates, see [Developer Advocates](https://sap.sharepoint.com/sites/201750/SitePages/Developer-Advocates.aspx). If you cannot find an advocate for your area, contact [`Tom Jung`](https://people.wdf.sap.corp/profiles/I809764). He leads the Developer Advocates team. + +>- For ideas on how to construct missions, see the [SAP Business Technology Platform missions](https://developers.sap.com/topics/cloud-platform.html#tutorials). + +>- You can also download a [planning Excel](https://jam4.sapjam.com/groups/6Jr8GG1khjmOoSVZPK2GhG/documents/qS7lEZAJnlnbSnEWiVKQoM) template to help you organize your tutorials. Before authoring, you should outline the titles, descriptions, and times for all missions, groups, and tutorials. + +> ![Excel](excel.png) + +Once you have an outline of the tutorials you want to create, send it to your developer advocate and Riley Rainey. + + +### Tutorial Development + +In later Tutorials in this Group, we'll go through the details of Tutorials development and upkeep. But we can summarize it here. The primary tools you'll be working with are VS Code and GitHub. The general flow looks like this: + +- You'll plan the Tutorials, Groups, and Mission you want to create. +- You create Tutorials using VS Code operating in a non-public QA environment. You'll use VS Code's Markdown editing and preview capabilities to get a rapid look at your results. +- You can also do a very accurate preview in QA by committing your test code into the QA GitHub repository. This will automatically publish your Tutorial to a QA web site exactly as it would appear on the developers.sap.com. +- Once you are close to publishing the Tutorials, communicate information about the Groups and Missions to our team. Groups and Tutorials are defined using a supporting + system called IMS. +- Publish your Tutorials by submitting a GitHub Pull Request in the Production repo. We'll coordinate merging the Tutorials and adding the Missions and Groups with you. +- Voila. Published. +- Monitor the Production GitHub repository for incoming issues and comments. Respond in a timely manner. +- Periodically review your Tutorials. Update as needed to respond to any changes to your product or an underlying system. Record your reviews in our IMS system. +- Production updates are made via Production Pull Requests. +- When you need to retire a Tutorial, you can delete it from the Production system. This retirement should be coordinated with us, as we might need to also retire or modify any associated Groups or Missions. + +### Test, test, test + +> "The first draft reveals the art; revision reveals the artist.” + +>> — Michael Lee + +When creating tutorials: + +1. Check how they look on the QA preview web site. Inspect closely. + +2. Test them yourself, from beginning to end. + + Think about how someone outside of SAP (with trial account) could follow and complete the tasks, and could answer your validations/questions. + +3. Have QA test them. + +4. Have a developer/UA unfamiliar with your product test them. + + Though QA will generally test for accuracy, a developer/UA will test for usability. + +5. Finally, look them over when they are in production. + +### Your Responsibilities + +Authoring tutorials comes with important commitments. + + - **Keep your content up to date:** Periodically recheck that your tutorials to ensure they still work. Dependent system change and this sometimes requires adjusted instructions or updating a screen shot. + + - Tutorial operations are supported by an internal system called IMS. A key function of this system is to help ensure that content is reviewed regularly. When you review a Tutorial, you can record that in IMS. Where IMS finds that a Tutorial hasn't been reviewed in six months, the author be sent an automated reminder. + + - **Answer customer issues:** Each tutorial has a **Feedback** link that lets users open an [issue](https://github.com/SAPDocuments/Tutorials/issues). + + Please provide a first response within two business days. + + - **Alert us about ownership changes:** If you change roles and someone else is now responsible for the tutorials, alert us. If they are new to SAP Tutorials, we can help onboard them. + + You will also see that the identify of the Tutorial owner is recorded as metadata in the source file. When a change of ownership occurs, update the Tutorial source file. + +### Metadata Tagging +Tutorials support metadata tagging. Tags are essential to content search and analytics. Each tutorial has a primary tag. It can also have zero or more supplemental tags. + +SAP Tutorial tagging is closely aligned with SAP standards. That core SAP system is called [**Semaphore**](https://wiki.one.int.sap/wiki/pages/viewpage.action?pageId=4740712730). You can inspect available tags using the [IMS Tags Page](https://imsprod-approuter.cfapps.us30.hana.ondemand.com/ui/tags) to locate the tags relevant to your content. You can copy the coded tag from the `MD format` column for use in a Tutorial. We'll describe the details in a subsequent tutorial. + +>If you are unable to reach the **IMS Tags Page** please contact Riley Rainey. + +>**IMPORTANT:** Tags are maintained by a central group outside Developer Relations not connected to the tutorials. New tags can be added, but that may require interactions with the Semaphore and Community teams. + +- If a tag that you know exists does not appear in the IMS Tags Page, please request that we add it. The best way to see what tags are available is to go to the [Blogs - All Tags](https://blogs.sap.com/tags/) page and use the **Filter community tags** field to search for tags, + + + ![Tags](tags.png) + +- If you need to request the creation of a new tag, please create a ticket to the [Metadata group](https://dsrequest.int.sap/list/0/create?basketId=0&requestToExtend=). Set the **Request Area** to `Digital Governance` and the **Request Type** to `Tags / Metadata` If it is only for tutorials, mark the request for **Developers** (in the **Additional Info** area). If you also want it for the SAP Community, you can mark it for **Community**. + +### Sample Code + +There may be times when you don't want developers to start from scratch, but instead download a skeleton project or other executable. In such cases, Tutorials might not be the best approach. SAP's Open Source Program Office offers a streamlined process to publish code samples through GitHub. Although this isn't managed through our team, here's the basics: + +You can set this up on [SAP's GitHub account](https://github.com/SAP), but must go through SAP's [Sample Code Publication Process](https://wiki.one.int.sap/wiki/display/SimplSuite/Sample+Publishing+Code+Process+-+Summary+of+all+steps). + +![SAP on GitHub](SAP-GitHub.png) + +Budget about a week for the approval process. Pay special attention to ensure that your project only depends upon public SAP APIs. The process is essentially: + + - Project review and approvals (2-3 days) + - Move project to SAP-samples organization on GitHub (2-3 days) + +To get started, contact DL SAP Sample Code Admins. + +### Summary + +In this Tutorial, we've looked at the overall system, tools, and dependencies. In the next section, we'll dive into properly configuring your machine for Tutorial development. At that point, you'll be ready to really dive into your Tutorial creation journey. \ No newline at end of file diff --git a/tutorials/docs-tutorial-0-big-picture-2022/excel.png b/tutorials/docs-tutorial-0-big-picture-2022/excel.png new file mode 100644 index 0000000..568581a Binary files /dev/null and b/tutorials/docs-tutorial-0-big-picture-2022/excel.png differ diff --git a/tutorials/docs-tutorial-0-big-picture-2022/mission-sample.png b/tutorials/docs-tutorial-0-big-picture-2022/mission-sample.png new file mode 100644 index 0000000..c516128 Binary files /dev/null and b/tutorials/docs-tutorial-0-big-picture-2022/mission-sample.png differ diff --git a/tutorials/docs-tutorial-0-big-picture-2022/tags.png b/tutorials/docs-tutorial-0-big-picture-2022/tags.png new file mode 100644 index 0000000..f729a68 Binary files /dev/null and b/tutorials/docs-tutorial-0-big-picture-2022/tags.png differ diff --git a/tutorials/docs-tutorial-0-big-picture-2022/tutorial-clone-QA.png b/tutorials/docs-tutorial-0-big-picture-2022/tutorial-clone-QA.png new file mode 100644 index 0000000..8806609 Binary files /dev/null and b/tutorials/docs-tutorial-0-big-picture-2022/tutorial-clone-QA.png differ diff --git a/tutorials/docs-tutorial-0-big-picture-2022/tutorial-diagram-publishing.png b/tutorials/docs-tutorial-0-big-picture-2022/tutorial-diagram-publishing.png new file mode 100644 index 0000000..55e6475 Binary files /dev/null and b/tutorials/docs-tutorial-0-big-picture-2022/tutorial-diagram-publishing.png differ diff --git a/tutorials/docs-tutorial-0-big-picture-2022/tutorial-diagram-structure.png b/tutorials/docs-tutorial-0-big-picture-2022/tutorial-diagram-structure.png new file mode 100644 index 0000000..2fb3fb6 Binary files /dev/null and b/tutorials/docs-tutorial-0-big-picture-2022/tutorial-diagram-structure.png differ diff --git a/tutorials/docs-tutorial-1-getting-started-newv2/ChangeGithubProfile.png b/tutorials/docs-tutorial-1-getting-started-newv2/ChangeGithubProfile.png new file mode 100644 index 0000000..cf37034 Binary files /dev/null and b/tutorials/docs-tutorial-1-getting-started-newv2/ChangeGithubProfile.png differ diff --git a/tutorials/docs-tutorial-1-getting-started-newv2/Email.png b/tutorials/docs-tutorial-1-getting-started-newv2/Email.png new file mode 100644 index 0000000..002cb63 Binary files /dev/null and b/tutorials/docs-tutorial-1-getting-started-newv2/Email.png differ diff --git a/tutorials/docs-tutorial-1-getting-started-newv2/EnterQARepo.png b/tutorials/docs-tutorial-1-getting-started-newv2/EnterQARepo.png new file mode 100644 index 0000000..dccf897 Binary files /dev/null and b/tutorials/docs-tutorial-1-getting-started-newv2/EnterQARepo.png differ diff --git a/tutorials/docs-tutorial-1-getting-started-newv2/Fork.png b/tutorials/docs-tutorial-1-getting-started-newv2/Fork.png new file mode 100644 index 0000000..e18fb10 Binary files /dev/null and b/tutorials/docs-tutorial-1-getting-started-newv2/Fork.png differ diff --git a/tutorials/docs-tutorial-1-getting-started-newv2/ForkResult.png b/tutorials/docs-tutorial-1-getting-started-newv2/ForkResult.png new file mode 100644 index 0000000..0d089a7 Binary files /dev/null and b/tutorials/docs-tutorial-1-getting-started-newv2/ForkResult.png differ diff --git a/tutorials/docs-tutorial-1-getting-started-newv2/LocalRepository.png b/tutorials/docs-tutorial-1-getting-started-newv2/LocalRepository.png new file mode 100644 index 0000000..f8f990b Binary files /dev/null and b/tutorials/docs-tutorial-1-getting-started-newv2/LocalRepository.png differ diff --git a/tutorials/docs-tutorial-1-getting-started-newv2/NotificationAccept.png b/tutorials/docs-tutorial-1-getting-started-newv2/NotificationAccept.png new file mode 100644 index 0000000..acc1df2 Binary files /dev/null and b/tutorials/docs-tutorial-1-getting-started-newv2/NotificationAccept.png differ diff --git a/tutorials/docs-tutorial-1-getting-started-newv2/NotificationIcon.png b/tutorials/docs-tutorial-1-getting-started-newv2/NotificationIcon.png new file mode 100644 index 0000000..91f557c Binary files /dev/null and b/tutorials/docs-tutorial-1-getting-started-newv2/NotificationIcon.png differ diff --git a/tutorials/docs-tutorial-1-getting-started-newv2/OpenGithubProfile.png b/tutorials/docs-tutorial-1-getting-started-newv2/OpenGithubProfile.png new file mode 100644 index 0000000..d742d12 Binary files /dev/null and b/tutorials/docs-tutorial-1-getting-started-newv2/OpenGithubProfile.png differ diff --git a/tutorials/docs-tutorial-1-getting-started-newv2/PrimaryEmails.png b/tutorials/docs-tutorial-1-getting-started-newv2/PrimaryEmails.png new file mode 100644 index 0000000..44cf529 Binary files /dev/null and b/tutorials/docs-tutorial-1-getting-started-newv2/PrimaryEmails.png differ diff --git a/tutorials/docs-tutorial-1-getting-started-newv2/VSCodeAddFolders.png b/tutorials/docs-tutorial-1-getting-started-newv2/VSCodeAddFolders.png new file mode 100644 index 0000000..fe5c79f Binary files /dev/null and b/tutorials/docs-tutorial-1-getting-started-newv2/VSCodeAddFolders.png differ diff --git a/tutorials/docs-tutorial-1-getting-started-newv2/VSCodeEmpty.png b/tutorials/docs-tutorial-1-getting-started-newv2/VSCodeEmpty.png new file mode 100644 index 0000000..af22f25 Binary files /dev/null and b/tutorials/docs-tutorial-1-getting-started-newv2/VSCodeEmpty.png differ diff --git a/tutorials/docs-tutorial-1-getting-started-newv2/VSCodeExtensions.png b/tutorials/docs-tutorial-1-getting-started-newv2/VSCodeExtensions.png new file mode 100644 index 0000000..4316b97 Binary files /dev/null and b/tutorials/docs-tutorial-1-getting-started-newv2/VSCodeExtensions.png differ diff --git a/tutorials/docs-tutorial-1-getting-started-newv2/VSCodeRepos.png b/tutorials/docs-tutorial-1-getting-started-newv2/VSCodeRepos.png new file mode 100644 index 0000000..b92590e Binary files /dev/null and b/tutorials/docs-tutorial-1-getting-started-newv2/VSCodeRepos.png differ diff --git a/tutorials/docs-tutorial-1-getting-started-newv2/docs-tutorial-1-getting-started-newv2.md b/tutorials/docs-tutorial-1-getting-started-newv2/docs-tutorial-1-getting-started-newv2.md new file mode 100644 index 0000000..c0dca2b --- /dev/null +++ b/tutorials/docs-tutorial-1-getting-started-newv2/docs-tutorial-1-getting-started-newv2.md @@ -0,0 +1,268 @@ +--- +author_name: Thomas jung +author_profile: https://github.com/jung-thomas +keywords: tutorial +parser: v2 +primary_tag: type>tutorial +tags: [ tutorial>beginner, topic>cloud, tutorial>license, type>tutorial ] +time: 30 +--- + +# Configure your machine for Tutorial Authoring + Set up your environment to write tutorials, including installing all the necessary tools. + +## You will learn + - How to plan for writing tutorials + - How to install the necessary tools + - How to clone the requisite GitHub repositories + +## Prerequisites + - Writing developer tutorials requires a few simple tools, such as for running scripts to help you create and test your tutorials, as well as updating the tutorial GitHub repository with your files. To write tutorials, you will need to be familiar with the following: + - **Markdown**: Markdown is an easy-to-use markup language, similar to wiki markup, for building a structured documents. It is worth 20 minutes to get familiar with Markdown. + - If you are unfamiliar with Markdown, check out this [this reference](http://commonmark.org/help/) and this [10-minute tutorial](http://commonmark.org/help/tutorial/). + - On GitHub, however, we use `GitHub Flavored Markdown`, which has [differences to traditional Markdown](https://help.github.com/articles/github-flavored-markdown/) like table, code block syntax highlighting, and URL auto linking. + - If you're already familiar with Markdown but need to refresh your memory, check out the [Markdown Cheat Sheet](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet). + *Our [style guide](https://github.com/sap-tutorials/Tutorials-Contribution/blob/master/templates/styleguide.md) provides guidance on the Markdown formatting you'll need for tutorials.* + - **GitHub**: GitHub is a widely used source control system, and you will use it to check in and check out your files. You will be able to interact with git primarily + through VS Code, but it still will be useful for you to understand at these git operations: + - fork + - clone + - pull + - commit + - push + - pull request (this is an operation specific to GitHub) + - merge + - [Understanding the `Github flow`](https://guides.github.com/introduction/flow/) + - [GitHub Hello World](https://guides.github.com/activities/hello-world/) + - [GitHub Overview & Training Webcasts](https://www.youtube.com/playlist?list=PLg7s6cbtAD15Das5LK9mXt_g59DLWxKUe) + *You won't have to do complex stuff with Git -- and our plugin provides menu options so you can bypass it for the most part. Still, you should be familiar with how Git works -- you will need sometimes to work directly with Git.* + - **SAP Open Source Program Office Standards**: the SAP Developer Tutorials system operates within SAP's OSPO Framework. You will need to register your GitHub account with the [OSPO sap-tutorials organization](https://wiki.one.int.sap/wiki/spaces/ospodocs/pages/2228907903/Self-Service+for+Joining+an+SAP+GitHub+Organization) before authoring Tutorials. + - You will need these user accounts an permissions: + - A personal [GitHub](https://github.com/) account + - Permission to the [Tutorial-Contributions](https://github.com/sap-tutorials/Tutorials-Contribution) repository in the [sap-tutorials](https://github.com/sap-tutorials) GitHub account. You can get access to the sap-tutorials organization via the [Open Source Portal](https://portal.opensource.tools.sap/). + *This should have been taken care of when following the instructions in the [Developer Tutorial Authors](https://teams.microsoft.com/l/channel/19%3A6EbgThwH454hgKLLg5CAnFG4gc9M3PCxv0Ko2zRHD8U1%40thread.tacv2/Developer%20Tutorial%20Authors?groupId=189541d0-ea24-4064-8fba-ee848177c342&tenantId=42f7676c-f455-423c-82f6-dc2d99791af7&ngc=true&allowXTenantAccess=true) Microsoft Teams channel.* + - Registration as a Content Author in the Tutorials Admin UI. You can visit the [Tutorials Admin UI](https://developers.sap.com/admin-ui/) to determine whether you currently have access. If access is prohibited, request access via the [Developer Tutorial Authors](https://teams.microsoft.com/l/channel/19%3A6EbgThwH454hgKLLg5CAnFG4gc9M3PCxv0Ko2zRHD8U1%40thread.tacv2/Developer%20Tutorial%20Authors?groupId=189541d0-ea24-4064-8fba-ee848177c342&tenantId=42f7676c-f455-423c-82f6-dc2d99791af7&ngc=true&allowXTenantAccess=true) Microsoft Teams channel. + +If you have deeper questions, contact [`Thomas Jung`](https://people.wdf.sap.corp/profiles/I809764). + +>If you are given permission manually, you will receive an email to join the sap-tutorials organization. + +>![Invitation](Email.png) + +>If you lose the email, you can always go to your notifications on GitHub by clicking ... + +>![Notification icon](NotificationIcon.png) + +>... in the upper right and accept the invitation there. + +>![NotificationAccept](NotificationAccept.png) + +>Alternatively, you can go to the [sap-tutorials](https://github.com/sap-tutorials) organization on GitHub and accept the invitation there. + +## Introductions +The goal of this tutorial is to configure your machine with all the tool needed to create and maintain tutorial content. + +### Install Required Software +Install the following tools on your workstation: + +| Tool | Description | Install Notes | +| :-------------------------------------------------- |---------------------|---------------| +| [Visual Studio Code](https://code.visualstudio.com/) (Stable Build for PC or Mac) | Visual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications. Subsequent set up and tutorial management steps will use examples from Visual Studio Code; however, any markdown editor can be used to author and revise tutorials.| Run installer with defaults. | +| [Git for Windows](http://gitforwindows.org/) or [Git for Mac](https://gist.github.com/derhuerst/1b15ff4652a867391f03#file-mac-md) | Git lets you interact with our GitHub repositories.
 
**NOTE: This is different from GitHub Desktop.**
| This step is optional. VS Code will provide access to git and GitHub. Run installer with defaults. | + +### Identify the Tutorials Repositories used by your team + +The tutorial system operates using two tiers of + GitHub repositories; one for QA and one for Production. We'll start by cloning the appropriate QA repository. For historical reasons, QA repos will always have "-Contribution" suffix. There are many QA repositories, many used by specific SAP product teams (see the table below). Most teams operate from the "Tutorials-Contribution" QA repo -- consult other members of your team if you are unsure which is appropriate. + +| Tutorial team | QA GitHub URL | +|-----------------------------------------------------------:|--------------------------------------| +| abap-core-development | https://github.com/sap-tutorials/abap-core-development-Contribution +| btp-adai | https://github.com/sap-tutorials/btp-adai-Contribution +| btp-dev-guidance | https://github.com/sap-tutorials/btp-dev-guidance-Contribution +| btp-foundation | https://github.com/sap-tutorials/btp-foundation-Contribution +| devtoberfest-2022 | https://github.com/sap-tutorials/devtoberfest-2022-Contribution +| btp-foundation | https://github.com/sap-tutorials/sap-btp-sdk-android-Contribution +| sap-btp-sdk-ios | https://github.com/sap-tutorials/sap-btp-sdk-ios-Contribution +| sap-build-apps | https://github.com/sap-tutorials/sap-build-apps-Contribution +| sap-build-process-automation | https://github.com/sap-tutorials/sap-build-process-automation-Contribution +| sap-mobile-development-kit | https://github.com/sap-tutorials/sap-mobile-development-kit-Contribution +| xpa-tutorials | https://github.com/sap-tutorials/xpa-tutorials-Contribution | +| **everyone else** | https://github.com/sap-tutorials/Tutorials-Contribution | + + +The companion Production repository will have a URL with the "-Contribution" suffix removed. + +Make a note of URLs, as we'll reference them in the next steps. + +### Configure VS Code + +1. You may now switch to [this tutorial-SAGE Getting Started](https://developers.sap.com/tutorials-qa/sage-getting-started) - we recently created a custom VS Code extension designed specifically to streamline Tutorial authoring. Pick up the steps in that Tutorial. You may safely skip the remaining steps below. + +### Manually Create a VS Code Workspace + +2. Create a "sap-tutorials" directory in your local home directory. We'll do all work there. + +3. Start VS Code + +4. Install the latest release of the [Sage Tutorial Content Authoring Extension](https://github.tools.sap/developer-relations/sage-tutorial-extension/releases). + +5. Install the ["Spellright" spelling extension](https://marketplace.visualstudio.com/items?itemName=ban.spellright) into VS Code by following [the instructions at the Microsoft VS Code web site](https://code.visualstudio.com/docs/editor/extension-marketplace) +6. Select "File > Open Folder..."; select the "sap-tutorials" directory in your home directory. + +7. Select "Save as Workspace..."; navigate to the "sap-tutorials" directory and name the new workspace something like "my-tutorials". Click "Save". + +On future VS Code sessions, you can restore your tutorials working environment quickly by selecting "File > Open Recent >" and the selecting this "my-tutorials" Workspace. + +>**IMPORTANT FOR MAC USERS:** + +> - Cache your GitHub credentials by following the instructions [here](https://help.github.com/articles/caching-your-github-password-in-git/#platform-mac). + + +### Update GitHub account +Go to [GitHub](https://github.com/), sign in, and open your profile settings. + +![Open GitHub profile](OpenGithubProfile.png) + +Make sure your name is listed properly, and add a picture. Your GitHub name, and your picture, will appear as the author when you publish tutorials. Also fill in your company. + +![GitHub profile settings](ChangeGithubProfile.png) + +Make sure to verify your email address and set it as your primary email address. This will be the email to identify your commits. + +![Set email address](PrimaryEmails.png) + +### Set up SSH + +To work smoothly with the plugin and to enable 2-factor authentication, it is best to set up the connection between your laptop and GitHub via SSH. + +> **IMPORTANT:** Do NOT use a passphrase when setting up SSH. + +1. Generate a new SSH key, as described in [Generating a new SSH key](https://help.github.com/en/enterprise/2.16/user/authenticating-to-github/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent). + + - Open a Bash window -- in the explorer, right-click and select **Git Bash Here**. + + - Run the following command after changing it to use your email address from GitHub: + + ```Bash + ssh-keygen -t rsa -b 4096 -C "your_email@example.com" + ``` + + Press **Enter** and leave blank both the directory and the passphrase. + + >2 files are generated in the `.ssh` directory of your user folder -- `id_rsa` and `id_rsa.pub`, private and public keys. For me, the proper/default directory was the `C:\Users\I031617.GLOBAL\.ssh` folder. + + >If you want to check the SSH keys you have, run the command: `ls -al ~/.ssh` + +2. Copy your public SSH key (i.e., `id_rsa.pub`) to your GitHub profile. + + On GitHub, go to **profile icon | Settings | SSH and GPG keys**, and then click **New SSH Key**. + + Enter any title and your public key. + +### Clone the QA Repository + +If you installed the Sage VS Code Extension, this step will have been completed for you during setup - you may skip this step here. + +1. In VS Code, select "View > Command Palette..." + +2. Select "Git:Clone". Enter the appropriate URL selected from the table above (see (1) below). Note that the "Tutorials-Contribution" repository is quite large, if that's the repo you are cloning, it will take several minutes to complete. + +![Cloning the QA repository](tutorial-clone-QA.png) + +### Fork the companion Production repository + +Using a browser, visit the **Production repository** URL appropriate for your team; for example, [`sap-tutorials/Tutorials`](https://github.com/sap-tutorials/Tutorials) repository. In all cases, the Production repository has no `-Contribution` suffix. + +Click "Fork". + +![Fork](Fork.png) + +Visit your account home page on GitHub, `https://github.com/`\ + +The Fork operation created a new repository in your account with the name corresponding to the Production repository. You can verify that by visiting the "Repositories" tab on your GitHub Home Page. In git terms, the original repository is the "origin" and your fork is a "downstream" repository. We only need to fork the Production repo, and we only do that to enable the use of "Pull Requests" and review of changes before they are published in Production. + +![Fork in your account](ForkResult.png) + +### Clone Production fork + +If you installed the Sage VS Code Extension, this step will have been completed for you during setup - you may skip this step here. + +Just as we cloned the `Tutorials-Contributions` repository, we'll clone the `Tutorials` repository. + +>**IMPORTANT:** While you cloned the official QA repository directly from the `sap-tutorials` account, you'll now clone the Production repository from the forked repository that you just created. + +In VS Code, select "View > Command Palette..." + +Select "Git:Clone". Enter the appropriate Production URL selected from the table above. Note that the "Tutorials" repository is quite large - if that's the repo you are cloning, it will take several minutes to complete. + +### Set author name/email in Git +The author listed for a tutorial is the name on the last commit by the author who first committed the tutorial. So you need to set up the name that should appear for your commits. + +Generally, setting these in the global settings is enough, but a bug in Atom sometimes requires them to be set in the individual repo you are working in. + +1. Open a command prompt ( **Win+X**, then press **A** ), then run the following command, replacing `FIRST_NAME` and `LAST_NAME` with your name, and specifying your email: + + ```Git + git config --global --replace-all user.name "FIRST_NAME LAST_NAME" + git config --global --replace-all user.email "myemail@sap.com" + ``` + + To see your current settings, you can run: + + ```GitHub + git config --list --global + ``` + +2. Open a command prompt, and change the directory to the directory with your QA repo (e.g., `%HOME%\sap-tutorials\Tutorials-Contribution`). + + Run the following commands (changing the text to your name and email): + + ```Git + git config user.name "FIRST_NAME LAST_NAME" + git config user.email "MY_NAME@example.com" + ``` + +3. Open a command prompt, and change the directory to the directory with your QA repo (e.g., `%HOME%\sap-tutorials\GitHub\Tutorials`). + + Run the same commands as above. + +>If ever you need to change the name that appears at the top of a tutorial, add the following metadata at the start of the Markdown file for that tutorial. + +``` +author_name: Riley Rainey +author_profile: https://github.com/rbrainey +``` + +### Sign the Contributor License Agreement for the appropriate Production repo + +SAP Tutorials operate within an open source framework established by the SAP Open Source Program Office and SAP's Legal team. +To merge pull requests to any production repository (e.g., `Tutorials`), you must sign the Contributor License Agreement (CLA). You can do this when you submit tur first pull request, or you can do it now. + +To sign the agreement, go to [https://cla-assistant.io/sap-tutorials/Tutorials](https://cla-assistant.io/sap-tutorials/Tutorials), and press **Sign in with GitHub to agree**. You may need to authorize the CLA assistant to use your GitHub account. + +>The CLA is signed for on behalf of your GitHub account, specifically for the primary email associated with your GitHub account. If you make commits that have a different email address associated with them, the CLA is not considered signed for those commits. + +### Added Remarks + +VS Code's Explorer View allows you to create new folders and files. Right click on the "tutorials" folder and select "Create Folder...". Enter the tutorial "slug" name you have selected. + +Within that new folder, create the Markdown file: Right-click the new folder and select "Create File...". Filename should be "\.md", where \ matched the name of the parent directory. This is important: there should be exactly one ".md" file in this folder and its basename must match the name of the parent folder. This becomes the source file for the tutorial. Any unique images that you embed in the tutorial should be placed in the folder, as well. + + - Review VS Code's Markdown editing capabilities - VS Code provides a [rich set of features to support Markdown editing](https://code.visualstudio.com/docs/languages/markdown). This includes [Markdown Preview Pane](https://code.visualstudio.com/docs/languages/markdown#_markdown-preview). This capability will allow you to view most, but not all of elements of your Tutorial code. + + - In addition to IDE preview, there's also a richer Tutorial preview capability available. We will describe that in just a moment. + + ### Plan your groups/missions +Before writing any tutorials, you need to do some planning with your stakeholders: + + - What high-level missions do you want to create over the next 6 to 12 months? + - How do you want to break down the content into missions, groups, and tutorials? + +Before starting to write, you should have the following information for each mission, group and tutorial: + + - Title + - Description + - Estimated time to complete + +You'd be surprised, but working just on the titles, descriptions, and time will help you author better tutorials. diff --git a/tutorials/docs-tutorial-1-getting-started-newv2/gitbash.png b/tutorials/docs-tutorial-1-getting-started-newv2/gitbash.png new file mode 100644 index 0000000..632b31c Binary files /dev/null and b/tutorials/docs-tutorial-1-getting-started-newv2/gitbash.png differ diff --git a/tutorials/docs-tutorial-1-getting-started-newv2/tutorial-clone-QA.png b/tutorials/docs-tutorial-1-getting-started-newv2/tutorial-clone-QA.png new file mode 100644 index 0000000..42d93ad Binary files /dev/null and b/tutorials/docs-tutorial-1-getting-started-newv2/tutorial-clone-QA.png differ diff --git a/tutorials/docs-tutorial-2-writing-tutorial-newv2/Accordions.png b/tutorials/docs-tutorial-2-writing-tutorial-newv2/Accordions.png new file mode 100644 index 0000000..e3450a2 Binary files /dev/null and b/tutorials/docs-tutorial-2-writing-tutorial-newv2/Accordions.png differ diff --git a/tutorials/docs-tutorial-2-writing-tutorial-newv2/Atom.png b/tutorials/docs-tutorial-2-writing-tutorial-newv2/Atom.png new file mode 100644 index 0000000..f24f5c7 Binary files /dev/null and b/tutorials/docs-tutorial-2-writing-tutorial-newv2/Atom.png differ diff --git a/tutorials/docs-tutorial-2-writing-tutorial-newv2/BasicMetadata.png b/tutorials/docs-tutorial-2-writing-tutorial-newv2/BasicMetadata.png new file mode 100644 index 0000000..16e57ed Binary files /dev/null and b/tutorials/docs-tutorial-2-writing-tutorial-newv2/BasicMetadata.png differ diff --git a/tutorials/docs-tutorial-2-writing-tutorial-newv2/CircleCI.png b/tutorials/docs-tutorial-2-writing-tutorial-newv2/CircleCI.png new file mode 100644 index 0000000..411e448 Binary files /dev/null and b/tutorials/docs-tutorial-2-writing-tutorial-newv2/CircleCI.png differ diff --git a/tutorials/docs-tutorial-2-writing-tutorial-newv2/CommitChanges.png b/tutorials/docs-tutorial-2-writing-tutorial-newv2/CommitChanges.png new file mode 100644 index 0000000..839d823 Binary files /dev/null and b/tutorials/docs-tutorial-2-writing-tutorial-newv2/CommitChanges.png differ diff --git a/tutorials/docs-tutorial-2-writing-tutorial-newv2/Commits.png b/tutorials/docs-tutorial-2-writing-tutorial-newv2/Commits.png new file mode 100644 index 0000000..86f8710 Binary files /dev/null and b/tutorials/docs-tutorial-2-writing-tutorial-newv2/Commits.png differ diff --git a/tutorials/docs-tutorial-2-writing-tutorial-newv2/ErrorMissing.png b/tutorials/docs-tutorial-2-writing-tutorial-newv2/ErrorMissing.png new file mode 100644 index 0000000..bc86a99 Binary files /dev/null and b/tutorials/docs-tutorial-2-writing-tutorial-newv2/ErrorMissing.png differ diff --git a/tutorials/docs-tutorial-2-writing-tutorial-newv2/ExtendedMetadata.png b/tutorials/docs-tutorial-2-writing-tutorial-newv2/ExtendedMetadata.png new file mode 100644 index 0000000..c6c6a9f Binary files /dev/null and b/tutorials/docs-tutorial-2-writing-tutorial-newv2/ExtendedMetadata.png differ diff --git a/tutorials/docs-tutorial-2-writing-tutorial-newv2/GDC-openprompt.png b/tutorials/docs-tutorial-2-writing-tutorial-newv2/GDC-openprompt.png new file mode 100644 index 0000000..d09d5f3 Binary files /dev/null and b/tutorials/docs-tutorial-2-writing-tutorial-newv2/GDC-openprompt.png differ diff --git a/tutorials/docs-tutorial-2-writing-tutorial-newv2/GDC-openprompt2.png b/tutorials/docs-tutorial-2-writing-tutorial-newv2/GDC-openprompt2.png new file mode 100644 index 0000000..b1f9bb2 Binary files /dev/null and b/tutorials/docs-tutorial-2-writing-tutorial-newv2/GDC-openprompt2.png differ diff --git a/tutorials/docs-tutorial-2-writing-tutorial-newv2/NewSAPTutorial.png b/tutorials/docs-tutorial-2-writing-tutorial-newv2/NewSAPTutorial.png new file mode 100644 index 0000000..0036630 Binary files /dev/null and b/tutorials/docs-tutorial-2-writing-tutorial-newv2/NewSAPTutorial.png differ diff --git a/tutorials/docs-tutorial-2-writing-tutorial-newv2/NewSAPTutorial2.png b/tutorials/docs-tutorial-2-writing-tutorial-newv2/NewSAPTutorial2.png new file mode 100644 index 0000000..9f39a16 Binary files /dev/null and b/tutorials/docs-tutorial-2-writing-tutorial-newv2/NewSAPTutorial2.png differ diff --git a/tutorials/docs-tutorial-2-writing-tutorial-newv2/NoModule.jpg b/tutorials/docs-tutorial-2-writing-tutorial-newv2/NoModule.jpg new file mode 100644 index 0000000..5808675 Binary files /dev/null and b/tutorials/docs-tutorial-2-writing-tutorial-newv2/NoModule.jpg differ diff --git a/tutorials/docs-tutorial-2-writing-tutorial-newv2/NodeNew.png b/tutorials/docs-tutorial-2-writing-tutorial-newv2/NodeNew.png new file mode 100644 index 0000000..00f6a3f Binary files /dev/null and b/tutorials/docs-tutorial-2-writing-tutorial-newv2/NodeNew.png differ diff --git a/tutorials/docs-tutorial-2-writing-tutorial-newv2/Preview.png b/tutorials/docs-tutorial-2-writing-tutorial-newv2/Preview.png new file mode 100644 index 0000000..91b9281 Binary files /dev/null and b/tutorials/docs-tutorial-2-writing-tutorial-newv2/Preview.png differ diff --git a/tutorials/docs-tutorial-2-writing-tutorial-newv2/Preview2.png b/tutorials/docs-tutorial-2-writing-tutorial-newv2/Preview2.png new file mode 100644 index 0000000..b747f02 Binary files /dev/null and b/tutorials/docs-tutorial-2-writing-tutorial-newv2/Preview2.png differ diff --git a/tutorials/docs-tutorial-2-writing-tutorial-newv2/ProjectFolder.png b/tutorials/docs-tutorial-2-writing-tutorial-newv2/ProjectFolder.png new file mode 100644 index 0000000..7534374 Binary files /dev/null and b/tutorials/docs-tutorial-2-writing-tutorial-newv2/ProjectFolder.png differ diff --git a/tutorials/docs-tutorial-2-writing-tutorial-newv2/PushOrigin.png b/tutorials/docs-tutorial-2-writing-tutorial-newv2/PushOrigin.png new file mode 100644 index 0000000..f37a3b3 Binary files /dev/null and b/tutorials/docs-tutorial-2-writing-tutorial-newv2/PushOrigin.png differ diff --git a/tutorials/docs-tutorial-2-writing-tutorial-newv2/PushToQA.png b/tutorials/docs-tutorial-2-writing-tutorial-newv2/PushToQA.png new file mode 100644 index 0000000..3e9db94 Binary files /dev/null and b/tutorials/docs-tutorial-2-writing-tutorial-newv2/PushToQA.png differ diff --git a/tutorials/docs-tutorial-2-writing-tutorial-newv2/PushToQAResult.png b/tutorials/docs-tutorial-2-writing-tutorial-newv2/PushToQAResult.png new file mode 100644 index 0000000..4fbb6ed Binary files /dev/null and b/tutorials/docs-tutorial-2-writing-tutorial-newv2/PushToQAResult.png differ diff --git a/tutorials/docs-tutorial-2-writing-tutorial-newv2/QADown.png b/tutorials/docs-tutorial-2-writing-tutorial-newv2/QADown.png new file mode 100644 index 0000000..0b2a423 Binary files /dev/null and b/tutorials/docs-tutorial-2-writing-tutorial-newv2/QADown.png differ diff --git a/tutorials/docs-tutorial-2-writing-tutorial-newv2/TitleDescription.png b/tutorials/docs-tutorial-2-writing-tutorial-newv2/TitleDescription.png new file mode 100644 index 0000000..8d36e30 Binary files /dev/null and b/tutorials/docs-tutorial-2-writing-tutorial-newv2/TitleDescription.png differ diff --git a/tutorials/docs-tutorial-2-writing-tutorial-newv2/TitleDescription2.png b/tutorials/docs-tutorial-2-writing-tutorial-newv2/TitleDescription2.png new file mode 100644 index 0000000..e5ea6b2 Binary files /dev/null and b/tutorials/docs-tutorial-2-writing-tutorial-newv2/TitleDescription2.png differ diff --git a/tutorials/docs-tutorial-2-writing-tutorial-newv2/Troubleshoot1.png b/tutorials/docs-tutorial-2-writing-tutorial-newv2/Troubleshoot1.png new file mode 100644 index 0000000..cec0109 Binary files /dev/null and b/tutorials/docs-tutorial-2-writing-tutorial-newv2/Troubleshoot1.png differ diff --git a/tutorials/docs-tutorial-2-writing-tutorial-newv2/ValidateError.png b/tutorials/docs-tutorial-2-writing-tutorial-newv2/ValidateError.png new file mode 100644 index 0000000..33f2559 Binary files /dev/null and b/tutorials/docs-tutorial-2-writing-tutorial-newv2/ValidateError.png differ diff --git a/tutorials/docs-tutorial-2-writing-tutorial-newv2/ValidateFail.png b/tutorials/docs-tutorial-2-writing-tutorial-newv2/ValidateFail.png new file mode 100644 index 0000000..6fb00b1 Binary files /dev/null and b/tutorials/docs-tutorial-2-writing-tutorial-newv2/ValidateFail.png differ diff --git a/tutorials/docs-tutorial-2-writing-tutorial-newv2/ValidateGood.png b/tutorials/docs-tutorial-2-writing-tutorial-newv2/ValidateGood.png new file mode 100644 index 0000000..1476a27 Binary files /dev/null and b/tutorials/docs-tutorial-2-writing-tutorial-newv2/ValidateGood.png differ diff --git a/tutorials/docs-tutorial-2-writing-tutorial-newv2/conflict-more-commits.png b/tutorials/docs-tutorial-2-writing-tutorial-newv2/conflict-more-commits.png new file mode 100644 index 0000000..c51a829 Binary files /dev/null and b/tutorials/docs-tutorial-2-writing-tutorial-newv2/conflict-more-commits.png differ diff --git a/tutorials/docs-tutorial-2-writing-tutorial-newv2/conflict.png b/tutorials/docs-tutorial-2-writing-tutorial-newv2/conflict.png new file mode 100644 index 0000000..8c4479f Binary files /dev/null and b/tutorials/docs-tutorial-2-writing-tutorial-newv2/conflict.png differ diff --git a/tutorials/docs-tutorial-2-writing-tutorial-newv2/conflictResolved.png b/tutorials/docs-tutorial-2-writing-tutorial-newv2/conflictResolved.png new file mode 100644 index 0000000..f3db4a8 Binary files /dev/null and b/tutorials/docs-tutorial-2-writing-tutorial-newv2/conflictResolved.png differ diff --git a/tutorials/docs-tutorial-2-writing-tutorial-newv2/docs-tutorial-2-writing-tutorial-newv2.md b/tutorials/docs-tutorial-2-writing-tutorial-newv2/docs-tutorial-2-writing-tutorial-newv2.md new file mode 100644 index 0000000..aac6010 --- /dev/null +++ b/tutorials/docs-tutorial-2-writing-tutorial-newv2/docs-tutorial-2-writing-tutorial-newv2.md @@ -0,0 +1,188 @@ +--- +author_name: Joshua Margo +author_profile: https://github.com/jmmargo +keywords: tutorial, authoring +primary_tag: type>tutorial +tags: [ tutorial>beginner, tutorial ] +time: 15 +parser: v2 +--- + +# Create a Tutorial + Create a tutorial from scratch, test it, and deploy it to the QA server. Production deployment will be described in a separate tutorial. + +## You will learn + - How to create a new tutorial + - Lightweight preview using VS Code + - How to test your tutorial + - How to commit your tutorial to QA for detailed review and testing + +## Prerequisites + - GitHub account in the SAP Tutorials organization and assignment of **author** role + - Markdown editor (VS Code or other) on your local machine + - Appropriate clone of production and QA repositories on your local machine + +## Intro + +You write your tutorial in Markdown language. To learn how to use Markdown formatting for tutorials, see our very brief [style guide](https://github.com/SAPDocuments/Tutorials-Contribution/blob/master/templates/styleguide.md) and please follow the guidelines. + +>To see our [style guide](https://github.com/SAPDocuments/Tutorials-Contribution/blob/master/templates/styleguide.md), you must be logged into GitHub and have permission to the QA repository. + +A few writing tips: + + - Speak directly to the developer (if needed, use "you" and not "we" or "I"). + - Be brief, but every step or so add an explanation of what the developer is accomplishing and why. + - Avoid future tense. + - Make sure all SAP names (of products and services) conform to branding guidelines. If you're not sure, check with the [Approved names](https://www.sapbrandtools.com/naming-center/#/search/status-search) and with your local User Assistance professional. + +--- + +### Create new tutorial from template +Most of the elements that you will use to author your tutorial can be found in [this tutorial](v2-example-tutorial). For this tutorial, the examples use VS Code as the markdown editor, but you can use any markdown editor to author and publish tutorials. + +To begin writing a new tutorial, navigate to the `tutorials` folder in the respective **Contribution** respository. From that folder, select `New Folder` from the context menu. + +![New tutorial folder](new-folder.png) + +Now that the tutorial file is created, right-click on the new folder and select `New File`. In the text box provided, enter the name of the markdown file by using the tutorial file name with the `.md` extension. + +Begin by creating the meta data section. It should look like this: + +```markdown +--- +author_name: Your Name +author_profile: https://github.com/yourGitHubname +keywords: tutorial +auto_validation: true +time: 10 +tags: [ tutorial>beginner, type>tutorial ] +primary_tag: type>tutorial +parser: v2 +--- +``` + +Here is some guidance: + +| Field | Description | Example | +|:---------------------------|:--------------------|:--------------------------| +| Tutorial File Name | Name of tutorial file (plus the extension `.md`), the folder containing the tutorial file, and (eventually) the URL path (plus the extension `.html`) to your tutorial on the QA and production systems.
 
Follow these rules for naming tutorials:
  • Up to 6 keywords in all lowercase connected by hyphens, from general to specific
  • No underscores
  • No buzz or stop words, as described in [`stopwords.md`](https://github.com/SAPDocuments/Tutorials-Contribution/blob/master/templates/stopwords.md)
  • Do not use `sap`.
  • Less than 50 characters
  • No umlauts (replace them with the character plus an e)
| `cp-webide-extensions-create` | +| Tutorial Title | Display title that says what users will build/do. Start with imperative verb, title case, not `ing`, 5-8 words | `Create an SAP Web IDE Extension` | +| Tutorial Description | Short description under title -- similar to title just expanded to about 20 words | Create an SAP Web IDE extension to implement your own functionality within the IDE. | +| Time | The time the average developer will need to complete the tutorial. | 20 | +| Level | Indicates how experienced the user needs to be with the technology. | Beginner | +| Primary Tag | Pick the best tag that represents the tutorial's main topic/product. This tag is used to categorize the tutorial in search and on product pages.
 
If you want to use a tag not in the wizard, let us know and we will add it
| products>sap-cloud-platform | +| Secondary Tags | Pick the primary tag again, plus additional tags that relate to the tutorial.
If the tutorial cannot be done on a trial system -- not recommended -- than add the `tutorial>license` tag.
| products>sap-cloud-platform | + + +When writing the title and description, make them short and to the point, and take note of how they will appear in the search results ... + +![Title and description](TitleDescription.png) + +... and at the top of each tutorial. + +![Title and description](TitleDescription2.png) + +When you are finished, a new tutorial is created and the Markdown file is opened for editing in a new tab. + +![New SAP Tutorial](NewSAPTutorial2.png) + +In the same folder, create a file called **`rules.vr`** to hold the data for creating questions for the user to answer to show they understood the material. See Step 4 for more information. + +>The title and description cannot contain colons ( **:** ). + +### Write your tutorial + + +>Include context and short explanations, so users learn as they do. Add a description at the start or end of a step explaining what they will do, or why they are doing it, and the result of what they did. + +Also: + +- Please review and follow the [style guide](https://github.com/SAPDocuments/Tutorials-Contribution/blob/master/templates/styleguide.md). This guide also describes the Markdown language syntax including SAP-specific extensions used in your tutorial. + + - The titles of steps are sentence case, 3-4 words, starting with an imperative verb (e.g., 'Create a file'). Make it terse. Where possible, remove "the" and "a". + + - To start any text block or image on a new line, add a blank line. + +- Add validation, as described in [Add Validation to a Tutorial](docs-tutorial-3-adding-validationv2). + +>In published tutorials, the author is the person who first committed the tutorial to GitHub. This is OK in most cases. But when the author leaves and a new author is now responsible, set the author by adding the following metadata at the top of the tutorial: + +> - **`author_name`**: The display name of the author (any text) +> - **`author_profile`**: A URL to the author's profile. By convention, this should be your GitHub username. + +>You must include both metadata tags if you want to manually set the author. + +### Preview your tutorial as a web page +VS Code provides a very useful Markdown preview capability. While this extension doesn't understand and render SAP-specific elements, it still is handy. A complete preview capability is available too, although it requires extra steps each time you want a new preview. It is described in Step 5. + +![Sample Preview](sample-vscode-preview.png) + +### Add validation + +The SAP Tutorial Markdown language is extended to add Validation steps. +A Validation is a question or other check. It requires user interaction. You can use Validation questions to check a user's knowledge and, maybe more importantly, emphasize key points of the tutorial. + +>By convention, every tutorial should have at least one Validation question. We encourage you to consider adding more. If a step lacks a Validation, the system will render a `[DONE]` button. This acts as a simple mechanism allowing progress tracking. + +1. Tutorial Validations are defined in a `rules.vr` file. The file must be placed tutorial's root folder (i.e., the same folder containing the tutorial's Markdown file) + +2. We'll look at a simple example here. For a more detailed review of the Validation extensions, see [Add Validation to a Tutorial](/tutorials/docs-tutorial-3-adding-validationv2.html). + + Here is a sample of validation text that will appear at the end of step three (or it can be step three if there is no other content). + + ``` + [VALIDATE_3] + ###Rule + single-choice + + ###Question + True or False - Pipes are required on the outside of table content. + + ###Match + [ ] True + [x] False + + [VALIDATE_3] + ``` + + > In this case, "VALIDATE_3" designates this Validation is to appear at the end of Step 3. Each Validation must start and end with matching [VALIDATE_#] lines. + +3. There's no specific limit to the number of Validations you define, however, you are limited to one per step. + +By convention, authors often close a tutorial by including an extra "**Test yourself**" step where they compose a validation question. + +### Push tutorial to QA + +1. At some point, you'll want to have a complete rendering of the tutorial's web page for review. To do that, first save all work. To activate the preview, you must ```commit``` and ```push``` your changes. These operations can be performed directly in VS Code via the **Source Control** tab (on the left side of the VS Code window). + + ![Push to QA](publish-to-QA.png) + +2. A ```commit``` operation always requires a comment. Enter a commit message that mentions briefly what change you made to which tutorial(s), for example, **New ABAP tutorial** or **Added validation to cp-workflow-create**. + +3. Select the drop-down arrow to access the `Commit & Push` command. This will package all your changes and drop them into your local GitHub clone of the QA repo. In turn, the ```push``` operation will send that packaged caommit to the main GitHub QA repo which resides in the ```sap-tutorials``` organization. It's the ```push``` of those changes that will trigger rendering of your preview web page. + + >Pushing will take a few seconds to complete. + +### Web Page Preview +Within a few minutes of pushing your tutorial, you can view your tutorial on the QA website. + +>The web page URL follows a simple pattern. The folder name along with the basename of the MD file identify a "slug". A slug unqiely identifies your tutorial. If your tutorial is called `foo`, then the QA URL will be: + +>`https://developers-prod-aqua.wcms-prod.c.eu-de-2.cloud.sap/tutorials/`**foo**`.html` + +>Review the tutorial web page. You can interact with Validation steps to ensure they function properly. + +>You can iterate as many times as needed. If you see changes are required, edit the source files, preview in VS Code, commit & push, and preview as a web page. + +### Test tutorial + +>__*The first draft of anything is shit.*__ +> +>         (allegedly) Ernest Hemingway + +Don't rush to publish your tutorial. Make sure the tutorial is tested by the following people: + + - You + - At least one other person (like QA or UA, or better both) who makes sure the tutorial: + - Actually works for someone using an external trial system. + - Is simple and easy to do and teaches well about the SAP technology. diff --git a/tutorials/docs-tutorial-2-writing-tutorial-newv2/new-folder.png b/tutorials/docs-tutorial-2-writing-tutorial-newv2/new-folder.png new file mode 100644 index 0000000..aad730a Binary files /dev/null and b/tutorials/docs-tutorial-2-writing-tutorial-newv2/new-folder.png differ diff --git a/tutorials/docs-tutorial-2-writing-tutorial-newv2/nodetest.png b/tutorials/docs-tutorial-2-writing-tutorial-newv2/nodetest.png new file mode 100644 index 0000000..19f745a Binary files /dev/null and b/tutorials/docs-tutorial-2-writing-tutorial-newv2/nodetest.png differ diff --git a/tutorials/docs-tutorial-2-writing-tutorial-newv2/publish-to-QA.png b/tutorials/docs-tutorial-2-writing-tutorial-newv2/publish-to-QA.png new file mode 100644 index 0000000..13a52f1 Binary files /dev/null and b/tutorials/docs-tutorial-2-writing-tutorial-newv2/publish-to-QA.png differ diff --git a/tutorials/docs-tutorial-2-writing-tutorial-newv2/sample-vscode-preview.png b/tutorials/docs-tutorial-2-writing-tutorial-newv2/sample-vscode-preview.png new file mode 100644 index 0000000..394cfb1 Binary files /dev/null and b/tutorials/docs-tutorial-2-writing-tutorial-newv2/sample-vscode-preview.png differ diff --git a/tutorials/docs-tutorial-2-writing-tutorial-newv2/validationSample.png b/tutorials/docs-tutorial-2-writing-tutorial-newv2/validationSample.png new file mode 100644 index 0000000..602de3f Binary files /dev/null and b/tutorials/docs-tutorial-2-writing-tutorial-newv2/validationSample.png differ diff --git a/tutorials/docs-tutorial-2a-updating-tutorialv2/ValidateError.png b/tutorials/docs-tutorial-2a-updating-tutorialv2/ValidateError.png new file mode 100644 index 0000000..33f2559 Binary files /dev/null and b/tutorials/docs-tutorial-2a-updating-tutorialv2/ValidateError.png differ diff --git a/tutorials/docs-tutorial-2a-updating-tutorialv2/ValidateFail.png b/tutorials/docs-tutorial-2a-updating-tutorialv2/ValidateFail.png new file mode 100644 index 0000000..6fb00b1 Binary files /dev/null and b/tutorials/docs-tutorial-2a-updating-tutorialv2/ValidateFail.png differ diff --git a/tutorials/docs-tutorial-2a-updating-tutorialv2/ValidateGood.png b/tutorials/docs-tutorial-2a-updating-tutorialv2/ValidateGood.png new file mode 100644 index 0000000..1476a27 Binary files /dev/null and b/tutorials/docs-tutorial-2a-updating-tutorialv2/ValidateGood.png differ diff --git a/tutorials/docs-tutorial-2a-updating-tutorialv2/docs-tutorial-2a-updating-tutorialv2.md b/tutorials/docs-tutorial-2a-updating-tutorialv2/docs-tutorial-2a-updating-tutorialv2.md new file mode 100644 index 0000000..affc463 --- /dev/null +++ b/tutorials/docs-tutorial-2a-updating-tutorialv2/docs-tutorial-2a-updating-tutorialv2.md @@ -0,0 +1,47 @@ +--- +author_name: Joshua Margo +author_profile: https://github.com/jmmargo +primary_tag: type>tutorial +tags: [ tutorial>beginner, type>tutorial ] +time: 5 +parser: v2 +--- + +# Update an Existing Tutorial (v2 parser) + Update a tutorial that was already published. This tutorial is for people who only need to update an existing tutorial. + +## You will learn + - How to update an existing tutorial + +## Prerequisites +To work with tutorials, even to just update them, you must learn Git and Markdown and understand how tutorials are written. Check out [The big picture](https://developers-qa.sap.com/tutorials/docs-tutorial-0-big-picture-2022.html) tutorial to get familiar with the needed technologies. + +## Intro + +### Set up your environment +Install the needed software, as described in the [Get ready to write tutorials](https://developers-qa.sap.com/tutorials/docs-tutorial-1-getting-started-newv2.html) + + +### Open the .md file and make changes +In your markdown editor, open the `tutorials` folder, then the folder for your tutorial, and then double-click the `.md` file. + +Make your changes. + +Remember to follow the [style guide](https://github.com/SAPDocuments/Tutorials-Contribution/blob/master/templates/styleguide.md). + + +### Add validation +If the tutorial does not yet have validation, you must add it. + +See the tutorial [Add validation to a tutorial](https://developers-prod-aqua.wcms-prod.c.eu-de-2.cloud.sap/tutorials/docs-tutorial-3-adding-validationv2.html). + + +### Move tutorial to QA +Follow Steps 5 and 6 in [Create a new tutorial](https://developers-prod-aqua.wcms-prod.c.eu-de-2.cloud.sap/tutorials/docs-tutorial-2-writing-tutorial-newv2.html) tutorial. + +After a few minutes your tutorial is published to the QA web site, so you can make sure it looks OK. The URL to the tutorial is in the format **`https://developers-prod-aqua.wcms-prod.c.eu-de-2.cloud.sap/tutorials/spa-sample-v2-parser-synatx.html`**. Just change `spa-sample-v2-parser-syntax` to the name of your tutorial. + + +### Publish the tutorial +Follow the instructions in the [Publish a Tutorial to Production](https://developers-prod-aqua.wcms-prod.c.eu-de-2.cloud.sap/tutorials/docs-tutorial-4-publishing-production-newv2.html). + diff --git a/tutorials/docs-tutorial-3-adding-validationv2/ExampleValidation.png b/tutorials/docs-tutorial-3-adding-validationv2/ExampleValidation.png new file mode 100644 index 0000000..21c0496 Binary files /dev/null and b/tutorials/docs-tutorial-3-adding-validationv2/ExampleValidation.png differ diff --git a/tutorials/docs-tutorial-3-adding-validationv2/ExampleValidationCongrats.png b/tutorials/docs-tutorial-3-adding-validationv2/ExampleValidationCongrats.png new file mode 100644 index 0000000..1c1c522 Binary files /dev/null and b/tutorials/docs-tutorial-3-adding-validationv2/ExampleValidationCongrats.png differ diff --git a/tutorials/docs-tutorial-3-adding-validationv2/StepDone.png b/tutorials/docs-tutorial-3-adding-validationv2/StepDone.png new file mode 100644 index 0000000..927f9dd Binary files /dev/null and b/tutorials/docs-tutorial-3-adding-validationv2/StepDone.png differ diff --git a/tutorials/docs-tutorial-3-adding-validationv2/Tag.png b/tutorials/docs-tutorial-3-adding-validationv2/Tag.png new file mode 100644 index 0000000..b3e8803 Binary files /dev/null and b/tutorials/docs-tutorial-3-adding-validationv2/Tag.png differ diff --git a/tutorials/docs-tutorial-3-adding-validationv2/docs-tutorial-3-adding-validationv2.md b/tutorials/docs-tutorial-3-adding-validationv2/docs-tutorial-3-adding-validationv2.md new file mode 100644 index 0000000..fdddace --- /dev/null +++ b/tutorials/docs-tutorial-3-adding-validationv2/docs-tutorial-3-adding-validationv2.md @@ -0,0 +1,357 @@ +--- +author_name: Joshua Margo +author_profile: https://github.com/jmmargo +keywords: tutorial +auto_validation: true +time: 10 +tags: [ tutorial>beginner, type>tutorial ] +primary_tag: type>tutorial +parser: v2 +--- + +# Add Validation to a Tutorial (v2 parser) + Add validation to your tutorial so developers can show that they've completed it successfully. + + +## You will learn + - How to create a rules files with validation steps + - How to add a validation step to the end of a tutorial step + - How to turn on validation for a tutorial + +## Intro +Validation allows developers to show that they finished a tutorial successfully, for example, by answering questions or copy-and-pasting the correct code into validation text areas. After passing the validation for all steps, the developer is listed as completing the tutorial. + +![Validation example](ExampleValidationCongrats.png) + +For examples of validation, see the tutorials in the missions in the [AppSpace](https://developers.sap.com/app-space.html). + +> To complete validation, the developer must be logged in. + +> **IMPORTANT:** Please use at least one fill-in-the-blank type question, and one multiple-answer question for each mission you create. + +The rules are created in a file called `rules.vr`, which you add to your tutorial folder (just like images). The file always is called `rules.vr`, so be careful that you don't confuse rules files for different tutorials. + +>**IMPORTANT**: Never commit the `rules.vr` file to the production repository. When checking a user's answer, the 1DX system references the `rules.vr` file in the QA repository. We have added the `rules.vr` file to the `.gitignore` file, Git will ignore it. + +Developers can check all the tutorials they've completed by going to the Developer Center [home page](https://developers.sap.com). + + +### Add validation tag + +Validation metadata should be added to the tutorial metadata, so when using a tutorial template, there is nothing to do here. If you are writing the tutorial from an empty markdown file, be sure to insert the value in the tutorial metadata. + +![Tag](Tag.png) + +This metadata indicates that you have added validation to your tutorial. If temporarily you need to publish your tutorial to QA without validation -- and without errors being thrown -- you can remove the tag ... temporarily. + +> **IMPORTANT:** The value should always be **`true`**. + +### Create the rules file + +Add a file called `rules.vr` to your tutorial folder (the new tutorial wizard will add one for you). The file is a set of rules, each one separated by a start and end `[VALIDATE_X]` tag (where X is an integer that represents the step number): + +``` +[VALIDATE_1] +###Rule +exact-match + +###Match +OrderButtonText=Order +OrderDialogTitle=Order Product +OrderDialogMsg=Do you want to order this product now? +OrderDialogSuccessMsg=The product has been ordered + +[VALIDATE_1] +``` + +Place the name of the rule element (e.g., `###Rule` and `###Match`) on its own line and the text that corresponds to that element on the following line. + +How to write each rule type is described in the `RULE` steps below. + +>**IMPORTANT**: The `rules.vr` file is never committed to the production repository. When validating a tutorial, the 1DX system references the `rules.vr` file in the QA repository. When moving your tutorial to production, make sure the `rules.vr` file is not included. + +### Add validation to tutorial steps + +To add a validation to a step, just indicate the step number before and after the validation text. In the example code block below the validation will be appended to step three. + +``` +[VALIDATE_3] +###Rule +single-choice + +###Question +True or False - Pipes are required on the outside of table content. + +###Match +[ ] True +[x] False + +[VALIDATE_3] +``` + +### Test tutorial +With your tutorial in the `tutorials` folder, commit your validation changes, and then check that the validation works as you expected. + +>Once you successfully validate a step, you cannot do the validation again (e.g., to check other input) unless you clear all of your progress. +>  +>To clear your progress, go to **[My Progress](https://www.sap.com/developer/progress.html)** and click **Forget Me**. at the bottom of the page. + +If something doesn't work properly, update your rules **AND** tutorial file (add an extra space to the Markdown file if you otherwise don't need to make changes), commit and push the changes, and retest. + + +### RULE Question, single answer +>**IMPORTANT:** Please make sure that at least one question per mission is NOT this type of question and is fill-in-the-blank type question. Currently, there is no way to avoid "cheating" and quickly discovering the correct answer. Use multiple-answer (even with only 1 correct answer). + + +**In this example, the user is asked to select the correct answer to a question.** + +The rule code: + +```RULE +[VALIDATE_1] +###Rule +single-choice + +###Question +Select the correct file which contains the routing instructions: + +###Match +[ ] Detail.view.xml +[ ] Component.js +[ ] formatter.js +[x] manifest.json + +[VALIDATE_1] +``` + +### RULE Question, multiple answer +**In this example, the user is asked to select the correct answers (more than one) to a question. You can set any number of correct answers.** + +The rule code: + +```RULE +[VALIDATE_2] +###Rule +multiple-choice + +###Question +Which of the following file(s) must be modified to insert an `i18n` string in an app view? + +###Match +[x] Detail.view.xml +[ ] Component.js +[x] i18n.properties +[ ] manifest.json + +[VALIDATE_2] +``` +### RULE Text matches + +**In this example, the user is asked to enter text that exactly matches the validation text. The validation is case sensitive.** + +>**IMPORTANT:** This validation ignores white spaces and casing. + + +The rule code: + +```RULE +[VALIDATE_3] +###Rule +exact-match + +###Question +Enter code. + +###Match +OrderButtonText=Order +OrderDialogTitle=Order Product +OrderDialogMsg=Do you want to order this product now? +OrderDialogSuccessMsg=The product has been ordered + +[VALIDATE_3] +``` + +In the text area below, enter the following text, and click **Submit Answer**. + +``` +OrderButtonText=Order +OrderDialogTitle=Order Product +OrderDialogMsg=Do you want to order this product now? +OrderDialogSuccessMsg=The product has been ordered +``` + +### RULE Text exactly matches + +**In this example, the user is asked to enter text that exactly matches the validation text. The validation is case sensitive.** + +>**IMPORTANT:** This validation requires the user to enter the text EXACTLY as it appears in the rules file. + + +The rule code: + +```RULE +[VALIDATE_4] +###Rule +exact-match-precise + +###Question +Enter code. + +###Match +OrderButtonText=Order +OrderDialogTitle=Order Product +OrderDialogMsg=Do you want to order this product now? +OrderDialogSuccessMsg=The product has been ordered + +[VALIDATE_4] +``` + +In the text area below, enter the following text, and click **Submit Answer**. + +``` +OrderButtonText=Order +OrderDialogTitle=Order Product +OrderDialogMsg=Do you want to order this product now? +OrderDialogSuccessMsg=The product has been ordered +``` + +### RULE Text starts with + +**In this example, the user is asked to enter text that begins with the validation text. The validation is case sensitive.** + +The rule code: + +```rules +[VALIDATE_5] +###Rule +regex-begins-with + +###Question +Enter code. + +###Match +document.GetElementById('test'); + +[VALIDATE_5] +``` + +In the text area below, enter text that begins `document.GetElementById('test');` and click **Submit Answer**. + +### RULE Text contains + +**In this example, the user is asked to enter text that exactly matches the validation text, but can include text before or after. The validation is case sensitive.** + +The rule code: + +``` +[VALIDATE_6] +###Rule +regex-substring + +###Question +Enter code. + +###Match +
+ + +
+``` + +### RULE Text exactly matches with ID + +**In this example, the user is asked to enter text that exactly matches the validation text, but with their ID instead of `[id]`. This validation is NOT case sensitive.** + +The rule code: + +```RULE +[VALIDATE_7] +###Rule +regex-with-id-exact-match + +###Question +Enter code. + +###Match +https://codejam[id]trial.hanatrial.ondemand.com/codejam/mylibrary.xsjs + +[VALIDATE_7] +``` + +In the validation box below, copy the following URL, but replace the '[id]' with your ID: `https://codejam[id]trial.hanatrial.ondemand.com/codejam/mylibrary.xsjs` + +You need to be logged in. + +### RULE HTTP status code + +**In this example, the user is asked to enter a URL that returns the status code specified in the rule (such as `200`).** + +The rule code: + +``` +[VALIDATE_8] +###Rule +http-status-check + +###Question +Enter URL. + +###Match +200 + +[VALIDATE_8] +``` + +Enter a valid URL, one that returns a status code of 200. + +### RULE Custom Regex + +**In this example, the user is asked to enter text that exactly matches a regular expression.** + +To construct the regular expression, you may wish to use online parsers, such as . + +>We use the Java implementation of regular expressions. See . + +The rule code: + +```RULE +[VALIDATE_9] +###Rule +regex + +###Question +Enter code. + +###Match +^https:\/\/account.hanatrial.ondemand.com\/cockpit\/.*\/\w\d+trial\/ + +[VALIDATE_9] +``` + +In the text area below, enter the following text, and click **Submit Answer**. + +``` +https://account.hanatrial.ondemand.com/cockpit/#/acc/i347491trial/accountdashboard +``` diff --git a/tutorials/docs-tutorial-3-adding-validationv2/rules.vr b/tutorials/docs-tutorial-3-adding-validationv2/rules.vr new file mode 100644 index 0000000..bd09d6c --- /dev/null +++ b/tutorials/docs-tutorial-3-adding-validationv2/rules.vr @@ -0,0 +1,143 @@ +[VALIDATE_5] +###Rule +single-choice + +###Question +Select the correct file which contains the routing instructions: + +###Match +[ ] Detail.view.xml +[ ] Component.js +[ ] formatter.js +[x] manifest.json + +[VALIDATE_5] + + + +[VALIDATE_6] +###Rule +multiple-choice + +###Question +Which of the following file(s) must be modified to insert an `i18n` string in an app view? + +###Match +[x] Detail.view.xml +[ ] Component.js +[x] i18n.properties +[ ] manifest.json + +[VALIDATE_6] + + + +[VALIDATE_7] +###Rule +exact-match + +###Question +Enter code. + +###Match +OrderButtonText=Order +OrderDialogTitle=Order Product +OrderDialogMsg=Do you want to order this product now? +OrderDialogSuccessMsg=The product has been ordered + +[VALIDATE_7] + + + +[VALIDATE_8] +###Rule +exact-match + +###Question +Enter code. + +###Match +OrderButtonText=Order +OrderDialogTitle=Order Product +OrderDialogMsg=Do you want to order this product now? +OrderDialogSuccessMsg=The product has been ordered + +[VALIDATE_8] + + + +[VALIDATE_9] +###Rule +regex-begins-with + +###Question +Enter code. + +###Match +document.GetElementById('test'); + +[VALIDATE_9] + + + +[VALIDATE_10] +###Rule +regex-substring + +###Question +Enter code. + +###Match +