PageSourceSearch

https://pushpowerpromo.com/js/user_reviews.js

js pushpowerpromo.com collected 2026-09-26 03:10:17 UTC 17,034 bytes, 484 lines download raw bytes

1
2var g_dialogSavedHardware;
3function BrowserViewHandleMessageFromParent( strMessage, strArguments )
4{
5	if ( strMessage == 'OnCloseSaveHardwareDialog' )
6	{
7		OnAttachPCHardware();
8	}
9}
10
11function OnAddNewHardware()
12{
13	if ( Steam.BIsUserInSteamClient() && ( Steam.GetClientPackageVersion() == 0 || Steam.GetClientPackageVersion() >= 1770934110 ) )
14	{
15		g_dialogSavedHardware.Dismiss();
16		window.SteamClient.BrowserView.RegisterForMessageFromParent( BrowserViewHandleMessageFromParent );
17		window.SteamClient.BrowserView.PostMessageToParent( 'ShowSavedHardwareDialog', '' );
18	}
19	else
20	{
21		ShowAlertDialog( 'Error', 'This can only be done from within the Steam Client.' );
22	}
23}
24
25function ShowSavedHardwareDialog( rgSavedHardware, funcOnHardwareSelected )
26{
27	var content = $J( "<div>", { class: 'saved_hardware_list' } );
28	const strPanelAttr = '{"focusable":true,"clickOnActivate":true}';
29	for ( var i = 0; i < rgSavedHardware.length; ++i )
30	{
31		var hw = rgSavedHardware[i];
32		var hwDiv = $J( "<div>", { class: 'saved_hardware', text: hw.friendly_name, 'data-panel': strPanelAttr } );
33		hwDiv.data( 'saved_hardware_id', hw.hardware_id );
34		hwDiv.click( function( event ) {
35			var el = $J( event.target );
36			$J( "#AttachedPCHardware" ).val( el.data( 'saved_hardware_id' ) );
37			g_dialogSavedHardware.Dismiss();
38
39			if ( funcOnHardwareSelected )
40			{
41				funcOnHardwareSelected();
42			}
43		} );
44		content.append( hwDiv );
45	}
46
47	// new
48	{
49		var hwDiv = $J( "<div>", { class: 'saved_hardware', text: 'Add new PC configuration', 'data-panel': strPanelAttr } );
50		hwDiv.click( function() {
51			OnAddNewHardware();
52		} );
53		content.append( hwDiv );
54	}
55
56	g_dialogSavedHardware = ShowAlertDialog( 'Attach PC specs to your review', content, 'Cancel' );
57	g_dialogSavedHardware.done( function() {
58		if ( funcOnHardwareSelected )
59		{
60			funcOnHardwareSelected();
61		}
62	} );
63}
64
65function OnAttachPCHardwareToReview( baseURL, funcOnHardwareSelected )
66{
67	if ( !$J( "#AttachedPCHardware" ).prop( 'checked' ) )
68	{
69		if ( funcOnHardwareSelected )
70		{
71			funcOnHardwareSelected();
72		}
73		return;
74	}
75
76	$J.get( baseURL + '/userreviews/ajaxgetsavedhardware' )
77	.done( function( results )
78	{
79		if ( results.success != 1 )
80		{
81			return;
82		}
83
84		ShowSavedHardwareDialog( results.saved_hardware, funcOnHardwareSelected );
85	} );
86}
87
88function UserReview_Award( bLoggedIn, loginURL, recommendationID, callbackFunc, selectedAward )
89{
90	if ( bLoggedIn )
91	{
92		fnLoyalty_ShowAwardModal( recommendationID, 1, callbackFunc, undefined, selectedAward );
93	}
94	else
95	{
96		var dialog = ShowConfirmDialog( 'Error', 'You must be logged in to perform that action.', 'Sign In' );
97		dialog.done( function() {
98			top.location.href = loginURL;
99		} );
100	}
101}
102
103function UserReview_ShowMoreAwards( elem )
104{
105	elem = $J( elem );
106	var container = elem.closest( ".review_award_ctn" );
107	container.addClass( "show_all_awards" );
108}
109
110function UserReview_Rate( recommendationID, bRateUp, baseURL, callback )
111{
112	$J.post( baseURL + '/userreviews/rate/' + recommendationID,{
113				'rateup' : bRateUp,
114				'sessionid' : g_sessionID
115	}).done( function( results ) {
116		if ( results.success == 1 )
117		{
118			callback( results );
119		}
120		else if ( results.success == 21 )
121		{
122			ShowAlertDialog( 'Error', 'You must be logged in to perform that action.' );
123		}
124		else if ( results.success == 15 )
125		{
126			ShowAlertDialog( 'Error', 'Your account does not have sufficient privileges to perform this action.' );
127		}
128		else if ( results.success == 24 )
129		{
130			ShowAlertDialog( 'Error', 'Your account does not meet the requirements to use this feature. <a class="whiteLink" href="https://help.steampowered.com/en/wizard/HelpWithLimitedAccount" target="_blank" rel="noreferrer">Visit Steam Support</a> for more information.' );
131		}
132		else
133		{
134			ShowAlertDialog( 'Error', 'There was an error trying to process your request: ' + results.success );
135		}
136	} );
137}
138
139function UserReview_VoteTag( recommendationID, tagID, bRateUp, baseURL, callback )
140{
141	$J.post( baseURL + '/userreviews/votetag/' + recommendationID,{
142		'tagid' : tagID,
143		'rateup' : bRateUp,
144		'sessionid' : g_sessionID
145	}).done( function( results ) {
146		if ( results.success == 1 )
147		{
148			callback( results );
149		}
150		else if ( results.success == 21 )
151		{
152			ShowAlertDialog( 'Error', 'You must be logged in to perform that action.' );
153		}
154		else if ( results.success == 15 )
155		{
156			ShowAlertDialog( 'Error', 'Your account does not have sufficient privileges to perform this action.' );
157		}
158		else if ( results.success == 24 )
159		{
160			ShowAlertDialog( 'Error', 'Your account does not meet the requirements to use this feature. <a class="whiteLink" href="https://help.steampowered.com/en/wizard/HelpWithLimitedAccount" target="_blank" rel="noreferrer">Visit Steam Support</a> for more information.' );
161		}
162		else
163		{
164			ShowAlertDialog( 'Error', 'There was an error trying to process your request: ' + results.success );
165		}
166	} );
167}
168
169function UserReview_Report( recommendationID, baseURL, callback )
170{
171	var dialog = ShowPromptWithTextAreaDialog( 'Report Review', '', null, null, 1000 );
172	var explanation = $J('<div/>', { 'class': 'user_review_report_dialog_explanation' } );
173	explanation.html( 'Please enter the reason why you are reporting this review for violating the Steam Terms of Service or Online Conduct Rules. This cannot be undone.' );
174
175	var textArea = dialog.m_$Content.find( 'textarea' );
176	textArea.addClass( "user_review_report_dialog_text_area" );
177	textArea.parent().before( explanation );
178
179	dialog.done( function( note ) {
180		if ( !note )
181		{
182			return;
183		}
184		note = v_trim( note );
185		if ( note.length < 1 )
186		{
187			return;
188		}
189		$J.post( baseURL + '/userreviews/report/' + recommendationID, {
190					'reportnote' : note,
191					'sessionid' : g_sessionID
192		}).done( function( results ) {
193			if ( results.success == 1 )
194			{
195				callback( results );
196			}
197			else if ( results.success == 21 )
198			{
199				ShowAlertDialog( 'Error', 'You must be logged in to perform that action.' );
200			}
201			else
202			{
203				ShowAlertDialog( 'Error', 'There was an error trying to process your request: ' + results.success );
204			}
205		} );
206	} );
207}
208
209function UserReview_ShowUpdateReviewDialog( recommendationID, existingText, baseURL )
210{
211	var dialog = ShowPromptWithTextAreaDialog( 'Update Your Review', existingText, null, null, 4096 );
212
213	dialog.done( function( note ) {
214		if ( !note )
215		{
216			return;
217		}
218		note = v_trim( note );
219		if ( note.length < 1 )
220		{
221			return;
222		}
223		UserReview_Update_Text( recommendationID, note, baseURL, function( results ) { top.location.reload(); } );
224	} );
225}
226
227function UserReview_Update( recommendationID, params, baseURL, callback )
228{
229	params['sessionid'] = g_sessionID;
230	$J.post( baseURL + '/userreviews/update/' + recommendationID, params )
231	.done( function( results ) {
232		if ( results.success == 1 )
233		{
234			if ( callback )
235			{
236				callback( results );
237			}
238		}
239		else
240		{
241			ShowAlertDialog( 'Error', 'There was an error trying to process your request: ' + results.success );
242		}
243	} );
244}
245
246function UserReview_Update_Visibility( recommendationID, is_public, baseURL, callback )
247{
248	UserReview_Update( recommendationID, { 'is_public' : is_public }, baseURL, callback );
249}
250
251function UserReview_Update_Language( recommendationID, language, baseURL, callback )
252{
253	UserReview_Update( recommendationID, { 'language' : language }, baseURL, callback );
254}
255
256function UserReview_Update_CommentStatus( recommendationID, bCommentsDisabled, baseURL, callback )
257{
258	UserReview_Update( recommendationID, { 'comments_disabled' : bCommentsDisabled }, baseURL, callback );
259}
260
261function UserReview_Update_CommentStatus( recommendationID, bCommentsDisabled, baseURL, callback )
262{
263	UserReview_Update( recommendationID, { 'comments_disabled' : bCommentsDisabled }, baseURL, callback );
264}
265
266function UserReview_Moderate( recommendationID, params, baseURL, callback )
267{
268	params['sessionid'] = g_sessionID;
269	$J.post( baseURL + '/userreviews/moderate/' + recommendationID, params )
270		.done( function( results ) {
271			if ( results.success != 1 )
272			{
273				var dialog = ShowAlertDialog( 'Error', 'There was an error trying to process your request: ' + results.success );
274				dialog.done( function() {
275					if ( callback )
276					{
277						callback( results );
278					}
279				} );
280			}
281			else
282			{
283				if ( callback )
284				{
285					callback( results );
286				}
287			}
288		} );
289}
290
291function UserReview_ClearDeveloperFlag( recommendationID, baseURL, callback )
292{
293	var dialog = ShowConfirmDialog( 'Clear Developer Flag Reason', 'This review was flagged by the developer. Are you sure you want to clear this status?' );
294	dialog.done( function() {
295		$J.post( baseURL + '/userreviews/cleardeveloperflag/' + recommendationID, {'sessionid' : g_sessionID} )
296		.done( function( results ) {
297			if ( results.success == 1 )
298			{
299				if ( callback )
300				{
301					callback( results );
302				}
303			}
304			else
305			{
306				ShowAlertDialog( 'Error', 'There was an error trying to process your request: ' + results.success );
307			}
308		} );
309	});
310}
311
312function UserReview_SetDeveloperResponse( recommendationID, recommendation, baseURL, callback )
313{
314	var dialog = ShowPromptWithTextAreaDialog( 'Write a response', recommendation.developer_response, null, null, 8000 );
315	var explanation = $J('<div/>', { 'class': 'user_review_report_dialog_explanation' } );
316	explanation.html( 'You can choose to respond to this review in an official capacity. This response will be visible to anyone who can see this review and will be marked as from the developer.' );
317
318	var textArea = dialog.m_$Content.find( 'textarea' );
319	textArea.addClass( "user_review_report_dialog_text_area" );
320	textArea.parent().before( explanation );
321
322	dialog.done( function( note ) {
323		$J.post( baseURL + '/userreviews/setdeveloperresponse/' + recommendationID,{
324					'developer_response' : note,
325					'sessionid' : g_sessionID
326		}).done( function( results ) {
327			if ( results.success == 1 )
328			{
329				callback( results );
330			}
331			else
332			{
333				ShowAlertDialog( 'Error', 'There was an error trying to process your request: ' + results.success );
334			}
335		} );
336	} );
337}
338
339function UserReview_ShowReportsDialog( recommendationID, baseURL )
340{
341	$J.post( baseURL + '/userreviews/ajaxgetreports/' + recommendationID,{ 'sessionid' : g_sessionID } )
342	.done( function( results ) {
343		if ( results.success == 1 )
344		{
345			var container = $J('<div/>', {'class': 'review_reports' } );
346			var reports = results.reports;
347
348			{
349				var reportDiv = $J('<div/>', {'class': 'review_report header' } );
350				var divReporter = $J('<div/>', {'class': 'review_report_data' } ).append( 'Reporter' );
351				reportDiv.append( divReporter );
352				var divDescription = $J('<div/>', {'class': 'review_report_data description' } ).append( 'Report Description' );
353				reportDiv.append( divDescription );
354				var divWeight = $J('<div/>', {'class': 'review_report_data' } ).append( 'Weight' );
355				reportDiv.append( divWeight );
356				var divWasReset = $J('<div/>', {'class': 'review_report_data' } ).append( 'Cleared?' );
357				reportDiv.append( divWasReset );
358				var divTime = $J('<div/>', {'class': 'review_report_data' } ).append( 'Date' );
359				reportDiv.append( divTime );
360				var divReviewText = $J('<div/>', {'class': 'review_report_data review_text' } ).append( 'Review Text At Report Time' );
361				reportDiv.append( divReviewText );
362				var divClear = $J('<div/>', {'style': 'clear: left' } );
363				reportDiv.append( divClear );
364				container.append( reportDiv );
365			}
366
367			for ( var i = 0; i < reports.length; ++i )
368			{
369				var report = reports[i];
370
371				var reportDiv = $J('<div/>', {'class': 'review_report' } );
372					var divReporter = $J('<div/>', {'class': 'review_report_data' } ).append( $J('<a/>', {'href': report.reporter_url, 'text': report.reporter, 'target': '_blank' } ) );
373					reportDiv.append( divReporter );
374					var divDescription = $J('<div/>', {'class': 'review_report_data description' } ).append( report.description );
375					reportDiv.append( divDescription );
376					var divWeight = $J('<div/>', {'class': 'review_report_data' } ).append( report.weight );
377					reportDiv.append( divWeight );
378					var divWasReset = $J('<div/>', {'class': 'review_report_data' } ).append( report.was_reset ? 'Yes' : 'No' );
379					reportDiv.append( divWasReset );
380					var divTime = $J('<div/>', {'class': 'review_report_data' } ).append( report.time_string );
381					reportDiv.append( divTime );
382					var divReviewText = $J('<div/>', {'class': 'review_report_data review_text' } ).append( report.review_text );
383					reportDiv.append( divReviewText );
384					var divClear = $J('<div/>', {'style': 'clear: left' } );
385					reportDiv.append( divClear );
386				container.append( reportDiv );
387			}
388			var dialog = ShowAlertDialog( 'Clear Reports', container );
389		}
390	} );
391}
392
393function UserReview_ShowContentCheckResultsDialog( recommendationID, baseURL )
394{
395	$J.get( baseURL + '/userreviews/ajaxgetcontentcheckresults/' + recommendationID )
396	.done( function( data ) {
397		if ( data.success == 1 )
398		{
399			var container = $J('<div/>', {'class': 'review_reports' } );
400
401			{
402				var reportDiv = $J('<div/>', {'class': 'review_report header' } );
403					var divProvider = $J('<div/>', {'class': 'review_report_data' } ).append( 'Provider' );
404					reportDiv.append( divProvider );
405					var divResult = $J('<div/>', {'class': 'review_report_data' } ).append( 'Result' );
406					reportDiv.append( divResult );
407					var divScore = $J('<div/>', {'class': 'review_report_data' } ).append( 'Score' );
408					reportDiv.append( divScore );
409					var divProviderResponse = $J('<div/>', {'class': 'review_report_data description' } ).append( 'Provider Response' );
410					reportDiv.append( divProviderResponse );
411					var divReviewText = $J('<div/>', {'class': 'review_report_data review_text' } ).append( 'Review Text At Eval Time' );
412					reportDiv.append( divReviewText );
413					var divTime = $J('<div/>', {'class': 'review_report_data' } ).append( 'Date' );
414					reportDiv.append( divTime );
415					var divClear = $J('<div/>', {'style': 'clear: left' } );
416					reportDiv.append( divClear );
417				container.append( reportDiv );
418			}
419
420			for ( var i = 0; i < data.results.length; ++i )
421			{
422				var r = data.results[i];
423				var reportDiv = $J('<div/>', {'class': 'review_report' } );
424					var divProvider = $J('<div/>', {'class': 'review_report_data' } ).append( r.str_provider );
425					reportDiv.append( divProvider );
426					var divResult = $J('<div/>', {'class': 'review_report_data' } ).append( r.ban_check_result_string );
427					reportDiv.append( divResult );
428					var divScore = $J('<div/>', {'class': 'review_report_data' } ).append( r.score );
429					reportDiv.append( divScore );
430					var divProviderResponse = $J('<div/>', {'class': 'review_report_data description' } ).append( r.provider_response );
431					reportDiv.append( divProviderResponse );
432					var divReviewText = $J('<div/>', {'class': 'review_report_data review_text' } ).append( r.review_text );
433					reportDiv.append( divReviewText );
434			var divTime = $J('<div/>', {'class': 'review_report_data' } ).append( r.timestamp_evaluated_string );
435			reportDiv.append( divTime );
436					var divClear = $J('<div/>', {'style': 'clear: left' } );
437					reportDiv.append( divClear );
438				container.append( reportDiv );
439			}
440			var dialog = ShowAlertDialog( 'Suspicious Content Check Results', container );
441		}
442	} );
443}
444
445function UserReview_ShowClearReportsDialog( recommendationID, baseURL, callback )
446{
447	var dialog = ShowConfirmDialog( 'Clear Reports', 'Are you sure you want to clear all reports? This cannot be undone!' );
448	dialog.done( function() {
449		UserReview_Moderate( recommendationID, { 'clear_reports' : 1 }, baseURL, callback);
450	});
451}
452
453function UserReview_ShowVoteBanUsersDialog( recommendationID, baseURL, callback )
454{
455	var dialog = ShowConfirmDialog( 'Vote Ban Users', 'Are you sure you want to vote ban users who upvoted this review? This cannot be undone!<br><br>
455This should only be done if this review qualifies as suspicious content.' );
456	dialog.done( function() {
457		UserReview_Moderate_VoteBanUsers( recommendationID, baseURL, callback);
458	});
459}
460
461function UserReview_Moderate_SetBanStatus( recommendationID, force_hidden, baseURL, callback, strModerationNote )
462{
463	UserReview_Moderate( recommendationID, { 'force_hidden' : force_hidden, 'moderation_note' : strModerationNote }, baseURL, callback );
464}
465
466function UserReview_Moderate_SetDeveloperFlag( recommendationID, flagged_by_developer, baseURL, callback )
467{
468	UserReview_Moderate( recommendationID, { 'flagged_by_developer' : flagged_by_developer }, baseURL, callback );
469}
470
471function UserReview_Moderate_SetQualities( recommendationID, qualities, baseURL, callback )
472{
473	UserReview_Moderate( recommendationID, { 'review_qualities' : qualities, 'update_review_qualities' : 1 }, baseURL, callback );
474}
475
476function UserReview_Moderate_VoteBanUsers( recommendationID, baseURL, callback )
477{
478	UserReview_Moderate( recommendationID, { 'vote_ban_users' : 1 }, baseURL, callback );
479}
480
481function UserReview_Moderate_UpdateLanguage( recommendationID, language, baseURL, callback )
482{
483	UserReview_Moderate( recommendationID, { 'language' : language }, baseURL, callback );
484}

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.