orangehrm / orangehrm

OrangeHRM is a comprehensive Human Resource Management (HRM) System that captures all the essential functionalities required for any enterprise.
GNU General Public License v3.0
740 stars 538 forks source link

Recruitmentplugin change note characters limit #1797

Open mrdanleey opened 3 months ago

mrdanleey commented 3 months ago

When someone applies on a job I recieve a letter and a cv. I can upload the letter and want to paste the content of the letter in the notes field.

The max characters limit (250) is to small so I wanted to increase this limit to 25000.

I looked up the files which are loaded in my webbrowser when opening the recruitment AddCandidate page.

I found: orangehrm/orangehrm/main/src/client/orangehrmRecruitmentPlugin/pages/SaveCandidate.vue

I opened the file and searched for the configured limits. I found this code:

  rules: {
    firstName: [required, shouldNotExceedCharLength(30)],
    lastName: [required, shouldNotExceedCharLength(30)],
    middleName: [shouldNotExceedCharLength(30)],
    email: [required, validEmailFormat, shouldNotExceedCharLength(50)],
    contactNumber: [validPhoneNumberFormat, shouldNotExceedCharLength(25)],
    notes: [shouldNotExceedCharLength(250)],
    keywords: [shouldNotExceedCharLength(250)],
    resume: [
      maxFileSize(this.maxFileSize),
      validFileTypes(this.allowedFileTypes),
    ],
    applyDate: [
      validDateFormat(this.userDateFormat),
      shouldBeCurrentOrPreviousDate(),
    ],
  },
};

},

Now, when I change the limit for notes from 250 to 25000, save the file, clean the cache on my server and desktop I still get the error that the limit is 250 characters.

How can I increase this limit then?

devishke-orange commented 3 months ago

Hi @mrdanleey,

You need to build the frontend after making the change.

Please refer: https://github.com/orangehrm/orangehrm/wiki/5.x-development-guide#how-to-build-front-end-dependencies

mrdanleey commented 3 months ago

I'm running Ubuntu Server and do not have the command 'Yarn' so cannot build the frontend. How should I do it then? Can I edit some files manually?

I do not have the notification of the 250 char limit now, but get a error when saving the new canditate:

Uncaught (in promise) Object { stack: "Q@https://stageregistratie.nl/web/dist/js/chunk-vendors.js?v=1688731390829:134:38797\nQe@https://stageregistratie.nl/web/dist/js/chunk-vendors.js?v=1688731390829:134:50105\nu@https://stageregistratie.nl/web/dist/js/chunk-vendors.js?v=1688731390829:134:53146\n", message: "Request failed with status code 422", name: "AxiosError", code: "ERR_BAD_REQUEST", config: {…}, request: XMLHttpRequest, response: {…} } ​ code: "ERR_BAD_REQUEST" ​ config: Object { timeout: 0, xsrfCookieName: "XSRF-TOKEN", xsrfHeaderName: "X-XSRF-TOKEN", … } ​​ adapter: Array [ "xhr", "http" ] ​​ baseURL: "/web/index.php" ​​ data: '{"firstName":"t","middleName":null,"lastName":"t","email":"t@test.nl","contactNumber":null,"keywords":null,"comment":"testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttest","dateOfApplication":"2024-02-01","consentToKeepData":false}' ​​ env: Object { FormData: (), Blob: () } ​​ headers: Object { Accept: "application/json", "Content-Type": "application/json" } ​​ maxBodyLength: -1 ​​ maxContentLength: -1 ​​ method: "post" ​​ timeout: 0 ​​ transformRequest: Array [ transformRequest(e, t) ] ​​ transformResponse: Array [ transformResponse(e) ] ​​ transitional: Object { silentJSONParsing: true, forcedJSONParsing: true, clarifyTimeoutError: false } ​​ url: "/api/v2/recruitment/candidates" ​​ validateStatus: function validateStatus(e) ​​ xsrfCookieName: "XSRF-TOKEN" ​​ xsrfHeaderName: "X-XSRF-TOKEN" ​​

: Object { … } ​ message: "Request failed with status code 422" ​ name: "AxiosError" ​ request: XMLHttpRequest { readyState: 4, timeout: 0, withCredentials: false, … } ​ response: Object { data: {…}, status: 422, statusText: "Unprocessable Content", … } ​ stack: "Q@https://stageregistratie.nl/web/dist/js/chunk-vendors.js?v=1688731390829:134:38797\nQe@https://stageregistratie.nl/web/dist/js/chunk-vendors.js?v=1688731390829:134:50105\nu@https://stageregistratie.nl/web/dist/js/chunk-vendors.js?v=1688731390829:134:53146\n" ​ : Object { constructor: Q(e, t, n, r, o), toJSON: toJSON() , stack: "", … } ​​ constructor: function Q(e, t, n, r, o) ​​ isAxiosError: true ​​ stack: "" ​​ toJSON: function toJSON()​​ : Error.prototype { stack: "", … } ​​​ constructor: function Error() ​​​ message: "" ​​​ name: "Error" ​​​ stack: "" ​​​ toString: function toString() ​​​ : function stack() ​​​ : function stack() ​​​ : Object { … } ​​​​ __defineGetter__: function __defineGetter__() ​​​​ __defineSetter__: function __defineSetter__() ​​​​ __lookupGetter__: function __lookupGetter__() ​​​​ __lookupSetter__: function __lookupSetter__() ​​​​ __proto__: ​​​​ constructor: function Object() ​​​​ hasOwnProperty: function hasOwnProperty() ​​​​ isPrototypeOf: function isPrototypeOf() ​​​​ propertyIsEnumerable: function propertyIsEnumerable() ​​​​ toLocaleString: function toLocaleString() ​​​​ toString: function toString() ​​​​ valueOf: function valueOf() ​​​​ : function __proto__() ​​​​ : function __proto__() ​​​​​ length: 1 ​​​​​ name: "set __proto__" ​​​​​ : function () ​​​​​​ apply: function apply() ​​​​​​ arguments: ​​​​​​ bind: function bind() ​​​​​​ call: function call() ​​​​​​ caller: ​​​​​​ constructor: function Function() ​​​​​​ length: 0 ​​​​​​ name: "" ​​​​​​ toString: function toString()​​​​​​ Symbol(Symbol.hasInstance): function Symbol.hasInstance() ​​​​​​ : function arguments() ​​​​​​ : function arguments() ​​​​​​ : function caller() ​​​​​​ : function caller() ​​​​​​ : Object { … }