The 2008–09 NHL season was the 92nd season of operation (91st season of play) of the National Hockey League (NHL). It was the first season since prior to the 2004–05 lockout in which every team played each other at least once during the season, following three seasons where teams only played against two divisions in the other conference (one division at home and one on the road.)[1] It began on October 4, with the regular season ending on April 12. The Stanley Cup playoffs ended on June 12, with the Pittsburgh Penguins taking the championship. The Montreal Canadiens hosted the 57th NHL All-Star Game at the Bell Centre on January 25, 2009, part of the Canadiens' 100th season celebration.[2]
League business
Increase in salary cap
National Hockey League announced that the regular season salary cap would be going up for the fourth straight season. The 2008–09 salary cap is being increased by $6,400,000 (US) per team to bring the salary cap up to $56,700,000 (US). The salary floor is at $40,700,000 (US), which is higher than the salary cap on 2005–06 season.
Rule changes
The NHL brought in a number of rule changes for the start of the 2008–09 NHL season aimed at increasing offence and safety. The first rule change was to Rule 76.2 on faceoffs. The first faceoff of a power play will now be in the defending zone of the team that committed the foul, regardless of where the play was stopped. The second rule dealt with the issue of safety while players are pursuing the puck on a potential icing call. Rule 81.1 states that, "Any contact between opposing players while pursuing the puck on an icing must be for the sole purpose of playing the puck and not for eliminating the opponent from playing the puck. Unnecessary or dangerous contact could result in penalties being assessed to the offending player." The third rule change also dealt with faceoff position: if a puck is shot off the goal frame, goal post or crossbar, the subsequent faceoff will remain in the end zone where the puck went out of play.[3] Another rule change prohibits TV commercials, game breaks, and any line changes immediately after an icing call.
Season schedule
The 2008–09 schedule returns to the pre-lockout schedule. The new schedule eliminates the three-year rotation where teams would only play teams in two of the three divisions of the opposite conference; instead the new schedule guarantees that each team plays every other team at least once. In this new schedule, each team will play their divisional rivals six times for a total of 24 games; they will play all other conference teams four times for a total of 40 games, and will play every team in the opposite conference at least once for a total of 15 games. To obtain a total of 82 games there are an additional three-wild card games; for the Canadian teams, the three-wild card games are composed of playing the three Canadian teams in the opposite conference an additional time.[4]
European openers
The 'regular season' started with four games played in Europe. The
Ottawa Senators and the
Pittsburgh Penguins played each other twice in
Stockholm, Sweden the 2 teams split a 2-game premiere, and the
New York Rangers and the
Tampa Bay Lightning played each other twice in
Prague, Czech Republic The Rangers swept Tampa Bay 2–0. The New York Rangers represented the NHL in the
inaugural Victoria Cup challenge game as part of the club's pre-season schedule. The four teams also played some pre-season exhibition games in Europe.
[5]
Other than the four overseas 'regular season' games starting October 4, October 9 was the actual first day of regular season games as far as widespread continental North American broadcast from most providers, including pay per view hockey packages. Other teams still played preseason games between October 4 and 6.
By February 23, 2009, all four teams who started the season in Europe had fired their coaches.
Winter Classic
Because of the success of the 2008 Winter Classic, another outdoor game was held in the 2008–09 NHL season. While Yankee Stadium was considered an early favorite, in a game to be hosted by the Rangers, cold-weather issues involving the old stadium put that location out of the mix. Another site considered was Beaver Stadium at Penn State University, with that game to likely involve the Penguins and the Flyers.[6]
On May 29, 2008, TSN reported that the 2009 NHL Winter Classic would be held in Chicago, Illinois on January 1, 2009, played between the Chicago Blackhawks and defending champion Detroit Red Wings.[7] Soldier Field was considered an early candidate, however the NFL's Chicago Bears objected, citing a possible home game for the 2008 NFL playoffs that weekend (January 3–4); ironically, the Bears ended up being eliminated from contention in the last week. It was decided that the game would be played at Wrigley Field, the North Side home of the Chicago Cubs, as confirmed by the Minneapolis Star-Tribune on July 6. Ten days afterward, the NHL confirmed the reports that the game would officially be held on New Year's Day.[8] Faceoff was scheduled for 1 pm EST (12 noon CST). The Red Wings won the game 6–4.
Trade deadline
The NHL and National Hockey League Players' Association (NHLPA) agreed to move the trade deadline from Tuesday, March 3, 2009, to Wednesday, March 4, 2009. This was done mainly because the schedule has twelve games on March 3 and only two on March 4.[9]
General Managers' Meeting
At the meeting, held in Naples, Florida from March 9–11, 2009, general managers of the teams discussed issues that concerned them. Consensus on any topic would lead to action by the Board of Governors or the Competition committee in later meetings. Paul Kelly, president of the NHLPA, made a presentation on the topic of dangerous hits to the head, proposing new rules to penalize intentional hits.[10] The general managers could not agree on the planned rule change and took no further action. Kelly intends to review the issue at the future Competition committee meeting, which is held after the Stanley Cup final. The general managers also discussed the topic of fighting in hockey, and agreed to penalize further players who start fights directly after face-offs and to further enforce the existing 'instigator' rule.[11] The managers agreed to award a second-round compensatory pick in the 2009 entry draft to the New York Rangers due to the death of Alexei Cherepanov.[12]
Scheduled events and deadlines
The Christmas holiday roster freeze went into effect on December 19, 2008, and ended on December 27, 2008.
The NHL Winter Classic was held on January 1, 2009, between the Detroit Red Wings and the Chicago Blackhawks at Wrigley Field.
No regular-season games were held during the NHL All-Star break from January 22 to January 26. During the break, the NHL held its annual All-Star Game and the SuperSkills Competition in Montreal, Quebec.
The trade deadline was March 4 at 3 pm EST.[13] The most notable trade was between the Phoenix Coyotes and Calgary Flames sending Olli Jokinen to Calgary, but there were fewer trades than at previous deadlines.
Regular season
The first goal of the season was scored by Markus Naslund of the New York Rangers in Prague against the Tampa Bay Lightning.[14] On October 16, 2008, the Blackhawks fired head coach Denis Savard and replaced him with former Colorado Avalanche and St. Louis Blues head coach Joel Quenneville.[15] On Saturday, October 25, the NHL scheduled fifteen games—with all 30 teams playing—for the second time in league history.[16]
On November 3, 2008, in a game between the Columbus Blue Jackets and the New York Islanders, Islanders forward Chris Campoli scored twice in one overtime. First, Campoli retrieved a loose puck and fired a shot past Jacket's goaltender Fredrik Norrena. The shot went through the net and, while Campoli celebrated, the game continued. Campoli then received a pass in front of the goal and shot the puck again into the net.[17]
Tampa Bay Lightning head coach Barry Melrose would record his first win as a head coach in over 13 years on October 21, 2008, with a 3–2 victory over the Atlanta Thrashers. However, the Lightning did not get off to a great start as hoped, and Melrose was fired by the Lightning with a 5–7–4 record. Rick Tocchet, who had been hired as assistant coach during the previous offseason, was promoted to interim head coach. Melrose subsequently re-signed with broadcaster ESPN. Melrose proceeded to get into a war of words with the Lightning management, accusing the management of interference during an interview on a Toronto radio station.[18]
On December 2, 2008, Carolina Hurricanes' head coach Peter Laviolette was fired and Paul Maurice was rehired in his place. Ron Francis became the team's associate head coach.
During the annual December board of governors' meeting, the issue of the state of the economy was raised. The Phoenix Coyotes were reported to lose up to $35 million on the 2008–09 season. Asked to comment on Phoenix's loss, Commissioner Gary Bettman was quoted as saying "They're going to get through the season just fine."[19] The Buffalo Sabres, while not for sale, had been approached for purchase.
On December 5, Sean Avery of the Dallas Stars was suspended six games for 'off-colour' remarks prior to a game against the Calgary Flames.[20] On December 14, the Stars' management announced that he would not be returning to the team. After Avery's reinstatement by the league, he reported to the Hartford Wolf Pack of the AHL. He was placed on re-entry waivers and was claimed by the New York Rangers, his team in 2007–08.
On December 23, the Toronto Globe and Mail reported that the Phoenix Coyotes team is receiving financial assistance from the league in the form of advances on league revenues. The Coyotes have pledged all of their assets to New York company SOF Investments LP to cover an estimated debt of $80 million. The team has lost an estimated $200 million since 2001 and may lose $30 million this season. One of the team's owners, Jerry Moyes' principal source of revenue, Swift Transportation is also in financial difficulty.[21] ESPN reported that the league has gotten involved with the operations of the Coyotes and their revenues. The NHL reportedly wants to work with the city of Glendale, Arizona, which owns the arena and receives revenues from the team. ESPN also reported that Moyes wants to sell his share of the team and that Hollywood film producer Jerry Bruckheimer is a possible interested purchaser.[22]
In February 2009, three head coaches were relieved from their duties. On February 1, Craig Hartsburg was fired as head coach of the Ottawa Senators following a 17–24–7 start to the season and was immediately replaced by Binghamton Senators head coach Cory Clouston.[23] On February 15, Dan Bylsma of the American Hockey League's Wilkes-Barre/Scranton Penguins was promoted to replace Michel Therrien of the Pittsburgh Penguins as interim head coach. Dan would later be announced as a permanent head coach of the team.[24] On February 23, the New York Rangers fired Tom Renney following an overtime loss and he was replaced on the same day by TSN analyst and former Tampa Bay Lightning head coach, John Tortorella.[25]
In March, goaltender Martin Brodeur returned to the New Jersey Devils after a long injury. He became the winningest goaltender in league history, surpassing the record of Patrick Roy. Guy Carbonneau was also fired as the head coach of the Canadiens when the team was in danger of being eliminated from the playoffs.
In April, the Columbus Blue Jackets qualified for the playoffs for the first time in franchise history. The Carolina Hurricanes qualified for the playoffs for the first time since their 2006 Stanley Cup victory. The Ottawa Senators missed the playoffs for the first time since the 1995–96 season.
In an ironic twist, considering his injury woes of past seasons, Jordan Leopold played in all 64 games for the Colorado Avalanche. Upon being traded to the Calgary Flames Leopold played in all 19 remaining games for the Flames becoming the only NHL player to play 83 games of the 82 game 2008–2009 season.[26] Jacques Lemaire resigned as the first head coach of the Minnesota Wild on April 11 after missing the playoffs.
Scoring in the regular season improved somewhat from 2007–08, with an average of 5.7 goals scored per game (7,006 goals scored over 1,230 games).[27] Goaltenders combined for 156 shutouts.[28]
In May 2009, it was revealed that the NHL had taken control of the Phoenix Coyotes from the start of the season and had known of the financial difficulties of the team prior to the start of the 2008–09 season. After owner Jerry Moyes petitioned the club into bankruptcy against the league's wishes, so as to sell the team to Jim Balsillie who plans to move the team to Hamilton, Ontario, the league challenged the right of Moyes to file for bankruptcy. In the documents filed with the Phoenix bankruptcy court, the NHL stated that the league took official control of the team on November 14, 2008. The league then began advancing money to the club from league revenues, and made a loan to the club in February 2009, for a combined estimated total of $44.5 million over the full season. During the season, commissioner Bettman and deputy commissioner Bill Daly had made a series of denials and obfuscations, while firing the Coyotes CEO and laying off 18 Coyotes employees. Moyes' documents filed with the court indicated that the team had lost $73 million over the last three years, and that the projected loss was $45 million for 2008–09.[29]
Jacques Martin became the head coach of the Montreal Canadiens on June 1 when former coach Bob Gainey returned to his general manager status. On June 3, Tony Granato was fired as the head coach of the Colorado Avalanche and was replaced on the next day by Joe Sacco, head coach of the Avs' top minor league affiliate the Lake Erie Monsters of the AHL. On June 9, despite Brent Sutter winning 51 games (a franchise record), he resigned as head coach of the New Jersey Devils after two first-round playoff losses because of family reasons. One day later on June 10, Dave Tippett was fired as head coach of the Dallas Stars after missing the playoffs for the first time since the 2001–02 season, when Rick Wilson took over as coach. Marc Crawford was named the new head coach for the 2009–10 season the next day. Todd Richards would be named the second head coach of the Minnesota Wild on June 15, three days after the Pittsburgh Penguins won the Stanley Cup over the Detroit Red Wings 4 games to 3. Evgeni Malkin earned the Conn Smythe Trophy for becoming the most valuable player during the Stanley Cup Finals.
Final standings
GP = Games Played, W = Wins, L = Losses, OTL = Overtime/Shootout Losses, GF = Goals For, GA = Goals Against, Pts = Points.
Tiebreaking procedures
In the event of a tie in points in the standings at the end of the season, ties are broken using the following tiebreaking procedures.[30] The higher ranked team is the one with:
-
The greater number of games won.
-
The greater number of points earned in games between the tied clubs.
-
The greater differential between goals for and against for the entire regular season.
Playoffs
Playoff seeds
After the regular season, the standard of 16 teams qualified for the playoffs. The San Jose Sharks won the Presidents' Trophy for having the best record in the league, at 117 points. Division champions maintain their relative ranking during the entire playoffs while the remaining teams get reseeded below them after each round.
Eastern Conference
-
Boston Bruins – Northeast Division and Eastern Conference regular season champions, 116 points
-
Washington Capitals – Southeast Division champions, 108 points
-
New Jersey Devils – Atlantic Division champions, 106 points
-
Pittsburgh Penguins – 99 points (45 wins)
-
Philadelphia Flyers – 99 points (44 wins)
-
Carolina Hurricanes – 97 points
-
New York Rangers – 95 points
-
Montreal Canadiens – 93 points*
*Montreal finished with exactly the same record as the Florida Panthers (including the first tie-breaker – number of wins). Montreal won on the second tie-breaker, head-to-head record, with a six points to three advantage in the four-game season series.
Western Conference
-
San Jose Sharks – Pacific Division champions and Western Conference regular season champions; President's Trophy winners, 117 points
-
Detroit Red Wings – Central Division champions, 112 points
-
Vancouver Canucks – Northwest Division champions, 100 points
-
Chicago Blackhawks – 104 points
-
Calgary Flames – 98 points
-
St. Louis Blues – 92 points (10 points head-to-head)
-
Columbus Blue Jackets – 92 points (3 points head-to-head)
-
Anaheim Ducks – 91 points
Playoff bracket
In each round, the highest remaining seed in each conference is matched against the lowest remaining seed. The higher-seeded team is awarded home ice advantage. In the Stanley Cup Finals, home ice is determined based on regular season points. Each best-of-seven series follows a 2–2–1–1–1 format: the higher-seeded team will play at home for games 1 and 2 (plus 5 and 7 if necessary), and the lower-seeded team will be at home for game 3, 4 and 6 (if necessary).
Awards
Presidents' Trophy: San Jose Sharks
|
|
Prince of Wales Trophy: Pittsburgh Penguins
|
|
Clarence S. Campbell Bowl: Detroit Red Wings
|
|
Art Ross Trophy: Evgeni Malkin, Pittsburgh Penguins
|
|
Bill Masterton Memorial Trophy: Steve Sullivan, Nashville Predators
|
|
Calder Memorial Trophy: Steve Mason, Columbus Blue Jackets
|
|
Conn Smythe Trophy: Evgeni Malkin, Pittsburgh Penguins
|
|
Frank J. Selke Trophy: Pavel Datsyuk, Detroit Red Wings
|
|
Hart Memorial Trophy: Alexander Ovechkin, Washington Capitals
|
|
Jack Adams Award: Claude Julien, Boston Bruins
|
|
James Norris Memorial Trophy: Zdeno Chara, Boston Bruins
|
|
King Clancy Memorial Trophy: Ethan Moreau, Edmonton Oilers
|
|
|
Lady Byng Memorial Trophy: Pavel Datsyuk, Detroit Red Wings
|
|
Lester B. Pearson Award: Alexander Ovechkin, Washington Capitals
|
|
Maurice 'Rocket' Richard Trophy: Alexander Ovechkin, Washington Capitals
|
|
Vezina Trophy: Tim Thomas, Boston Bruins
|
|
William M. Jennings Trophy: Tim Thomas and Manny Fernandez, Boston Bruins
|
|
Lester Patrick Trophy: Mark Messier, Mike Richter and Jim Devellano
|
|
NHL Lifetime Achievement Award: Jean Beliveau
|
|
NHL All Star Team
First All-Star Team
Second All-Star Team
NHL All-Rookie team
Player statistics
Scoring leaders
GP = Games played; G = Goals; A = Assists; Pts = Points; +/– = Plus/Minus; PIM = Penalty Minutes
Player
|
Team
|
GP
|
G
|
A
|
Pts
|
+/–
|
PIM
|
Malkin, EvgeniEvgeni Malkin
|
Pittsburgh Penguins
|
82
|
35
|
78
|
113
|
+17
|
80
|
Ovechkin, AlexanderAlexander Ovechkin
|
Washington Capitals
|
79
|
56
|
54
|
110
|
+8
|
72
|
Crosby, SidneySidney Crosby
|
Pittsburgh Penguins
|
77
|
33
|
70
|
103
|
+3
|
76
|
Datsyuk, PavelPavel Datsyuk
|
Detroit Red Wings
|
81
|
32
|
65
|
97
|
+34
|
22
|
Parise, ZachZach Parise
|
New Jersey Devils
|
82
|
45
|
49
|
94
|
+30
|
24
|
Kovalchuk, IlyaIlya Kovalchuk
|
Atlanta Thrashers
|
79
|
43
|
48
|
91
|
−12
|
50
|
Getzlaf, RyanRyan Getzlaf
|
Anaheim Ducks
|
81
|
25
|
66
|
91
|
+5
|
121
|
Iginla, JaromeJarome Iginla
|
Calgary Flames
|
81
|
35
|
54
|
89
|
−2
|
37
|
Savard, MarcMarc Savard
|
Boston Bruins
|
82
|
25
|
63
|
88
|
+25
|
70
|
Backstrom, NicklasNicklas Backstrom
|
Washington Capitals
|
82
|
22
|
66
|
88
|
+16
|
46
|
Source: NHL
Leading goaltenders
GP = Games Played; Min = Minutes played; W = Wins; L = Losses; OT = Overtime/Shootout Losses; GA = Goals Against; SO = Shutouts; Sv% = Save Percentage; GAA = Goals Against Average
Player
|
Team
|
GP
|
Min
|
W
|
L
|
OT
|
GA
|
SO
|
Sv%
|
GAA
|
Thomas, TimTim Thomas
|
Boston Bruins
|
54
|
3,258:49
|
36
|
11
|
7
|
114
|
5
|
.933
|
2.10
|
Mason, SteveSteve Mason
|
Columbus Blue Jackets
|
60
|
3,604:58
|
33
|
19
|
7
|
135
|
10
|
.917
|
2.25
|
Backstrom, NiklasNiklas Backstrom
|
Minnesota Wild
|
71
|
4,088:03
|
37
|
24
|
8
|
159
|
8
|
.923
|
2.33
|
Hiller, JonasJonas Hiller
|
Anaheim Ducks
|
45
|
2,446:26
|
23
|
15
|
1
|
95
|
4
|
.920
|
2.33
|
Luongo, RobertoRoberto Luongo
|
Vancouver Canucks
|
54
|
3,181:05
|
33
|
13
|
7
|
124
|
9
|
.920
|
2.34
|
Rinne, PekkaPekka Rinne
|
Nashville Predators
|
52
|
2,999:12
|
29
|
15
|
4
|
119
|
7
|
.917
|
2.38
|
Khabibulin, NikolaiNikolai Khabibulin
|
Chicago Blackhawks
|
41
|
2,407:15
|
24
|
8
|
7
|
96
|
2
|
.917
|
2.39
|
Clemmensen, ScottScott Clemmensen
|
New Jersey Devils
|
40
|
2,355:56
|
25
|
13
|
1
|
94
|
2
|
.917
|
2.39
|
Brodeur, MartinMartin Brodeur
|
New Jersey Devils
|
31
|
1,813:35
|
19
|
9
|
3
|
73
|
5
|
.916
|
2.41
|
Mason, ChrisChris Mason
|
St. Louis Blues
|
57
|
3,214:54
|
27
|
21
|
7
|
129
|
6
|
.916
|
2.41
|
Records
-
February 14, 2009 – Mike Green, defenseman with the Washington Capitals, scored in eight consecutive games to set a new NHL record for a defenseman.[32]
-
February 15, 2009 – Mike Richards, center with the Philadelphia Flyers, became the first player in NHL history to score three career 3-on-5 shorthanded goals when he beat New York Rangers goaltender Henrik Lundqvist in a 5–2 win
-
March 12, 2009 – Henrik Lundqvist, goaltender with the New York Rangers, became the first goaltender in NHL history to win 30 games in each of his first four seasons.
-
March 17, 2009 – Martin Brodeur, goaltender with the New Jersey Devils, won his 552nd game, surpassing Patrick Roy for the all-time wins record.
-
April 8, 2009 – Curtis Joseph, goaltender with the Toronto Maple Leafs, lost his 352nd game, tying Gump Worsley for most losses by a goaltender.
-
June 12, 2009 – Sidney Crosby became the youngest captain in NHL history to win the Stanley Cup.
-
June 12, 2009 – Evgeni Malkin became the first Russian player in NHL history to win the Conn Smythe Trophy.
Milestones
First games
The following is a list of players of note that played their first NHL game in 2008–09, listed with their first team:
Last games
The following is a list of players of note that played their last NHL game in 2008–09, listed with their last team:
-
Patrice Brisebois, Montreal Canadiens[33]
-
Sergei Fedorov, Washington Capitals
-
Bret Hedican, Anaheim Ducks[34]
-
Bobby Holik, New Jersey Devils[35]
-
Curtis Joseph, Toronto Maple Leafs[36]
-
Olaf Kolzig, Tampa Bay Lightning[37]
-
Claude Lemieux, San Jose Sharks[38]
-
Markus Naslund, New York Rangers[39]
-
Teppo Numminen, Buffalo Sabres[40]
-
Michael Peca, Columbus Blue Jackets[41]
-
Luke Richardson, Ottawa Senators[42]
-
Gary Roberts, Tampa Bay Lightning[43]
-
Jeremy Roenick, San Jose Sharks[44]
-
Joe Sakic, Colorado Avalanche[45]
-
Brendan Shanahan, New Jersey Devils[46]
-
Mike Sillinger, New York Islanders[47]
-
Jason Smith, Ottawa Senators[48]
-
Mats Sundin, Vancouver Canucks[49]
-
Sergei Zubov, Dallas Stars
Hat tricks
See also
References
-- Module:Hatnote -- -- -- -- This module produces hatnote links and links to related articles. It -- -- implements the and meta-templates and includes -- -- helper functions for other Lua hatnote modules. --
local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local mArguments -- lazily initialise Module:Arguments local yesno -- lazily initialise Module:Yesno
local p = {}
-- Helper functions
local function getArgs(frame) -- Fetches the arguments from the parent frame. Whitespace is trimmed and -- blanks are removed. mArguments = require('Module:Arguments') return mArguments.getArgs(frame, {parentOnly = true}) end
local function removeInitialColon(s) -- Removes the initial colon from a string, if present. return s:match('^:?(.*)') end
function p.findNamespaceId(link, removeColon) -- Finds the namespace id (namespace number) of a link or a pagename. This -- function will not work if the link is enclosed in double brackets. Colons -- are trimmed from the start of the link by default. To skip colon -- trimming, set the removeColon parameter to true. checkType('findNamespaceId', 1, link, 'string') checkType('findNamespaceId', 2, removeColon, 'boolean', true) if removeColon ~= false then link = removeInitialColon(link) end local namespace = link:match('^(.-):') if namespace then local nsTable = mw.site.namespaces[namespace] if nsTable then return nsTable.id end end return 0 end
function p.formatPages(...) -- Formats a list of pages using formatLink and returns it as an array. Nil -- values are not allowed. local pages = {...} local ret = {} for i, page in ipairs(pages) do ret[i] = p._formatLink(page) end return ret end
function p.formatPageTables(...) -- Takes a list of page/display tables and returns it as a list of -- formatted links. Nil values are not allowed. local pages = {...} local links = {} for i, t in ipairs(pages) do checkType('formatPageTables', i, t, 'table') local link = t[1] local display = t[2] links[i] = p._formatLink(link, display) end return links end
function p.makeWikitextError(msg, helpLink, addTrackingCategory) -- Formats an error message to be returned to wikitext. If -- addTrackingCategory is not false after being returned from -- Module:Yesno, and if we are not on a talk page, a tracking category -- is added. checkType('makeWikitextError', 1, msg, 'string') checkType('makeWikitextError', 2, helpLink, 'string', true) yesno = require('Module:Yesno') local title = mw.title.getCurrentTitle() -- Make the help link text. local helpText if helpLink then helpText = ' (help)' else helpText = end -- Make the category text. local category if not title.isTalkPage and yesno(addTrackingCategory) ~= false then category = 'Hatnote templates with errors' category = string.format( '%s:%s', mw.site.namespaces[14].name, category ) else category = end return string.format( '%s', msg, helpText, category ) end
-- Format link -- -- Makes a wikilink from the given link and display values. Links are escaped -- with colons if necessary, and links to sections are detected and displayed -- with " § " as a separator rather than the standard MediaWiki "#". Used in -- the template.
function p.formatLink(frame) local args = getArgs(frame) local link = args[1] local display = args[2] if not link then return p.makeWikitextError( 'no link specified', 'Template:Format hatnote link#Errors', args.category ) end return p._formatLink(link, display) end
function p._formatLink(link, display) -- Find whether we need to use the colon trick or not. We need to use the -- colon trick for categories and files, as otherwise category links -- categorise the page and file links display the file. checkType('_formatLink', 1, link, 'string') checkType('_formatLink', 2, display, 'string', true) link = removeInitialColon(link) local namespace = p.findNamespaceId(link, false) local colon if namespace == 6 or namespace == 14 then colon = ':' else colon = end -- Find whether a faux display value has been added with the | magic -- word. if not display then local prePipe, postPipe = link:match('^(.-)|(.*)$') link = prePipe or link display = postPipe end -- Find the display value. if not display then local page, section = link:match('^(.-)#(.*)$') if page then display = page .. ' § ' .. section end end -- Assemble the link. if display then return string.format('%s', colon, link, display) else return string.format('%s%s', colon, link) end end
-- Hatnote -- -- Produces standard hatnote text. Implements the template.
function p.hatnote(frame) local args = getArgs(frame) local s = args[1] local options = {} if not s then return p.makeWikitextError( 'no text specified', 'Template:Hatnote#Errors', args.category ) end options.extraclasses = args.extraclasses options.selfref = args.selfref return p._hatnote(s, options) end
function p._hatnote(s, options) checkType('_hatnote', 1, s, 'string') checkType('_hatnote', 2, options, 'table', true) local classes = {'hatnote'} local extraclasses = options.extraclasses local selfref = options.selfref if type(extraclasses) == 'string' then classes[#classes + 1] = extraclasses end if selfref then classes[#classes + 1] = 'selfref' end return string.format( '
%s
', table.concat(classes, ' '), s )
end
return p-------------------------------------------------------------------------------- -- Module:Hatnote -- -- -- -- This module produces hatnote links and links to related articles. It -- -- implements the and meta-templates and includes -- -- helper functions for other Lua hatnote modules. --
local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local mArguments -- lazily initialise Module:Arguments local yesno -- lazily initialise Module:Yesno
local p = {}
-- Helper functions
local function getArgs(frame) -- Fetches the arguments from the parent frame. Whitespace is trimmed and -- blanks are removed. mArguments = require('Module:Arguments') return mArguments.getArgs(frame, {parentOnly = true}) end
local function removeInitialColon(s) -- Removes the initial colon from a string, if present. return s:match('^:?(.*)') end
function p.findNamespaceId(link, removeColon) -- Finds the namespace id (namespace number) of a link or a pagename. This -- function will not work if the link is enclosed in double brackets. Colons -- are trimmed from the start of the link by default. To skip colon -- trimming, set the removeColon parameter to true. checkType('findNamespaceId', 1, link, 'string') checkType('findNamespaceId', 2, removeColon, 'boolean', true) if removeColon ~= false then link = removeInitialColon(link) end local namespace = link:match('^(.-):') if namespace then local nsTable = mw.site.namespaces[namespace] if nsTable then return nsTable.id end end return 0 end
function p.formatPages(...) -- Formats a list of pages using formatLink and returns it as an array. Nil -- values are not allowed. local pages = {...} local ret = {} for i, page in ipairs(pages) do ret[i] = p._formatLink(page) end return ret end
function p.formatPageTables(...) -- Takes a list of page/display tables and returns it as a list of -- formatted links. Nil values are not allowed. local pages = {...} local links = {} for i, t in ipairs(pages) do checkType('formatPageTables', i, t, 'table') local link = t[1] local display = t[2] links[i] = p._formatLink(link, display) end return links end
function p.makeWikitextError(msg, helpLink, addTrackingCategory) -- Formats an error message to be returned to wikitext. If -- addTrackingCategory is not false after being returned from -- Module:Yesno, and if we are not on a talk page, a tracking category -- is added. checkType('makeWikitextError', 1, msg, 'string') checkType('makeWikitextError', 2, helpLink, 'string', true) yesno = require('Module:Yesno') local title = mw.title.getCurrentTitle() -- Make the help link text. local helpText if helpLink then helpText = ' (help)' else helpText = end -- Make the category text. local category if not title.isTalkPage and yesno(addTrackingCategory) ~= false then category = 'Hatnote templates with errors' category = string.format( '%s:%s', mw.site.namespaces[14].name, category ) else category = end return string.format( '%s', msg, helpText, category ) end
-- Format link -- -- Makes a wikilink from the given link and display values. Links are escaped -- with colons if necessary, and links to sections are detected and displayed -- with " § " as a separator rather than the standard MediaWiki "#". Used in -- the template.
function p.formatLink(frame) local args = getArgs(frame) local link = args[1] local display = args[2] if not link then return p.makeWikitextError( 'no link specified', 'Template:Format hatnote link#Errors', args.category ) end return p._formatLink(link, display) end
function p._formatLink(link, display) -- Find whether we need to use the colon trick or not. We need to use the -- colon trick for categories and files, as otherwise category links -- categorise the page and file links display the file. checkType('_formatLink', 1, link, 'string') checkType('_formatLink', 2, display, 'string', true) link = removeInitialColon(link) local namespace = p.findNamespaceId(link, false) local colon if namespace == 6 or namespace == 14 then colon = ':' else colon = end -- Find whether a faux display value has been added with the | magic -- word. if not display then local prePipe, postPipe = link:match('^(.-)|(.*)$') link = prePipe or link display = postPipe end -- Find the display value. if not display then local page, section = link:match('^(.-)#(.*)$') if page then display = page .. ' § ' .. section end end -- Assemble the link. if display then return string.format('%s', colon, link, display) else return string.format('%s%s', colon, link) end end
-- Hatnote -- -- Produces standard hatnote text. Implements the template.
function p.hatnote(frame) local args = getArgs(frame) local s = args[1] local options = {} if not s then return p.makeWikitextError( 'no text specified', 'Template:Hatnote#Errors', args.category ) end options.extraclasses = args.extraclasses options.selfref = args.selfref return p._hatnote(s, options) end
function p._hatnote(s, options) checkType('_hatnote', 1, s, 'string') checkType('_hatnote', 2, options, 'table', true) local classes = {'hatnote'} local extraclasses = options.extraclasses local selfref = options.selfref if type(extraclasses) == 'string' then classes[#classes + 1] = extraclasses end if selfref then classes[#classes + 1] = 'selfref' end return string.format( '
%s
', table.concat(classes, ' '), s )
end
return p
-
^ NHL teams will play each other at least once per season
-
^ Montreal to host '09 All-Star Game
-
^ rule changes
-
^
-
^ NHL's European plans finalized
-
^
-
^
-
^
-
^
-
^
-
^
-
^
-
^
-
^
-
^
-
^
-
^
-
^
-
^
-
^
-
^
-
^
-
^
-
^
-
^
-
^
-
^ http://www.hockey-reference.com/leagues/NHL_2009_skaters.html
-
^ http://www.hockey-reference.com/leagues/NHL_2009_goalies.html
-
^
-
^
-
^
-
^
-
^
-
^
-
^
-
^
-
^
-
^
-
^
-
^
-
^
-
^
-
^
-
^
-
^
-
^
-
^
-
^
External links
Media related to 2008-2009 National Hockey League season at Wikimedia Commons
This article was sourced from Creative Commons Attribution-ShareAlike License; additional terms may apply. World Heritage Encyclopedia content is assembled from numerous content providers, Open Access Publishing, and in compliance with The Fair Access to Science and Technology Research Act (FASTR), Wikimedia Foundation, Inc., Public Library of Science, The Encyclopedia of Life, Open Book Publishers (OBP), PubMed, U.S. National Library of Medicine, National Center for Biotechnology Information, U.S. National Library of Medicine, National Institutes of Health (NIH), U.S. Department of Health & Human Services, and USA.gov, which sources content from all federal, state, local, tribal, and territorial government publication portals (.gov, .mil, .edu). Funding for USA.gov and content contributors is made possible from the U.S. Congress, E-Government Act of 2002.
Crowd sourced content that is contributed to World Heritage Encyclopedia is peer reviewed and edited by our editorial staff to ensure quality scholarly research articles.
By using this site, you agree to the Terms of Use and Privacy Policy. World Heritage Encyclopedia™ is a registered trademark of the World Public Library Association, a non-profit organization.