-----BEGIN PGP SIGNED MESSAGE----- osCommerce Product Manager for Windows (oscpmwin) Copyright ©2003-2007 by Mario A. Valdez-Ramirez. (mario@mariovaldez.org). (Read the license.txt file for details). This is version 0.4.1.683 Summary of latest changes: * Increased limits. * Faster category tree rendering. * New SQL-HTTP database link. * Compatibility with SQL changes in MySQL 5. * Updated translations. * Compatibility with Delphi 6 Personal. * Support for Windows XP themes. * Increased security. * Several bug fixes. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.4.1.683, 2007/05/15: Compiled with Turbo Delphi for Win32 (similar to Delphi 2006). Added oscpm1.exe.manifest file to allow the application be integrated with the Windows XP themes. Fixed several dialogs to allow them to be resizeable, to include a status bar, to increase the lower margin (so it display properly with some Windows XP themes) or expand them horizontally. Fixed PRopm_AttachComment procedure in imageman.pas unit, changing the way the comment string lenght is determined. Previously we used SizeOf, which was incorrect as it only returned 5 as the lenght (it was a long string). Now it uses the normal Lenght. This bug was not documented. Fixed license.pas file which was setting the form's title twice. Modified FNopm_FullRemoteError function in network.pas unit to report also the expected version of the server-side script when error 1000 is detected. This is part of the fix of Bug #333. Modified FNopm_FullRemoteError function in network.pas unit to recognize error 1024, when the client's IP address is blocked because of too many login failures. This is part of the fix of Bug #339. Modified FNopm_WebDB_Query function in network.pas unit to report the total record and column counts, and decoded data payload size to the SQL log. This is part of the fix of Bug #332. Modified FNopm_Unserial_DBQuery function in network.pas unit to calculate and store the received and decoded data payload size. Also added some missing variable initialization code. This is part of the fix of Bug #332. Fixed opmT_OpenPictureDialog.Execute function in openpicdlg.pas unit, so Execute returns a boolean value (which was missing in the declaration). This compiled in Delphi 6 but didn't in Turbo Delphi. Modified runmod.pas unit according to a minor change in the layout of the form (we deleted a panel from it and made the form sizable). Added new dialog window to display the phpinfo dump from the server to ease debugging and problem-reporting. This dump is obtained when connecting with the server. This is part of the fix of Bug #338. Added two new fields to opmR_DBQuery_Recordset record (used to store the recordsets received from the server-side script) to store the decoded and received data sizes in oscpmdata.pas unit. This is part of the fix of Bug #332. Added variable to store the phpinfo dump (opmG_PHPInfo). This is part of the fix of Bug #338. Updated the main copyright notice. Added PRopm_ResetServerVars procedure to main.pas unit to reset some server-related variables which were note being properly reset (like capability variables and the phpinfo dump). Modified opm_MenuItem_ConnectClick to do the PHPINFO query (phpinfo dump) after the CAPA query. This is part of the fix of Bug #338. Modified PRopm_LoadLanguageList procedure in main.pas unit to set the opm_CurrentLang variable to the first available language if it is not set with a valid Language ID. This is part of the fix of Bug #334. Increased the script version number from 0.8.8 to 0.8.9. Added code to support the new PHPINFO operation in the server-side script oscpm1_upload.php, which just send a text-only dump of the phpinfo function to the client. This is part of the fix of Bug #338. Added code to the server-side script oscpm1_upload.php to detect and block brute-force (dictionary) attacks to try to guess the password. This is part of the fix of Bug #339. We use the whois_online database table to store the tracking information for each IP address attempting to connect. By default, the script will allow eight login attempts, forcing a delay of 15 seconds between logins after the first failure; after those eight failures, it will block the IP address for one hour. The tracking information is kept for 15 minutes, except for blocked clients, which are followed for one hour. Modified the opm_FNmkdirs in the server-side script oscpm1_upload.php to set the directories permisions to 0777. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.4.1.646, 2006/04/15: Tested with MemCheck for memory leaks. Deleted unused StringLists opmG_PastHost_BoxList and opmG_PastDatabase_BoxList and some related variables (in oscpmdata.pas). Checked unused referenced units with Icarus (from Peganza [www.peganza.com]). Deleted two references TField and TDBGrid which caused a dependency on the DB units of Delphi (which are not included with Delphi 6 Personal edition). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.4.1.642, 2006/04/06: Added two new options to the Configuration window (config.dfm) and supporting code in config.pas to make the HTTP compression optional (useful for LANs) and to disable/enable the autocentering of images when editing products when the user has installed the MorePics6 extension in osCommerce (autocentering has usabilities issues when editing the images). Added supporting code to main.pas, oscpmdata.pas, pedit.pas and network.pas. These changes are part of the fix for Bug #318 (compression) and Bug #313 (autocentering). Added new parameter (Gz) to server-side script (oscpm1_upload.php) to request a compressed or an uncompressed recordset. This is part of the fix of Bug #318. Increased the script version number from 0.8.5 to 0.8.8. Removed the files docs/debug_license.txt, license_debug.rc and license_debug.res, as the debug license is no longer needed. Also removed the conditional including of the license_debug.res file in the license.pas file. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.4.1.636, 2006/04/04: Fixed a bug introduced in 0.4.1.632 in the server-side script, causing it to always report that all known extensions were available. This caused the failing of the product-list loading if the user does not have the MorePic6 installed. This is part of the fix of Bug #321. Also, increased the version number of the server-side script from 0.8.4 to 0,8.5. Corrected minor unreported bug that caused the SQL Log window to clear the content of the log if the user pressed the key ESC. Modified oscpmdata.pas to increase the limits of the application. Max products from 35000 to 50000. Max descriptions from 700000 to 1000000. Max categories from 5000 to 10000. Max manufacturers from 5000 to 8000. This fixes Bug #83 (which was reopened). Modified PRopm_LoadCategoryList procedure in main.pas so that the SQL query to get the categories list is sorted by the Parent_ID field. This is part of the fix of Bug #111. Added FNopm_FirstCat_byParent function to main.pas to do a binary search with a reverse-sequential subsearch to find the first element with a given parent_id in the category list (a opmT_CategoryList array). To be used by PRopm_AddCatTreeNode. This is part of the fix of Bug #111. Modified PRopm_AddCatTreeNode procedure in main.pas. Previously, this procedure called itself recursively to cross all values of the global category list to find the parent nodes of all categories, and build the category tree. This caused that the needed iterations to find the child nodes of each parent grown geometrically. To avoid this, now the procedure finds the first child node of a given parent node with a binary search (from FNopm_FirstCat_byParent), then started adding nodes from there and calling itself as needed. The total needed iterations are now close to (Cats * 2), not (Cats * Cats) as before. Also, modified the code to avoid using AbsoluteIndex from the current TTreeNode, because it was computationally very expensive and it was useless. This is part of the fix of Bug #111. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.4.1.632, 2006/03/27: Lot of changes to config.pas and config.dfm (the Configuration window) to remove the now obsolete DM connection settings and SSH-tunnel connection settings. This is part of the fix of Bug #66. Deleted several unused functions from dataman.pas: PRopm_StopExternalApp, PRopm_StopExternalAppByName, FNopm_IsAppRunning, This is part of the fix of Bug #66. Renamed function opm_FNMD5 to FNopm_MD5 for uniformity, in dataman.pas. Added functions FNopm_Base64_Encode, FNopm_Base64_Decode, FNopm_Deflate and FNopm_Inflate to dataman.pas. This is part of the fix of Bug #66 and Bug #317. In FNopm_CleanString function (in dataman.pas), deleted a loop to remove double blank spaces. This was needed to improve the performance of the new HTTP-SQL link functions. Deleted unused functions FNopm_ImageNameIsGIF2 and FNopm_ImageNameIsGIF from imageman.pas. Deleted several constants and variables in oscpmdata.pas related to the now obsolete DB code. Added opmR_DBQuery_Recordset and opmT_DBQuery_Dataset type structures to hold the recordset-like data returned by the server-side script when using the HTTP-SQL DB connection. This is part of the fix of Bug #66. Fixed an undocumented bug in procedure PRopm_WriteLog that caused it to write log entries even if logging was disabled. Deleted several functions from network.pas: FNopm_ExecQuery, FNopm_BuildTunnelCall, FNopm_OpenSSHTunnel, PRopm_CloseSSHTunnel, FNopm_CheckStallTunnel, because they are now unused. This is part of the fix of Bug #66. Deleted opmG_DBConnection (a TZConnection instance) and opmG_DBQuery (a TZQuery instance) from network.pas, because they are now unused. This is part of the fix of Bug #66. Added functions to network.pas, related to the new HTTP-SQL connection: FNopm_WebDB_Query, PRopm_Close_WebDBQuery, FNopm_Unserial_DBQuery. This is part of the fix of Bug #66. Changed several functions in main.pas related to the now obsolete DB connection: PRopm_Connect, PRopm_Disconnect, PRopm_LoadConfiguration, FormClose. This is part of the fix of Bug #66. Changed call to function FNopm_ExecQuery (in main.pas, runmod.pas) with FNopm_WebDB_Query to use the new HTTP-SQL DB connection. This is part of the fix of Bug #66. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.1.2.484, 2006/02/26: Added new funtion FNopm_FixURL to dataman.pas to check if the URL parameter has a known protocol defined (http or https). If it does not, then a default protocol is added. This is part of the fix of Bug #312. Added calls to FNopm_FixURL function in config.pas (config.dfm), in PRopm_ControlToVars function so that all URL options are fixed if needed. This is part of the fix of Bug #312. Updated all copyright statements in the source code files (to include the 2006 year). Modified oscpm1_upload.php server-side script to increase its version number to 0.8.1. Deprecated the configuration options opm_encoded_data and opm_raw_records in the server-side script (oscpm1_upload.php). Added additional tags for the formating of datasets returned to the client. Added a new parameter that can be received from the client (QY, a database query). Added ID numbers to error messages (this change was made in a previuos release but it seems it was not documented). Improved error handling in the XCHGRATES code. Added a DBQUERY operation to request database queries. Modified functions in network.pas (FNopm_Upload_File, FNopm_Send_Command, FNopm_Receive_File) so that they send an UN parameter (username) to the server-side script. Currently, this parameter is unused. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.1.2.450, 2006/01/23: Fixed SQL queries using LEFT JOINS in main.pas, for compatibility with SQL changes in MySQL 5. This is part of the fix of Bug #295. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.1.2.448, 2006/01/15: Updated English, Dutch and Russian translations. Fixed in the main form (main.dfm); the menu icons for export and print products were inverted. Changed format of sqllog.dfm form, because it was stored in binary format, not text. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.1.2.436, 2005/11/19: Fixed FormShow procedure in the askuser.pas file (from the AskUser dialog window), so that if the dialog will display a list of items, it does not try to delete the first and last item if the count of items is zero (only done when AU_PreCleanList window property is true). Modified opm_BitBtn_CurrencyUpdateAllClick in currencyman.pas file (from the currency management dialog) so that the new result code returned by the new FNopm_Send_Command function is evaluated and a proper error message is displayed. This is part of the fix of Bug #294. Modified opm_MenuItem_ConnectClick in main.pas so that the new resulting code returned by the FNopm_Send_Command function is evaluated and a meaningful error message is displayed. Also, if the remote osCommerce extensions cannot be checked the connection will not be completed (previously, this event was just ignored). This is part of the fix of Bug #294. Modified PRopm_DeleteProduct in main.pas to check the returned code of FNopm_Send_Command. If the image(s) cannot be deleted, a warning is displayed, but the processing is not stopped. This is part of the fix of Bug #294. Fixed PRopm_Create_ExportList and FNopm_Create_ExchangeList in main.pas so that opm_ListView_Main.Focused is not checked as condition to allow the creation of the exporting list. Previously, this caused the export list to be created with zero items when requesting the processing of the selected items in the product list with an external module, via a menu. (It seems the menu selection caused the Listview control to be considered effectively out of focus). This is part of the fix of Bug #296. Modified opm_MenuItem_BackupClick, opm_MenuItem_CheckUpdatesClick in main.pas to check the returned code of FNopm_Send_Command. This is part of the fix of Bug #294. Modified FNopm_Upload_File, FNopm_Send_Command and FNopm_Send_SimpleCommand functions in network.pas to return a result code extracted from the string returned from the remote server-side script. This is part of the fix of Bug #294. Added new FNopm_FullRemoteError function to network.pas used to convert the resulting codes used by the FNopm_Upload_File, FNopm_Send_Command and FNopm_Send_SimpleCommand functions to meaningful strings. This is part of the fix of Bug #294. Added new constants to oscpmdata.pas with new server-side script error codes. This is part of the fix of Bug #294. Modified oscpm1_upload.php server-side script to increase its version number to 0.1.15. Modified opm_BitBtn_PEditDeleteImgClick, opm_BitBtn_PEditUploadImgClick, opm_PRPrepareUpload, and opm_BitBtn_PEditSelectImgClick in pedit.pas (the product editing window) to check the returned code of FNopm_Send_Command and provide meaningful error messages. This is part of the fix of Bug #294. Added incomplete draft of the help file to be included in a later version. This file (oscpm1.sh5) is a HelpMaker 7 (from Vizacc Pte, Ltd) file. Modified NSI installer-generation scripts so that the external synchronization modules (samples) are not included in the installation file. The reason is to keep the project free from licensing issues (the example module included is not released under GPL, but under MIT-like license [it should be released under GPL when bundled with the main application]). Updated Croatian translation files by Igor Velijevic (vigor@hi.htnet.hr). Updated Russian translation files by Shmelev N. Nikolai (aerograf@rambler.ru). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.1.2.411, 2005/11/06: Fixed oscpm1_upload.php server-side script so that when loaded directly with a web browser returns an informative message about the status of the image directory and the database connection, some configuration information, some links, plus an identification string. Previously the script displayed an identification string and an error message. This fixes Bug #283 and Bug #284. Modified oscpm1_upload.php server-side script to increase its version number to 0.1.14. Added option to configuration window (config.dfm and config.pas) to allow the caching of the image filenames and dirnames in the server to improve the performance of the application when uploading images. The application, when asked to upload an image first load the directory tree of the image repository in the server. Also, when using the option to assign an existing image in the server to a product, the application download all image filenames. Added support code to config.pas and main.pas. Added supporting variables to oscpmdata.pas, including the cache TStringLists. This is part of the fix of Bug #290. Added a text field to configuration window (config.dfm and config.pas) to enter the PDF author to be included in the document properties when exporting a report as a PDF. Added supporting variables to oscpmdata.pas. This is part of the fix of Bug #292. Added button to the product editing window (pedit.dfm) to clear the cached image filename and dirname internal cache. Added support code to several functions in pedit.pas. This is part of the fix of Bug #290. Added function opm_PRCenterImage to pedit.pas so that when selecting an image panel (when using the multiimage features) the currently selected image is centered horizontally in the scrollbox. This speed up the image editing. This is part of the fix of Bug #291. Fixed missing hint in currencyman.dfm file. Added several additional icons to opm_ImageList_MainMenu ImageList in main.dfm to be used in the main menu. Added an option to the main menu of the main window (main.dfm) for an option to export the current product listing as PDF (using the same report used when printing). Added supporting code to main.pas. Added supporting variables to oscpmdata.pas. This is part of the fix of Bug #243. Added an option to the main menu of the main window (main.dfm) for an option to display the current SQL log file (OSCDEBUG.TXT) in a dialog window. Added supporting code to main.pas. This is part of the fix of Bug #282. Added function FNopm_ExtractFilePath to dataman.pas, to be used in pedit.pas when receiving the resuting image filename (with full path) from the server, because the Delphi ExtractFilePath does not work properly with Unix slashes as directory separator. Added file fr_e_tnpdf.pas to project. It contains the export filter for FreeReport to create PDF files using PowerPDF components. It is a little modified version from the original by Ricardo Cardona Ramirez to add several PDF document properties. Modified PowerPDF file PdfDoc.pas at line 2549; there is a bug in the "for i := 0 to 4 do" loop. The last value should be "3" and not "4". Also, uncomment "DEFINE NOZLIB" to disable Zlib compression. Added sqllog.dfm and sqllog.pas form, which is used to display the SQL log file. Created ignore.po file so some Delphi properties are not extracted from the source files when creating the source PO file for merging with the localized versions in the /locale directory. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.1.2.342, 2005/09/27: Fixed server-side script (oscpm1_upload.php) so it does not send any data to the client application when the operation requested a backup. Previously an OK START message was being sent before the HTTP headers, causing the download to fail if output-buffering was disabled in PHP. This is part of the fix of Bug #280. Modified oscpm1_upload.php server-side script to increase its version number to 0.1.13. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.1.2.340, 2005/09/25: Changed splash screen graphic (splash.dfm). Added code to splash.pas to display the current version over the splash image. Added two menu options to main window (main.dfm): Visit the homepage and Visit the web forums. Added supporting code to main.pas. This fixed Bug #279. Added opmG_FullUserAgent global variable to dataman.pas to preset the user agent string used with all web connections. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.1.2.330, 2005/09/22: Fixed the openpicdlg.rc file to include "DS_3DLOOK | DS_CONTROL" in the dialog definition of the template (equivalent to the 0x404L code). Added new option to Configuration window (config.dfm and config.pas) to enable or disable the alternate colors of the product listing (the color striping). Added supporting code to main.pas. Added variable and constant with default value in oscpmdata.pas. This is part of the fix of Bug #274. Added code to the currency update confirmation dialog (currupd.dfm, currupd.pas) and the module caller dialog (runmod.dfm and runmod.pas) to use the same color striping than the main product listing. This part of the fix of Bug #275. Updated FreeImage interface unit (freeimage.pas) to support the FITAG data type and related functions for image-tag management. This is part of the fix of Bug #276. Updated FreeImage interface unit (freeimage.pas) to support the FreeImage_GetBPP function. Modified openpicdlg.pas unit (for the custom Opendialog) so that the image and metadata are displayed in different panels. Minor fixes to position of controls. Added event handler for clicking of the preview checkbox. Changed selection behavior so that even if the image preview is disabled the metadata is shown. Added Targa to the list of supported image types in imageman.pas. Created PRopm_AttachComment procedure to attach a Comment metadata field to a given FreeImage bitmap. Modified FNopm_ConvertImage2 so that now it has a CommentStr parameter to include a Comment field in PNG or JPG files. This is part of the fix of Bug #276. Also modified FNopm_ConvertImage2 so that it uses the JPEGQuality parameter when saving BMP and PNG images; if the quality is zero, the image is color-reduced to 8-bits (256 colors), otherwise, is saved as 24-bits image. Deleted the code that allowed to save GIFs, as it is not used. Modified FNopm_ConvertImage2 so that if the JPEGQuality parameter is higher than 50, the NeuQuant algorithm (better) is used, otherwise, the X.Wu is used (faster). Changed calls to FNopm_ConvertImage2 in pedit.pas to use the comments parameter and to set correctly the quality parameter. This is part of the fix of Bug #276. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.1.2.267, 2005/09/21: Added openpicdlg.rc containing a dialog template to be applied to TOpenDialog descendant to add a lateral panel for a picture preview. Modified create_resources.bat so it generates openpicdlg.res, which is loaded by openpicdlg.pas code. This is part of the fix of bug #169. Added openpicdlg.pas unit containing a descendant of TOpenDialog (opmT_OpenPictureDialog) like TOpenPictureDialog that displays (optionally) a preview of the image files as they are selected before opening them. To be used primarily when selecting an image to upload. This is part of the fix of bug #169. Modified askupload.pas code and form so that it uses our new open dialog with preview and discontinue the use of the old TOpenDialog. This is part of the fix of bug #169. Deleted the ConfigDBDebug option (to show a database grid in the main form showing the current DB results) from the configuration window (config.pas and config.dfm). In the current state, it is no longer as useful as it was. Also, it caused a dependency on the data-aware components of Delphi (which are not used elsewhere in the application). All references to the option in oscpmdata.pas and main.pas were deleted too. Added a .TIF filter definition string to opmC_Def_UploadFilter (in imageman.pas) to enable the selection by default of TIFF files when selecting what image to upload. Created a new class opmT_GenericBitmap descendant of TBitmap to handle the loading of non-default image types (JPEG, PNG, TIFF, GIF, BMP, PSD, XMB and XPM). This class contains only one method (LoadFromFile) that use the functions from the imageman.pas unit. Added the function FNopm_DirtyConvertImage to convert as fast as possible from any image type supported by FreeImage to a BMP. Also, added initialization code to allow the registration (with RegisterFileFormat) of the supported image types. This was done to allow the automatic loading of the preview image in TOpenPictureDialog (now substitued by opmT_OpenPictureDialog). Added FNopm_GetImgTempPath function to imageman to get the OS temp path. This is part of the fix of bug #169. Added file deletion statement to FNopm_ConvertImage2 and FNopm_ResizeImage2 (in imageman.pas) to try to delete any previous temporary file. This is part of the fix of bug #271. Added function FNopm_HighlightColor to dataman.pas to return a color a bit lighter of a given one, or a bit darker is lighter is not possible. To be used to highlight some controls. Fixed function FNopm_CleanSQLString in dataman.pas to escape double-quotes. This bug was introduced while fixing Bug #261. Double-quotes should be escaped because we pass our SQL queries using double-quotes. Fixed function FNopm_CleanNumber in dataman.pas because it was returning Currency type numbers of 15 decimal places when we require 2 decimal places. This bug was introduced while fixing Bug #264. Added file deletion statement to FNopm_Download_File and FNopm_Receive_File to try to delete any previously existing file before saving the received one. Added OnCustomDrawItem event handler for the main product list (opm_ListView_Main) in the main form (main.dfm and main.pas), to paint the rows of the list with alternate colors. This is part of the fix of Bug #245. Fixed PRopm_Valid_ProdOps in main.pas to disable the Paste Product Record menu item when no catalog data is available. This is to fix an unreported bug. Fixed opm_PopMenuItem_PAddClick and opm_PopMenuItem_PPastePRClick in main.pas to reload the product list after pasting a product record or adding a new one. This is part of the fix of Bug #272. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.1.2.189, 2005/09/17: Changed all calls to non-multibyte compatible string functions to mb-compatible functions (POS to ANSIPOS, UPPERCASE to ANSIUPPERCASE, STRINGREPLACE to ANSIREPLACESTR) in the following files: balloon.pas, config.pas, currencyedit.pas, currencyman.pas, dataman.pas, imageman.pas, main.pas, modules.pas, network.pas and pedit.pas. Also, changed the verifications in FNopm_StripHTML (dataman.pas) so that the function does not delete parts of multibyte characters. These changes are part of the fix of Bug #200 and Bug #138. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.1.2.176, 2005/09/16: Added option to currency management dialog (currencyman.dfm and currencyman.pas) to set a currency as the default currency. This is part of the fix of Bug #268. Added checking code to PRopm_Reload_CurrList (in currencyman.pas) so that the automatic update button is only enabled when there is a default currency and there are two or more currencies defined in osCommerce. This is part of the fix of Bug #269. Modified opm_BitBtn_CurrencyDel onclick event (in currencyman.pas) to don't allow the deletion of the default currency. This is part of the fix of Bug #267. Modified the product description memo field in the product editing window (pedit.dfm) so that the property OEMConvert is set to false. This is to test if the Bug #200 is caused by this. Modified FNopm_LoadCurrencyList in main.pas so that the display name of the default currency shows a legend. Created PRopm_SetDefault_Currency procedure to main.pas to update the default currency. This is part of the fix of Bug #268. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.1.2.167, 2005/09/11: Modified license window (license.dfm) so that it can be resized. Added new option to main menu (in main.dfm) to manage the currencies of the osCommerce store. Added support code to main.pas (currency management functions), including the substitution of the FNopm_LoadCurrency function. This is part of the fix of bug #86. Changed all native Delphi functions regarding Float types conversion so now we call functions for Currency fixed-point type. This is part of the fix of bug #264. Fixed PRopm_Valid_CatOps so that root-level categories can be added. This is part of the fix of bug #265. Fixed PRopm_RenderCategoryDisplay so that there is always a category-tree node selected, and to use the opm_StopTreeOnChange so the OnChange event of the TTreeView is ignored even if fired. This is to fix a bug caused by the TTreeView Onchange event being fired at nuexpected times, causing the support routines to be called several times. The problem is that most procedures are not reentrant-safe. Fixed FNopm_GetTax function in pedit.pas so that the default tax rate if there is not any tax class (or the tax class is not found) be zero. This is part of the fix of bug #266. Changed calls in pedit.pas to FNopm_CleanNumber in several places so that the last parameter set the normalization to Currency type and not Float. Changed calls from FloatToStr to CurrToStr. This is part of the fix of bug #264. Added three new windows (currencyedit.dfm, currencyman.dfm and currupd.dfm) for adding, deleting, editing and automatic updating of currencies. This is part of the fix of bug #86. Added locale/iso4217_codes.txt and iso4217_codes.rc containing a list of known ISO 4217 currency codes. Modified create_resources.bat so it generates iso4217_codes.res, which is loaded in currencyedit form. This is part of the fix of bug #86. Changed calls in runmod.pas to FNopm_CleanNumber in several places so that the last parameter set the normalization to Currency type and not Float. Changed calls from StrToFloatDef to StrToCurrDef. This is part of the fix of bug #264. Modified oscpm1_upload.php server-side script to increase its version number to 0.1.12. Added several missing opm_FNDebug_Log sentences. Added three new parameters (opm_cfg_useproxy, opm_cfg_proxyaddress, opm_cfg_proxyport) to enable the use of a web proxy when connecting from the script to any external web server (like when downloading currency exchange rates). Added new opm_httpconn_timeout internal variable to set the timeout of web connections when connecting to external web servers. Added opm_useragent internal variable to us when connecting to external servers. Added new operator xchgrates to ask for the currency exchange rates of a given set of currencies (passed as ISO 4217 codes). Changed functions in dataman.pas that all native Delphi functions regarding conversion from or to Float types now call functions for Currency fixed-point type. This is part of the fix of bug #264. Added function PRopm_SplitString to dataman.pas to split a string into a TStrings type. Added new variables and constants to oscpmdata.pas to support all new currency-related operations. Extended opmR_Currency record type in oscopmdata.pas to store all metadata of osCommerce currencies. This is part of the fix of bug #86. Changed opmR_Product record type in oscpmdata.pas to use a Currency type as Weight field (previously it used a Real/Float type). Fixed also opmR_Tax for the field SumRate. This is part of the fix of bug #264. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.1.1.875, 2005/09/03: Updated version of gnugettext.pas file (from the dxgettext) from an untagged version to 1.176.2.10. Replaced all call to TranslateComponent in procedure PRopm_SetUILang (main.pas) by RetranslateComponent. Replaced all coded captions and hints in all forms to English strings. This is to fix the Bug #180. Due to this fix, all translation default.po files had to be reviewed again, because many strings became fuzzy-translated %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.1.1.864, 2005/08/30: Added two new options to the main form (main.dfm and main.pas) to copy and paste products. Only one product can be copied at a time (which data is stored in the global variables opm_CurrentProdID_CB, opm_CurrentProdRecord_CB and opm_CurrentSingleDescList_CB and then pasted only once when requested. Supporting code in opm_PopMenuItem_PCopyPRClick and opm_PopMenuItem_PPastePRClick. This is part of the fix of Bug #230 and #239. Added new option to the main form (main.dfm and main.pas) to set the window to full-screen when pressing F11 key. Supporting code in opm_MenuItem_FullscreenClick and PRopm_FullScreen. This is part of the fix of bug #246. Fixed opm_MenuItem_ConnectClick in main.pas so that a "noop" command is send to the server-side script just to chek that it is installed and has the correct version. If the script cannot be called, no connection is made to the database. This is part of the fix of Bug #259. Fixed PRopm_DeleteProduct in main.pas so that only needed "delete" calls to the server-side scripts are made. Previously, if the More Pics 6 extension is detected, the application would send seven image-deletion requests. This is to fix an unreported bug. Added supporting variables to store the position/size state of the main window when going to or returning from full-screen mode in oscpmdata.pas (opm_WeAreFullScreen, opmG_UIWindow_XPos and opmG_UIWindow_YPos). This is part of the fix of Bug #246. Also added the global variables opm_CurrentProdID_CB, opm_CurrentProdRecord_CB and opm_CurrentSingleDescList_CB. This is part of the fix of Bug #230 and #239. Modified oscpm1_upload.php server-side script to increase its version number to 0.1.11. Modified the command "delete" so that now can be "delete1" or "delete2". Previously, the script queried the database asking for any other product sharing the same product image. If there were at least two products sharing the same image, the image was not deleted. The rationale is that one of those products is the product currently being edited and the other one was bystander. The problem was that when deleting a product from the product listing, the server-side script is being asked to delete the image but the product record has been already deleted. So the checking should be against one (not two) records sharing the given product image. Now, "delete1" delete the image if less than one record is using the image, and "delete2" preserver the prior behavior. This is part of the fix of Bug #258. Fixed the server-side script, so that it checks for sharing images before deletion in all available image slots (when detecting the More Pics 6 extension). This is part of the fix of Bug #258. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.1.1.823, 2005/08/15: Added new tab to Configuration dialog config.dfm (network 3) to hold the HTTP settings. Also, added new option to set the timeout of HTTP connections and supporting code to config.pas. This is part of the fix of Bug #254. Also, deleted the option SmartRename (for image uploading) as now is always enabled. This is part of the fix of Bug #250. In the About dialog window, now the detected extensions panel is only visible if the application is connected. Fixed the startup Splash window (splash.dfm) so that the borders and the image are centered. Previously, the right side of the spash window was misaligned. Fixed FNopm_ImageNameIsGIF function in imageman.pas, so that the file stream creation/destruction is made inside a double exception handling routine. Previously, it was running inside a single exception handling block, without any safety for the file stream destruction. (This caused compilation warnings). Added setting code for the HTTPClient so that the ReadTimeout and ConnectTimeout values are set when preparing the component (in the PRopm_Prepare_HTTPClient procedure, in network.pas). The ConnectTimeout is set equal to the configuration value defined for the user (or the default). The ReadTimeout value is set as the user-defined value multiplied by a fixed factor so that the read timeout is 25 longer than the connection timeout (this is to be able to work with servers that buffer the server-side script output until the processing is finished). This is part of the fix of Bug #254. Also, added ProcessMessages calls to PRopm_HTTPClient_WorkBegin, PRopm_HTTPClient_Work and PRopm_HTTPClient_WorkEnd so that the application has a change to repaint the windows while making HTTP calls. This is part of the fix of Bug #158. Also, deleted the supporting code for the SmartRename feature in the FNopm_Upload_File function. This is part of the fix of Bug #250. Also, enabled again the TIdAntiFreeze component as part of the fix of Bug #250. Modified the zoomed product image dialog (pimgzoom.dfm) so that vertical and horizontal scrolling bars use smooth scrolling and tracking. Added code (in pimgzoom.pas) to the OnShow event of the form so that the window is resized to hold the image, scrollbars enabled if required, and then is centered in the screen. Also, added code to support keyboard-based scrolling. This is part of the fix of Bug #252. Also, added code for displaying an informational tooltip on the shown image. This is part of the fix of Bug #253. Increased the script version required in oscpmdata.pas. Also, added supporting variables and constants for the timeout of HTTP connections. Also, deleted all supporting variables and constants for the SmartRename feature. This is part of the fix of Bug #250. Also added a opm_StopTreeOnChange variable to avoid reloading the category tree when programatically changing the tree position. Also added opm_Search_Quick variable so the application can keep the state of the latest quick search. This is part of the fix of Bug #256. Also increased the default timeout values for SSH, DB and TCP-module connections. Modified oscpm1_upload.php server-side script to increase its version number to 0.1.10. Deleted all code regarding the reception of the SmartRename option (now SmartRename is always enabled). This is part of the fix of Bug #250. Modified the code that assigns the suggested backup file name so it does not include the string "osc_" (to allow the client to concatenate the host name to it). This is part of the fix of Bug #251. Also modified the code that sends the generated backup file to the client so that it sends the file size in a Content-Length header (to enable the reporting of the downloading progress to the user). Created new dialog window to show the progress of network operations (progress.dfm and progress.pas). The dialog has the following public variables: PDAllowCancel (if a Cancel button is present), PDCanceled (if the Cancel button has been pressed), PDDoubleBars (if it will display one or two progress bars), PDMessage1 (the current primary progress message), PDMessage2 (the current secondary progress message), PDIgnoreProgress (if the progress value will be automatically incremented). It also has the following public procedures: PRopm_PDUpdate_Progress (to update the progress display), PRopm_PDShow (to show the dialog), PRopm_PDClose (to close the dialog). When the dialog is displayed, it works like a modal dialog in that the user cannot interact with the other forms in the application yet the main application keeps running (the execution flow is not passed to the dialog code). This is part of the fix of Bug #218. Deleted all references of the two progress bars previously located in the status bar of the main form (main.dfm and main.pas). Modified supporting code from PRopm_Update_StatusBar so that the progress bars are no longer used. Deleted all calls to PRopm_Update_StatusBar so rather the new progress dialog is used, except in PRopm_SetControls_FullConnected, PRopm_SetControls_Disconnected, PRopm_SetUnknown and PRopm_RenderProductDisplay. In most places, a call to opm_Form_Progress.PRopm_PDShow, several calls to opm_Form_Progress.PRopm_PDUpdate_Progress and a final call to opm_Form_Progress.PRopm_PDClose was used. Disabled all code that changes the mouse pointer (in main.pas) so that the changing occurs now in the progress dialog code. This is part of the fix of Bug #218. Added a call to PRopm_Prepare_HTTPClient in opm_MenuItem_ConnectClick (main.pas) so that the HTTP connection for the capability query to the server uses the global proxy settings. This fixes an unreported bug. Modified PRopm_RenderCategoryDisplay and opm_TreeView_MainChange (in main.pas) so that it uses the opm_StopTreeOnChange variable to avoid reloading the category tree when programatically changing the currently selected leaf. Also, modified opm_TreeView_MainChange and opm_MenuItem_RefreshCategoriesClick so that the category tree is disabled and then reenabled with focus in it after doing the processing. This is to avoid triggering the events again while the event handlers are still running. Modified opm_MenuItem_SearchProductClick and QuickSearch (in main.pas) so that they use opm_Search_Quick to keep the state of the quick search when reloading the product display. This is part of the fix of Bug #256. Moved confirmation dialogs from the low-level procedures to the higher-level ones (in main.pas) including PRopm_UpdateProduct, PRopm_UpdateProdData, PRopm_DeleteProduct, PRopm_UpdateCatName, PRopm_DeleteCategory, opm_PopMenuItem_PAvailableClick, opm_PopMenuItem_PNotAvailableClick, opm_PopMenuItem_PPriceClick, opm_PopMenuItem_PSpecialClick, opm_PopMenuItem_PQuantityClick, opm_PopMenuItem_PManClick, opm_PopMenuItem_PCatClick, opm_TreeView_MainDragDrop, opm_PopMenuItem_PModelClick, opm_PopMenuItem_PWeightClick, opm_PopMenuItem_PDeleteClick, opm_PopMenuItem_CatDeleteClick, opm_PopMenuItem_CatRenameClick, opm_MenuItem_ManRenameClick, opm_MenuItem_ManDeleteClick and opm_ListView_MainDblClick. This fixes an unreported consistency problem in the main form code. Simplified several routines in main.pas so that the confirmation for editing a group of products ask only once for the whole group. Also, those routines can also use a single loop without switches. The modified procedures are: opm_PopMenuItem_PPriceClick, opm_PopMenuItem_PSpecialClick, opm_PopMenuItem_PQuantityClick, opm_PopMenuItem_PManClick and opm_PopMenuItem_PCatClick. This fixes an unreported consistency problem in the main form code. Fixed PRopm_SetUILang in main.pas so that the forms opm_Form_ConfigMod and opm_Form_AskCat are translated when the user-interface language is changed. Previously, those two forms remained in the language the application was started up. This fixes an unreported bug. Modified opm_MenuItem_BackupClick in main.pas so that the suggested filename of the received backup file includes the hostname. This is part of the fix of Bug #251. Deleted from the product editing window (pedit.dfm and pedit.pas) all references to the progress bar used to show the download progress (opm_ProgressBar_Pedit) and its label (opm_label_PeditDown). This is part of the fix of bug #218. Modified opm_PRToggle_ImgSel in pedit.pas so the currently selected image color is not clHighlight but clBtnHighlight. Fixed opm_PRDownload_Image function in pedit.pas, so that the file stream creation/destruction is made inside a double exception handling routine. Previously, it was running inside a single exception handling block, without any safety for the file stream destruction. (This caused compilation warnings). Fixed opm_GetDropFiles in pedit.pas by deleting a call to the server-side script to delete the currectly selected image when accepting a droped image file. This call was not needed as the server-side script is called when uploading the image file. Fixed opm_Image_Pedit0DblClick to opm_Image_Pedit6DblClick in pedit.pas so that the image tooltip of the zoomed image window is set. Fixed opm_Image_Pedit0DragDrop in pedit.pas so that the image swaping operation is inside a exception-handling block. Added supporting code to pedit.pas to allow the keyboard-scrolling of the scroll box containing the product images and the color change when the scroll box has focus. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.1.1.652, 2005/08/15: Modified about.pas and about.dfm (the About window) to display a list of detected osCommerce extensions in the server. This is the fix of the Bug #240. Also deleted the graphic banner (to preserve the windows size). Added the global variable opmG_UIImgDragDrop to oscpmdata.pas to store the setting of drag-and-drop of images in the product editing window. Also added supporting code to config.pas and main.pas. Added checking of opmG_UIImgDragDrop in pedit.pas. This is part of a fix of an undocumented bug (the value of the setting was not being stored not checked, it was enabled all the time). Increased the version number of the server-side script. Added new commands: noop and backup. Noop do nothing (to be used just to check if the script is working). Backup creates a backup file of the database, compress it and send it to the application. This is part of the fix of Bug #241. Added four global vars in oscpmdata.pas to store the detection status of four osCommerce extensions: opmG_Capa_MorePics6, opmG_Capa_TotalB2B, opmG_Capa_PollBooth, opmG_Capa_HeaderTags. Added code to opm_MenuItem_ConnectClick procedure so that the application retrieve a list of known extensions installed in the server. This is part of the fix of several bugs (all bugs regarding the support of osCommerce extensions). Modified structure of the record opmR_Product in oscpmdata.pas to store six additional image filenames. This is part of the fix of Bug #212. Modified PRopm_LoadProductListByCat, PRopm_RenderProductDisplay, PRopm_SearchProducts, FNopm_GetProductByID, PRopm_UpdateProduct, PRopm_DeleteProduct, PRopm_AddProduct and opm_PopMenuItem_PAddClick in main.pas to support the More Pics 6 extension (if detected in the server). This is part of the fix of Bug #212. Fixed PRopm_AddProduct and PRopm_UpdateProduct (in main.pas) so that when a product is added or moved to the root category (product without category) a record is inserted/updated in the table Products_to_categories. Previously, the record was not created or deleted. This fixes Bug #232. Added new menu to backup the store database and supporting code to main.pas. This fixes Bug #241. Added missing copyright notices to askcat.pas and configmod.pas, Added new function FNopm_Receive_File to network.pas to be used to receive files produced by the server-side script. This is part of the fix of Bug #241. Fixed FNopm_Download_File, FNopm_Upload_File, FNopm_Send_Command and FNopm_Send_SimpleCommand functions in network.pas so that URLs are URL encoded before sending the HTTP request. This is the fix of Bug 231. Added a scrollbox and six additional images to pedit.dfm (the product editing window) as par of the support for the extension More Pics 6. Also added a Download All button. Added lot of supporting code to pedit.pas to manage the multiple images. These changes are part the Bug #212 and Bug #238. Modified installer generating script (oscpm1.nsi) so that the checkbox Show README File is no shown when finishing the installation. This fixes Bug #235. Added several keyboard shorcuts for commonly used operations in the main.dfm file (the main window). The new shorcuts are: Ctrl-O Connect, Ctrl-Q Disconnect, Ctrl-W Exit, F5 Refresh category list, Ctrl-R Refresh product list, Ctrl-F Search products, Ctrl-Alt-N Add category, Ctrl-Alt-E Edit category, Ctrl-Alt-D Delete category, Ctrl-N Add product, Ctrl-E Edit product, Ctrl-DDelete product, Ctrl-A Select all products (in list), Ctrl-P Print selected products. This fixes Bug #233. Updated Croatian translation files from Igor Velijevic (vigor@hi.htnet.hr). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.1.1.515, 2005/07/17: Changed help tooltip max text length to 800 characters and max width to 300 pixels (in balloons.pas). Fixed three control names in the External Modules window (configmod.dfm and configmod.pas). Added code to the External Modules window (configmod.dfm and configmod.pas) to start with an empty module definition so that it can be used not only to edit existing modules but also to add new modules. Added new public property (MC_AddEdit) to prepare the window for creating a new definition or editing an existing one. This is part of the fix of Bug #228. Added button to External Modules tab of the Configuration window (config.dfm and config.pas) to add a new module. This is part of the fix of Bug #228. Added an additional field to the Database Tables tab of the Configuration window (config.dfm) and supporting code to config.pas to define the name of the manufacturers_info table. This is part of the fix of Bug #226. Added new variable (opmG_DBTable_ManufacturersInfo) and constant (opmC_Def_DBTable_ManufacturersInfo) to oscpmdata.pas to store the current and default name of the manufacturers_info database table. This is part of the fix of Bug #226. Fixed code of the FormShow procedure of askuser.pas (the generic user-input dialog) so that the focus is in the entry control ( text field or a drop-down list). This fixes Bug #227. Added three options (add, rename, delete) to manage manufacturers to the main.dfm form (main form) and supporting code to main.pas. This is part of the fix of Bug #226. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.1.1.484, 2005/07/17: Fixed report listing in configuration window (config.pas and config.dfm) so that when the user double-click in the report list, the editing window is displayed. This fixes Bug #224. Fixed pedit.pas (the product editing window) so that the position of the cursor in the Description field is preserved when changing the current language. This fixes Bug #201. Fixed pedit.pas (the product editing window) so that when the button Strip HTML is pressed, the focus is passed to the Description text area. This fixes Bug #225. Fixed pedit.pas (the product editing window) so that when creating the remote image directory listing to be passed to the image upload window the list contains an empty option (the first one). This fixes Bug #222. Modified package and installer creation scripts (oscpm1.nsi and createpack.sh) so that the help files of the FreeReport designer (FRUSER.*) are included in the distribution packages. This fixes Bug #223. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.1.1.475, 2005/07/06: Fixed installer-generation scripts to include the German and Italian translation files to the automatic installation executable. Previously, those two languages were excluded. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.1.1.474, 2005/07/05: Changed prosition and size of the buttons and progress bar in the product editing window (pedit.dfm) to fix Bug #215 (buttons overlaping on web debug panel). Modified pedit.pas so that the progress bar in the product editing window is not visible when not required. Added constant opmC_CheckUpdates_URL to oscpmdata.pas containing the URL where to check for updates. Added new function FNopm_Send_SimpleCommand to network.pas to be used when doing simple command request to non-authenticated scripts. To be used with the "check for updates" script. Disabled the AntiFreeze component of Indy to block the whole user interface, as currently the design is not safe. Previously, the user could interact with the application while there was an HTTP operation unfinished. This will be fixed later, when we implement a progres dialog for all network operations. Added calls to PRopm_WriteLog in main.pas to monitor (when logging is enabled) the performance of data-loading functions. Previously, only SQL execution time was being monitored, but we have found major bottlenecks when loading the database data to the memory structures. Added option to main-menu for "check for updates", which connects to the main distribution site and ask if a newer version is available. This fixes Bug #74. Added quick searck field (with a "go" button) to the main toolbar. Modified function PRopm_SearchProducts (and all its calls) to support the quick search option (where the string is searched in the model, OR name, OR description). This fixes Bug #217. Added option to Configuration window (config.dfm) to select if the proxy settings apply to all web conections, only OSCPM script or only for check for updates. Added supporting code to config.pas. Added function FNopm_CompareVersions to dataman.pas to compare two versioning strings and decide which one is newer. Deleted verification code in pedit.pas (in opm_BitBtn_PEditOkClick procedure) to eliminate the check that the product is already assigned to a category. This change allows for products that don't belong to any category (the rest of the code in the application is already compatible with category-less products). Increased version number of required server-side script (in oscpmdata.pas). Added new global configuration variable (opmG_ProxyApply) in oscpmdata.pas to set when to apply the proxy settings. Added new parameter to PRopm_Prepare_HTTPClient to enable or disable the proxy usage. Changed all exception handling when activating the opmG_HTTPClient (a TIdHTTP) so that there is always an TRY-EXCEPT block inside a TRY-FINALLY block. Previously, we were using only TRY-FINALLY blocks and exceptions were not being handled properly. Modified functions are: FNopm_Upload_File, FNopm_Send_Command and FNopm_Send_SimpleCommand. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.1.1.402, 2005/06/30: Changed the property ShowHint of all forms (except splash.dfm) from false to true. Deleted all calls to PRballoon_SetFormBalloons from all forms. This is part of the fix of Bug #213. Dropped all the old code from balloons.pas and created new one to improve the performance, compatibility and easy of maintenance. This is part of the fix of Bug #213. Added new function FNopm_NoCRLF to dataman.pas to delete all CR, LF, TAB, BCK and EOF characters. To be used when exporting the product descriptions. This is part of the fix of Bug #210. Modified PRopm_Create_ExportList to also export te product description. This fixes Bug #210. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.1.1.382, 2005/06/25: Added German translation contributed by Hanns-Christopher Deppe (jaula@web.de), to locale/de/LC_MESSAGES. Added text field to Configuration window to display the command line to be used when calling PLink (when setting up the SSH tunnel). Previously, the command line was being shown in a dialog window, from where it could not be copied to the clipboard. This fixes Bug #193. Fixed problem with "Allow zero price" option not being saved to the Registry nor to the global variables. This bug was introduced with version 0.1.1.251. This fixes Bug #209. Modified askcat.pas so the editing field has input-focus when the form is shown. This fixes Bug #196. Modified ballons.pas to allow for normal hints (tooltips) if requested by the program using the new procedure PRballoon_ResetBalloonsType. When using normal hints the text is wraped to balloonC_Def_NormalHintWidth characters (default 40). Increased the balloon tooltips allowed to 1000. Now the Application.ShowHint property is set in PRballoon_ResetBalloons and PRballoon_ResetBalloonsType (previously it was set in the main.pas code). Added initialization code to the unit. Modified PRballoon_SetFormBalloons to support the new option to disable balloon tooltips. Added new function FNopm_BuildTunnelCall to network.pas to build the command to call the plink executable to establish the SSH tunnel. Modified function FNopm_OpenSSHTunnel to use that new procedure. This function is also called from config.pas as part of the fix of Bug #193. Modified oscpmdata.pas to increase the limits of the application. Max products from 32768 to 35000. Max descriptions from 700000 to 1000000. Max languages from 16 to 20. Max categories from 2048 to 5000. Max manufacturers from 2048 to 5000. Max taxes from 128 to 150. This fixes Bug #83 (which was reopened). Created new variables to support virtual categories. Those categories are going to be used as special searches or special repositories (for example, "all articles with special prices", "deleted items", etc). The only (not implemented) virtual category created is "Deleted items" (a trash can). This is part of the fix of Bug #116. Added toolbar to main form to easy the use of most common operations. The buttons in the toolbar are: connect, disconnect, configure, exit, create, delete, rename category, search, reload product list, add, delete, edit product, export selected products, print selected products. Also moved the listing language drop-list to the toolbar. This fixes Bug #97. Converted procedure PRopm_Set_ValidOps to three procedures: PRopm_Valid_GralOps, PRopm_Valid_CatOps, and PRopm_Valid_ProdOps. Those procedures enable and disable the proper toolbar buttons, context-menu options and main-menu options according to the current conditions. Previously PRopm_Set_ValidOps was a very convoluted bunch of conditionals. Also, all calls to PRopm_Set_ValidOps were substitued for specific calls to all or some of the new procedures. Several uneeded calls were removed. Modified PRopm_LoadCategoryList, PRopm_LoadCategoryBoxList, PRopm_AddCatTreeNode, PRopm_RenderCategoryDisplay, opm_TreeView_MainChange and opm_TreeView_MainDragDrop in main.pas to support the new virtual categories. Modified PRopm_RenderProductDisplay in main.pas so, when refreshing the product listing, not only the last selected product is highlighted but actually is in focus. This fixes the Bug #197. Fixed FNopm_GetCategory function in main.pas so the "parent" field is actually populated (previously it was left empty). Added support to opm_TreeView_MainKeyDown procedure (in main.pas) to use the INS and DEL keys in the category list to add and delete categories, respectively. This fixes Bug #191. Added support to opm_ListView_MainKeyDown (in main.pas) to use the DEL, INS and RETURN keys in the product listing to delete, add and edit products, respectively. Added code to opm_TreeView_MainContextPopup procedure (in main.pas) to select a category before displaying the context menu, so that we can enable/disable the correct menu options, and to fix an old bug that caused the context menu appearing before selecting the clicked category, leading to errors. Fixed the code in the oscpm1_upload.php server-side script that fixes the permissions of the uploaded files, so that a possible wrong numeric conversion could lead to the wrong permissions being used. Also, added code to check if the images directory exists. Also added code to log the full SQL queries when logging is enabled. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.1.1.251, 2005/04/12: Changed several declarations from TStrings to TStringList. The same for several creation statements (some statements were TStrings being created by a TStringList.Create). Now we use TStringLists only. This change applied to: askusers.pas, dataman.pas, regconfig.pas, oscpmdata.pas, modules.pas, main.pas, Added initialization code for opm_Form_AskUser public properties in FormCreate event code. Fixed FormShow code in runmod.pas so that the content of the memo in the confirmation window is cleared before starting the synchronization. This is part of the fix of Bug #184. Fixed function opm_FNLoad_ModuleData in modules.pas so that if the filename given is empty, all fields in the returned record will be cleared. Added new form (configmod.dfm/configmod.pas) so that the editing options for external modules will be now in a separate window called from the configuration window. The purpose is to unclutter the configuration window and to have a more user-friendly interface. Previously, the way to load, edit and save the module options were complex and not intuitive enough. Some parts of the supporting code in config.pas was moved to configmod.pas. Added a global variables (opmG_ETABase) to oscpmdata.pas to store the current birate used to calculate estimated download times for images (in the product-editing window). Previously, this value was stored in the global constant opmC_Def_DownSpeedCalc and it was hardcoded to 28800. Now the value can be changed to arbitrary values in the configuration window. Added supporting code to config.pas, main.pas, oscpmdata.pas and pedit.pas. This is part of the fix of Bug #186. Added a global variable (opmG_UIAllowEditImageName) to oscpmdata.pas to enable/disable the option to directly edit the name of the product image URL. Added the option to the UI section in the configuration window. Added supporting code to config.pas, main.pas, oscpmdata.pas and pedit.pas. This is part of the fix of Bug #159. Added new button in the product editing window to unlink the image from the product record. This option only clear the image URL field but it doesn't delete the image from the server. This is part of the fix of Bug #120. Added confirmation before deletig a module configuration in the configutation window (config.pas). This is part of the fix of Bug #187. Added two new global variables (opmG_ModConnWait and opmG_ModConnRetries) to oscpmdata.pas to keep the network reconnection parameters (timeout/delay and retries number) used when connecting to external modules. Added supporting code to config.pas, modules.pas, runmod.pas and main.pas. Previously, the hardcoded values were 1000 ms and 5 retries. This is part of the fix of Bug #183. Added new procedure opm_PRSetModified and property ProductModified to product editing window (opm_Form_PEdit), associating a procedure opm_Control_SetChange to most controls (OnChange and OnClick events) so that the property is set when the user changes any data of the product. Also, the title of the window is prepended with an asterisk "*" to remind the user that some data has changed. This is part of the fix of Bug #147. Added new data structures opmR_SingleCategory record and opmR_SingleCategory array to oscpmdata.pas, to store the information of a single category list (in all languages); to be used in all category operations. Added new form opm_Form_AskCat (askcat.pas) to accept input from the user regarding categories; to be used in all category operations. Added two more options to contextual menu of the main category tree (add category and delete category); added supporting code to main.pas (PRopm_AddCategory, PRopm_DeleteCategory, PRopm_GetCategory_Data procedures, changes in opm_TreeView_MainContextPopup). Modified PRopm_UpdateCatName and opm_PopMenuItem_CatRenameClick to support the new data structures. This is part of the fix of Bug #94. Added verifications to opm_TreeView_MainChange and opm_TreeView_MainDragDrop to be sure that a category has been selected before going further. This is part of the fix of Bug #189. Removed a call to PRopm_ClearProductList in opm_ComboBox_DisplayLangSelect in main.pas. This is part of the fix of Bug #188. Fixed PRopm_DeleteProduct in main.pas, to delete related records of a deleted product (prod-to-cat, special prices, descriptions). Previously, only the main record of a product (in the products table) was being deleted. This is part of the fix of Bug #190. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.1.1.160, 2005/04/07: Modified FormShow procedure in config.pas. The UI-language selection list (opm_ComboBox_ConfigUILang) in the configuration window now is sorted by name. This is part of the fix of Bug #179. Fixed function FNopm_CheckLanguage in dataman.pas, so that it accepts an index of 0 of the LangISOID parameter. Added code to function FNopm_Sort_ProductList and procedure opm_ListView_MainColumnClick in main.pas to support ordering by the first column (available product). This is part of the fix of Bug #182. Added constants opmC_SyncResult_* to modules.pas, to tag the status of a synchronization record. Added field Status to opmR_ExchangeData record type in modules.pas to store the status of a synchronization record. Added new menu options (opm_PopMenuItem_RunmodCopyDiff, opm_PopMenuItem_RunmodCopyEqual, opm_PopMenuItem_RunmodCopyUnknown, opm_PopMenuItem_RunmodCopyRestricted) to sync confirmation listing to copy to clipboard the records by status. Added supporting code to PRopm_Create_ConfirmExportList procedure. This is part of the bug #177. Added code to function PRopm_RenderConfirmDisplay in runmod.pas to support the ordering by column of the sync listing. Added functions FNopm_Sort_ExchangeList and opm_ListView_RunmodConfirmColumnClick to support the ordering of columns of the sync listing. This is part of the bug #177. Modified opm_BitBtn_RunmodConfirmClick procedure in runmod.pas to use and set the new Status field in the synchronization record. Modified the PRopm_CleanExchangeList procedure to use the passed SyncList parameter (previously it was being ignored) and added supporting code to set the new Status field in the synchronization record, checking for policy restrictions (currently allow zero prices and allow negative quantities) and comparing properly the numerical data. This is part of the fix of bug #178 and bug #176. Added supporting code to set the icon of those synchronization records that cannot be accepted due to configuration (policy). This is part of the fix of bug #176. Added new configuration variable (opm_upload_perms) to server-side script (oscpm1_upload.php), to define the default permissions of the uploaded files. Added supporting code to change the permissions of uploaded files to that defined by opm_upload_perms. This is part of the fix of bug #181. Added Italian translation contributed by Michele Barone (michele@nethome.it), to locale/it/LC_MESSAGES. Updated Russian translation (provided by Shmelev N. Nikolai aerograf@rambler.ru and reviewed by Eugene Yafarkin yafarkin@samtel.ru). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.1.1.145, 2005/02/17: Added docs/debug_license.txt and license_debug.RES. Modified create_resources.bat so it generates license_debug.rc. Also created zip package creator script: createdbgpack.sh. This is part of the fix of Bug #170. Added compilation-conditional code in license.pas to include different license resource text if the application is compiled with or without JclDebug code (from JEDI-JCL). Added OnShow event code for the main form (main.pas) with a compilation conditional, to show a warning window after the splash window to warn the user that the application is a debug-version (only if it was compiled with JclDebug code). Added empty exception handler for non-EIdOSSLCouldNotLoadSSLLibrary errors in function FNopm_Download_File in network.pas file. This is part of the fix of Bug #172. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.1.1.136, 2005/02/14: Added new variable to server-side script oscpm1_upload.php: opm_password_override. If set, the script will use its content as the upload password. This is useful for those not wanting to use the same DB password as OSCommerce. Modified server-side script, so that if it receive a request to delete an empty filename it will return an OK code (stating that erasing a null file is not an error condition). Moved function opm_FNMD5 from pedit.pas to dataman.pas. Deleted spurious units from "uses" clause in main.pas. Moved all network functions from pedit.pas to network.pas. Created (in network.pas) the following functions and procedures: PRopm_Prepare_HTTPClient, PRopm_Disconnect_HTTPClient, FNopm_Download_File, FNopm_Upload_File, FNopm_Send_Command. Created global variable opmG_HTTPClient_TransactLog used to store debug HTTP data. Moved HTTP client to network.pas (as opmG_HTTPClient). Created event handlers for opmG_HTTPClient (PRopm_HTTPClient_WorkBegin, PRopm_HTTPClient_Work, PRopm_HTTPClient_WorkEnd). Moved INDY AntiFreeze object to network.pas (as opmG_INDY_AntiFreeze). Modified pedit.pas to use the new HTTP client network functions from network.pas. Added new function opm_FNExec_Query to server-side script oscpm1_upload.php. Added inclusion statement in server-side script oscpm1_upload.php to include OSCommerce database code. Added connection code, currently only used when an image deletion is requested. (The connection is only made if the deletion command is received, to reduce the overhead). Increased server-side script version to 0.1.7. Increased expected version in oscpmdata.pas accordingly. Added a checking in oscpm1_upload.php server-side script, so when deleting an image it will first verify that the image is not still being used by another product record. If it is, it will return a OK code (stating that sparing the file from deletion when it is still in use is not an error condition). This is part of the fix of Bug #164. Modified PRopm_DeleteProduct procedure in main.pas so that any time a product record is deleted, also its image is deleted. This is part of the Bug #165. Added OSCommerce courtesy credit paragraph to license.txt file and to resource file license_text.RES. This fixes Bug #167. Deleted all conditionals and references for MadExcept in license.pas and main.pas. Deleted docs/license_except.xxx and license_except.RES. Modified create_resources.bat so it doesn't generate license_except.rc. Also deleted installer creator script and zip package creator script: oscpm1_debug.nsi and createdebugpack.sh. This is part of the fix of Bug #170. Modified network.pas to add a IO SSL handler for the HTTP client (opmG_SSLHandler). Added initialization code and supporting code in FNopm_Download_File function. This is part of the fix of Bug #166. OpenSSL library files won't be included in the main distribution files due to licensing issues (as described for Bug #171), but a separate package will be offered. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.1.1.102, 2005/01/24: Added contributed French translation files from Loïc Richard (loic.richard1@free.fr), to locale/fr/LC_MESSAGES. Added public variables to Topm_Form_AskUser (in askuser.pas) so the calling code doesn't have to modify directly the properties of the controls of opm_Form_AskUser. The variables are: AU_Title, AU_Directions, AU_PassChar, AU_MaxLen, AU_TextOrList, AU_DataText, AU_DataList, AU_ListItem, AU_PreCleanList and AU_DataListText. Modified PRopm_Connect, opm_PopMenuItem_PPriceClick, opm_PopMenuItem_PSpecialClick, opm_PopMenuItem_PQuantityClick, opm_PopMenuItem_PManClick, opm_PopMenuItem_PCatClick, opm_PopMenuItem_PModelClick, opm_PopMenuItem_PWeightClick procedures in main.pas to support the changes in askuser.pas. Modified opm_BitBtn_PEditSelectImgClick procedure in pedit.pas to support the changes in askuser.pas. Fixed procedures opm_BitBtn_PEditUploadImgClick and opm_BitBtn_PEditSelectImgClick in pedit.pas so they don't delete the first item in the directory selection list and image selection list. This is part of the fix to bug #155. Fixed opm_PopMenuItem_PPriceClick and opm_PopMenuItem_PQuantityClick procedures in main.pas. Previously, the prices and quantities were wrong when changing them using a group operation; only the first price or quantity was right, the rest were just the same value than the first product. This bug was introduced when fixing bug #124 and bug #129. This is part of the fix of bug #153. Fixed opm_PopMenuItem_PCatClick procedure in main.pas. Previously, ff a product did not have a category, and the category of the product was changed using a group operation, the product became duplicated. This is part of the fix to bug #154. Increased the size of the Configuration window (config.dfm) and its controls, mainly buttons and checkboxes. This is part of the fix of bug #156. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.1.1.90, 2005/01/18: Deprecated all the old printing options. Modified configuration window, config.pas, main.pas and oscpmdata.pas. This is part of the fix of bug #96. Added new printing capabilities with a new reporting builder (FreeReports). Added new options to configuration window, including a report editor with previewer for report files. Added supporting code to config.pas, main.pas and oscpmdata.pas. Currently, only one report is supported (main product listing). This is part of the fix of bug #96. Created new directory /reports where source printing reports will be stored. Currently, only prodlist1.frf is available. Added new option to popup menu and main menu to copy to the clipboard (from the main product listing) in a preformated fashion. Column width is automatically set based on a maximum character width. Added function FNopm_NumToYesNo to dataman.pas to convert 0/1 answers to Yes/No strings. Created function opm_FNMD5 in pedit.pas to generate MD5 hashes. (The decision to keep this generic function in pedit.pas was because is used only there and it depends on INDY classes already included in pedit.pas. Deprecated Upload Password option in configuration window, as it was really unused. Deleted supporting code in main.pas and oscpmdata.pas files. Now the upload password is always the database password. Modified all HTTP-posting code in pedit.pas to send a timestamp string (as TS) and the hash of the database password salted with the timestamp. This allow authentication without the need to have another password, there is no need to read the OSCommerce database to read/write that password, and the password is never sent as clear-text to the PHP upload script. Changed version of expected PHP upload script to 0.1.5. This is part of the fix of bug #146. Modified oscpm1_upload.php server-side script. Now it does authenticate using the database server password (already known by OSCommerce) and using salted-hashes only (so the password is never sent in clear-text). Changed its version number to 0.1.5. This is part of the fix of bug #146. Modified oscpm1_upload.php server-side script to improve its logging capabilities. Now logging is more detailed for error conditions. And now logging has two detail levels. Fixed bug introduced in 0.1.0.527 in function PRopm_Create_ExportList (main.pas) that caused the Copy as Text option (in the main product listing) to fail. Added licensing notes in license.txt about the use of FreeReport (which is released under the LGPL license). Added contributed Russian translation files from Shmelev N. Nikolai (aerograf@rambler.ru), to locale/ru/LC_MESSAGES. Changed software version to 0.1.1. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.1.0.527, 2005/01/15: Added FNopm_Sort_ProductList definition to the interface section of the main.pas unit. Fixed PRopm_RenderProductDisplay function to keep the sorting between updating of the product list (previously the sorting was being explicitly reset). This fixes bug #130. Disable PHP error reporting in oscpm1_upload.php script. This fixes bug #134. Modified FNopm_CleanSQLString function in dataman.pas so it doesn't escape underscore characters (_) in SQL strings. This fixes bug #137. Modified FNopm_CleanSQLString function in dataman.pas so it escape underscore characters (_) again but selectively, when a new parameter (Searching) is true. This parameter also apply the escaping to percent symbol (%) in SQL strings. Modified main.pas to change the original calls to FNopm_CleanSQLString. This fixes bug #139 and ammend the fix for the Bug #137. Reorganized checkboxes in Interface 2 tab of the configuration window. Added checkbox opm_CheckBox_ConfigAllowNegativeQuantity to Configuration window (config.dfm) for a new option (Allow Negative Quantity). Added supporting code to main.pas (changed FNopm_Apply_Operation and opm_PopMenuItem_PQuantityClick), config.pas, oscpmdata.pas (added constant opmC_Def_AllowNegativeQuantity and variable opmG_UIAllowNegativeQuantity) and pedit.pas (changes in opm_BitBtn_PEditOkClick function). This is part of the fix of bug #129. Updated all copyright notices (to include year 2005) and fix minor errors in language files. Added spin opm_SpinEdit_ConfigDBConnRetries to Configuration window (config.dfm) for a new option (DB Connection Retries). Added supporting code to main.pas, config.pas, oscpmdata.pas (added constants opmC_Def_DBConnRetries, opmC_Min_DBConnRetries, opmC_Max_DBConnRetries and variable opmG_DBConnRetries). Modified function FNopm_ExecQuery (network.pas) to use the new opmC_Max_DBConnRetries variable to retry the connection silently in case it failed, waiting opmG_DBConnWait miliseconds between tries. This fixes bug #131. Modified function FNopm_OpenDBConnection (network.pas) to use the new variable opmG_DBConnRetries. Deleted constant opmC_DBConnectTries from oscpmdata.pas, now unused. Changed the default returning value of FNopm_OpenDBConnection to non-null. Added new parameter to PRopm_RenderProductDisplay procedure (main.pas) to pass it the latest selected product in the main product list, so it can reselect it after rerendering the list. Modified all calls to the procedure to use the opm_CurrentProdID global variable (which holds the product-ID of the latest selected item in the product list). This is part of the fix of bug #127. Added new constants to oscpmdata.pas to store the column aligment of the main product list and the module result list (opmC_Def_ColxxAlign constants). Modified PRopm_SetDisplay procedure in main.pas and FormCreate in runmod.pas to use these constants. (Most were set to left justify, but ID, weight, price and quantity were set to right justify). This is part of the fix of bug #129. Modified PRopm_RenderProductDisplay procedure in main.pas to convert product prices (regular and specials) to padded strings (with two decimal numbers). This is part of the fix of bug #104. Added new constants opmC_Min_FontHeight and opmC_Max_FontHeight to oscpmdata.pas to be used when setting up the limits of valid font size for the user interface. Modified config.pas to use them. Added new variables and constants to oscpmdata.pas to support the new printing options. This is part of the fix of bug #96. Added new printing options to configuration window (config.dfm) to allow the setting of font, paper position and maximum column width for a simple printing report. Added supporting code to config.pas. This is part of the fix of bug #96. Added printing options to the main menu and popup menu of the product listing (main.pas) to print the current selected products. Added supporting code to several functions in main.pas. This is part of the fix of bug #96. Modified procedure PRopm_Create_ExportList in main.pas to support an automatic column-justification option. When enabled, the export list is created optimally filling the columns with blank spaces. The justification type is hardcoded according to the column type (numeric vs text). Column width is truncated when justification is enabled, following the global variable opmG_PRNColSize. This option is used (so far) only when preparing the export string for printing. Modified opm_PopMenuItem_PExportClick and opm_PopMenuItem_PCopyAsTextClick to call the procedure with this option disabled. This is part of the fix of bug #96. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.1.0.481, 2004/09/23: Deleted Psock unit name in USES clause in pedit.pas. This is remaining of preliminary testing with FastNet components (which were pretty unreliable) before using Indy. Fixed function FNopm_Apply_Operation in main.pas so it doesn't ignore single-digit numbers. This fixes bug #125. Fixed FormClose in main.pas, so that the database link is only disconnected if the user confirm that the program should exit (or if the exit confirmation is disabled). This fixes bug #126. Modified serverside/oscpm1_upload.php script to support: debug logging (to file) and a browser debug mode (which allow us to test most features from a web browser). Modified serverside/oscpm1_upload.php script to support: a listing of dirs, extended file listing (to support images in subdirectories) and extended upload (to support images in subdirectories). This is part of the fix for bug #78. Added ComboBox opm_ComboBox_UploadDir to AskUpload form (askupload.dfm) to support selection or direct typing of the target directory of the uploading image. This is part of the fix for bug #78. Added checkbox opm_CheckBox_ConfigAllowZeroPrice to Configuration window (config.dfm) for a new option (Allow Zero Prices). Added supporting code to main.pas, config.pas, oscpmdata.pas and pedit.pas. This is part of the fix of bug #124. Extended functions opm_FNUpload_Image, opm_PRPrepareUpload and opm_BitBtn_PEditUploadImgClick, and added function opm_FNGet_DirList to pedit.pas to support operations in directories. This is part of the fix for bug #78. Added a new control's state for the Product Edit form (opmC_ImageIsBeingProcessed) to be used when an image is being uploaded/processed. Fixed a bug in pedit.pas that caused the content of opm_Memo_UploadDEBUG being preserved between products. Moved several DisconnectSocket operations (of opm_IdHTTP_Pedit) in pedit.pas to the lower-level procedures. Added verification code to several functions in pedit.pas, to check for a "wrong version" error if any web request fails. This is part of the fix of bug #128. Added new constants opmC_WebScriptOKCode and opmC_WebScriptBadVerCode to store error and non-error strings returned by the server-side PHP script. This is part of the fix of bug #128. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.1.0.451, 2004/09/21: Fixed set opmC_Valid_HostChars in network.pas, which previosluy didn't contained numeric values, causing the deletion of any number in hostnames. This fixes bug #122. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.1.0.450, 2004/09/20: Added status bar to product editing window (pedit.dfm), just to get the resizing grip (the rest of the bar is hidden). Set AutoScroll to false for the form form opm_Form_PEdit (pedit.dfm). This is part of the fixing of Bug #121. Added two new icons to opm_ImageList_List (in main.dfm) to be used in the product list headers, showing the current list sorting. Set the Align property of opm_ProgressBar_Splash to alBottom, and the Align property of opm_Panel_Splash to alClient (splash.dfm) to fix a bug (related to Bug #121) that caused the splash window to become misaligned in some computers. Modified opm_ListView_MainColumnClick and PRopm_RenderProductDisplay (main.pas) to support the new sorting header-icons. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.1.0.441, 2004/09/16: First full release. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.1.0.440, 2004/09/14: Added calls to function FNopm_CleanHostName in config.pas to clean up the hostname of the database server. This is part of the fix for bug #119. Added message to opm_BitBtn_ConfigProxyIEClick in config.pas to display a message if the automatic detection of proxy settings couldn't find them. Added new function FNopm_CleanHostName to dataman.pas and created supporting set opmC_Valid_HostChars to clean hostname strings (like database and proxy server names). This is part of the fix for bug #119. Changed several calls to FNopm_Message function in main.pas to display confirmation messages (previously they were error messages). This only changes the icon and title of dialogs. Fixed and simplified FNopm_Apply_Operation function in main.pas. Previously, a conversion exception was raised if the user entered nothing when asked for a numerical operation (when changing price, special price, weight or quantity). Added calls to function FNopm_CleanHostName in PRopm_LoadConfiguration. This is part of the fix for bug #119. In the FormShow procedure of config.pas, set all opm_Label_ConfigDBTableXX TLabel captions to the default table names as defined by the constants opmC_Def_DBTable_XXXXX. This is to avoid translation errors by external translators. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.1.0.434, 2004/09/12: Added contributed Dutch translation files from Aernout Koole (a.b.c.koole@hccnet.nl), to locale/nl/LC_MESSAGES. Created simplified delphi.po files for all languages (including English), based on extracted data from the Spanish file. Fixed oscpm1.nsi and oscpm1_debug.nsi files, because newer language files were not being included with the exe installer. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.1.0.430, 2004/09/12: Fixed setting of the last-column caption of the ListView from "AvailDate" to "Availability date", so it can be translated by the dxgettext routines. This is in main.pas.This fixes bug #72. Added two new icons (gnome-image.ico and gnome-noimage.ico) to opm_ImageList_List (in main.dfm) to be used to tag users with/without images. Added support constant/variables for 10th column in product list (image column) to oscpmdata.pas. Added opmG_PList_LastOrderColumn and opmG_PList_LastOrderType variables to oscpmdata.pas to keep product list sorting status. This is part of the fix for bug #117. Added supporting code for the new 10th column (of the product list) to several procedures in main.pas. Added code to set/reset the waiting clock (for the mouse pointer) in several time consuming procedures (SQL-loading routines) of main.pas. Added new function FNopm_Sort_ProductList to main.pas as helper for the sorting of the product list. This is part of the fix for bug #117. This function is being called from the OnColumnClick event of the opm_ListView_Main product list. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.1.0.423, 2004/09/11: Added four new constants to oscpmdata.pas: opmC_Def_PDate, opmC_Min_PDate, opmC_Max_PDate and opmC_PDate_Format. This is part of the fix for bug #114. In function FormCreate, at pedit.pas, set the min, max, and current date values of the datepicker control opm_DateTimePicker_PEditAvailDate using the new contants. Fixed function opm_PopMenuItem_PAddClick in main.pas to set the AvailDate, CreationDate and ChangeDate fields of the variable opm_CurrentPEditRecord, using the new date contants, before calling the pedit form. This is part of the fix for bug #114. Added new constants opmG_Def_Past_PAvailDate, opmG_Def_Past_PManufacturer and opmG_Def_Past_PTaxClass to oscpmdata.pas, and opmG_Past_PAvailDate, opmG_Past_PManufacturer, opmG_Past_PTaxClass too. This is part of the fix to bug #113. Fixed procedures PRopm_LoadConfiguration, PRopm_SaveConfiguration and opm_PopMenuItem_PAddClick in main.pas to support the new variables. This is part of the fix to bug #113. Fixed procedures opm_BitBtn_ConfigOkClick, opm_BitBtn_ConfigSaveINIClick and opm_BitBtn_ConfigLoadINIClick to support the new variables. This is part of the fix to bug #113. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.1.0.418, 2004/09/08: Create new function FNopm_StrToInt in dataman.pas to convert a string to an integer, cleaning up the string and then converting it, without raising exceptions if it fails (if it fails, returns zero). Modified function FNopm_StringToDate in dataman.pas to do the STRTOINT conversions inside the exception-handling block. Replaced all calls to STRTOINT by calls to FNopm_StringToDate at all places where the application load external data from INI files, the Registry or WINAPI functions: network.pas, modules.pas, main.pas, config.pas and oscpm1.dpr. Changed constant opmC_Def_StorePass in oscpmdata.pas so now the default is to store the passwords in the Registry and INI files. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.1.0.416, 2004/09/07: Added description to the DB-details tab of the Configuration window (config.dfm). Changed window border-style of the Product Edit form (pedit.dfm) from Dialog to default (to make it resizeable). Changed anchors of most controls to allow resizing. This is part of the fix of bug #90. Added a new field to the Product Edit form (pedit.dfm), opm_Edit_PEditPriceTaxed, to allow the input of gross (after tax) prices. Changed position of the Tax dropmenu to be selected before the prices are entered. The field opm_Edit_PEditPrice is source by default, and the opm_Edit_PEditPriceTaxed i recalculated based on its value, unless opm_Edit_PEditPriceTaxed is currently in focus (when it become source and opm_Edit_PEditPrice become target of the calculation). This is part of the fix of bug #91. Added suporting code to pedit.pas for new gross price field and the net/gross-price automatic calculation. This is part of the fix of bug #91. Moved function FNopm_GetTax from main.pas to pedit.pas. This is part of the fix of bug #91. Added code to main.pas to set the minimal size of the Product Edit window (now that it is resizeable). This is part of the fix of bug #90. Modified function PRopm_LoadTaxList in main.pas to include the sum of all tax rates for each tax class in the new SumRate field (of the memory tax list). This is part of the fix of bug #91. Moved constants from network.pas to oscpmdata.pas. Added new constants for max and min window size for the Product Edit window. This is part of the fix of bug #90. Fixed constant opmC_SQLBackends in oscpmdata.pas, which wrongly defined one protocol string as "mysql-4"; the correct one is "mysql-4.0". This fixes bug #75. Changed max lenght of the Model of product as defined by the constant opmC_ProdModel_MaxLen in oscpmdata.pas from 12 to 25. This is a partial fix for the original request that triggered bug #98. Final solution for bug #99 is deferred (the cause is that the new SQL-HTTP backend may not support easily to get the field sizes). Also changed other max lengths: opmC_ProdWeight_MaxLen (by 1), opmC_ProdPrice_MaxLen (by 1), opmC_ProdSpecial_MaxLen (by 6). Added SumRate field to opmR_Tax record in oscpmdata.pas to store the sum of all tax rates for a given tax class. This is part of the fix of bug #91. Created new functions FNopm_BeforeTaxPrice and FNopm_AfterTaxPrice to dataman.pas to calculate net and gross prices for a given price (in string) and a tax rate (in real). This is part of the fix of bug #91. Fixed FormShow procedure in config.pas to grey-out all SSH options if the SSH-tunnel feature is disabled. Added supporting code to config.pas to enable a new field in the DB Details tab to set the tax_rates table name. This is part of the fix of bug #91. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.1.0.407, 2004/09/03: Added a checkbox to Configuration window to enable the logging of SQL queries (config.dfm). Added supporting code to config.pas. This is part of the fix of bug #105. Fixed INI-file loading routine in config.pas. Options for configurable DB-table names were not being loaded from INI files. Added opmC_Def_DBDebugLog constant and opmG_DBDebugLog variable to oscpmdata.pas to support the new SQL-query logging option. This is part of the fix of bug #105. Deleted opm_Memo_DEBUG TMemo and opm_ZQuery_Main TZQuery from main form (main.dfm). opm_Memo_DEBUG usage is deprecated (now we can use the SQL logging option) and opm_ZQuery_Main was moved to network.pas. Also, FNopm_ExecQuery function was moved (with modifications) to network.pas. Added function FNopm_ExecQuery to network.pas. This function is derived from the same function from main.pas (it executes the given SQL query). Added opmG_DBQuery variable to network.pas to be used as substitute of the old opm_ZQuery_Main TZQuery. Added supporting code in the initialization section of network.pas. This new function call PRopm_WriteLog if logging is enabled. This is part of the fix of bug #105. Added new functions to network.pas: PRopm_WriteLog and PRopm_ResetLog, to add a new record to the SQL-query log and to reset its content. This is part of the fix of bug #105. Added call to PRopm_ResetLog in Topm_Form_Main.FormCreate to delete the content of the log file always when the application is started. Fixed a call to FNopm_ExecQuery in runmod.pas to call the new version in network.pas. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.1.0.396, 2004/09/03: Added new TTabSheet to Configuration window (config.dfm) opm_TabSheet_ConfigDBDetail to contain new fields with the database tables (alternatives). Also, added 12 new TEdit fields opm_Edit_ConfigDBTablexx to contain the DB table names, and a button opm_BitBtn_ConfigDBReset to reset them to the default. Added supporting code to config.pas. This is part of the fix of Bug #99. Fixed calls to PRINI_WriteSetting with wrong parameters in opm_BitBtn_ConfigSaveINIClick procedure in config.pas. Added new constant opmC_SQLDelInsNoZero to oscpmdata.pas to be used with PRopm_UpdateProdData (main.pas). This is part of the fix of Bug #103. Added new variables and contants (opmG_DBTable_XXXXXX and opmC_Def_DBTable_XXXXXX) to contain the database table names, so we no longer depend on hardcoded table names. This is part of the fix of Bug #99. Added supporting code to main.pas to load the new configurable DB table names at start up. This is part of the fix of Bug #99. Modified all SQL query strings to use the new variables for DB table names in main.pas and runmod.pas. This is part of the fix of Bug #99. Fixed function FNopm_ExecQuery (main.pas) to accept an empty SQL query, just ignoring it silently. Fixed PRopm_RenderCategoryDisplay (main.pas) to set the root node in the category tree to the name of the database host. Previously, we used the word "catalog". This is part of the fix of Bug #95. Modified PRopm_UpdateProdData (main.pas) to accept opmC_SQLDelInsNoZero as operation type. With opmC_SQLDelInsNoZero the procedure will delete the record from the given table if the data to be stored is zero or empty. This is part of the fix of Bug #103. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.1.0.382, 2004/08/31: Added field to color selection window (colorsel.dfm) to enter directly the RGB hexadecimal values. Added supporting code to colorsel.pas. This fixes Bug #102. Added options in configuration window (config.dfm) to set the timeouts for the DB link and the SSH session. Also added a checkbox to enable or disable the proxy options (to fix an usability issue). Added supporting code to config.pas and main.pas. Increased max-character number in tooltip ballons to 640 (in ballons.pas). (Some strings were being truncated in Spanish). Added new functions to dataman.pas. FNopm_CleanHexNumber clean a string to allow only hexadecimal values, padding the result if needed. FNopm_ComplementaryColor calculates the complementary color of a TColor. Fixed functions FNopm_ColorToRGB and FNopm_ColorToDecColor in dataman.pas to handle invalid values (at least, negative values). This fixes Bug #101. Changed name of variables opmC_DBConnectLapse and opmC_SSHConnectLapse to opmG_DBConnWait and opmG_SSHConnWait in oscpmdata.pas. Also added new constants opmC_MiliSecIncrement (to set the default increment of the spin fields in the configuration window), opmC_Def_DBConnWait, opmC_Def_SSHConnWait, opmC_Min_DBConnWait, opmC_Max_DBConnWait, opmC_Min_SSHConnWait, opmC_Max_SSHConnWait, opmC_Def_UseProxy and the variable opmG_UseProxy. Modified pedit.pas to support new opmG_UseProxy variable. Modified network.pas to support renaming of variables opmC_Def_SSHConnWait and opmC_Def_DBConnWait. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.1.0.370, 2004/08/29: Enabled ParentFont for all forms. Added language detail TLabel to the about window (about.dfm). Added supporting code to about.pas. Added TFontDialog to configuration window (config.dfm) and new button to select user-interface font. Added supporting code to config.pas and main.pas. Added new constants to oscpmdata.pas: opmC_DefaultFont, opmC_DefaultFontHeight, opmC_DefaultFontCharset and opmC_DefaultFontStyle. Added array of strings opmT_CharsetList with some values fille in the INITIALIZATION section corresponding to TCharsetType. Added four new variables to store the font data: opmG_UIFontName, opmG_UIFontHeight, opmG_UIFontCharset and opmG_CharsetList. Added new PRopm_Change_AppFont procedure to dataman.pas. It changes the Font definitions of all forms in the application. This function is unused now, as we coulnd't find an easy way to force the resizing expected when changing fonts. (The resizing only happened after restarting the application). Set several properties of Graphics.DefFontData in ocspm1.dpr (before any form is created) to set the default font to use in all forms and dialogs. Added contributed Croatian translation files from Igor Velijevic (vigor@hi.htnet.hr), to locale/hr/LC_MESSAGES. Fixed copyright notices on language files. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.1.0.368, 2004/08/27: Increased max allowed size for product description (opmC_ProdDescription_MaxLen) in oscpmdata.pas. This fixes bug #92. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.1.0.364, 2004/08/27: Added file to create_resources.bat to create resource of alternative debug license. Created license_except.xxx with debug-version freeware license. Added license_except.rc resource file to be used at compile time to include the latest alternative license.xxx file. Added new tab to configuration window (config.dfm) for user-interface additional options. Added controls for language selection. Deleted Language selection options from main menu (main.dfm). Now the selector will be in the Configuration window. Added language selection support code to config.pas. Added function FNopm_CheckLanguage to dataman.pas to check if a given language ISO code is really available for the application. Added compilation-conditional code in license.pas to include different license resource text if the application is compiled with or without MadExcept. Modified opmC_Def_GUILang constant to be "en" and opmG_UIGUILang variable to be a string (previously it was a Word). Added OnShow event code for the main form (main.pas) with a compilation conditional, to show a warning window after the splash window to warn the user that the application is a debug-version (Only if it was compiled with MadExcept). Deleted PRopm_SetEnglish and PRopm_SetSpanish. Added PRopm_SetUILang. (main.pas). Modified all handling of the opmG_UIGUILang variable, now that is no longer a Word but a String. Added isotolanguagenames.po for code-to-fullname language lookup. To support extra languages and easy the exploration of the users, locale strings will no longer be embeded in the executable file. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.1.0.346, 2004/08/25: Updated copyright and license notices to oscpm1_upload.php script. Fixed copyright notice for FreeImage. Added a new item to the About window; a memory usage indicator. It shows the current "memory load" as reported by Windows. Used to monitor memory usage to ease user-reporting after the change of the application limits. The count is updated every time the About window isshown, and everytime the splash window is shown. Added a sixth panel to the status bar of the main window (main.dfm). Added a call to FNopm_GetMemoryLoad in the procedure PRopm_Update_StatusBar (main.pas) to display the memory load in that panel everytime the status bar is updated. Now the width of the fifth and sixth status bar panels of the main window depend on the values opmC_DefCurPan_Size and opmC_DefMemPan_Size, defined in oscpmdata.pas. (Previously the fifth was hardcoded). Modified all references to INTEGER data types to LONGINT. Both are the same (signed 32-bits), this change is just for consistency. (main.pas, balloons.pas, dataman.pas, imageman.pas, modules.pas, network.pas, pedit.pas, runmod.pas). Added modification comment to freeimage.pas. Added function FNopm_GetMemoryLoad to dataman.pas to get the current "memory load" (percentage of used memory) of the system. Changed store limits: Max products from 8192 to 32768. Max descriptions from 40960 to 524288. Max categories from 512 to 2048. Max manufacturers from 512 to 2048. Max taxes from 64 to 128. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.1.0.333, 2004/08/23: Added line to oscpm1.dpr to use MemCheck 2.7.0 (for internal use only, because of licensing conflit). Changed project options to compile with full debug options and no optimizations. Executable size has grown to almos 10MB (it will not affect runtime memory usage, only file size). Fixed memory leaks in oscpmdata.pas and modules.pas. Added finalization code to free the memory allocated for several global TStringLists. Fixed NSIS installer script oscpm1.nsi to effectively delete all files when uninstalling (only leaving customized module files). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.1.0.330, 2004/08/22: Changed width of "Test SSH" and "Autoconfigure proxy" buttons to match the rest of the application (120 px). Added missing tooltip to License window from license.dfm. Reenabled the License window in main menu of main.dfm. Modified the call to FNopm_Question (which used InputQuery) in Topm_Form_Main.PRopm_Connect and now we call opm_Form_AskUser, for which we can set the PasswordChar property of its TEdit field. (This was fixed as part of Bug #67: If the option "Store passwords" is disabled, DB password is asked when connecting, but SSH tunnel password is not, thus the connection fails). Added calls to opm_Form_AskUser from Topm_Form_Main.PRopm_Connect just before trying to connect (previously we called FNopm_Question which used InputQuery). (This also fixes Bug #68 If the option "Store passwords" is disabled, the password is asked when connecting, but the dialog is not obscuring the password characters). Added code to reset the PasswordChar of opm_Form_AskUser.opm_Edit_AskUserData before showing the opm_Form_AskUser dialog in main.pas and pedit.pas. Added four new constans in oscpmdata.pas: opmC_DBUsername_MaxLen, opmC_DBPassword_MaxLen, opmC_SSHUsername_MaxLen, and opmC_SSHPassword_MaxLen. Currently only used when calling the opm_Form_AskUser dialog. Added puTTY license file. Updated credits in license.txt file. Added create_resources.bat file to create resource files before each release. Added license_text.rc resource file to be used at compile time to include the latest license.txt file. Set license memo to show both vertical and horizontal scrollbars in license.dfm. Added copyright and license notices to all files (except freeimage.pas and gnugettext.pas). Added new function FNopm_StringFromResource to dataman.pas to handle the loading of the license content from the resource data. Deleted hardcoded license body from license.pas (which was hard to maintain) and added a call to FNopm_StringFromResource to load it from resource data. Define DecimalSeparator and ThousandSeparator variables to period and comma in the initialization section of oscpmdata.pas to override the regional settings of Windows. This is part of the workaround (not really a fix) for Bug #77 and Bug #80. Disabled UpdateFormatSettings in oscpm1.dpr to disable Windows' regional settings influence on the program. This is part of the workaround (not really a fix) for Bug #77 and Bug #80. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.1.0.319, 2004/08/21: Added button to configuration window to test the SSH parameters. Tis will call PLink in full interactive mode, so the user may accept the connections (when done for the first time for a given host). Deleted the batch option when calling PLink. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0.1.0.316, 2004/08/16: Initial release. -----BEGIN PGP SIGNATURE----- Version: PGP 8.0 iQCVAwUBRkmlhzpHuYe8JiHtAQEwLgP+KrtBkWSaG/dDpijM8wip5BEy0YlWcE/E 3BJn0HDl3HxgNke7XvXVilg0CYgbYFCBhfs3l3mIH42WqqQianmjNODc1qT+cSAc T9cyzhgynAG3iqp3h0UBC7TtMf8o5oYdGdFh5J0txE9oGOSyeJVTfV2IrkGG0TKi m1Il1rwFic8= =wJGr -----END PGP SIGNATURE-----