diff --git a/.github/ISSUE_TEMPLATE/url-error.md b/.github/ISSUE_TEMPLATE/url-error.md new file mode 100644 index 00000000..fe131966 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/url-error.md @@ -0,0 +1,8 @@ +--- +title: Broken URLs found in the course! +labels: url-error +--- +URL's in this course were just checked and some broken URLs were found. + +**Number of errors:** {{ env.ERROR_NUM }} +**File where errors are:** [url checks file here]({{ env.FILE_URL }}) diff --git a/.github/workflows/check-url.yml b/.github/workflows/check-url.yml new file mode 100644 index 00000000..a4370498 --- /dev/null +++ b/.github/workflows/check-url.yml @@ -0,0 +1,107 @@ +name: Periodic URL Check + +on: + workflow_dispatch: + schedule: + - cron: '0 0 1 * *' + +jobs: + set-up: + name: Load user automation choices + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + # Use the yaml-env-action action. + - name: Load environment from YAML + uses: doughepi/yaml-env-action@v1.0.0 + with: + files: config_automation.yml # Pass a space-separated list of configuration files. Rightmost files take precedence. + outputs: + toggle_url_check_periodically: "${{ env.URL_CHECK_PERIODICALLY }}" + + url-check: + name: Check URLs + needs: set-up + if: ${{needs.set-up.outputs.toggle_url_check_periodically == 'yes'}} + runs-on: ubuntu-latest + container: + image: jhudsl/base_ottr:main + + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + # Delete the branch if this has been run before + - name: Delete branch locally and remotely + run: git push origin --delete preview-spell-error || echo "No branch to delete" + + # Make the branch fresh + - name: Make the branch fresh + run: | + git config --global --add safe.directory $GITHUB_WORKSPACE + git config --global user.name 'github-actions[bot]' + git config --global user.email 'github-actions[bot]@users.noreply.github.com' + + echo branch doesnt exist + git checkout -b preview-spell-error || echo branch exists + git push --set-upstream origin preview-spell-error || echo echo branch exists remotely + shell: bash + + - name: Run the check + uses: jhudsl/ottr-reports@main + id: check_results + continue-on-error: true + with: + check_type: urls + error_min: 1 + + - name: Declare file path and time + id: check-report + run: | + error_num=$(cat check_reports/url_checks.tsv | wc -l) + error_num="$((error_num-1))" + echo "error_num=$error_num" >> $GITHUB_OUTPUT + echo "error_url=https://github.com/${GITHUB_REPOSITORY}/blob/preview-spell-error/check_reports/url_checks.tsv" >> $GITHUB_OUTPUT + shell: bash + + - name: Stop if failure + if: steps.check_results.outcome == 'failure' + run: exit 1 + + - name: Print out error variables + run: | + echo ${{ steps.check-report.outputs.error_url }} + echo ${{ steps.check-report.outputs.error_num }} + + - name: Find issues + id: find-issue + env: + GH_PAT: ${{ secrets.GH_PAT }} + run: | + echo "$GITHUB_REPOSITORY" + curl -o find_issue.R https://raw.githubusercontent.com/jhudsl/ottr-reports/main/scripts/find_issue.R + issue_exists=$(Rscript --vanilla find_issue.R --repo $GITHUB_REPOSITORY --git_pat $GH_PAT) + echo URL issue exists: $issue_exists + echo "issue_existence=$issue_exists" >> $GITHUB_OUTPUT + + - name: If too many URL errors, then make an issue + if: ${{ steps.check-report.outputs.error_num >= 1 && steps.find-issue.outputs.issue_existence == 0}} + uses: JasonEtco/create-an-issue@v2 + with: + filename: .github/ISSUE_TEMPLATE/url-error.md + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + FILE_URL: ${{ steps.check-report.outputs.error_url }} + ERROR_NUM: ${{ steps.check-report.outputs.error_num }} + + - name: If no URL errors than delete the branch we made + if: ${{ steps.check-report.outputs.error_num < 1 }} + run: | + git config --system --add safe.directory "$GITHUB_WORKSPACE" + git push origin --delete preview-spell-error || echo "No branch to delete" diff --git a/.github/workflows/delete-preview.yml b/.github/workflows/delete-preview.yml index afd658af..faa83ccd 100644 --- a/.github/workflows/delete-preview.yml +++ b/.github/workflows/delete-preview.yml @@ -18,7 +18,7 @@ jobs: # Check out current repository - name: checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 0 diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 9316682a..5cd835ee 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -1,5 +1,5 @@ # Candace Savonen 2021 -# Updated Jan 2023 +# Updated May 2024 name: Pull Request @@ -14,9 +14,10 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 0 + token: ${{ secrets.GH_PAT }} # Use the yaml-env-action action. - name: Load environment from YAML @@ -32,16 +33,18 @@ jobs: - name: Make the branch fresh run: | git config --global --add safe.directory $GITHUB_WORKSPACE - git config --global user.email "itcrtrainingnetwork@gmail.com" - git config --global user.name "jhudsl-robot" + git config --global user.name 'github-actions[bot]' + git config --global user.email 'github-actions[bot]@users.noreply.github.com' branch_name='preview-${{ github.event.pull_request.number }}' echo branch doesnt exist git checkout -b $branch_name || echo branch exists - git push --set-upstream origin $branch_name + git push --set-upstream origin $branch_name || echo branch exists remotely shell: bash + outputs: + toggle_website: "${{ env.RENDER_WEBSITE }}" toggle_spell_check: "${{ env.SPELL_CHECK }}" toggle_style_code: "${{ env.STYLE_CODE }}" toggle_url_check: "${{ env.URL_CHECKER }}" @@ -59,6 +62,7 @@ jobs: check_type: spelling error_min: 3 gh_pat: secrets.GH_PAT + branch_name: ${GITHUB_HEAD_REF} url-check: name: Check URLs @@ -69,6 +73,7 @@ jobs: check_type: urls error_min: 0 gh_pat: secrets.GH_PAT + branch_name: ${GITHUB_HEAD_REF} quiz-check: name: Check quiz formatting @@ -79,6 +84,7 @@ jobs: check_type: quiz_format error_min: 0 gh_pat: secrets.GH_PAT + branch_name: ${GITHUB_HEAD_REF} ############################# Style the code ################################### style-code: @@ -91,18 +97,18 @@ jobs: steps: - name: Checkout files - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 0 - name: Run styler - run: Rscript -e "styler::style_file(list.files(pattern = 'Rmd$', recursive = TRUE, full.names = TRUE));warnings()" + run: Rscript -e "styler::style_file(list.files(pattern = '(R|q)md$', recursive = FALSE, full.names = TRUE));warnings()" - name: Commit styled files run: | git config --system --add safe.directory "$GITHUB_WORKSPACE" - git add \*.Rmd - git commit -m 'Style Rmds' || echo "No changes to commit" + git add \*md + git commit -m 'Style *mds' || echo "No changes to commit" git push origin || echo "No changes to commit" ############################# Render Preview ################################### @@ -117,7 +123,7 @@ jobs: steps: - name: Checkout files - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 0 @@ -125,8 +131,8 @@ jobs: - name: Set up git checkout run: | git config --global --add safe.directory $GITHUB_WORKSPACE - git config --global user.email "itcrtrainingnetwork@gmail.com" - git config --global user.name "jhudsl-robot" + git config --global user.name 'github-actions[bot]' + git config --global user.email 'github-actions[bot]@users.noreply.github.com' branch_name='preview-${{ github.event.pull_request.number }}' git fetch --all @@ -137,23 +143,35 @@ jobs: # Run bookdown rendering - name: Run bookdown render id: bookdown + if: ${{needs.yaml-check.outputs.toggle_website == 'rmd' }} run: Rscript -e "bookdown::render_book('index.Rmd', output_format = 'all')" - # Run TOC-less version - # Rendered content for Leanpub and Coursera is very similar. - # This job creates a shared scaffold for both. - - name: Run TOC-less version of render - id: tocless - run: Rscript -e "ottrpal::render_without_toc()" + # Run quarto rendering + - name: Render quarto version + id: quarto + if: ${{needs.yaml-check.outputs.toggle_website == 'quarto' }} + run: Rscript -e "quarto::quarto_render('.')" # This checks on the steps before it and makes sure that they completed. # If the renders didn't complete we don't want to commit the file changes - - name: Check on render steps - if: steps.bookdown.outcome != 'success' || steps.tocless.outcome != 'success' + - name: Check on Rmd render steps + if: ${{needs.yaml-check.outputs.toggle_website == 'rmd' }} run: | echo Bookdown status ${{steps.bookdown.outcome}} - echo Toc-less status ${{steps.tocless.outcome}} - exit 1 + if [${{steps.bookdown.outcome}} != 'success']; then + exit 1 + fi + + - name: Check on quarto render steps + if: ${{needs.yaml-check.outputs.toggle_website == 'quarto' }} + run: | + echo Quarto status ${{steps.quarto.outcome}} + if [${{steps.quarto.outcome}} != 'success']; then + exit 1 + fi + + - name: Website preview for download + run: zip website-preview.zip docs/* -r # Commit the rendered bookdown files - name: Commit rendered bookdown files to preview branch @@ -164,7 +182,7 @@ jobs: echo "changes=$changes" >> $GITHUB_OUTPUT git add . --force git commit -m 'Render preview' || echo "No changes to commit" - git pull --set-upstream origin $branch_name --allow-unrelated-histories --strategy-option=ours + git pull --rebase --set-upstream origin $branch_name --allow-unrelated-histories --strategy-option=ours git push --force || echo "No changes to commit" shell: bash @@ -181,10 +199,10 @@ jobs: run: | course_name=$(head -n 1 _bookdown.yml | cut -d'"' -f 2| tr " " "-") bookdown_link=$(echo "https://htmlpreview.github.io/?https://raw.githubusercontent.com/$GITHUB_REPOSITORY/preview-${{ github.event.pull_request.number }}/docs/index.html") - tocless_link=$(echo "https://htmlpreview.github.io/?https://raw.githubusercontent.com/$GITHUB_REPOSITORY/preview-${{ github.event.pull_request.number }}/docs/no_toc/index.html") docx_link=$(echo "https://github.com/$GITHUB_REPOSITORY/raw/preview-${{ github.event.pull_request.number }}/docs/$course_name.docx") + zip_link=$(echo "https://github.com/$GITHUB_REPOSITORY/raw/preview-${{ github.event.pull_request.number }}/website-preview.zip") + echo "zip_link=$zip_link" >> $GITHUB_OUTPUT echo "bookdown_link=$bookdown_link" >> $GITHUB_OUTPUT - echo "tocless_link=$tocless_link" >> $GITHUB_OUTPUT echo "docx_link=$docx_link" >> $GITHUB_OUTPUT echo "time=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT echo "commit_id=$GITHUB_SHA" >> $GITHUB_OUTPUT @@ -198,11 +216,13 @@ jobs: issue-number: ${{ github.event.pull_request.number }} body: | Re-rendered previews from the latest commit: - - See [preview of Bookdown here](${{ steps.build-components.outputs.bookdown_link }}) - - See [preview of Coursera/Leanpub version here](${{ steps.build-components.outputs.tocless_link }}) - - Download the [preview of .docx file](${{ steps.build-components.outputs.docx_link }}) + - :eyes: Quick [preview of course website here](${{ steps.build-components.outputs.bookdown_link }}) \* + - :microscope: Comprehensive [download of the course website here](${{ steps.build-components.outputs.zip_link }}) + - Download the [.docx file](${{ steps.build-components.outputs.docx_link }}) - _Updated at ${{ steps.build-components.outputs.time }} with changes from ${{ steps.build-components.outputs.commit_id }}_ + \* note not all html features will be properly displayed in the "quick preview" but it will give you a rough idea. + + _Updated at ${{ steps.build-components.outputs.time }} with changes from the latest commit ${{ steps.build-components.outputs.commit_id }}_ edit-mode: replace - name: Comment if no changes diff --git a/.github/workflows/render-all.yml b/.github/workflows/render-all.yml index 083817ac..b2e39b2c 100644 --- a/.github/workflows/render-all.yml +++ b/.github/workflows/render-all.yml @@ -1,5 +1,5 @@ - -# Candace Savonen Apr 2021 +# Candace Savonen 2021 +# Updated May 2024 name: Render all output courses @@ -8,8 +8,9 @@ on: push: branches: [ main, staging ] paths: - - '**.Rmd' + - '**md$' - assets/* + - quizzes/* jobs: @@ -18,7 +19,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 # Use the yaml-env-action action. - name: Load environment from YAML @@ -26,68 +27,85 @@ jobs: with: files: config_automation.yml # Pass a space-separated list of configuration files. Rightmost files take precedence. outputs: - toggle_bookdown: "${{ env.RENDER_BOOKDOWN }}" + toggle_website: "${{ env.RENDER_WEBSITE }}" toggle_coursera: "${{ env.RENDER_COURSERA }}" toggle_leanpub: "${{ env.RENDER_LEANPUB }}" make_book_txt: "${{ env.MAKE_BOOK_TXT }}" rendering_docker_image: "${{ env.RENDERING_DOCKER_IMAGE }}" toggle_quiz_check: "${{ env.CHECK_QUIZZES }}" - render-bookdown: - name: Render bookdown + render-course: + name: Render course preview needs: yaml-check runs-on: ubuntu-latest container: image: ${{needs.yaml-check.outputs.rendering_docker_image}} - if: ${{needs.yaml-check.outputs.toggle_bookdown == 'yes'}} steps: - name: checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 0 token: ${{ secrets.GH_PAT }} - - name: Login as jhudsl-robot + - name: Login as github actions bot run: | git config --global --add safe.directory $GITHUB_WORKSPACE - git config --global user.email "itcrtrainingnetwork@gmail.com" - git config --global user.name "jhudsl-robot" + git config --global user.name 'github-actions[bot]' + git config --global user.email 'github-actions[bot]@users.noreply.github.com' # We want a fresh run of the renders each time - name: Delete old docs/* - run: rm -rf docs/* + run: | + git remote set-url origin https://${GH_PAT}@github.com/${GITHUB_REPOSITORY} + git fetch origin + git pull --rebase --allow-unrelated-histories --strategy-option=ours - # Run bookdown rendering + # Run Rmd rendering - name: Run bookdown render id: bookdown + if: ${{needs.yaml-check.outputs.toggle_website == 'rmd' }} run: | + rm -rf docs/* Rscript -e "bookdown::render_book('index.Rmd', output_format = 'all'); file.copy(from = 'assets', to = 'docs/assets', overwrite = TRUE)" + - name: Render quarto version + id: quarto + if: ${{needs.yaml-check.outputs.toggle_website == 'quarto' }} + run: Rscript -e "quarto::quarto_render('.')" + # This checks on the steps before it and makes sure that they completed. # If the renders didn't complete we don't want to commit the file changes - - name: Check on render step - if: steps.bookdown.outcome != 'success' + - name: Check on Rmd render steps + if: ${{needs.yaml-check.outputs.toggle_website == 'rmd' }} run: | echo Bookdown status ${{steps.bookdown.outcome}} - exit 1 + if [${{steps.bookdown.outcome}} != 'success']; then + exit 1 + fi + + - name: Check on quarto render steps + if: ${{needs.yaml-check.outputs.toggle_website == 'quarto' }} + run: | + echo Quarto status ${{steps.quarto.outcome}} + if [${{steps.quarto.outcome}} != 'success']; then + exit 1 + fi - # Commit the rendered bookdown files - - name: Commit rendered bookdown files + # Commit the rendered course files + - name: Commit rendered course files env: GH_PAT: ${{ secrets.GH_PAT }} run: | - git remote set-url origin https://${GH_PAT}@github.com/${GITHUB_REPOSITORY} - git fetch origin git add --force docs/* - git commit -m 'Render bookdown' || echo "No changes to commit" - git pull --allow-unrelated-histories --strategy-option=ours + git commit -m 'Render course' || echo "No changes to commit" + git status docs/* git push -u origin main || echo "No changes to push" render-tocless: name: Render TOC-less version for Leanpub or Coursera - needs: [yaml-check] + needs: [yaml-check, render-course] runs-on: ubuntu-latest container: image: ${{needs.yaml-check.outputs.rendering_docker_image}} @@ -95,33 +113,42 @@ jobs: steps: - name: checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 0 token: ${{ secrets.GH_PAT }} - - name: Login as jhudsl-robot + - name: Login as github-actions bot run: | git config --global --add safe.directory $GITHUB_WORKSPACE - git config --global user.email "itcrtrainingnetwork@gmail.com" - git config --global user.name "jhudsl-robot" + git config --global user.name 'github-actions[bot]' + git config --global user.email 'github-actions[bot]@users.noreply.github.com' + git remote set-url origin https://${GH_PAT}@github.com/${GITHUB_REPOSITORY} + git fetch origin + git pull --rebase --allow-unrelated-histories --strategy-option=ours # Rendered content for Leanpub and Coursera is very similar. # This job creates a shared scaffold for both. - - name: Run TOC-less version of render - id: tocless + - name: Run TOC-less version of render -- Rmd version + if: ${{needs.yaml-check.outputs.toggle_website == 'rmd' }} + id: tocless_rmd run: Rscript -e "ottrpal::render_without_toc()" + - name: Run TOC-less version of render -- quarto version + id: tocless_quarto + if: ${{needs.yaml-check.outputs.toggle_website == 'quarto' }} + run: | + Rscript -e "quarto::quarto_render('.', metadata = list(sidebar = F, toc = F), + quarto_args = c('--output-dir', 'docs/no_toc/'))" + # Commit the TOC-less version files - name: Commit tocless bookdown files env: GH_PAT: ${{ secrets.GH_PAT }} run: | - git remote set-url origin https://${GH_PAT}@github.com/${GITHUB_REPOSITORY} - git fetch origin git add --force docs/no_toc* git commit -m 'Render toc-less' || echo "No changes to commit" - git pull --allow-unrelated-histories --strategy-option=ours + git status docs/no_toc* git push -u origin main || echo "No changes to push" render-leanpub: @@ -129,21 +156,25 @@ jobs: needs: [yaml-check, render-tocless] runs-on: ubuntu-latest container: - image: jhudsl/ottrpal:main + image: jhudsl/ottrpal if: ${{needs.yaml-check.outputs.toggle_leanpub == 'yes'}} steps: - name: checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 0 token: ${{ secrets.GH_PAT }} - - name: Login as jhudsl-robot + - name: Login as github actions bot run: | git config --global --add safe.directory $GITHUB_WORKSPACE - git config --global user.email "itcrtrainingnetwork@gmail.com" - git config --global user.name "jhudsl-robot" + git config --global user.name 'github-actions[bot]' + git config --global user.email 'github-actions[bot]@users.noreply.github.com' + git remote set-url origin https://${GH_PAT}@github.com/${GITHUB_REPOSITORY} + git fetch origin + git pull --rebase --allow-unrelated-histories --strategy-option=ours + ls docs/no_toc # Create screenshots - name: Run the screenshot creation @@ -152,7 +183,8 @@ jobs: rm -rf resources/chapt_screen_images # Make new screenshots - chapt_urls=$(Rscript --vanilla scripts/make_screenshots.R \ + curl -o make_screenshots.R https://raw.githubusercontent.com/jhudsl/ottr-reports/main/scripts/make_screenshots.R + chapt_urls=$(Rscript --vanilla make_screenshots.R \ --git_pat ${{ secrets.GH_PAT }} \ --repo $GITHUB_REPOSITORY \ --output_dir resources/chapt_screen_images) @@ -163,29 +195,28 @@ jobs: GH_PAT: ${{ secrets.GH_PAT }} run: | rm -rf manuscript/ - git remote set-url origin https://${GH_PAT}@github.com/${GITHUB_REPOSITORY} - git fetch origin git add . git commit -m 'Delete manuscript folder' || echo "No changes to commit" - git pull --allow-unrelated-histories --strategy-option=ours git push -u origin main || echo "No changes to push" - name: Run ottrpal::bookdown_to_embed_leanpub - if: needs.yaml-check.outputs.toggle_quiz_check == 'no' + if: ${{ needs.yaml-check.outputs.toggle_quiz_check == 'no'}} run: | + echo needs.yaml-check.outputs.toggle_make_book_txt == 'yes' + echo needs.yaml-check.outputs.toggle_make_book_txt Rscript -e "ottrpal::bookdown_to_embed_leanpub( render = FALSE, \ chapt_img_key = 'resources/chapt_screen_images/chapter_urls.tsv', \ - make_book_txt = as.logical('${{needs.yaml-check.outputs.make_book_txt}}'), \ + make_book_txt = as.logical('${{needs.yaml-check.outputs.make_book_txt == 'yes'}}'), \ quiz_dir = NULL)" - name: Run ottrpal::bookdown_to_embed_leanpub - if: needs.yaml-check.outputs.toggle_quiz_check == 'yes' + if: ${{ needs.yaml-check.outputs.toggle_quiz_check == 'yes'}} run: | Rscript -e "ottrpal::bookdown_to_embed_leanpub( render = FALSE, \ chapt_img_key = 'resources/chapt_screen_images/chapter_urls.tsv', \ - make_book_txt = as.logical('${{needs.yaml-check.outputs.make_book_txt}}'))" + make_book_txt = as.logical('${{needs.yaml-check.outputs.make_book_txt == 'yes'}}'))" # Commit the rendered Leanpub files - name: Commit rendered Leanpub files @@ -197,7 +228,8 @@ jobs: git add --force resources/* git add --force docs/* git commit -m 'Render Leanpub' || echo "No changes to commit" - git pull --allow-unrelated-histories --strategy-option=ours + git status docs/* + git pull --rebase --allow-unrelated-histories --strategy-option=ours --autostash git push --force --set-upstream origin main || echo "No changes to push" render-coursera: @@ -210,16 +242,19 @@ jobs: steps: - name: checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 0 token: ${{ secrets.GH_PAT }} - - name: Login as jhudsl-robot + - name: Login as github action run: | git config --global --add safe.directory $GITHUB_WORKSPACE - git config --global user.email "itcrtrainingnetwork@gmail.com" - git config --global user.name "jhudsl-robot" + git config --global user.name 'github-actions[bot]' + git config --global user.email 'github-actions[bot]@users.noreply.github.com' + git remote set-url origin https://${GH_PAT}@github.com/${GITHUB_REPOSITORY} + git fetch origin + git pull --rebase --allow-unrelated-histories --strategy-option=ours # Run Coursera version - name: Convert Leanpub quizzes to Coursera @@ -227,16 +262,18 @@ jobs: id: coursera run: Rscript -e "ottrpal::convert_coursera_quizzes()" - # Commit the rendered bookdown files + # Commit the rendered files + # Only commit coursera quizzes if the directory is present - name: Commit rendered Coursera files env: GH_PAT: ${{ secrets.GH_PAT }} run: | - git remote set-url origin https://${GH_PAT}@github.com/${GITHUB_REPOSITORY} - git fetch origin + if [ -d 'coursera_quizzes' ]; then + git add --force coursera_quizzes/* + fi git add --force manuscript/* git add --force resources/* git add --force docs/* git commit -m 'Render Coursera quizzes' || echo "No changes to commit" - git pull --allow-unrelated-histories --strategy-option=ours + git status git push -u origin main || echo "No changes to push" diff --git a/.github/workflows/transfer-rendered-files.yml b/.github/workflows/transfer-rendered-files.yml index 3c3577ee..dae41411 100644 --- a/.github/workflows/transfer-rendered-files.yml +++ b/.github/workflows/transfer-rendered-files.yml @@ -21,7 +21,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 # Use the yaml-env-action action. - name: Load environment from YAML @@ -42,21 +42,23 @@ jobs: if: ${{needs.yaml-check.outputs.toggle_coursera == 'yes' || needs.yaml-check.outputs.toggle_leanpub == 'yes'}} steps: + - name: Checkout from Bookdown Repo + uses: actions/checkout@v4 + with: + path: bookdown + token: ${{ secrets.GH_PAT }} + - name: Run git repo check id: git_repo_check env: GH_PAT: ${{ secrets.GH_PAT }} run: | - sudo apt-get install subversion - # What's the Quizzes repository's name? QUIZ_REPO=$(echo ${GITHUB_REPOSITORY} | sed "s/_Bookdown/ /g" | sed "s/_Template/ /g" | awk '{print $1"_Quizzes"}') echo $QUIZ_REPO - # Get repo check script - svn export --force https://github.com/${GITHUB_REPOSITORY}.git/branches/${GITHUB_REF#refs/heads/}/scripts/git_repo_check.R git_repo_check.R - # Run repo check script + curl -o git_repo_check.R https://raw.githubusercontent.com/jhudsl/ottr-reports/main/scripts/git_repo_check.R results=$(Rscript --vanilla git_repo_check.R --repo "$GITHUB_REPOSITORY" --git_pat "$GH_PAT") echo $QUIZ_REPO exists: $results @@ -65,8 +67,9 @@ jobs: - name: Checkout code from Leanpub repo if: ${{ steps.git_repo_check.outputs.git_results == 'TRUE' }} - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: + path: quizzes repository: ${{ steps.git_repo_check.outputs.leanpub_repo }} token: ${{ secrets.GH_PAT }} @@ -76,17 +79,19 @@ jobs: env: GH_PAT: ${{ secrets.GH_PAT }} run: | - # Copy over images folder - svn export --force https://github.com/${GITHUB_REPOSITORY}.git/branches/${GITHUB_REF#refs/heads/}/resources/chapt_screen_images resources/chapt_screen_images + # Copy over images folder (from bookdown to quizzes repo) + mkdir -p quizzes/resources/chapt_screen_images + cp bookdown/resources/chapt_screen_images/* quizzes/resources/chapt_screen_images - # Copy over _bookdown.yml - svn export --force https://github.com/${GITHUB_REPOSITORY}.git/branches/${GITHUB_REF#refs/heads/}/_bookdown.yml _bookdown.yml + # Copy over _bookdown.yml (from bookdown to quizzes repo) + cp bookdown/_bookdown.yml quizzes/_bookdown.yml - name: Create PR with resources files if: ${{ steps.git_repo_check.outputs.git_results == 'TRUE' }} uses: peter-evans/create-pull-request@v3 id: cpr with: + path: quizzes # Must create the PR in the Quizzes Repo token: ${{ secrets.GH_PAT }} commit-message: Copy files from Bookdown repository signoff: false diff --git a/assets/box_images/under_construction.png b/assets/box_images/under_construction.png new file mode 100644 index 00000000..a67bd5c1 Binary files /dev/null and b/assets/box_images/under_construction.png differ diff --git a/config_automation.yml b/config_automation.yml index 1c9d38a5..460f4189 100644 --- a/config_automation.yml +++ b/config_automation.yml @@ -12,16 +12,18 @@ spell-check: yes style-code: yes # Test build the docker image if any docker-relevant files have been changed docker-test: no +# Should URLs be tested periodically? +url-check-periodically: yes ##### Renderings run upon merge to main branch ##### # Rendering each platform's content -render-bookdown: yes +render-website: rmd render-leanpub: yes render-coursera: no -## Automate the creation of Book.txt file? TRUE/FALSE? +## Automate the creation of Book.txt file? yes/no ## This is only relevant if render-leanpub is yes, otherwise it will be ignored -make-book-txt: TRUE +make-book-txt: yes # What docker image should be used for rendering? # The default is jhudsl/base_ottr:main diff --git a/resources/exclude_files.txt b/resources/exclude_files.txt index cc77feed..5525a403 100644 --- a/resources/exclude_files.txt +++ b/resources/exclude_files.txt @@ -2,3 +2,7 @@ About.Rmd docs/* style-sets/* manuscript/* +CONTRIBUTING.md +LICENSE.md +code_of_conduct.md +README.md diff --git a/style-sets/data-trail/_output.yml b/style-sets/data-trail/_output.yml new file mode 100644 index 00000000..571771ae --- /dev/null +++ b/style-sets/data-trail/_output.yml @@ -0,0 +1,18 @@ +bookdown::gitbook: + css: assets/style_DataTrail.css + includes: + before_body: assets/big-image-DataTrail.html + after_body: assets/footer.html + highlight: tango + config: + toc: + collapse: section + before: | + + after: | +

This content was published with bookdown using

+

The OTTR Template by:

+

The Johns Hopkins Data Science Lab

+ +

Style adapted from: rstudio4edu-book (CC-BY 2.0)

+

Click here to provide feedback

diff --git a/style-sets/data-trail/copy-to-assets/DataTrail.jpg b/style-sets/data-trail/copy-to-assets/DataTrail.jpg new file mode 100644 index 00000000..f1902a35 Binary files /dev/null and b/style-sets/data-trail/copy-to-assets/DataTrail.jpg differ diff --git a/style-sets/data-trail/copy-to-assets/DataTrail_favicon.ico b/style-sets/data-trail/copy-to-assets/DataTrail_favicon.ico new file mode 100755 index 00000000..7c0378e6 Binary files /dev/null and b/style-sets/data-trail/copy-to-assets/DataTrail_favicon.ico differ diff --git a/style-sets/data-trail/copy-to-assets/DataTrail_logo.jpg b/style-sets/data-trail/copy-to-assets/DataTrail_logo.jpg new file mode 100644 index 00000000..1f075b6d Binary files /dev/null and b/style-sets/data-trail/copy-to-assets/DataTrail_logo.jpg differ diff --git a/style-sets/data-trail/copy-to-assets/big-image-DataTrail.html b/style-sets/data-trail/copy-to-assets/big-image-DataTrail.html new file mode 100644 index 00000000..db08b7e1 --- /dev/null +++ b/style-sets/data-trail/copy-to-assets/big-image-DataTrail.html @@ -0,0 +1,12 @@ + + + + + + + + + +
+ +
\ No newline at end of file diff --git a/style-sets/data-trail/copy-to-assets/style_DataTrail.css b/style-sets/data-trail/copy-to-assets/style_DataTrail.css new file mode 100644 index 00000000..fb3aa517 --- /dev/null +++ b/style-sets/data-trail/copy-to-assets/style_DataTrail.css @@ -0,0 +1,546 @@ +@import url('https://fonts.googleapis.com/css?family=Abril+Fatface|Karla:400,400i,700,700i|Lora:400,400i,700,700i&display=swap'); + +p.caption { + color: #777; + margin-top: 10px; +} +p code { + white-space: inherit; +} +pre { + word-break: normal; + word-wrap: normal; +} +pre code { + white-space: inherit; +} + +/*---------------Hero Image------------------*/ + +/* next 3 rules are for setting large image at top of each page and pushing down the book content to appear beneath the image */ + + + +.hero-image-container { + position: absolute; + top: 0; + left: 0; + right: 0; + height: 200px; + background-color: #133454; +} + +.hero-image { + width: 100%; + height: 200px; + object-fit: cover; +} + +.page-inner { + padding-top: 210px !important; +} +/* ------------Links------------------ */ + +.book .book-body .page-wrapper .page-inner section.normal a { + color: #1a9bc0; +} + + +/*------------- Body and header text---------------- */ + +.book.font-family-1 { + font-family: 'Karla', arial, sans-serif; +} + +h1, h2, h3, h4 { + font-family: 'Lora', arial, sans-serif; +} + + +.book .book-body .page-wrapper .page-inner section.normal h1, +.book .book-body .page-wrapper .page-inner section.normal h2, +.book .book-body .page-wrapper .page-inner section.normal h3, +.book .book-body .page-wrapper .page-inner section.normal h4, +.book .book-body .page-wrapper .page-inner section.normal h5, +.book .book-body .page-wrapper .page-inner section.normal h6 { + margin-top: 2.275em; + margin-bottom: 1em; +} + +.title { + font-family: 'Lora'; + font-size: 4em !important; + color: #023e4c; + margin-top: 0.275em !important; + margin-bottom: 0.35em !important; +} + +.subtitle { + font-family: 'Lora'; + color: #0b8d96; +} + + +/*----------DROP CAPS--------------*/ + + +/*p:nth-child(2):first-letter { /* /* DROP-CAP FOR FIRST P BENEATH EACH H1 OR H2*/ /* + color: #3fb5bd; + float: left; + font-family: 'Abril Fatface', serif; + font-size: 7em; + line-height: 65px; + padding-top: 4px; + padding-right: 8px; + padding-left: 3px; + margin-bottom: 9px; +} +*/ + +.section.level1 > p:first-of-type:first-letter { /*drop cap for first p beneath level 1 headers only within class .section*/ + color: #023e4c; + float: left; + font-family: 'Abril Fatface', serif; + font-size: 7em; + line-height: 65px; + padding-top: 4px; + padding-right: 8px; + padding-left: 3px; + margin-bottom: 9px; +} + +/* add drop cap to first paragraph that follows the first 2nd level header*/ +/* +.section.level2:first-of-type > p:first-of-type:first-letter { + color: #3fb5bd; + float: left; + font-family: 'Abril Fatface', serif; + font-size: 7em; + line-height: 65px; + padding-top: 4px; + padding-right: 8px; + padding-left: 3px; + margin-bottom: 9px; +} +*/ + + + +/*------------ TOC --------------*/ + + +.book .book-summary { + background: white; + border-right: none; +} + +/*---color of links in TOC----*/ + +.book .book-summary a { +color: #023e4c +} + +.summary{ + font-family: 'Karla', sans-serif; +} + +/* all TOC list items, basically */ +.book .book-summary ul.summary li a, +.book .book-summary ul.summary li span { + padding-top: 8px; + padding-bottom: 8px; + padding-left: 15px; + padding-right: 15px; + color: #023e4c; +} + +.summary a:hover { + color: #1a9bc0 !important; +} + +.book .book-summary ul.summary li.active>a { /*active TOC links*/ + color: #1a9bc0 !important; + border-left: solid 4px; + border-color: #12af66; + padding-left: 11px !important; +} + +.trapezoid { + width: 130px; + text-align: center; + height: 15; + position: relative; + border-right: 50px solid #023e4c; + border-bottom: 50px solid #e6e762; + border-left: 50px solid #023e4c; + box-sizing: content-box; +} +.trapezoid span { + position: absolute; + top: 5px; + bottom: 5px; + left: 5%; + color: #e6e762; +} + +li.appendix span, li.part span { /* for TOC part names */ + margin-top: 1em; + color: #000000; + opacity: .9 !important; + text-transform: uppercase; +} + +.part + li[data-level=""] { /* grabs first .chapter immediately after .part...but only those ch without numbers */ + text-transform: uppercase; +} + + +/* The next two rules make the horizontal line go straight across in top navbar */ + +.summary > li:first-child { + height: 50px; + padding-top: 10px; + border-bottom: 1px solid rgba(0,0,0,.07); +} + +.book .book-summary ul.summary li.divider { + height: 0px; +} + + +/*--- LOGO ---*/ + +.toc-logo { + width: 200px !important; + object-fit: contain; + margin: 0 auto; +} + +.toc-logo img { + max-width: 100%; + margin-bottom: 10px; +} + +.summary > li:first-child { + height: auto !important; +} + +/* --------------Two columns--------------- */ + +.col2 { + columns: 2 200px; /* number of columns and width in pixels*/ + -webkit-columns: 2 200px; /* chrome, safari */ + -moz-columns: 2 200px; /* firefox */ +} + + +.side-by-side { + display: flex; +} + +.side1 { + width: 40%; +} + +.side2 { + width: 58%; + margin-left: 1rem; +} + +/* --------------Even split- two columns--------------- */ + +.split { + display: flex; +} + +.split1 { + width: 50%; + padding-right: 20px; +} + +.split2 { + width: 50%; +} + + +/* Sidebar formating --------------------------------------------*/ +/* from r-pkgs.org*/ + + +div.notice{ + border: 4px #023e4c; + border-style: solid; + padding: 1em; + margin: 1em 0; + padding-left: 100px; + background-size: 70px; + background-repeat: no-repeat; + background-position: 15px center; + min-height: 120px; + background-color: #e8ebee; +} + +div.notice{ + background-image: url("../assets/box_images/note.png"); +} + +div.warning{ + border: 4px #e0471c; + border-style: solid; + padding: 1em; + margin: 1em 0; + padding-left: 100px; + background-size: 70px; + background-repeat: no-repeat; + background-position: 15px center; + min-height: 120px; + background-color: #e8ebee; +} + +div.warning{ + background-image: url("../assets/box_images/warning.png"); +} + + + +div.github{ + border: 4px #000000; + border-style: solid; + padding: 1em; + margin: 1em 0; + padding-left: 100px; + background-size: 70px; + background-repeat: no-repeat; + background-position: 15px center; + min-height: 120px; + background-color: #e8ebee; +} + +div.github{ + background-image: url("../assets/box_images/github.png"); +} + +div.dictionary{ + border: 4px #023e4c; + border-style: solid; + padding: 1em; + margin: 1em 0; + padding-left: 100px; + background-size: 70px; + background-repeat: no-repeat; + background-position: 15px center; + min-height: 120px; + background-color: #e8ebee; +} + +div.dictionary{ + background-image: url("../assets/box_images/dictionary.png"); +} + +div.reflection{ + border: 4px #000000; + border-style: solid; + padding: 1em; + margin: 1em 0; + padding-left: 100px; + background-size: 90px; + background-repeat: no-repeat; + background-position: 15px center; + min-height: 120px; + background-color: #e8ebee; +} + +div.reflection{ + background-image: url("../assets/box_images/thinking_face.png"); +} + +div.rstudio-tip, div.tip, div.gotcha, div.design, div.hat{ + border: 4px #aed6d963; + border-style: dashed solid; + padding: 1em; + margin: 1em 0; + padding-left: 100px; + background-size: 70px; + background-repeat: no-repeat; + background-position: 15px center; + min-height: 120px; + color: #2ea8b3; + background-color: #fcfcfc; +} + + +div.rstudio-tip { + background-image: url("../images/divs/rstudio.png"); +} + +div.tip { + background-image: url("../images/divs/lightbulb.png"); +} + +div.gotcha { + background-image: url("../images/divs/gotcha_2.png"); +} + +div.design { + background-image: url("../images/divs/design.png"); +} + +div.hat { + background-image: url("../images/divs/hat.png"); +} + +/* for fancy bookdown cookbook */ + +div.puzzle, div.fyi, div.demo, div.note { + padding: 1em; + margin: 1em 0; + padding-left: 100px; + background-size: 70px; + background-repeat: no-repeat; + background-position: 15px center; + min-height: 120px; + color: #1f5386; + background-color: #bed3ec; + border: solid 5px #dfedff; +} + +div.puzzle { + background-image: url("../images/illos/Your-turn.png"); +} + +div.fyi { + background-image: url("../images/illos/fyi.png"); +} + +div.demo { + background-image: url("../images/illos/Live-code.png"); +} + +div.note { + background-image: url("../images/illos/lightbulb2.png"); +} + + +/* .book .book-body .page-wrapper .page-inner section.normal is needed + to override the styles produced by gitbook, which are ridiculously + overspecified. Goal of the selectors is to ensure internal "margins" + controlled only by padding of container */ + +.book .book-body .page-wrapper .page-inner section.normal div.rstudio-tip > :first-child, +.book .book-body .page-wrapper .page-inner section.normal div.tip > :first-child { + margin-top: 0; +} + +.book .book-body .page-wrapper .page-inner section.normal div.rstudio-tip > :last-child, +.book .book-body .page-wrapper .page-inner section.normal div.tip > :last-child { + margin-bottom: 0; +} + +iframe { + -moz-transform-origin: top left; + -webkit-transform-origin: top left; + -o-transform-origin: top left; + -ms-transform-origin: top left; + transform-origin: top left; +} + +.iframe-container { + overflow: auto; + -webkit-overflow-scrolling: touch; + border: #ddd 2px solid; + box-shadow: #888 0px 5px 8px; + margin-bottom: 1em; +} + +.iframe-container > iframe { + border: none; +} + + +/* -------Clipboard copy button --------- */ +.copy { + width: inherit; + background-color: #e2e2e2 ; + border: none; + border-radius: 2px; + float: right; + font-size: 60%; + padding: 4px 4px 4px 4px; +} + +/* for new copy button */ + +.hasCopyButton { + position: relative; +} + +.btn-copy-ex { + position: absolute; + right: 0; + top: 0; + visibility: hidden; +} + +.hasCopyButton:hover button.btn-copy-ex { + visibility: visible; +} + + + +/* -----------Section anchors -------------*/ + +.book .book-body .page-wrapper .page-inner section.normal { + overflow: visible !important; /*so anchor link doesn't get cut off */ +} + +a.anchor { + margin-left: -30px; + padding-right: 3px; + display:inline-block; + width: 30px; + height: 30px; + /*visibility: hidden;*/ + background-image: url(https://image.flaticon.com/icons/svg/34/34735.svg) !important; + background-repeat: no-repeat !important; + background-size: 20px 20px !important; + background-position: center bottom !important; + opacity: 0; +} + + +.hasAnchor:hover a.anchor, +a.anchor:hover { + /*visibility: visible;*/ + opacity: 0.6; +} + +/* disable anchors for headers with "no-anchor" class */ +.no-anchor .hasAnchor:hover a.anchor, +.no-anchor a.anchor:hover { + opacity: 0 !important; +} + +@media (max-width: 1144px) { /* don't show anchor link on small screens */ + .hasAnchor:hover a.anchor { + visibility: hidden; + } +} + + +/*____Code Chunks____*/ + +.sourceCode { + margin-bottom: 0.85em; /* adds same amount of margin as a

would */ +} + +.sourceCode pre { + margin: 0 !important; /* makes space above and below symmetrical*/ +} + +/* Footer */ + +.footer { + font-family: "Lora", serif; + font-size: .85em; + color: #193a5c; +} \ No newline at end of file diff --git a/style-sets/data-trail/index.Rmd b/style-sets/data-trail/index.Rmd new file mode 100644 index 00000000..34e0f3a4 --- /dev/null +++ b/style-sets/data-trail/index.Rmd @@ -0,0 +1,38 @@ +--- +title: " Course Name " +date: "`r format(Sys.time(), '%B, %Y')`" +site: bookdown::bookdown_site +documentclass: book +bibliography: [book.bib, packages.bib] +biblio-style: apalike +link-citations: yes +description: "Description about Course/Book." +favicon: assets/DataTrail_favicon.ico +--- + + +```{r include=FALSE} +# automatically create a bib database for R packages +knitr::write_bib(c( + .packages(), "bookdown", "knitr", "rmarkdown" +), "packages.bib") +``` + +# About this Course {-} + +This course is part of a series of courses for [DataTrail](https://www.datatrail.org/). DataTrail is a no-cost, paid 14-week educational initiative for young-adult, high school and GED-graduates. DataTrail aims to equip members of underserved communities with the necessary skills and support required to work in the booming field of data science. + +DataTrail is a fresh take on workforce development that focuses on training both Black, Indigenous, and other people of color (BIPOC) interested in the data science industry and their potential employers. + +Offered by the Johns Hopkins Bloomberg School of Public Health, in partnership with local non-profits and Leanpub, DataTrail combines a mutually-intensive learning experience (MILE) with a whole-person ecosystem of support to allow aspiring data scientists and their employers to succeed. + +DataTrail uses mutually-intensive learning +DataTrail joins aspiring data science scholars and expert-level data scientist mentors in a mutually-intensive learning experience (MILE). + +In the DataTrail MILE: + +Scholars engage in cutting-edge technical and soft skills training needed to enter the data science field. + +Mentors engage in anti-racism and mentorship training needed to be impactful mentors and informed colleagues on diverse data science teams. + +The social connections created along the way will fuel job opportunities for scholars and foster a more diverse, equitable, and inclusive climate at the mentors' institutions. diff --git a/style-sets/fhdasl/_output.yml b/style-sets/fhdasl/_output.yml new file mode 100644 index 00000000..0a864962 --- /dev/null +++ b/style-sets/fhdasl/_output.yml @@ -0,0 +1,18 @@ +bookdown::gitbook: + css: assets/style.css + includes: + before_body: assets/big-image_fhdasl.html + after_body: assets/footer.html + split_bib: false + highlight: tango + config: + toc: + collapse: section + before: | + + after: | +

This content was published with bookdown using

+

The OTTR Template by:

+

The Fred Hutch Data Science Lab

+

Style adapted from: rstudio4edu-book (CC-BY 2.0)

+

Click here to provide feedback

diff --git a/style-sets/fhdasl/copy_to_assets/big-dasl-stacked.png b/style-sets/fhdasl/copy_to_assets/big-dasl-stacked.png new file mode 100644 index 00000000..4bf74fcd Binary files /dev/null and b/style-sets/fhdasl/copy_to_assets/big-dasl-stacked.png differ diff --git a/style-sets/fhdasl/copy_to_assets/big-dasl.png b/style-sets/fhdasl/copy_to_assets/big-dasl.png new file mode 100755 index 00000000..df1b20b3 Binary files /dev/null and b/style-sets/fhdasl/copy_to_assets/big-dasl.png differ diff --git a/style-sets/fhdasl/copy_to_assets/big-image.html b/style-sets/fhdasl/copy_to_assets/big-image.html new file mode 100755 index 00000000..1df37797 --- /dev/null +++ b/style-sets/fhdasl/copy_to_assets/big-image.html @@ -0,0 +1,12 @@ + + + + + + + + + +
+ +
diff --git a/style-sets/fhdasl/copy_to_assets/big-image_fhdasl.html b/style-sets/fhdasl/copy_to_assets/big-image_fhdasl.html new file mode 100644 index 00000000..0a7d7bc8 --- /dev/null +++ b/style-sets/fhdasl/copy_to_assets/big-image_fhdasl.html @@ -0,0 +1,12 @@ + + + + + + + + + +
+ +
diff --git a/style-sets/fhdasl/copy_to_assets/box_images/data.png b/style-sets/fhdasl/copy_to_assets/box_images/data.png new file mode 100644 index 00000000..8725b997 Binary files /dev/null and b/style-sets/fhdasl/copy_to_assets/box_images/data.png differ diff --git a/style-sets/fhdasl/copy_to_assets/box_images/dictionary.png b/style-sets/fhdasl/copy_to_assets/box_images/dictionary.png new file mode 100644 index 00000000..75ddac77 Binary files /dev/null and b/style-sets/fhdasl/copy_to_assets/box_images/dictionary.png differ diff --git a/style-sets/fhdasl/copy_to_assets/box_images/github.png b/style-sets/fhdasl/copy_to_assets/box_images/github.png new file mode 100644 index 00000000..a93acd3e Binary files /dev/null and b/style-sets/fhdasl/copy_to_assets/box_images/github.png differ diff --git a/style-sets/fhdasl/copy_to_assets/box_images/justice.png b/style-sets/fhdasl/copy_to_assets/box_images/justice.png new file mode 100644 index 00000000..7780e05e Binary files /dev/null and b/style-sets/fhdasl/copy_to_assets/box_images/justice.png differ diff --git a/style-sets/fhdasl/copy_to_assets/box_images/money.png b/style-sets/fhdasl/copy_to_assets/box_images/money.png new file mode 100644 index 00000000..5b1b7e95 Binary files /dev/null and b/style-sets/fhdasl/copy_to_assets/box_images/money.png differ diff --git a/style-sets/fhdasl/copy_to_assets/box_images/motivations.png b/style-sets/fhdasl/copy_to_assets/box_images/motivations.png new file mode 100644 index 00000000..6a3242ac Binary files /dev/null and b/style-sets/fhdasl/copy_to_assets/box_images/motivations.png differ diff --git a/style-sets/fhdasl/copy_to_assets/box_images/note.png b/style-sets/fhdasl/copy_to_assets/box_images/note.png new file mode 100644 index 00000000..72de3aea Binary files /dev/null and b/style-sets/fhdasl/copy_to_assets/box_images/note.png differ diff --git a/style-sets/fhdasl/copy_to_assets/box_images/plan.png b/style-sets/fhdasl/copy_to_assets/box_images/plan.png new file mode 100644 index 00000000..24f4213c Binary files /dev/null and b/style-sets/fhdasl/copy_to_assets/box_images/plan.png differ diff --git a/style-sets/fhdasl/copy_to_assets/box_images/question.png b/style-sets/fhdasl/copy_to_assets/box_images/question.png new file mode 100644 index 00000000..19ad5bee Binary files /dev/null and b/style-sets/fhdasl/copy_to_assets/box_images/question.png differ diff --git a/style-sets/fhdasl/copy_to_assets/box_images/question_box.png b/style-sets/fhdasl/copy_to_assets/box_images/question_box.png new file mode 100644 index 00000000..458281c2 Binary files /dev/null and b/style-sets/fhdasl/copy_to_assets/box_images/question_box.png differ diff --git a/style-sets/fhdasl/copy_to_assets/box_images/submit.png b/style-sets/fhdasl/copy_to_assets/box_images/submit.png new file mode 100644 index 00000000..8a343c3f Binary files /dev/null and b/style-sets/fhdasl/copy_to_assets/box_images/submit.png differ diff --git a/style-sets/fhdasl/copy_to_assets/box_images/thinking_face.png b/style-sets/fhdasl/copy_to_assets/box_images/thinking_face.png new file mode 100644 index 00000000..c2c279ac Binary files /dev/null and b/style-sets/fhdasl/copy_to_assets/box_images/thinking_face.png differ diff --git a/style-sets/fhdasl/copy_to_assets/box_images/warning.png b/style-sets/fhdasl/copy_to_assets/box_images/warning.png new file mode 100644 index 00000000..405fb61d Binary files /dev/null and b/style-sets/fhdasl/copy_to_assets/box_images/warning.png differ diff --git a/style-sets/fhdasl/copy_to_assets/brothers.png b/style-sets/fhdasl/copy_to_assets/brothers.png new file mode 100644 index 00000000..93c565e1 Binary files /dev/null and b/style-sets/fhdasl/copy_to_assets/brothers.png differ diff --git a/style-sets/fhdasl/copy_to_assets/dasl_thin_main_image.png b/style-sets/fhdasl/copy_to_assets/dasl_thin_main_image.png new file mode 100644 index 00000000..6143f4f8 Binary files /dev/null and b/style-sets/fhdasl/copy_to_assets/dasl_thin_main_image.png differ diff --git a/style-sets/fhdasl/copy_to_assets/favicon.ico b/style-sets/fhdasl/copy_to_assets/favicon.ico new file mode 100644 index 00000000..f41ff9b0 Binary files /dev/null and b/style-sets/fhdasl/copy_to_assets/favicon.ico differ diff --git a/style-sets/fhdasl/copy_to_assets/footer.html b/style-sets/fhdasl/copy_to_assets/footer.html new file mode 100755 index 00000000..61e20719 --- /dev/null +++ b/style-sets/fhdasl/copy_to_assets/footer.html @@ -0,0 +1,9 @@ +
+
+ +
\ No newline at end of file diff --git a/style-sets/fhdasl/copy_to_assets/hideOutput.js b/style-sets/fhdasl/copy_to_assets/hideOutput.js new file mode 100755 index 00000000..245d55ff --- /dev/null +++ b/style-sets/fhdasl/copy_to_assets/hideOutput.js @@ -0,0 +1,57 @@ +/*$(document).ready(function() { + + + // Copy Button + $chunks = $('pre.sourceCode > code.sourceCode'); + $chunks.each(function(i, val) { + $(this).prepend("").click(function() { + var $temp = $("