WEB-308: fix hardcoded documentation links (#2944)

fix: Add security attributes to all external documentation links

Fix:added the missing mapping in env.template.js

Removed DocumentationLinkPipe from PipesModule
This commit is contained in:
Shubham Kumar
2025-12-30 20:25:51 -06:00
committed by GitHub
parent 98a5af6f60
commit 2649efc80c
38 changed files with 214 additions and 72 deletions
+3
View File
@@ -16,6 +16,9 @@ FINERACT_PLATFORM_TENANTS_IDENTIFIER=default
# Tenant Logo URL - supports external URLs (e.g., https://example.com/logo.png) or local paths. Leave empty to use default tenant-specific logos
TENANT_LOGO_URL=
# Documentation base URL for in-app help links
MIFOS_DOCUMENTATION_BASE_URL=https://mifosforge.jira.com/wiki
MIFOS_DEFAULT_LANGUAGE=en-US
MIFOS_SUPPORTED_LANGUAGES=cs-CS,de-DE,en-US,es-MX,fr-FR,it-IT,ko-KO,lt-LT,lv-LV,ne-NE,pt-PT
@@ -125,11 +125,9 @@
<h2>{{ 'labels.heading.Create GL account' | translate }}</h2>
<p class="mw400">
{{ 'labels.text.Filling Details' | translate }}
<a
href="https://mifosforge.jira.com/wiki/spaces/docs/pages/67141745/Chart+of+Accounts+-+General+Ledger+Setup"
target="_blank"
>{{ 'labels.inputs.Chart of Accounts' | translate }}</a
>
<a [href]="'chartOfAccountsSetup' | documentationLink" target="_blank" rel="noopener noreferrer">{{
'labels.inputs.Chart of Accounts' | translate
}}</a>
</p>
<div class="layout-row align-end gap-2px responsive-column">
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
@@ -105,7 +105,7 @@
<ng-template #templateClosuresTable let-popover="popover">
<h4>
{{ 'labels.heading.List of closures. To know more click' | translate }}:
<a href="https://mifosforge.jira.com/wiki/spaces/docs/pages/67895316/Closing+Entries" target="_blank">{{
<a [href]="'closingEntries' | documentationLink" target="_blank" rel="noopener noreferrer">{{
'labels.inputs.Closing Entries' | translate
}}</a>
</h4>
@@ -221,7 +221,7 @@
<h2>{{ 'labels.heading.Add Journal Entry Form' | translate }}</h2>
<p class="mw300">
{{ 'labels.text.Red asterisk field' | translate }}
<a href="https://mifosforge.jira.com/wiki/spaces/docs/pages/67895310/Add+Journal+Entries" target="_blank">{{
<a [href]="'addJournalEntries' | documentationLink" target="_blank" rel="noopener noreferrer">{{
'labels.inputs.Add Journal Entries' | translate
}}</a>
</p>
@@ -71,11 +71,9 @@
<ng-template #templateActivitiesTable let-popover="popover">
<h4 class="mw300">
{{ 'labels.heading.Account Linked Financial' | translate }}
<a
href="https://mifosforge.jira.com/wiki/spaces/docs/pages/106430472/Accounts+linked+to+Financial+Activities"
target="_blank"
>{{ 'labels.heading.Accounts linked to Financial Activities' | translate }}</a
>
<a [href]="'financialActivityMappings' | documentationLink" target="_blank" rel="noopener noreferrer">{{
'labels.heading.Accounts linked to Financial Activities' | translate
}}</a>
</h4>
<div class="layout-row align-end gap-2px responsive-column">
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
@@ -153,11 +153,9 @@
<h2>{{ 'labels.heading.Migrate opening balances (Office-wise)' | translate }}</h2>
<p class="mw300">
{{ 'labels.text.Migrate Opening Balances' | translate }}
<a
href="https://mifosforge.jira.com/wiki/spaces/docs/pages/90243328/Migrate+opening+balances+Office-wise"
target="_blank"
>{{ 'labels.inputs.Migrate opening balances (Office-wise)' | translate }}</a
>
<a [href]="'migrateOpeningBalances' | documentationLink" target="_blank" rel="noopener noreferrer">{{
'labels.inputs.Migrate opening balances (Office-wise)' | translate
}}</a>
</p>
<div class="layout-row align-end gap-2px responsive-column">
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
@@ -10,6 +10,7 @@ import { KeyboardShortcutsDialogComponent } from 'app/shared/keyboard-shortcuts-
import { AuthenticationService } from '../../authentication/authentication.service';
import { PopoverService } from '../../../configuration-wizard/popover/popover.service';
import { ConfigurationWizardService } from '../../../configuration-wizard/configuration-wizard.service';
import { DocumentationLinksService } from 'app/shared/services/documentation-links.service';
/** Custom Imports */
import { frequentActivities } from './frequent-activities';
@@ -54,6 +55,7 @@ export class SidenavComponent implements OnInit, AfterViewInit {
private settingsService = inject(SettingsService);
private configurationWizardService = inject(ConfigurationWizardService);
private popoverService = inject(PopoverService);
private documentationLinks = inject(DocumentationLinksService);
/** True if sidenav is in collapsed state. */
@Input() sidenavCollapsed: boolean;
@@ -117,7 +119,7 @@ export class SidenavComponent implements OnInit, AfterViewInit {
* Opens Mifos JIRA Wiki page.
*/
help() {
window.open('https://mifosforge.jira.com/wiki/spaces/docs/pages/52035622/User+Manual', '_blank');
this.documentationLinks.open('userManual');
}
/**
@@ -41,6 +41,7 @@ import { MatIcon } from '@angular/material/icon';
import { NotificationsTrayComponent as NotificationsTrayComponent_1 } from '../../../shared/notifications-tray/notifications-tray.component';
import { ThemeToggleComponent } from '../../../shared/theme-toggle/theme-toggle.component';
import { STANDALONE_SHARED_IMPORTS } from 'app/standalone-shared.module';
import { DocumentationLinksService } from 'app/shared/services/documentation-links.service';
import { environment } from '../../../../environments/environment';
@@ -75,6 +76,7 @@ export class ToolbarComponent implements OnInit, AfterViewInit, AfterContentChec
private configurationWizardService = inject(ConfigurationWizardService);
private dialog = inject(MatDialog);
private changeDetector = inject(ChangeDetectorRef);
private documentationLinks = inject(DocumentationLinksService);
/* Reference of institution */
@ViewChild('institution') institution: ElementRef<any>;
@@ -148,7 +150,7 @@ export class ToolbarComponent implements OnInit, AfterViewInit, AfterContentChec
* Opens Mifos JIRA Wiki page.
*/
help() {
window.open('https://mifosforge.jira.com/wiki/spaces/docs/pages/52035622/User+Manual', '_blank');
this.documentationLinks.open('userManual');
}
/**
* Popover function
+18 -22
View File
@@ -14,15 +14,15 @@
<h1 class="mat-display-1 cover-title">{{ 'APP_NAME' | translate }}</h1>
<p class="mat-headline cover-description">
{{ 'APP_NAME' | translate }} {{ 'labels.text.is designed by the' | translate }}
<a href="https://mifos.org/" target="_blank" class="cover-link">{{
<a [href]="'mifosHome' | documentationLink" target="_blank" rel="noopener noreferrer" class="cover-link">{{
'labels.text.Mifos Initiative' | translate
}}</a
>. {{ 'labels.text.A' | translate }}
<a href="https://mifos.org/resources/community/" target="_blank" class="cover-link">{{
<a [href]="'mifosCommunity' | documentationLink" target="_blank" rel="noopener noreferrer" class="cover-link">{{
'labels.text.global community' | translate
}}</a>
{{ 'labels.text.elimination of poverty' | translate }}
<a href="https://mifos.org/take-action/volunteer/" target="_blank" class="cover-link"
<a [href]="'mifosVolunteer' | documentationLink" target="_blank" rel="noopener noreferrer" class="cover-link"
>{{ 'labels.text.Get involved' | translate }}!</a
>
</p>
@@ -112,41 +112,37 @@
<!-- Contact Information/Resources Menus -->
<mat-menu #resourcesMenu="matMenu">
<a href="https://mifosforge.jira.com/wiki/spaces/docs/pages/52035622/User+Manual" target="_blank" mat-menu-item>{{
<a [href]="'userManual' | documentationLink" target="_blank" rel="noopener noreferrer" mat-menu-item>{{
'labels.links.User Manual' | translate
}}</a>
<a
href="https://cwiki.apache.org/confluence/display/FINERACT/Apache+Fineract+1.0+Functional+Specifications"
target="_blank"
mat-menu-item
>{{ 'labels.links.Functional Specifications' | translate }}</a
>
<a href="https://cwiki.apache.org/confluence/display/FINERACT/Contributor%27s+Zone" target="_blank" mat-menu-item>{{
<a [href]="'fineractFunctionalSpecs' | documentationLink" target="_blank" rel="noopener noreferrer" mat-menu-item>{{
'labels.links.Functional Specifications' | translate
}}</a>
<a [href]="'fineractContributorZone' | documentationLink" target="_blank" rel="noopener noreferrer" mat-menu-item>{{
'labels.links.Developer Zone' | translate
}}</a>
</mat-menu>
<mat-menu #communityMenu="matMenu">
<a href="https://groups.google.com/forum/#!forum/mifosusers" target="_blank" mat-menu-item>{{
<a [href]="'mifosUserGroup' | documentationLink" target="_blank" rel="noopener noreferrer" mat-menu-item>{{
'labels.links.User Group' | translate
}}</a>
<a href="https://groups.google.com/forum/#!forum/mifosdeveloper" target="_blank" mat-menu-item>{{
<a [href]="'mifosDeveloperGroup' | documentationLink" target="_blank" rel="noopener noreferrer" mat-menu-item>{{
'labels.links.Developer Group' | translate
}}</a>
<a href="https://mifos.org/resources/community/communications/#mifos-irc" target="_blank" mat-menu-item>{{
<a [href]="'mifosIrc' | documentationLink" target="_blank" rel="noopener noreferrer" mat-menu-item>{{
'labels.links.IRC' | translate
}}</a>
</mat-menu>
<mat-menu #contributeMenu="matMenu">
<a
href="https://mifosforge.jira.com/wiki/spaces/MDZ/pages/92012624/Key+Design+Principles"
target="_blank"
mat-menu-item
>{{ 'labels.links.Key Design Principles' | translate }}</a
>
<a href="https://sourceforge.net/projects/mifos/" target="_blank" mat-menu-item>{{
<a [href]="'keyDesignPrinciples' | documentationLink" target="_blank" rel="noopener noreferrer" mat-menu-item>{{
'labels.links.Key Design Principles' | translate
}}</a>
<a [href]="'sourceforgeMifos' | documentationLink" target="_blank" rel="noopener noreferrer" mat-menu-item>{{
'labels.links.Working with Code' | translate
}}</a>
<a href="https://mifos.org/donate/" target="_blank" mat-menu-item>{{ 'labels.links.Donate' | translate }}</a>
<a [href]="'mifosDonate' | documentationLink" target="_blank" rel="noopener noreferrer" mat-menu-item>{{
'labels.links.Donate' | translate
}}</a>
</mat-menu>
@@ -70,7 +70,7 @@
<h4>{{ 'labels.heading.Add Currency Form' | translate }}</h4>
<p class="mw400">
{{ 'labels.text.Used to add currency' | translate }}:
<a href="https://mifosforge.jira.com/wiki/spaces/docs/pages/67141734/Currency+Configuration" target="_blank">{{
<a [href]="'currencyConfiguration' | documentationLink" target="_blank" rel="noopener noreferrer">{{
'labels.inputs.Currency Configuration' | translate
}}</a>
</p>
@@ -116,7 +116,7 @@
<p class="mw400">
{{ 'labels.text.Start filling the details' | translate }} <br />
{{ 'labels.text.For more details click' | translate }}:
<a href="https://mifosforge.jira.com/wiki/spaces/docs/pages/67141732/Manage+Employees" target="_blank">{{
<a [href]="'manageEmployees' | documentationLink" target="_blank" rel="noopener noreferrer">{{
'labels.inputs.Manage Employees' | translate
}}</a>
</p>
@@ -41,7 +41,7 @@
<h2>{{ 'labels.heading.Manage Funds' | translate }}</h2>
<p class="mw300">
{{ 'labels.text.Used Add Fund' | translate }}:
<a href="https://mifosforge.jira.com/wiki/spaces/docs/pages/67141736/Manage+Funds" target="_blank">{{
<a [href]="'manageFunds' | documentationLink" target="_blank" rel="noopener noreferrer">{{
'labels.inputs.Manage Funds' | translate
}}</a>
</p>
@@ -74,7 +74,7 @@
<h2>{{ 'labels.heading.Create Office' | translate }}</h2>
<p class="mw400">
{{ 'labels.text.Filling Details' | translate }}
<a href="https://mifosforge.jira.com/wiki/spaces/docs/pages/67141727/Manage+Offices" target="_blank">{{
<a [href]="'manageOffices' | documentationLink" target="_blank" rel="noopener noreferrer">{{
'labels.inputs.Manage Offices' | translate
}}</a>
</p>
@@ -52,7 +52,7 @@
<h2>{{ 'labels.heading.Working Days' | translate }}</h2>
<p class="mw400">
{{ 'labels.text.Click (Define Working Days)' | translate }}:
<a href="https://mifosforge.jira.com/wiki/spaces/docs/pages/90243212/Working+Days" target="_blank">{{
<a [href]="'workingDays' | documentationLink" target="_blank" rel="noopener noreferrer">{{
'labels.inputs.Working Days' | translate
}}</a>
</p>
+12
View File
@@ -0,0 +1,12 @@
import { Pipe, PipeTransform, inject } from '@angular/core';
import { DocumentationLinksService } from 'app/shared/services/documentation-links.service';
import { DocumentationPage } from 'app/shared/constants/documentation-links';
@Pipe({ name: 'documentationLink', standalone: true })
export class DocumentationLinkPipe implements PipeTransform {
private documentationLinks = inject(DocumentationLinksService);
transform(page: DocumentationPage): string {
return this.documentationLinks.getUrl(page);
}
}
@@ -152,7 +152,7 @@
<ng-template #templateChargesTable let-popover="popover">
<h4 class="mw300">
{{ 'labels.heading.List of charges in the organization. For more details click' | translate }}:
<a href="https://mifosforge.jira.com/wiki/spaces/docs/pages/72908813/Charges" target="_blank">{{
<a [href]="'charges' | documentationLink" target="_blank" rel="noopener noreferrer">{{
'labels.heading.Charges' | translate
}}</a>
</h4>
@@ -86,7 +86,7 @@
<ng-template #templateFixedProductsTable let-popover="popover">
<h4 class="mw300">
{{ 'labels.text.List of fixed deposit products in the organization' | translate }}:
<a href="https://mifosforge.jira.com/wiki/spaces/docs/pages/102629544/Fixed+Deposit+Products" target="_blank">{{
<a [href]="'fixedDepositProducts' | documentationLink" target="_blank" rel="noopener noreferrer">{{
'labels.inputs.Fixed Deposit Products' | translate
}}</a>
</h4>
@@ -104,7 +104,7 @@
<ng-template #templateLoanProductsTable let-popover="popover">
<h4 class="mw300">
{{ 'labels.heading.List of loan products in the organization' | translate }}:
<a href="https://mifosforge.jira.com/wiki/spaces/docs/pages/102039585/Loan+Products" target="_blank">{{
<a [href]="'loanProducts' | documentationLink" target="_blank" rel="noopener noreferrer">{{
'labels.heading.Loan Products' | translate
}}</a>
</h4>
@@ -95,7 +95,7 @@
<ng-template #templateRecurringProductsTable let-popover="popover">
<h4 class="mw300">
{{ 'labels.heading.List of recurring deposit products in the organization' | translate }}:
<a href="https://mifosforge.jira.com/wiki/spaces/docs/pages/102629552/Recurring+Deposit" target="_blank">{{
<a [href]="'recurringDepositProducts' | documentationLink" target="_blank" rel="noopener noreferrer">{{
'labels.heading.Recurring Deposit Products' | translate
}}</a>
</h4>
@@ -81,7 +81,7 @@
<ng-template #templateSavingProductTable let-popover="popover">
<h4 class="mw300">
{{ 'labels.heading.List of saving products in the organization' | translate }}:
<a href="https://mifosforge.jira.com/wiki/spaces/docs/pages/102629497/Savings+Products" target="_blank">{{
<a [href]="'savingsProducts' | documentationLink" target="_blank" rel="noopener noreferrer">{{
'labels.heading.Savings Products' | translate
}}</a>
</h4>
@@ -86,7 +86,7 @@
<ng-template #templateShareProductsTable let-popover="popover">
<h4 class="mw300">
{{ 'labels.heading.List of share products in the organization' | translate }}:
<a href="https://mifosforge.jira.com/wiki/spaces/docs/pages/129531946/Share+products" target="_blank">{{
<a [href]="'shareProducts' | documentationLink" target="_blank" rel="noopener noreferrer">{{
'labels.text.Share Products' | translate
}}</a>
</h4>
@@ -0,0 +1,80 @@
export type DocumentationPage =
| 'userManual'
| 'closingEntries'
| 'addJournalEntries'
| 'chartOfAccountsSetup'
| 'financialActivityMappings'
| 'migrateOpeningBalances'
| 'users'
| 'keyDesignPrinciples'
| 'rolesAndPermissions'
| 'shareProducts'
| 'loanProducts'
| 'manageReports'
| 'manageDataTables'
| 'manageSchedulerJobs'
| 'globalConfiguration'
| 'savingsProducts'
| 'manageCodes'
| 'configureMakerCheckerTasks'
| 'fixedDepositProducts'
| 'recurringDepositProducts'
| 'charges'
| 'workingDays'
| 'manageEmployees'
| 'currencyConfiguration'
| 'manageOffices'
| 'manageFunds'
| 'mifosHome'
| 'mifosCommunity'
| 'mifosVolunteer'
| 'fineractFunctionalSpecs'
| 'fineractContributorZone'
| 'mifosUserGroup'
| 'mifosDeveloperGroup'
| 'mifosIrc'
| 'sourceforgeMifos'
| 'mifosDonate'
| 'cronmaker';
export const DOCUMENTATION_PATHS: Record<DocumentationPage, string> = {
userManual: 'spaces/docs/pages/52035622/User+Manual',
closingEntries: 'spaces/docs/pages/67895316/Closing+Entries',
addJournalEntries: 'spaces/docs/pages/67895310/Add+Journal+Entries',
chartOfAccountsSetup: 'spaces/docs/pages/67141745/Chart+of+Accounts+-+General+Ledger+Setup',
financialActivityMappings: 'spaces/docs/pages/106430472/Accounts+linked+to+Financial+Activities',
migrateOpeningBalances: 'spaces/docs/pages/90243328/Migrate+opening+balances+Office-wise',
users: 'spaces/docs/pages/67141740/Users',
keyDesignPrinciples: 'spaces/MDZ/pages/92012624/Key+Design+Principles',
rolesAndPermissions: 'spaces/docs/pages/67895364/Manage+Roles+and+Permissions',
shareProducts: 'spaces/docs/pages/129531946/Share+products',
loanProducts: 'spaces/docs/pages/102039585/Loan+Products',
manageReports: 'spaces/docs/pages/67895354/Manage+Reports',
manageDataTables: 'spaces/docs/pages/52592760/Manage+Data+Tables',
manageSchedulerJobs: 'spaces/docs/pages/67895356/Manage+Scheduler+Jobs',
globalConfiguration: 'spaces/docs/pages/67895362/Global+Configuration',
savingsProducts: 'spaces/docs/pages/102629497/Savings+Products',
manageCodes: 'spaces/docs/pages/67895350/Manage+Codes',
configureMakerCheckerTasks: 'spaces/docs/pages/67895359/Configure+Maker-Checker+Tasks',
fixedDepositProducts: 'spaces/docs/pages/102629544/Fixed+Deposit+Products',
recurringDepositProducts: 'spaces/docs/pages/102629552/Recurring+Deposit',
charges: 'spaces/docs/pages/72908813/Charges',
workingDays: 'spaces/docs/pages/90243212/Working+Days',
manageEmployees: 'spaces/docs/pages/67141732/Manage+Employees',
currencyConfiguration: 'spaces/docs/pages/67141734/Currency+Configuration',
manageOffices: 'spaces/docs/pages/67141727/Manage+Offices',
manageFunds: 'spaces/docs/pages/67141736/Manage+Funds',
// External links (full URLs)
mifosHome: 'https://mifos.org/',
mifosCommunity: 'https://mifos.org/resources/community/',
mifosVolunteer: 'https://mifos.org/take-action/volunteer/',
fineractFunctionalSpecs:
'https://cwiki.apache.org/confluence/display/FINERACT/Apache+Fineract+1.0+Functional+Specifications',
fineractContributorZone: 'https://cwiki.apache.org/confluence/display/FINERACT/Contributor%27s+Zone',
mifosUserGroup: 'https://groups.google.com/forum/#!forum/mifosusers',
mifosDeveloperGroup: 'https://groups.google.com/forum/#!forum/mifosdeveloper',
mifosIrc: 'https://mifos.org/resources/community/communications/#mifos-irc',
sourceforgeMifos: 'https://sourceforge.net/projects/mifos/',
mifosDonate: 'https://mifos.org/donate/',
cronmaker: 'http://www.cronmaker.com/'
};
@@ -0,0 +1,48 @@
import { Injectable } from '@angular/core';
import { environment } from '../../../environments/environment';
import { DOCUMENTATION_PATHS, DocumentationPage } from '../constants/documentation-links';
const DEFAULT_DOCUMENTATION_BASE_URL = 'https://mifosforge.jira.com/wiki';
@Injectable({
providedIn: 'root'
})
export class DocumentationLinksService {
private readonly baseUrl = this.normalizeBaseUrl(environment.documentationBaseUrl || DEFAULT_DOCUMENTATION_BASE_URL);
/**
* Build a full documentation URL for the given page key.
*/
getUrl(page: DocumentationPage): string {
const path = DOCUMENTATION_PATHS[page];
if (!path) {
console.warn(`Unknown documentation page key requested: ${page}`);
return this.baseUrl;
}
return this.buildUrl(path);
}
/**
* Open the documentation URL for the given page key.
*/
open(page: DocumentationPage, target: string = '_blank'): void {
const url = this.getUrl(page);
const windowFeatures = target === '_blank' ? 'noopener' : undefined;
window.open(url, target, windowFeatures);
}
private normalizeBaseUrl(value: string): string {
return (value || DEFAULT_DOCUMENTATION_BASE_URL).replace(/\/+$/, '');
}
private buildUrl(path: string): string {
if (!path) {
return this.baseUrl;
}
if (/^https?:\/\//i.test(path)) {
return path;
}
const cleanPath = path.replace(/^\/+/, '');
return `${this.baseUrl}/${cleanPath}`;
}
}
+2
View File
@@ -14,6 +14,7 @@ import { MatDatepickerInput, MatDatepickerToggle, MatDatepicker } from '@angular
import { MatButton } from '@angular/material/button';
import { MatCheckbox } from '@angular/material/checkbox';
import { DateFormatPipe } from '@pipes/date-format.pipe';
import { DocumentationLinkPipe } from '@pipes/documentation-link.pipe';
import { TranslatePipe as NgxTranslatePipe } from '@ngx-translate/core';
import { TranslatePipe } from '@pipes/translate.pipe';
import { HasPermissionDirective } from './directives/has-permission/has-permission.directive';
@@ -43,6 +44,7 @@ export const STANDALONE_SHARED_IMPORTS = [
MatButton,
MatCheckbox,
DateFormatPipe,
DocumentationLinkPipe,
HasPermissionDirective,
// Pipes and Directives
@@ -33,7 +33,7 @@
<p class="mw400">
{{ 'labels.text.To create code,create' | translate }}<br />
{{ 'labels.text.For more details click' | translate }}:
<a href="https://mifosforge.jira.com/wiki/spaces/docs/pages/67895350/Manage+Codes" target="_blank">{{
<a [href]="'manageCodes' | documentationLink" target="_blank" rel="noopener noreferrer">{{
'labels.inputs.Manage Codes' | translate
}}</a>
</p>
@@ -96,7 +96,7 @@
<ng-template #templateConfigurationsTable let-data let-popover="popover">
<h4 class="mw300">
{{ 'labels.heading.Global Configuration options' | translate }}:
<a href="https://mifosforge.jira.com/wiki/spaces/docs/pages/67895362/Global+Configuration" target="_blank">{{
<a [href]="'globalConfiguration' | documentationLink" target="_blank" rel="noopener noreferrer">{{
'labels.inputs.Global Configurations' | translate
}}</a>
</h4>
@@ -88,11 +88,9 @@
<ng-template #templateMcTable let-popover="popover">
<h4 class="mw300">
{{ 'labels.heading.List of all maker checker tasks' | translate }}:
<a
href="https://mifosforge.jira.com/wiki/spaces/docs/pages/67895359/Configure+Maker-Checker+Tasks"
target="_blank"
>{{ 'labels.inputs.Configure Maker-Checker Tasks' | translate }}</a
>
<a [href]="'configureMakerCheckerTasks' | documentationLink" target="_blank" rel="noopener noreferrer">{{
'labels.inputs.Configure Maker-Checker Tasks' | translate
}}</a>
</h4>
<div class="layout-row align-end gap-2px responsive-column">
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
@@ -219,7 +219,7 @@
<h2>{{ 'labels.buttons.Create Datatable' | translate }}</h2>
<p class="mw400">
{{ 'labels.text.Filling Details' | translate }}
<a href="https://mifosforge.jira.com/wiki/spaces/docs/pages/52592760/Manage+Data+Tables" target="_blank">{{
<a [href]="'manageDataTables' | documentationLink" target="_blank" rel="noopener noreferrer">{{
'labels.inputs.Manage Datatables' | translate
}}</a>
</p>
@@ -218,7 +218,7 @@
<ng-template #templateJobsTable let-data let-popover="popover">
<h4>
{{ 'labels.heading.List of all scheduled batch jobs' | translate }}
<a href="https://mifosforge.jira.com/wiki/spaces/docs/pages/67895356/Manage+Scheduler+Jobs" target="_blank">{{
<a [href]="'manageSchedulerJobs' | documentationLink" target="_blank" rel="noopener noreferrer">{{
'labels.heading.Schedular Jobs' | translate
}}</a>
</h4>
@@ -39,7 +39,7 @@
</div>
<div class="flex-50">
<a href="http://www.cronmaker.com/">
<a [href]="'cronmaker' | documentationLink" target="_blank" rel="noopener noreferrer">
{{ 'labels.text.Click Here To Generate Cron Expression' | translate }}
</a>
</div>
@@ -139,7 +139,7 @@
<ng-template #templateReportsTable let-popover="popover">
<h4 class="mw300">
{{ 'labels.heading.List of all currently available reports' | translate }}:
<a href="https://mifosforge.jira.com/wiki/spaces/docs/pages/67895354/Manage+Reports" target="_blank">{{
<a [href]="'manageReports' | documentationLink" target="_blank" rel="noopener noreferrer">{{
'labels.heading.Manage Reports' | translate
}}</a>
</h4>
@@ -108,11 +108,9 @@
<ng-template #templateTableRolesandPermissions let-popover="popover">
<h4 class="mw300">
{{ 'labels.heading.List of roles defined within the organization' | translate }}:
<a
href="https://mifosforge.jira.com/wiki/spaces/docs/pages/67895364/Manage+Roles+and+Permissions"
target="_blank"
>{{ 'labels.inputs.Manage Roles and Permission' | translate }}</a
>
<a [href]="'rolesAndPermissions' | documentationLink" target="_blank" rel="noopener noreferrer">{{
'labels.inputs.Manage Roles and Permission' | translate
}}</a>
</h4>
<div class="layout-row align-end gap-2px responsive-column">
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
@@ -201,7 +201,7 @@
<h2>{{ 'labels.heading.Create User' | translate }}</h2>
<p class="mw400">
{{ 'labels.text.Filling Details' | translate }}:
<a href="https://mifosforge.jira.com/wiki/spaces/docs/pages/67141740/Users" target="_blank">{{
<a [href]="'users' | documentationLink" target="_blank" rel="noopener noreferrer">{{
'labels.inputs.Users' | translate
}}</a>
</p>
+4 -2
View File
@@ -22,6 +22,7 @@ import { ThemeStorageService } from './shared/theme-picker/theme-storage.service
import { AlertService } from './core/alert/alert.service';
import { AuthenticationService } from './core/authentication/authentication.service';
import { SettingsService } from './settings/settings.service';
import { DocumentationLinksService } from 'app/shared/services/documentation-links.service';
import { IdleTimeoutService } from './home/timeout-dialog/idle-timeout.service';
import { SessionTimeoutDialogComponent } from './home/timeout-dialog/session-timeout-dialog.component';
@@ -121,7 +122,8 @@ export class WebAppComponent implements OnInit, OnDestroy {
private themingService: ThemingService,
private dateUtils: Dates,
private idle: IdleTimeoutService,
private dialog: MatDialog
private dialog: MatDialog,
private documentationLinks: DocumentationLinksService
) {}
@HostBinding('class') public cssClass: string;
@@ -264,7 +266,7 @@ export class WebAppComponent implements OnInit, OnDestroy {
}
help() {
window.open('https://mifosforge.jira.com/wiki/spaces/docs/pages/52035622/User+Manual', '_blank');
this.documentationLinks.open('userManual');
}
// Monitor all keyboard events and excute keyboard shortcuts
@@ -211,7 +211,7 @@
<h2>{{ 'labels.heading.Create User' | translate }}</h2>
<p class="mw400">
{{ 'labels.text.Filling Details' | translate }}:
<a href="https://mifosforge.jira.com/wiki/spaces/docs/pages/67141740/Users" target="_blank">{{
<a [href]="'users' | documentationLink" target="_blank" rel="noopener noreferrer">{{
'labels.inputs.Users' | translate
}}</a>
</p>
+3
View File
@@ -32,6 +32,9 @@
// Display or not the Tenant Selector
window['env']['displayTenantSelector'] = '$MIFOS_DISPLAY_TENANT_SELECTOR';
// Documentation base URL for in-app help links
window['env']['documentationBaseUrl'] = '$MIFOS_DOCUMENTATION_BASE_URL';
// Time in seconds for Notifications, default 60 seconds
window['env']['waitTimeForNotifications'] = '$MIFOS_WAIT_TIME_FOR_NOTIFICATIONS';
+1
View File
@@ -53,6 +53,7 @@ export const environment = {
displayBackEndInfo: loadedEnv['displayBackEndInfo'] || 'true',
displayTenantSelector: loadedEnv['displayTenantSelector'] || 'true',
tenantLogoUrl: loadedEnv['tenantLogoUrl'] || 'assets/images/mifos_lg-logo.png',
documentationBaseUrl: loadedEnv['documentationBaseUrl'] || 'https://mifosforge.jira.com/wiki',
// Time in seconds, default 60 seconds
waitTimeForNotifications: loadedEnv['waitTimeForNotifications'] || 60,
// Time in seconds, default 30 seconds
+1
View File
@@ -57,6 +57,7 @@ export const environment = {
displayBackEndInfo: loadedEnv.displayBackEndInfo || 'true',
displayTenantSelector: loadedEnv.displayTenantSelector || 'true',
tenantLogoUrl: loadedEnv.tenantLogoUrl || 'assets/images/mifos_lg-logo.png',
documentationBaseUrl: loadedEnv.documentationBaseUrl || 'https://mifosforge.jira.com/wiki',
// Time in seconds, default 60 seconds
waitTimeForNotifications: loadedEnv.waitTimeForNotifications || 60,
// Time in seconds, default 30 seconds