Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. Identify the problem - usually, someone notices a problem on a specific page when viewing the page
  2. Setup an example page for testing
  3. Find all content with the problem. You need to have a unique way to identify the text that is in error without finding extraneous text. This can be difficult in some cases.
    1. Look at the storage view of the page with the problem
    2. In this example: <at:var at:name="entry" /> should have been @entry@
    3. In the UI, search for something like: "<at:var" and verify that the pages found represent the problem you are trying to solve
  4. Construct the same search using the CLI and verify results. Suggest you start with a single space first before doing @all. Note you need to escape the double quote using your system specific escaping syntax - see Tips

    No Format
    --action getPageList --space @all


  5. Construct a find/replace string. In this case, the text between the @ signs could be anything, so we will use findReplaceRegex instead of simple text replacement that findReplace does. You need to know a little bit of regex syntax including a find group (in this example: any number of alphabetic characters) and the replacement text referencing the find group: @$1@. Test your regex first. How to use regular expressions has some pointers.

    No Format
    <at:var at:name="([a-zA-Z]*)" /> needs to be replace with @$1@


  6. Now construct the CLI command to make a single page fix.
    1. Yuk (sad)! XHTML has a bunch of characters that are considered special characters for the CLI, regex processing, and/or command line processing. Tips has some rules for escaping some of the CLI related areas, but it is still a pain especially with differences between Windows and non-Windows systems. 
    2. Construct the parameters for find and replace. Use ~ instead of " so we can avoid escaping double quote. Use # as the separator between key and value instead of the default : (colon). For unix based command lines, the $ must be escaped.

      No Format
      --findReplaceRegex "<at:var at:name=~([a-zA-Z]*)~ />#@\$1@" --special " #  ~" 


    3. Construct the CLI command for a single action and test on a single page

      No Format
      --action modifyPage --space xxx --title "my title" --findReplaceRegex "<at:var at:name=~([a-zA-Z]*)~ />#@\$1@" --special " #  ~" 


  7. Global change
    1. Put every thing together using runFromContentList runFromPageList (this examples using unix based escaping)

      No Format
      --action runFromPageList --space @all --common "--action modifyPage --id @pageId@ --findReplaceRegex \"<at:var at:name=~([a-zA-Z]*)~ />#@\$1@\" --special \" #  ~\" " 


    2. Result

      No Format
      Run: --action modifyPage --id 28901397 --findReplaceRegex "<at:var at:name=~([a-zA-Z]*)~ />#@$1@" --special " #  ~" 
      Page modified: '3.0.0 - Documentation' in space: BCLI. Page has id: 28901397
      Run: --action modifyPage --id 28901413 --findReplaceRegex "<at:var at:name=~([a-zA-Z]*)~ />#@$1@" --special " #  ~" 
      Page modified: '3.0.0 - Documentation' in space: CSOAP. Page has id: 28901413
      ...


...