This is a script to be run from the main Control Panel that allows you to publish selected components from a webproject to multiple publishing profiles in a batch:
Code:
'Date Created: 31-Jan-2018 09:38:11 PM 'Last Updated: 07-Aug-2020 01:19:32 PM 'Created By : Brad Weaver 'Updated By : Brad Weaver ' DELETE a_files DELETE select_profiles DELETE a_profiles DELETE temp_list DELETE ComponentFiles DELETE profiles DELETE files DIM SHARED files AS C ' Used to store the selected components to publish DIM SHARED profiles AS C ' Used to store the list of profiles to publish DIM ops AS P ' Pointer variable used for A5W_Publish2 function parameters DIM SHARED varC_result as C dim temp_list as c 'Enter the types of components you intend to publish on the next lines in order to list all components in the selection listbox 'FileFind creates a CRLF list of file names that match ComponentFiles = FileFind.Get(a5_webprojectpath()+"\*.a5wcmp",FILE_FIND_NORMAL,"N") ReportFiles = FileFind.Get(a5_webprojectpath()+"\*.a5rpt",FILE_FIND_NORMAL,"N") LabelFiles = FileFind.Get(a5_webprojectpath()+"\*.a5lab",FILE_FIND_NORMAL,"N") 'Now append all of the different filenames for all types into one variable files = ComponentFiles + crlf() + ReportFiles + crlf() + LabelFiles 'Next, create the array to hold the filenames, initialize it with the files and sort the array DIM a_files[line_count(Files)] a_files.initialize(Files) a_files.sort() DIM temp_list AS c 'This list should match exactly the names of any defined publishing profiles to which you intend to publish files or components temp_list = <<%list% YourPublishingProfileName1 YourPublishingProfileName2 YourPublishingProfileName3 YourPublishingProfileName4 %list% 'debug(1) 'Create the array of profiles from temp_list and initialize it DIM a_profiles[line_count(temp_list)] ' Array of profiles used to populate profiles list a_profiles.initialize(temp_list) ' Now create XDialog box with two lists - files and profiles and two buttons: Publish and Cancel heading_string = "This dialog is used to publish one or more components to multiple publishing profiles." ok_button_label = "&Publish" cancel_button_label = "&Cancel" varC_result = ui_dlg_box("Multi-Profile Publish",<<%dlg% {region} {text=55,1:heading_string}; {endregion}; {region} Select Profiles:| [%E%.60,15profiles^#a_profiles] Select Components:| [%E%.60,15files^#a_files] ; {endregion}; {line=1,0}; {region} <*15=ok_button_label!OK> <15=cancel_button_label!CANCEL> {endregion}; %dlg%) IF varC_result = "OK" 'Publish selected if Publish button clicked 'Convert files to comma-delimited list required for a5w_publish2 'files = crlf_to_comma(files) 'Initialize an array of selected profiles to loop through IF line_count(profiles)=0 .OR. line_count(files)=0 DIM errormsg as C DIM SHARED error_result as C errormsg = "You must select at least one profile and one component to publish." ok_button_label = "&OK" cancel_button_label = "" error_result = ui_dlg_box("Warning",<<%dlg% {region} {Region} ; {Endregion}; {Region} {image=$$generic.exclamation}{sp} {sp}| {text=40,5:errormsg}; {Endregion}; {Region} ; {Endregion}; {line=1,0}; <*15=ok_button_label!OK>; {endregion}; %dlg%) END END IF Dim selected_profiles[line_count(profiles)] ' Array of selected profiles used to loop through when publishing selected_profiles.initialize(profiles) ops.projname = "Default" ' This is the standard web project. If you use other projects, you may need to add another list box to select which project to publish ops.publish_type = 2 ' Type 1 = Entire project, 2 = Selected files in the ops.files variable ops.files = files ' Comma-delimited list of files (components) to publish ops.flagOptimizePublishing = .F. 'If .T. then only publish components that have changed since the last publish, otherwise publish all selected components regardless. .F. here forces publishing of all selected components 'Loop through the chosen profiles FOR x=1 TO selected_profiles.size() ops.profile = alltrim(Selected_Profiles[x]) traceln("Attempting to publish profile "+ops.profile) result=a5w_publish2(ops) 'Publish to the current profile 'When publishing is complete, you can open the Trace Window in Alpha to see which profiles published successfully and which, if any, failed if result=.T. then traceln("++++Success") else traceln("----FAILED") end if NEXT END IF