From 8460b8ff6cda9426c5cd3ffe114d9be99b04e17d Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Fri, 25 Sep 2020 09:54:27 +1000 Subject: [PATCH 1/2] fix(developer): Project window and About window hardcoded urls Relates to #3394. Fixes all remaining hardcoded URLs in the Project / Welcome and the About window in Keyman Developer. --- windows/src/developer/TIKE/Tike.dpr | 3 +- windows/src/developer/TIKE/Tike.dproj | 1 + .../developer/TIKE/dialogs/UfrmAboutTike.dfm | 4 +- .../developer/TIKE/dialogs/UfrmAboutTike.pas | 4 +- ...n.Developer.System.Project.ProjectFile.pas | 7 +++ ...n.Developer.System.Project.UrlRenderer.pas | 45 +++++++++++++++++++ ...veloper.System.Project.WelcomeRenderer.pas | 3 ++ .../TIKE/xml/project/distribution.xsl | 22 ++++----- .../TIKE/xml/project/globalwelcome.xsl | 2 +- .../developer/TIKE/xml/project/keyboards.xsl | 2 +- .../global/delphi/general/Upload_Settings.pas | 7 +++ 11 files changed, 82 insertions(+), 18 deletions(-) create mode 100644 windows/src/developer/TIKE/project/Keyman.Developer.System.Project.UrlRenderer.pas diff --git a/windows/src/developer/TIKE/Tike.dpr b/windows/src/developer/TIKE/Tike.dpr index f7bbcef178..7187e9c2b9 100644 --- a/windows/src/developer/TIKE/Tike.dpr +++ b/windows/src/developer/TIKE/Tike.dpr @@ -291,7 +291,8 @@ uses Sentry.Client.Vcl in '..\..\ext\sentry\Sentry.Client.Vcl.pas', sentry in '..\..\ext\sentry\sentry.pas', Keyman.System.KeymanSentryClient in '..\..\global\delphi\general\Keyman.System.KeymanSentryClient.pas', - Keyman.System.Standards.LangTagsRegistry in '..\..\global\delphi\standards\Keyman.System.Standards.LangTagsRegistry.pas'; + Keyman.System.Standards.LangTagsRegistry in '..\..\global\delphi\standards\Keyman.System.Standards.LangTagsRegistry.pas', + Keyman.Developer.System.Project.UrlRenderer in 'project\Keyman.Developer.System.Project.UrlRenderer.pas'; {$R *.RES} {$R ICONS.RES} diff --git a/windows/src/developer/TIKE/Tike.dproj b/windows/src/developer/TIKE/Tike.dproj index 32b76d2108..6fcfafb6ab 100644 --- a/windows/src/developer/TIKE/Tike.dproj +++ b/windows/src/developer/TIKE/Tike.dproj @@ -546,6 +546,7 @@ + Cfg_2 diff --git a/windows/src/developer/TIKE/dialogs/UfrmAboutTike.dfm b/windows/src/developer/TIKE/dialogs/UfrmAboutTike.dfm index 003ee12f2b..3210c1e0e3 100644 --- a/windows/src/developer/TIKE/dialogs/UfrmAboutTike.dfm +++ b/windows/src/developer/TIKE/dialogs/UfrmAboutTike.dfm @@ -520,10 +520,10 @@ inherited frmAboutTike: TfrmAboutTike object lblWebsite: TLabel Left = 125 Top = 135 - Width = 176 + Width = 128 Height = 13 Cursor = crHandPoint - Caption = 'http://www.keyman.com/developer/' + Caption = '(url for keyman developer)' Font.Charset = DEFAULT_CHARSET Font.Color = clBlack Font.Height = -11 diff --git a/windows/src/developer/TIKE/dialogs/UfrmAboutTike.pas b/windows/src/developer/TIKE/dialogs/UfrmAboutTike.pas index eef9c7ad46..e0354463ac 100644 --- a/windows/src/developer/TIKE/dialogs/UfrmAboutTike.pas +++ b/windows/src/developer/TIKE/dialogs/UfrmAboutTike.pas @@ -79,14 +79,14 @@ procedure TfrmAboutTike.FormCreate(Sender: TObject); begin inherited; Caption := SCaption; - lblWebsite.Caption := MakeKeymanURL(URLPath_KeymanDeveloperHome); + lblWebsite.Caption := MakeKeymanURL(URLPath_KeymanDeveloperHome_Presentation); lblVersion.Caption := 'Version ' + GetVersionString; lblCopyright.Caption := GetVersionCopyright; end; procedure TfrmAboutTike.lblWebsiteClick(Sender: TObject); begin - TUtilExecute.URL(lblWebsite.Caption); // I3349 + TUtilExecute.URL(MakeKeymanURL(URLPath_KeymanDeveloperHome)); // I3349 end; function TfrmAboutTike.GetHelpTopic: string; diff --git a/windows/src/developer/TIKE/project/Keyman.Developer.System.Project.ProjectFile.pas b/windows/src/developer/TIKE/project/Keyman.Developer.System.Project.ProjectFile.pas index 04e778be0e..df64c061bc 100644 --- a/windows/src/developer/TIKE/project/Keyman.Developer.System.Project.ProjectFile.pas +++ b/windows/src/developer/TIKE/project/Keyman.Developer.System.Project.ProjectFile.pas @@ -332,6 +332,7 @@ uses Keyman.Developer.System.Project.ProjectFileType, Keyman.Developer.System.Project.ProjectLoader, Keyman.Developer.System.Project.ProjectSaver, + Keyman.Developer.System.Project.UrlRenderer, RedistFiles, RegistryKeys, UMD5Hash, @@ -882,6 +883,12 @@ begin end; end; + // + // Inject state URLs into the loaded file + // + + TProjectUrlRenderer.AddUrls(doc.documentElement); + xsl := MSXMLDOMDocumentFactory.CreateDOMDocument; try xsl.async := False; diff --git a/windows/src/developer/TIKE/project/Keyman.Developer.System.Project.UrlRenderer.pas b/windows/src/developer/TIKE/project/Keyman.Developer.System.Project.UrlRenderer.pas new file mode 100644 index 0000000000..32230c6656 --- /dev/null +++ b/windows/src/developer/TIKE/project/Keyman.Developer.System.Project.UrlRenderer.pas @@ -0,0 +1,45 @@ +unit Keyman.Developer.System.Project.UrlRenderer; + +interface + +uses + Winapi.msxml; + +type + TProjectUrlRenderer = class + class procedure AddUrls(root: IXMLDomNode); + end; + +implementation + +uses + Upload_Settings; + +{ TProjectUrlRenderer } + +class procedure TProjectUrlRenderer.AddUrls(root: IXMLDomNode); +var + node: IXMLDomNode; + + procedure AddUrl(const id, href: string); + var + urlNode: IXMLDOMElement; + begin + urlNode := root.ownerDocument.createElement('Url'); + urlNode.setAttribute('id', id); + urlNode.setAttribute('href', MakeKeymanURL(href)); + node.appendChild(urlNode); + end; +begin + node := root.ownerDocument.createElement('DeveloperUrls'); + AddUrl('help-keyboards', URLPath_KeymanDeveloper_HelpKeyboards); + AddUrl('help-packages', URLPath_KeymanDeveloper_HelpPackages); + AddUrl('help-mobile', URLPath_KeymanDeveloper_HelpMobile); + AddUrl('keymanweb', URLPath_KeymanDeveloper_KeymanWeb); + AddUrl('keyman-engine-home', URLPath_KeymanDeveloper_KeymanEngineHome); + AddUrl('home', URLPath_KeymanDeveloperHome); + AddUrl('home-presentation', URLPath_KeymanDeveloperHome_Presentation); + root.appendChild(node); +end; + +end. diff --git a/windows/src/developer/TIKE/project/Keyman.Developer.System.Project.WelcomeRenderer.pas b/windows/src/developer/TIKE/project/Keyman.Developer.System.Project.WelcomeRenderer.pas index 2404495495..2e6e341ae6 100644 --- a/windows/src/developer/TIKE/project/Keyman.Developer.System.Project.WelcomeRenderer.pas +++ b/windows/src/developer/TIKE/project/Keyman.Developer.System.Project.WelcomeRenderer.pas @@ -17,6 +17,7 @@ uses Xml.Win.msxmldom, Keyman.Developer.System.Project.ProjectFile, + Keyman.Developer.System.Project.UrlRenderer, RegistryKeys, VersionInfo, utilsystem; @@ -56,6 +57,8 @@ begin node.appendChild(doc.createTextNode(GetVersionString)); root.appendChild(node); + TProjectUrlRenderer.AddUrls(root); + xsl := MSXMLDOMDocumentFactory.CreateDOMDocument; try xsl.async := False; diff --git a/windows/src/developer/TIKE/xml/project/distribution.xsl b/windows/src/developer/TIKE/xml/project/distribution.xsl index 616e9e12eb..6b78ee608f 100644 --- a/windows/src/developer/TIKE/xml/project/distribution.xsl +++ b/windows/src/developer/TIKE/xml/project/distribution.xsl @@ -11,11 +11,11 @@

Quick Links

@@ -30,16 +30,16 @@
  • Add your keyboard to the Keyman Keyboard Repositories. In order to do this, you must share the source code of your keyboard. - Recommended option!   Learn more
  • -
  • Share a package file yourself: just give a .kmp file to any Keyman user, on Windows, macOS, iOS or Android and they can install it. Or put the .kmp file onto a website for users to download. - Learn more
  • + Recommended option!   Learn more +
  • Share a package file yourself: just give a .kmp file to any Keyman user, on Windows, macOS, iOS, Android or Linux and they can install it. Or put the .kmp file onto a website for users to download. + Learn more
  • Sharing package files to mobile devices can be more complex. Learn about specific techniques for distribution to mobile devices. - Learn more
  • + Learn more
  • Add your keyboard to a website using KeymanWeb - Learn more
  • + Learn more
-

You can also create your own custom keyboarding product based on Keyman: Learn more

+

You can also create your own custom keyboarding product based on Keyman: Learn more

diff --git a/windows/src/developer/TIKE/xml/project/globalwelcome.xsl b/windows/src/developer/TIKE/xml/project/globalwelcome.xsl index ac22124430..aecd70d90f 100644 --- a/windows/src/developer/TIKE/xml/project/globalwelcome.xsl +++ b/windows/src/developer/TIKE/xml/project/globalwelcome.xsl @@ -14,7 +14,7 @@